前回まではIAMのユーザー情報を取得する手順について記載してきました。
AWS – IAMユーザー情報の取得
AWS – IAMユーザー情報の取得(AWS管理ポリシー)
AWS – IAMユーザー情報の取得(インラインポリシー)
今回からは、IAM(Identity and Access Management) の「ロール」情報を取得する方法について記載しています。
IAM ロール
IAM ロールは、AWS で許可/禁止する操作を決めるアクセス権限ポリシーが関連付けられている AWS ID であるという点で、ユーザーと似ています。ただし、ユーザーは 1 人の特定の人に一意に関連付けられますが、ロールはそれを必要とする任意の人が引き受けるようになっています。また、ロールには標準の長期認証情報 (パスワードやアクセスキー) も関連付けられません。代わりに、ユーザーがロールを引き受けた場合、一時的セキュリティ認証情報が動的に作成され、ユーザーに提供されます。
IAMに登録されているロール一覧を出力するには以下のコマンドを実行します。
aws iam list-roles
実行結果
TEXT
ROLES arn:aws:iam::123456789000:role/Lambda-Snapshot 2018-01-01T00:00:00Z / AROABCDEFGHIJKLMNOPQ1 Lambda-Snapshot ASSUMEROLEPOLICYDOCUMENT 2012-10-17
STATEMENT sts:AssumeRole Allow
PRINCIPAL lambda.amazonaws.com
ROLES arn:aws:iam::123456789000:role/SimpleSystemsManager 2018-01-01T00:00:00Z Allows EC2 instances to call AWS services like CloudWatch and SSM on your behalf. / AROABCDEFGHIJKLMNOPQ2 SimpleSystemsManager
ASSUMEROLEPOLICYDOCUMENT 2012-10-17
STATEMENT sts:AssumeRole Allow
PRINCIPAL ec2.amazonaws.com
TABLE
--------------------------------------------------------------------------------------------------------
| ListRoles |
+------------------------------------------------------------------------------------------------------+
|| Roles ||
|+----------------------+-----------------------------------------------------------------------------+|
|| Arn | arn:aws:iam::123456799000:role/Lambda-Snapshot ||
|| CreateDate | 2018-01-01T00:00:00Z ||
|| Description | ||
|| Path | / ||
|| RoleId | AROABCDEFGHIJKLMNOPQ1 ||
|| RoleName | Lambda-Snapshot ||
|+----------------------+-----------------------------------------------------------------------------+|
||| AssumeRolePolicyDocument |||
||+------------------------------------------+-------------------------------------------------------+||
||| Version | 2012-10-17 |||
||+------------------------------------------+-------------------------------------------------------+||
|||| Statement ||||
|||+---------------------------------+--------------------------------------------------------------+|||
|||| Action | sts:AssumeRole ||||
|||| Effect | Allow ||||
|||+---------------------------------+--------------------------------------------------------------+|||
||||| Principal |||||
||||+----------------------------+-----------------------------------------------------------------+||||
||||| Service | lambda.amazonaws.com |||||
||||+----------------------------+-----------------------------------------------------------------+||||
|| Roles ||
|+-------------+--------------------------------------------------------------------------------------+|
|| Arn | arn:aws:iam::123456799000:role/SimpleSystemsManager ||
|| CreateDate | 2018-01-01T00:00:00Z ||
|| Description| Allows EC2 instances to call AWS services like CloudWatch and SSM on your behalf. ||
|| Path | / ||
|| RoleId | AROABCDEFGHIJKLMNOPQ2 ||
|| RoleName | SimpleSystemsManager ||
|+-------------+--------------------------------------------------------------------------------------+|
||| AssumeRolePolicyDocument |||
||+------------------------------------------+-------------------------------------------------------+||
||| Version | 2012-10-17 |||
||+------------------------------------------+-------------------------------------------------------+||
|||| Statement ||||
|||+---------------------------------+--------------------------------------------------------------+|||
|||| Action | sts:AssumeRole ||||
|||| Effect | Allow ||||
|||| Sid | ||||
|||+---------------------------------+--------------------------------------------------------------+|||
||||| Principal |||||
||||+-------------------------------+--------------------------------------------------------------+||||
||||| Service | ec2.amazonaws.com |||||
||||+-------------------------------+--------------------------------------------------------------+||||
JSON
{
"Roles": [
{
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
}
}
]
},
"RoleId": "AROABCDEFGHIJKLMNOPQ1",
"CreateDate": "2018-01-01T00:00:00Z",
"RoleName": "Lambda-Snapshot",
"Path": "/",
"Arn": "arn:aws:iam::123456789000:role/Lambda-Snapshot"
},
{
"Description": "Allows EC2 instances to call AWS services like CloudWatch and SSM on your behalf.",
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Effect": "Allow",
"Sid": ""
}
]
},
"RoleId": "AROABCDEFGHIJKLMNOPQ2",
"CreateDate": "2018-01-01T00:00:00Z",
"RoleName": "SimpleSystemsManager",
"Path": "/",
"Arn": "arn:aws:iam::123456789000:role/SimpleSystemsManager"
}
]
}
出力結果から以下の項目が取得できます。
項目 | 形式 | 説明 | 対応箇所 |
---|---|---|---|
Path | string | ロールへのパス。 | パス |
Arn | string | 役割を指定するAmazonリソース名(ARN)。 | ロールの ARN |
RoleName | string | ロールを識別するわかりやすい名前 | ロール名 |
RoleId | string | ロールを識別する安定したユニークな文字列。 | – |
CreateDate | timestamp | ロールが作成された日付と時刻(ISO 8601の日付/時刻形式)。 | 作成時刻 |
AssumeRolePolicyDocument | string | エンティティにロールを引き継ぐ権限を与えるポリシー。 | – |
Description | string | あなたが提供するロールの説明。 | 説明 |
また、第三者に対して明示的に引き受けを許可する設定[AssumeRolePolicyDocument]として、ロールのみに追加されている項目には以下のようなものが存在します。
Statement
Action | 実行 | Principalに対し実行する内容 | |
Effect | 効果 | 許可/拒否を設定する | |
Sid | セキュリティ識別子 | セキュリティとして識別するID |
Principal
Service | – | サービスを信頼する |
AWS | – | アカウントを信頼する |
ユーザー情報の取得 [ list-users ] と同じ要領となりますのでわかりやすいと思います。
また、 同様に [ list-attached-role-policies ] と [ get-role-policy ] を使用してロールに適用されているアクセス権を取得することもができます。