アイデンティティベースのポリシーを使用して、特定の AWS Identity and Access Management (IAM) ロールセッションに許可を付与したいと考えています。
解決方法
AWS グローバル条件コンテキストキー aws:userid を使用して、特定の IAM ロールセッションへのアクセスを許可する IAM ポリシーを作成します。
注意: AWS Command Line Interface (AWS CLI) コマンドの実行中にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください。
aws:userid グローバル条件キーは、リクエストを行うプリンシパルの一意の ID が IAM ポリシーで指定された一意の ID と一致するかどうかをチェックします。
例えば、特定の IAM ロールセッションで、お客様の AWS アカウントで特定の Amazon Elastic Compute Cloud (Amazon EC2) アクションのみを実行できるようにする場合などです。次のような IAM ポリシーを追加します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowASpecificRoleSession",
"Effect": "Allow",
"Action": [
"ec2:StartInstances",
"ec2:StopInstances",
"ec2:RebootInstances",
"ec2:TerminateInstances"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:userid": "AROAXXXXXXXXXXXXXXXXX:<role-session-name>"
}
}
}
]
}
この IAM ポリシーは、aws:userid グローバル条件キーの IAM ロールセッションへのアクセスを Amazon EC2 インスタンスに付与します。他のロールセッションでは Amazon EC2 アクションを実行できません。
IAM ロールのロール ID を取得するには、次の AWS CLI コマンドを実行します。
$ aws iam get-role --role-name <rolename>
次のような出力が表示されます。
{
"Role": {
"Description": "Test Role",
"AssumeRolePolicyDocument":"<URL-encoded-JSON>",
"MaxSessionDuration": 3600,
"RoleId": "AROA1234567890EXAMPLE",
"CreateDate": "2019-11-13T16:45:56Z",
"RoleName": "Test-Role",
"Path": "/",
"RoleLastUsed": {
"Region": "us-east-1",
"LastUsedDate": "2019-11-13T17:14:00Z"
},
"Arn": "arn:aws:iam::123456789012:role/Test-Role"
}
}
出力で RoleId 文字列を確認します。ロール ID は、Amazon EC2 インスタンスが IAM ロールセッションにアクセスできるようにするために、アイデンティティベースのポリシーで使用されます。
注意: aws:userid グローバル条件キーは、アイデンティティベースのポリシー、リソースベースのポリシー、許可境界ポリシーなど、あらゆるタイプの IAM ポリシーで使用できます。aws:userid グローバル条件キーの値は、リクエストを開始するプリンシパルのタイプによって異なります。さまざまなタイプのプリンシパルの値を調べるには、「すべてのリクエストで利用可能な情報」を参照してください。
関連情報
IAM ユーザーによるアクセスを特定の Amazon EC2 リソースに制限することはできますか?
IAM ポリシータグを使用して EC2 インスタンスまたは EBS ボリュームの作成方法を制限するにはどうすればよいですか?