作成したIAMポリシーやPermissions BoundaryのテストのためにIAM Policy Simulatorを利用すると便利ですが、テスト用のIAMアクションをGUIで作成しないといけないとか、結果をJSONやCSV形式の簡易な一覧で取得できない点が悩みでしたので、Pythonで簡単なツールを作ってみました。
使い方
コードは下記のGitHubレポジトリを参照下さい。セットアップ方法も以下のGitHubレポジトリを参照下さい。
評価対象のアクション一覧を準備
IAM Policy Simulatorで評価したいアクション一覧を以下の形式のJSONで準備します。
{ "Action": [ "iam:CreateServiceSpecificCredential", "iam:DeactivateMFADevice", <中略> "iam:DeletePolicyVersion", "iam:ListUserTags" ] } {{< ** IAM Policy Simulatorでの評価 ツールの実行 >|sh| ./simulate_iampolicy.py [-h] [-P PROFILE] [-c] -p POLICY_SOURCE_ARN -a ACTION_LIST_FILE
- 必須オプション
-p POLICY_SOURCE_ARN
: IAMユーザ/グループ/ロールのARNを指定-a ACTION_LIST_FILE
: 評価したいアクション一覧のJSONファイルパスを指定
- 任意オプション
(実行例1) IAMロールに対して、IAMのアクション一覧を評価しJSON形式で出力する
./simulate_iampolicy.py -p 'arn:aws:iam::999999999999:role/RoleName' -a 'actions/iam_all_actions.json'
実行結果
- JSON形式
[ { "EvalActionName": "iam:CreateServiceSpecificCredential", "EvalDecision": "allowed" }, { "EvalActionName": "iam:DeactivateMFADevice", "EvalDecision": "explicitDeny" }, ]
- CSV形式
EvalActionName,EvalDecision iam:CreateServiceSpecificCredential,allowed iam:DeactivateMFADevice,explicitDeny
- 結果内容
EvalActionName
: 評価対象のアクション名EvalDecision
: 評価結果allowed
: アクションを許可explicitDeny
: アクションを明示的に拒否implicitDeny
: アクションを暗黙的に拒否