はじめに
こんにちは、クラウド事業部の坂口です。
最近 IAM ロールに Permissions Boundary 設定を付けたり外したりすることがあったのですが、
ちゃんと IAM ロール に PB が設定されているかを AWS マネジメントコンソール上だけでなく AWS CLI 上でも確認したいと思い、使用するコマンドを調べてみました。
※余談ですが、個人的に AWS CLI でも情報を確認できると安心できる、という想いもあったりします
目次
- はじめに
- 目次
- どんなひとに読んで欲しい
- Permissions Boundary とは
- AWSマネジメントコンソール (GUI) での PB 設定確認
- AWS CLI での PB 設定確認
- おまけ:IAM ユーザーでの PB 設定有無の確認
- おわりに
- お知らせ
どんなひとに読んで欲しい
- AWS CLI で IAM ロールに Permissions Boundary 設定があるかを確認してみたい方
- 似たような事が気になっていた方
Permissions Boundary とは
本題の前に、Pemissions Boundary (以降、PBと略) について簡単におさらいします。
PB は、いわゆる IAM エンティティ (ユーザーやロール) に対して「アクセス許可の境界」、すなわちアクセス許可の上限を設定することができます。
PB の設定には AWS 管理ポリシーまたはカスタマー管理ポリシーが利用でき、設定されている場合、その IAM エンティティでは『IAM エンティティでのポリシー』と『PB で設定したポリシー』両方で許可がされているアクションのみが最終的に実行できるアクションになります。
例として AdministratorAccess ポリシーのみがアタッチされている IAM ロールを想定してみます。
この IAM ロールでは勿論フルアクセスが許可されますが、ここで PB にて PowerUserAccess ポリシーを指定して設定すると、この IAM ロールのアクセス許可は PowerUserAccess ポリシーで許可されている範囲に限定されることになります。
AWSマネジメントコンソール (GUI) での PB 設定確認
AWSマネジメントコンソール上では以下から PB 設定がされていることを確認できます。
簡単!
(PB 設定されている場合)
AWS CLI での PB 設定確認
さて本題ですが、AWS CLI で PB 設定が確認できるコマンドは get-role
になります。
当たり前と言っては何ですが、素直にロール情報を取得すれば良いようですね。
試しに、AWS CloudShell でコマンド実行をやってみます。
※もちろん、ローカル環境などからの確認でも大丈夫です
(ディストリビューションの確認)
$ cat /etc/os-release NAME="Amazon Linux" VERSION="2023" ID="amzn" ID_LIKE="fedora" VERSION_ID="2023" PLATFORM_ID="platform:al2023" PRETTY_NAME="Amazon Linux 2023.5.20240916" ANSI_COLOR="0;33" CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2023" HOME_URL="https://aws.amazon.com/linux/amazon-linux-2023/" DOCUMENTATION_URL="https://docs.aws.amazon.com/linux/" SUPPORT_URL="https://aws.amazon.com/premiumsupport/" BUG_REPORT_URL="https://github.com/amazonlinux/amazon-linux-2023" VENDOR_NAME="AWS" VENDOR_URL="https://aws.amazon.com/" SUPPORT_END="2028-03-15"
(get-role
の実行) #それっぽい情報はマスク
$ aws iam get-role --role-name TestPermissionsBoundaryRole { "Role": { "Path": "/", "RoleName": "TestPermissionsBoundaryRole", "RoleId": "***", "Arn": "arn:aws:iam::***:role/TestPermissionsBoundaryRole", "CreateDate": "***", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "cloudformation.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }, "Description": "Test for Permissions Boundary", "MaxSessionDuration": 3600, "PermissionsBoundary": { ★これ! "PermissionsBoundaryType": "Policy", "PermissionsBoundaryArn": "arn:aws:iam::***:policy/Test_PB_Policy" }, "Tags": [ { "Key": "Owner", "Value": "***" } ], "RoleLastUsed": {} } }
"PermissionsBoundary"
の項目が表示され、PB 設定を確認できました。
AWS CLI get-role
コマンドの ドキュメント でも、出力に PermissionsBoundary
があることを確認できます。
ちなみに、PB 設定を外した場合に get-role
コマンドを実行した出力はコチラ。
$ aws iam get-role --role-name TestPermissionsBoundaryRole { "Role": { "Path": "/", "RoleName": "TestPermissionsBoundaryRole", "RoleId": "***", "Arn": "arn:aws:iam::***:role/TestPermissionsBoundaryRole", "CreateDate": "***", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "cloudformation.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }, "Description": "Test for Permissions Boundary", "MaxSessionDuration": 3600, "Tags": [ { "Key": "Owner", "Value": "***" } ], "RoleLastUsed": {} } }
"PermissionsBoundary"
の項目自体が出力されません。ご注意ください。
おまけ:IAM ユーザーでの PB 設定有無の確認
ついでに、IAM ユーザーの場合についても IAM ロールと似た形のまま get-user で確認できました。
$ aws iam get-user --user-name test_user { "User": { "Path": "/", "UserName": "test_user", "UserId": "***", "Arn": "arn:aws:iam::***:user/test_user", "CreateDate": "***", "PermissionsBoundary": { ★これ! "PermissionsBoundaryType": "Policy", "PermissionsBoundaryArn": "arn:aws:iam::***:policy/Test_PB_Policy" } } }
(PB 設定無しの場合)
$ aws iam get-user --user-name test_user { "User": { "Path": "/", "UserName": "test_user", "UserId": "***", "Arn": "arn:aws:iam::***:user/test_user", "CreateDate": "***" } }
おわりに
AWS CLI を用いて、IAM ロールで Permissions Boundary 設定がされているかどうかの確認方法について記載しました。
この記事が Permissions Boundary 設定をサッと確認して安心したい!という方の一助となれば幸いです。
それではご機嫌なAWSライフを!
お知らせ
APCはAWS Advanced Tier Services(アドバンストティアサービスパートナー)認定を受けております。
その中で私達クラウド事業部はAWSなどのクラウド技術を活用したSI/SESのご支援をしております。
https://www.ap-com.co.jp/service/utilize-aws/
また、一緒に働いていただける仲間も募集中です!
今年もまだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。