IAMアクセス許可の境界でIAMロールの権限を制御する
IAMユーザー自身の権限はIAMポリシーで制御できますが、IAMユーザーにIAMロールを作成する権限を自由に許可することで、そのIAMユーザー自身以上の権限が許可されたIAMロールが作成され、EC2やLambdaに設定されることで、IAMユーザーは自身以上の権限でAWSの操作が行えます。
IAMアクセス許可の境界を使用することで、IAMユーザーは指定された権限範囲を超えるロールの作成ができなくなります。
ユーザーガイドIAM エンティティのアクセス許可の境界を参考に検証をしました。
こちらのユーザーガイドではIAMユーザーの管理を移譲されたIAMユーザーのシナリオですが、IAMロールを作成する開発者に置き換えて検証してみました。
まずIAMユーザーにアタッチするIAMポリシーの例です。
ポリシー名: DelegatedRoleBoundary
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:DeleteRole", "iam:AttachRolePolicy", "iam:DeleteRolePolicy", "iam:DetachRolePolicy", "iam:CreateRole", "iam:UpdateRole*", "iam:PutRolePolicy" ], "Resource": "*", "Condition": { "StringEquals": { "iam:PermissionsBoundary": "arn:aws:iam::123456789012:policy/LambdaRoleBoundaries" } } }, { "Effect": "Allow", "Action": [ "cloudwatch:*", "iam:Get*", "iam:CreatePolicy", "iam:DeletePolicy", "iam:DeletePolicyVersion", "iam:List*", "iam:SetDefaultPolicyVersion", "iam:SimulatePrincipalPolicy", "iam:SimulateCustomPolicy" ], "NotResource": "arn:aws:iam::123456789012:user/BoundaryRoleTest" }, { "Effect": "Deny", "Action": [ "iam:CreatePolicyVersion", "iam:DeletePolicy", "iam:DeletePolicyVersion", "iam:SetDefaultPolicyVersion" ], "Resource": [ "arn:aws:iam::123456789012:policy/LambdaRoleBoundaries", "arn:aws:iam::123456789012:policy/DelegatedRoleBoundary" ] }, { "Effect": "Deny", "Action": "iam:DeleteRolePermissionsBoundary", "Resource": "*" } ] } |
LambdaRoleBoundariesというポリシーがアクセス境界に設定されていないと、CreateRoleなどは行えないよう、”iam:PermissionsBoundary”をConditionsで設定しています。
アクセス境界に設定するIAMポリシーの例です。
ポリシー名: LambdaRoleBoundaries
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ServiceBoundaries", "Effect": "Allow", "Action": [ "s3:*", "logs:*", "dynamodb:*" ], "Resource": "*" } ] } |
こちらはシンプルにCloudWatch Logs、S3、DynamoDBに対してのフルアクセス権限が設定されています。
対象IAMユーザーです。
DelegatedRoleBoundaryポリシーがアタッチされています。
必要に応じて、EC2やLambdaなど開発に必要なサービス、リソースへのアクションを許可するものとします。
このユーザーがIAMロールを作成しようとして、LambdaRoleBoundariesポリシーをアクセス境界に設定しなかった場合は、以下の権限エラーで作成ができません。
User: arn:aws:iam::123456789012:user/BoundaryRoleTest is not authorized to perform: iam:CreateRole on resource: arn:aws:iam::123456789012:role/TestRole
LambdaRoleBoundariesポリシーをアクセス境界に設定することでIAMロールが作成できます。
もしもIAMロールにAdministratorAccessポリシーをアタッチしても、アクセス境界ポリシーでCloudWatch Logs, S3, DynamoDBしか操作が許可されていませんので、安全です。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
ALBにWAFを関連付けて特定のヘッダー以外はブロックする
おかげさまで、ブログのアクセスも増えてきて、t3.nano EC2インスタンス単 …
-
AWS IAMのMFA「エンティティは既に存在しています」に対応しました
エンティティは既に存在しています MFA Device entity at th …
-
Amazon CodeCatalystのスペースとプロジェクトを作成してみました
Amazon CodeCatalystはIAMユーザーで操作するのではなく、AW …
-
Amazon API GatewayをLambda(Python)で削除する
やりたいこと 特定のAWSアカウント、特定のリージョン内のAPI Gateway …
-
新しいVPCウィザード(2022年)がすんごく便利になってました
VPCウィザードがすんごく便利になってました。 ウィザードの左ペインで設定を選択 …
-
Rocket.ChatをAmazon EC2 Ubuntuサーバーで起動
こちらRocket.Chatを1行でAWS上に導入を参照させていただきました。 …
-
AWS Organizationsでタグポリシーを設定しようとしました
Organizationsで[タグポリシーを有効にする]ボタンを押下しました。 …
-
WordPressのwp-login.php , xmlrpc.phpへのアクセスをAWS WAFで接続元IPアドレスを制限する
AWS CloudWatch LogsエージェントでAmazon EC2上のNg …
-
静的と動的って何ですか?と営業さんに聞かれたので端的に説明してみました
AWS認定クラウドプラクティショナーの勉強をしている営業さんに、「S3で静的オブ …
-
AWS App RunnerでGithubリポジトリからデプロイ
AWS App Runner開発者ガイドのチュートリアルをやってみました。 Gi …