View a markdown version of this page

認可 ID を伴うアクセス拒否エラーメッセージのトラブルシューティング (プレビュー) - AWS Identity and Access Management

認可 ID を伴うアクセス拒否エラーメッセージのトラブルシューティング (プレビュー)

重要

Access Troubleshooter はパブリックプレビュー中です。

概要

AWS がサポート対象の API へのリクエストを拒否した場合、通常、アクセス拒否エラーレスポンスには認可 ID が含まれます。この ID は、拒否されたリクエストの認可評価を示します。評価の詳細を取得して拒否の原因を特定するには、GetRequestAuthorizationDetails API にリクエストして認可 ID を指定するか、エラーメッセージ内のリンクを開きます。これにより、アクセス拒否に 1 件ずつ対処することなく、1 回の呼び出しで拒否されたリクエストの原因を特定できます。

注記

AWS は、拒否されたリクエストごとに必ず認可 ID を提供するわけではありません。このドキュメント内の 認可 ID が提供されない場合 を参照してください。

以下は、ポリシー ARN、 AWS マネジメントコンソールへのリンク、認可 ID が記載されたアクセス拒否エラーメッセージの例です。

User: arn:aws:iam::123456789012:user/janedoe is not authorized to perform: iam:CreateInstanceProfile on resource: arn:aws:iam::123456789012:instance-profile/my-instance-profile with an explicit deny in an identity-based policy: arn:aws:iam::123456789012:policy/ExampleDenyPolicy. Go to https://us-east-1.console.aws.amazon.com/iam/home?region=us-east-1#/authorization-details/EXAMPLE1a2b3c4d5e6f7g8h9i0j for complete details, or call the GetRequestAuthorizationDetails API with the following authorization id: EXAMPLE1a2b3c4d5e6f7g8h9i0j

概念と定義

  • 認可の詳細。認可の詳細には、リクエストコンテキスト、実行された評価、評価されたポリシーが記載されます。

  • 認可 ID。サポート対象のアクセス拒否エラーレスポンスに含まれる一意の識別子。これは、拒否されたリクエストの認可評価を示すものであり、AWS マネジメントコンソールのリンクまたは GetRequestAuthorizationDetails API に渡す値です。

  • リクエストコンテキスト。リクエストに対して評価された条件コンテキストキーの値。グローバル条件コンテキストキーとサービス固有の条件コンテキストキーが含まれます。

  • 評価。リクエスト内のアクションとリソースの各ペアについて、適用された条件コンテキストキーと評価結果 (ALLOW、EXPLICIT_DENY (ポリシーによりアクションが明示的に拒否された場合)、または IMPLICIT_DENY (アクションを許可するポリシーがない場合))、およびそのアクションとリソースのペアに一致した各ポリシーとステートメントへの参照。各参照は、レスポンス全体で再利用されるポリシー ARN (マネージドポリシーの場合) または URI (インラインポリシーおよびその他の非マネージドポリシーの場合) です。

  • 認可中に評価されたポリシー。アクションとリソースのペアに一致しなかったポリシーなど、リクエストに対して AWS が考慮したポリシー。各エントリには、ポリシータイプ (アイデンティティベース、リソースベース、SCP、RCP、アクセス許可の境界、セッションポリシーなど) と、評価で使用されたものと同じ ARN (マネージドポリシーの場合) または URI (インラインポリシーおよびその他の非マネージドポリシーの場合) が含まれます。ARN または URI を使用して、ポリシーと、そのポリシーを参照した評価を対応付けます。「Attached to」フィールドには、評価されたポリシーがアタッチされているプリンシパルの ARN が表示されます。

これらの結果を組み合わせることで、アクセスを拒否したポリシーとその理由を特定できます。評価には、拒否時点でのポリシーが反映されます。その後にポリシーが変更されている可能性があります。

AWS は、サポート対象の API のアクセス拒否エラーレスポンスに認可 ID を自動的に追加しますが、認可 ID が必ず追加されるとは限りません。場合によっては、AWS は拒否に対する認可の詳細を記録せず、エラーレスポンスに認可 ID が含まれないこともあります。詳細が記録される場合でも、AWS による記録は非同期的に行われるため、すぐには取得できない場合があります。GetRequestAuthorizationDetails への呼び出しで、見つからない旨のレスポンスが返された場合は、しばらく待ってからもう一度試してください。AWS には、拒否後 24 時間、認可の詳細が保持されます。

AWS マネジメントコンソールを使用したトラブルシューティング

アクセス拒否エラーメッセージ内のリンクを選択して、Access Troubleshooter コンソールで認可の詳細を開きます。

  • 確認すべき点。Access Troubleshooter コンソールには、リクエスト内のアクションとリソースの各ペアに対する評価、各ペアの評価結果 (Allow、Explicit deny、または Implicit deny)、および評価で考慮されたポリシーが表示されます。拒否されたペアと拒否の原因となったポリシーを確認します。以下は、その例を示すスクリーンショットです。

    明示的な拒否と暗黙的な拒否が示された Access Troubleshooter コンソールのスクリーンショット。
  • 拒否が意図したとおりに起こったものかどうかを確認します。ポリシーを変更する前に、評価を確認します。拒否自体は適切で、その原因がポリシーではなくリクエストコンテキストにある場合もあります。例えば、リクエストに想定されているセッションタグがない場合や、想定外のネットワークパスを経由している場合などが挙げられます。

  • 拒否の解決方法。アクセスに関する問題を解決するには、対応するポリシーを見つけて更新します。明示的な拒否の場合は、そのアクションに対する Deny ステートメントを削除するか、適用範囲を絞り込みます。暗黙的な拒否の場合は、アクションに対する Allow ステートメントを追加します。詳細については、「IAM ポリシーを編集する」を参照してください。

認可の詳細にアクセスできるユーザー。1 つのアカウントまたは 1 つの組織内のリクエストの場合、iam:GetRequestAuthorizationDetails へのアクセス許可が付与されているユーザーであれば誰でもリクエストの詳細にアクセスできます。複数の組織にまたがるリクエストの場合、各ユーザーは自分の組織に関連する詳細のみを確認できます。

AWS API または AWS CLI を使用したトラブルシューティング

AWS API または AWS CLI を使用して拒否のトラブルシューティングを行う方法:

  1. アクセス拒否エラーレスポンスで認可 ID を確認します。

  2. 拒否が発生したのと同じ AWS リージョン で、認可 ID を使用して GetRequestAuthorizationDetails を呼び出します。以下は、AWS CLI コマンドの例です。

    aws iam-toolbox get-request-authorization-details \ --region us-east-1 \ --authorization-id EXAMPLE1a2b3c4d5e6f7g8h9i0j
  3. 評価結果を確認して、アクセスを拒否したポリシーと拒否の理由を特定します。

  4. 特定したポリシーを更新して、アクセスの問題を解決します。詳細については、「IAM ポリシーを編集する」を参照してください。

認可 ID が提供されない場合

次の場合、AWS は認可 ID を返しません。

  • 認可情報のサイズが大きすぎて記録できない場合。リクエストに多数のポリシーが関係する場合、AWS はリクエストを記録しない場合があります。

  • サービスがまだサポートされていない場合。「サポートされるサービス」を参照してください。

  • API がサポートされていない場合。サポート対象のサービスでも、一部の API は認可 ID を返しません。

  • リクエストタイプがサポートされていない場合。これには、ユーザーに代わってサービスが実行したリクエストと匿名リクエストが該当します。

認可 ID が提供されない場合に拒否を診断するその他の方法については、アクセス拒否エラーメッセージをトラブルシューティングする を参照してください。

その他の考慮事項

必要なアクセス許可: GetRequestAuthorizationDetails を呼び出すには、iam:GetRequestAuthorizationDetails アクションのアクセス許可が必要です。

リージョン API。 GetRequestAuthorizationDetails はリージョン API です。アクセス拒否エラーと認可 ID が生成されたのと同じ AWS リージョン で呼び出します。

組織間のリクエスト。拒否されたリクエストが複数の組織にまたがる場合、GetRequestAuthorizationDetails は呼び出し元が属する組織に関する詳細のみを返します。これはどちらの方向にも適用されます。拒否された呼び出し元の組織に属している場合は、その組織に関連する詳細のみが表示されます。拒否されたリソースの組織に属している場合は、その組織に関連する詳細のみが表示されます。別の組織が所有する詳細 (別の組織のポリシーやコンテキストキー値など) は返されません。

認可 ID の返却にまだ対応していない API、サービス、またはリージョンからアクセス拒否エラーが返された場合は、アクセス拒否エラーメッセージをトラブルシューティングする を参照してください。

サポートされるサービス

GetRequestAuthorizationDetails のサポートは、AWS API と AWS リージョン で順次提供されています。GetRequestAuthorizationDetails をサポートしているサービスは次のとおりです。

  • IAM のほとんどの API