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