はじめに
- IAMユーザグループにIAMポリシーをアタッチして運用したい
- IAMユーザにはポリシーをアタッチしない
- スイッチロールするIAMロールは制限したい
こんな場合のIAMユーザグループ・IAMロール・IAMポリシーの設定例を紹介します。
IAMユーザーグループの運用
IAMユーザグループは、複数のIAMユーザーにポリシーを効率よく適用するために使用します。
しかし、IAMポリシーでリソースへのアクセス権を定義する際、Principal要素にIAMユーザーグループのARNを指定することはできません。
その代わり、アクセスを許可するユーザーやロールを個別に指定する必要があります。
スイッチロールの基本
スイッチロールとは、一定のIAMユーザーが他のIAMロールを一時的に引き受け、そのロールに設定された権限でアクションを実行できる機能です。
これは、特に異なるAWSアカウント間でリソースへのアクセスを委任する場合に有用です。
スイッチロールの設定例
以下は、他アカウントのIAMロールへスイッチロールを許可するための信頼ポリシーの例です。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<IAMユーザグループが存在するアカウントID>:root" }, "Action": "sts:AssumeRole", "Condition": { "Bool": { "aws:MultiFactorAuthPresent": "true" ## MFA必須とする場合 } } } ] }
このポリシーでは、Multi-Factor Authentication(MFA)が有効であることを条件に設定しています。
これは、セキュリティをさらに強化するための一般的な手法です。
ポリシーの明示的な拒否
信頼ポリシーによって権限を与えることができますが、意図せずスイッチロールされることを防ぐためには、Denyポリシーの使用が効果的です。
これは、IAMユーザーグループにアタッチされ、特定のロールへのスイッチを明示的に禁止します。
例えば、ユーザーグループAがアカウントCのIAM Role Cへスイッチロールすることを拒否したい場合、以下のようなDenyポリシーを設定します。
{ "Version": "2012-10-17", "Statement": [ { "Condition": { "Bool": { "aws:MultiFactorAuthPresent": "true" ## MFA必須の場合 } }, "Action": "sts:AssumeRole", "Resource": [ "arn:aws:iam::<アカウントC>:role/<IAM Role C>" ], "Effect": "Deny" } ] }
ユーザーグループ間のポリシー競合
IAMユーザーが複数のIAMユーザーグループに属することは可能ですが、ポリシーが競合すると問題が生じることがあります。
そのため、各ユーザーグループには特定のDenyポリシーを割り当てることで、一貫性を保ち、セキュリティを確保することが推奨されます。
まとめ
AWS IAMの設定は、適切なセキュリティと運用効率のバランスを取る必要があります。
本記事で紹介したようなユーザーグループとスイッチロールのポリシー設定を適切に行うことで、安全かつ柔軟なクラウド環境の運用が可能になります。