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 アクセス許可のみを使用して、同じ AWS アカウントを共有する AWS サービスに IAM ロールを渡すことができます。別のアカウントの場合は渡せません。詳細については、「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 サービスにロールを渡すアクセス許可をユーザーに付与する」を参照してください。
関連情報
How to use the PassRole permission with IAM roles (IAM ロールで PassRole アクセス許可を使用する方法)