我想使用身分型政策來授與特定 AWS Identity and Access Management (IAM) 角色工作階段的許可。
解決方案
建立 IAM 政策以使用 AWS 全域條件內容金鑰 aw:userid 來允許特定 IAM 角色工作階段的存取。
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤,請確保您使用的是最新的 AWS CLI 版本。
aw: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 政策可授與 Amazon EC2 執行個體在 aws:userid 全域條件金鑰中的 IAM 角色工作階段之存取。其他角色的工作階段無法執行任何 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 角色工作階段的存取範圍。
**注意:**aw:userid 全域條件金鑰可用於任何類型的 IAM 政策,例如身分型政策、資源型政策、許可邊界政策等。aw:userid 全域條件金鑰的值取決於發出請求的主體類型。若要確定不同類型之主體的值,請參閲在所有請求中可取得的資訊。
相關資訊
我可以限制 IAM 使用者對特定 Amazon EC2 資源的存取嗎?
如何使用 IAM 政策標籤來限制 EC2 執行個體或 EBS 磁碟區的建立方式?