【アップデート】 AWS Organizations SCPでIAMと同等の記述が可能になりました
こんにちは!クラウド事業本部のおつまみです。
先日AWS OrganizationsのSCP(Service Control Policy)がIAM言語の全機能をサポートするようになりました!
早速確認してみよう!とのことで、今回はこの新機能の概要と使い方についてご紹介します。
3行まとめ
- AWS OrganizationsのSCPでIAMポリシー言語の全機能が使えるようになりました。
- 条件(Condition)、個別リソースARN、NotAction/NotResourceのAllowなどの機能が利用可能になりました。
- 既存のSCPはそのまま動作し続けるため、影響はありません。
アップデートにより何が嬉しくなったのか
これまでSCPでは、IAMポリシー言語の一部の機能しか使えませんでした。
特に、Allowステートメントにおいて多くの制限がありました。
例えば、Allowステートメントでは条件(Condition)要素が使えなかったため、「特定の条件下でのみ許可」といった柔軟な許可ポリシーが書けませんでした。(Denyステートメントでは従来からConditionは利用可能でした)
また、Allowステートメントでは、NotActionやNotResourceといった否定形の要素も使えなかったため、「特定のアクション以外すべて許可」といったポリシーを簡潔に記述することが困難でした。(こちらもDenyステートメントでは従来から利用可能でした)
そこで、今回のアップデートにより以下が実現できます。
- Allowステートメントでの条件(Condition)サポート:許可ポリシーでもIPアドレス、MFA、タグなどの条件に基づいた制御が可能に
- Allowステートメントでの個別リソースARN指定:特定のリソースに対する許可制御
- AllowステートメントでのNotAction/NotResourceサポート:許可ポリシーでも否定形での柔軟な記述が可能に
- ワイルドカードの拡張:アクション文字列の先頭や中間でのワイルドカード使用
今回のアップデート箇所を詳しく知りたい方はこちらのブログをご参考ください。
ブログ冒頭にある表の太字部分が新たに対応した箇所です。
確認してみた
実際に新しいSCP機能を使って、動作確認を行います。
AllowステートメントでのNotAction利用(特定の高リスクアクション以外を許可)
検証の目的
新たにAllowステートメントでもNotActionが使えるようになったことで、「特定の高リスクアクション以外はすべて許可」という柔軟な制御ができるか確認します。
今回のアップデートの価値
AllowステートメントでNotActionが使えるようになり、「除外したいアクション以外すべて許可」という直感的なポリシー記述が可能になりました。
従来の方法(許可したいアクションをすべて列挙)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowSpecificActions",
"Effect": "Allow",
"Action": [
"s3:*",
"ec2:*",
"lambda:*",
"dynamodb:*",
"rds:*",
// 許可したいアクションを延々と列挙...
],
"Resource": "*"
}
]
}
従来は許可したいアクションをすべて列挙する必要があり、新しいサービスが追加されるたびにポリシーの更新が必要でした。
設定したSCPポリシー(新機能を活用)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowAllExceptHighRiskActions",
"Effect": "Allow",
"NotAction": [
"iam:CreateUser",
"iam:DeleteUser",
],
"Resource": "*"
}
]
}
このポリシーはAllowステートメントでNotActionを使って「特定の高リスクアクション(IAMユーザー作成・削除、Organizations関連、アカウント関連)以外はすべて許可」という制御を簡潔に実現します。
検証手順
- テスト用のOUからFullAWSAccessポリシーをデタッチ(デフォルトでアタッチされているため)
- 上記のSCPをテスト用のOUに適用
- S3バケットの作成を試行(許可されるアクション)
- IAMユーザーの作成を試行(NotActionで除外される高リスクアクション)
- IAMユーザーの削除を試行(NotActionで除外される高リスクアクション)
検証結果
- S3バケットの作成:成功(NotActionで除外されていない)
- IAMユーザーの作成:拒否(NotActionで明示的に除外)
- IAMユーザーの削除:拒否(NotActionで明示的に除外)
AllowステートメントでNotActionを使うことで、「特定の高リスクアクション以外はすべて許可」という制御を簡潔に記述できます。管理したい高リスクアクションのみを列挙すればよく、ポリシーの管理が大幅に簡素化されました。
まとめ
今回はAWS OrganizationsのSCPでIAM言語の全機能がサポートされるようになったアップデートについてご紹介しました。
AllowステートメントでCondition、NotAction/NotResource、個別リソースARNが使えるようになり、より柔軟な許可ポリシーの記述が可能になりました。
実際のところ、OU作成時にデフォルトで付与されるFullAWSAccess
ポリシーをデタッチする運用は比較的稀であるため、Allowステートメントを明示的に指定する機会はそれほど多くないかもしれません。(今回の検証においても、実用的なシナリオの構築には工夫が必要でした。)
ただし、最小権限の原則を徹底している組織や、特定のOUで厳密な権限管理が必要な場合には、今回の新機能が非常に有効に活用できるはずです。
今後SCPを作成する際の参考にしてください!
最後までお読みいただきありがとうございました!
以上、おつまみ(@AWS11077)でした!