作成した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: アクションを暗黙的に拒否