アクセス拒否エラーメッセージのトラブルシューティング - AWS Identity and Access Management

アクセス拒否エラーメッセージのトラブルシューティング

アクセス拒否エラーは、AWS が認証リクエストを明示的または暗黙的に拒否した場合に表示されます。明示的な拒否は、特定の AWS アクションに対する Deny ステートメントがポリシーに含まれている場合に発生します。該当する Deny ステートメントがなく、該当する Allow ステートメントもない場合に、暗黙的な拒否が発生します。IAM ポリシーはデフォルトで IAM プリンシパルを拒否するため、ポリシーではプリンシパルにアクションの実行を明示的に許可する必要があります。それ以外の場合、ポリシーは暗黙的にアクセスを拒否します。詳細については、「明示的な拒否と暗黙的な拒否の違い」を参照してください。

ほとんどのアクセス拒否のエラーメッセージは、User user is not authorized to perform action on resource because context の形式です。この例では、ユーザーはアクセスを受信しない Amazon リソースネーム (ARN) であり、アクションはポリシーが拒否するサービスアクションであり、リソースは、ポリシーが作用するリソースの ARN です。[context] (コンテキスト) フィールドには、ポリシータイプについての追加のコンテキストが表示され、ポリシーがアクセスを拒否した理由が説明されています。

ポリシー内の Deny ステートメントによって明示的にポリシーが拒否された場合、AWS はアクセス拒否エラーメッセージに with an explicit deny in a type policy を含めます。ポリシーが暗黙的に拒否された場合は、AWS はアクセス拒否エラーメッセージに文字列 because no type policy allows the action action を含めます。

ポリシータイプが同じである複数のポリシーが認証リクエストを拒否した場合、AWS はアクセス拒否エラーメッセージでポリシーの番号を特定しません。複数のポリシータイプが原因で認証リクエストが拒否された場合、AWS は、これらのポリシータイプのうち 1 つだけをエラーメッセージに含めます。

アクセス拒否エラーメッセージの例

次の例では、アクセス拒否エラーメッセージの形式のタイプを示します。

サービスコントロールポリシーによるアクセスの拒否

次のエラーについては、サービスコントロールポリシー (SCP) で codecommit:ListRepositoriesDeny ステートメントまたは欠落している Allow ステートメントを確認します。

注記

SCP がアクセスを拒否すると、拒否が暗黙的であってもエラーメッセージには常に文字列 due to an explicit deny in a Service Control Policy が含まれます。

User: arn:aws:iam::777788889999:user/JohnDoe is not authorized to perform: codecommit:ListRepositories with an explicit deny in a service control policy

VPC エンドポイントポリシーによるアクセスの拒否

  • 暗黙的な拒否: 次のエラーについては、仮想プライベートクラウド (VPC) エンドポイントポリシーで欠落している codecommit:ListRepositoriesAllow ステートメントを確認します。

    User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: codecommit:ListRepositories because no VPC endpoint policy allows the codecommit:ListRepositories action
  • 明示的な拒否: 次のエラーについては、VPC エンドポイントポリシーで明示的な codecommit:ListDeploymentsDeny ステートメントを確認します。

    User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: codedeploy:ListDeployments on resource: arn:aws:codedeploy:us-east-1:123456789012:deploymentgroup:* with an explicit deny in a VPC endpoint policy

アクセス許可の境界によりアクセスの拒否

  • 暗黙的な拒否: 次のエラーについては、アクセス許可の境界で欠落している codecommit:ListDeploymentsAllow ステートメントを確認します。

    User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: codedeploy:ListDeployments on resource: arn:aws:codedeploy:us-east-1:123456789012:deploymentgroup:* because no permissions boundary allows the codedeploy:ListDeployments action
  • 明示的な拒否: 次のエラーについては、アクセス許可の境界で明示的な sagemaker:ListModelsDeny ステートメントを確認します。

    User: arn:aws:iam::777788889999:user/JohnDoe is not authorized to perform: sagemaker:ListModels with an explicit deny in a permissions boundary

セッションポリシーによるアクセスの拒否

  • 暗黙的な拒否: 次のエラーについては、セッションポリシーで暗黙的な codecommit:ListRepositoriesAllow ステートメントを確認します。

    User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: codecommit:ListRepositories because no session policy allows the codecommit:ListRepositories action
  • 明示的な拒否: 次のエラーについては、セッションポリシーで明示的な codecommit:ListDeploymentsDeny ステートメントを確認します。

    User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: codedeploy:ListDeployments on resource: arn:aws:codedeploy:us-east-1:123456789012:deploymentgroup:* with an explicit deny in a sessions policy

リソースベースのポリシーによるアクセスの拒否

  • 暗黙的な拒否: 次のエラーについては、リソースベースポリシーで欠落している secretsmanager:GetSecretValueAllow ステートメントを確認します。

    User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: secretsmanager:GetSecretValue because no resource-based policy allows the secretsmanager:GetSecretValue action
  • 明示的な拒否: 次のエラーについては、リソースベースポリシーで明示的な secretsmanager:GetSecretValueDeny ステートメントを確認します。

    User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: secretsmanager:GetSecretValue on resource: arn:aws:secretsmanager:us-east-1:123456789012:secret:* with an explicit deny in a resource-based policy

ロール信頼ポリシーによるアクセスの拒否

  • 暗黙的な拒否: 次のエラーについては、ロール信頼ポリシーで暗黙的な sts:AssumeRoleAllow ステートメントを確認します。

    User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: sts:AssumeRole because the role trust policy allows the sts:AssumeRole action
  • 明示的な拒否: 次のエラーについては、ロール信頼ポリシーで欠落している sts:AssumeRoleAllow ステートメントを確認します。

    User: arn:aws:iam::777788889999:user/JohnDoe is not authorized to perform: sts:AssumeRole with an explicit deny in the role trust policy

ID ベースのポリシーによるアクセスの拒否

  • 暗黙的な拒否: 次のエラーについては、ユーザー JohnDoe にアタッチされた ID ベースポリシーで欠落している codecommit:ListRepositoriesAllow ステートメントを確認します。

    User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: codecommit:ListRepositories because no identity-based policy allows the codecommit:ListRepositories action
  • 明示的な拒否: 次のエラーについては、ユーザー JohnDoe にアタッチされた ID ベースポリシーで明示的な codedeploy:ListDeploymentsDeny ステートメントを確認します。

    User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: codedeploy:ListDeployments on resource: arn:aws:codedeploy:us-east-1:123456789012:deploymentgroup:* with an explicit deny in an identity-based policy

別のポリシーが原因で VPC 要求が失敗した場合のアクセス拒否

次のエラーについては、SCP で明示的な SNS:PublishDeny ステートメントを確認します。

User: arn:aws:sts::111122223333:assumed-role/role-name/role-session-name is not authorized to perform: SNS:Publish on resource: arn:aws:sns:us-east-1:444455556666:role-name-2 with an explicit deny in a VPC endpoint policy transitively through a service control policy