2021-11-19
前回、IAMのロールのアクセス権に設定されているポリシー情報を取得する手順について記載しました。
AWS – IAMロール情報の取得(AWS管理ポリシー)
しかし、設定されているポリシーが「AWS管理ポリシー」の場合は取得できますが、ユーザーが任意に設定した「インラインポリシー」の場合は取得方法が変わります。
今回はアクセス権に設定されている「インラインポリシー」の取得方法について記載しています。
構成管理情報
IAM > ロール > アクセス権(インラインポリシー)
IAMに登録されているロールにアタッチされたインラインポリシーを確認するには次のコマンドを実行します。
aws iam get-role-policy --role-name %ROLENAME% --policy-name %POLICYNAME%
※[ role-name ] + [ policy-name ]毎に取得する必要があります。
例)
aws iam get-role-policy --role-name snapshot --policy-name oneClick_lambda_basic_execution_150837164125*
実行結果
TEXT
oneClick_lambda_basic_execution_150837164125* snapshot
POLICYDOCUMENT 2012-10-17
STATEMENT Allow
ACTION logs:CreateLogGroup
ACTION logs:CreateLogStream
ACTION logs:PutLogEvents
RESOURCE arn:aws:logs:*:*:*
STATEMENT Allow
ACTION ec2:DescribeInstances
ACTION ec2:DescribeSnapshots
ACTION ec2:CreateSnapshot
ACTION ec2:DeleteSnapshot
RESOURCE *
TABLE
---------------------------------------------------------------
| GetRolePolicy |
+-------------------------------------------------+-----------+
| PolicyName | RoleName |
+-------------------------------------------------+-----------+
| oneClick_lambda_basic_execution_150837164125* | snapshot |
+-------------------------------------------------+-----------+
|| PolicyDocument ||
|+-------------------------+---------------------------------+|
|| Version | 2012-10-17 ||
|+-------------------------+---------------------------------+|
||| Statement |||
||+---------------------------------------------------------+||
||| Effect |||
||+---------------------------------------------------------+||
||| Allow |||
||+---------------------------------------------------------+||
|||| Action ||||
|||+-------------------------------------------------------+|||
|||| logs:CreateLogGroup ||||
|||| logs:CreateLogStream ||||
|||| logs:PutLogEvents ||||
|||+-------------------------------------------------------+|||
|||| Resource ||||
|||+-------------------------------------------------------+|||
|||| arn:aws:logs:*:*:* ||||
|||+-------------------------------------------------------+|||
||| Statement |||
||+---------------------------------------------------------+||
||| Effect |||
||+---------------------------------------------------------+||
||| Allow |||
||+---------------------------------------------------------+||
|||| Action ||||
|||+-------------------------------------------------------+|||
|||| ec2:DescribeInstances ||||
|||| ec2:DescribeSnapshots ||||
|||| ec2:CreateSnapshot ||||
|||| ec2:DeleteSnapshot ||||
|||+-------------------------------------------------------+|||
|||| Resource ||||
|||+-------------------------------------------------------+|||
|||| * ||||
|||+-------------------------------------------------------+|||
JSON
{
"RoleName": "snapshot",
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:*:*:*"
],
"Effect": "Allow"
},
{
"Action": [
"ec2:DescribeInstances",
"ec2:DescribeSnapshots",
"ec2:CreateSnapshot",
"ec2:DeleteSnapshot"
],
"Resource": [
"*"
],
"Effect": "Allow"
}
]
},
"PolicyName": "oneClick_lambda_basic_execution_150837164125*"
}
出力形式はそれぞれ使用できますが、インラインポリシーを構成管理として扱う出力形式としては、設定時にJSON形式で記載していると思いますので、–Outputも「json」で取得した方が分かりやすいと思います。
出力結果から以下の項目が取得できます。
項目 | 形式 | 説明 | 対応箇所 |
---|---|---|---|
PolicyDocument | string | ポリシー文書。 | ポリシー概要/JSON |
インラインポリシーの取得には「role-name」と「policy-name」が必要になります。 まずはロール一覧を取得
aws iam list-roles
取得したロールから適用されているlist-attached-role-policiesでポリシーを確認
aws iam list-attached-role-policies --role-name %USENAME%
取得できなかったポリシーに対してget-role-policyでポリシーを確認
aws iam get-role-policy --role-name %USENAME% --policy-name %POLICYNAME%
という感じで少々手間がかかります。