我嘗試使用 AWS Identity and Access Management (IAM) 使用者執行 API 動作,將角色傳遞給 AWS 服務。API 動作失敗,且我收到類似以下的錯誤: 「You are not authorized to perform this operation.User: arn:aws:iam::123456789012:user/Bob is not authorized to perform: iam:PassRole on resource: arn:aws:iam::123456789012:role/ExampleRole because no identity-based policy allows the iam:PassRole action.」
簡短說明
部分 AWS 服務可讓您將既有 IAM 角色傳遞至該服務,因此您不必建立新的服務角色。不過,您必須具備將 IAM 角色傳遞至 AWS 服務的權限。
解決方法
若要修正此問題,請更新 IAM 政策,允許 IAM 使用者針對 AWS 服務執行 iam:PassRole API 動作。
**注意:**您只能使用 PassRole 權限,將 IAM 角色傳遞至相同 AWS 帳戶中的 AWS 服務,不能傳遞至其他帳戶。如需更多資訊,請參閱 IAM 中的跨帳戶資源存取。
以下 IAM 政策範例允許 IAM 使用者將名為 ExampleRole 的角色,傳遞至 Amazon Elastic Compute Cloud (Amazon EC2) 服務:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": "arn:aws:iam::account-ID:role/ExampleRole",
"Condition": {
"StringEquals": {
"iam:PassedToService": "ec2.amazonaws.com"
}
}
}
]
}
**注意:**請將 ExampleRole 替換為您的角色,並將 account-ID 替換為您的帳戶 ID。
請在 Resource 元素中包含特定資源 ARN,以限制使用者將角色傳遞給其他使用者的能力,並防止混淆代理人問題。如需更多資訊,請參閱授予使用者將角色傳遞至 AWS 服務的權限。
相關資訊
如何搭配 IAM 角色使用 PassRole 權限