IAMポリシーが欠落しているか、関連リソースにアクセスできないため、ゲートウェイまたはデプロイメントの作成または更新に失敗しました

APIゲートウェイ・サービスの使用時に、IAMポリシーの欠落またはアクセスできない関連リソースが原因で発生したゲートウェイの作成および更新の失敗をトラブルシューティングする方法を確認してください。

ゲートウェイまたはデプロイメントを作成または更新するリクエストは、リクエスト本文が有効な場合でも失敗する可能性があります。コール元、ゲートウェイまたは参照先リソースがテナンシ、コンパートメント、タグまたは関連リソースの前提条件を満たしていないため、障害が発生する可能性があります。

トラブルシューティングの前に

ポリシーまたは関連リソースを更新する前に、次のトピックを確認してください。

問題の症状

次の症状が1つ以上表示される場合があります。

  • ゲートウェイの作成または更新は、リクエスト本文が有効であっても失敗します。

  • ターゲット・ゲートウェイが存在していても、デプロイメントの作成または更新は失敗します。

  • レスポンスにはNotAuthorizedOrNotFoundが含まれます。

  • レスポンスにはRelatedResourceNotAuthorizedOrNotFoundが含まれます。

  • コール元にはAPIゲートウェイ権限がありますが、操作は失敗します。

  • リクエストはタグベースのIAM条件を使用し、認可は引き続き失敗します。

考えられる理由

作成および更新操作には、APIゲートウェイ・リソースへのアクセスを許可するポリシー以上のものが必要になる場合があります。コール元は、リクエストが使用する各関連リソースへのアクセス権も持っている必要があります。

一般的な原因には次の問題があります。

  • コール元には、ゲートウェイまたはデプロイメントを含むコンパートメントにmanage api-gateway-familyがありません。

  • コール元には、サブネットまたは関連するネットワーク・リソースを含むコンパートメントにmanage virtual-network-familyがありません。

  • デプロイメントでは、ファンクション、証明書、認証局、ボールト・シークレットなどの機能が使用されますが、必要な機能固有のポリシーがありません。

  • リクエストは、ポリシー・スコープ外のコンパートメント内のリソースを参照します。

  • タグベースのIAM条件が、ターゲット・リソースまたは関連リソースと一致しません。

  • リクエストで、ゲートウェイ、サブネット、証明書、シークレットまたは別の関連リソースに不正なOracle Cloud Identifier (OCID)が使用されています。

必要なポリシーのレビュー

まず、最も一般的なHTTPバックエンド・デプロイメント・シナリオに適用されるコア・ポリシーがコール元にあることを確認します。

HTTPバックエンド・サービスを使用するゲートウェイおよびデプロイメントの場合、コール元には通常、次のポリシーが必要です:

Allow group <group-name> to manage api-gateway-family in compartment <apigw-compartment>
Allow group <group-name> to manage virtual-network-family in compartment <network-compartment>

これらのポリシーは、一般的なケースのみを対象としています。ゲートウェイまたはデプロイメントで追加の機能を使用する場合は、各機能に一致するポリシーを追加します。

次の機能固有のポリシーを開始点として使用します。

  • OCI Functionsをバックエンド・サービスとして使用するデプロイメントの場合、ファンクション・リソースへのアクセス権を付与します:

    Allow group <group-name> to use functions-family in compartment <functions-compartment>
  • 証明書サービス証明書を使用するカスタム・ドメインの場合、証明書アソシエーションへのアクセス権を付与します:

    Allow group <group-name> to manage certificate-associations in compartment <apigw-compartment>
  • ゲートウェイ・トラスト・ストア内のカスタム認証局(CA)またはCAバンドルの場合、認証局リソースへのアクセス権を付与します:

    Allow group <group-name> to manage certificate-authority-family in compartment <apigw-compartment>
  • Vaultサービスのボールトに格納されたレスポンス・キャッシュ資格証明または認証プロバイダ資格証明の場合は、ゲートウェイの動的グループを作成し、シークレット・バンドルを読み取るためのゲートウェイ・アクセス権を付与します:

    allow dynamic-group <dynamic-group-name> to read secret-bundles in compartment <secret-compartment>
  • 特定のシークレットにアクセスするには、そのシークレットOCIDへのアクセスを制限するポリシーを使用します:

    allow dynamic-group <dynamic-group-name> to read secret-bundles in compartment <secret-compartment> where target.secret.id='<secret_ocid>'

エラー・レスポンスのレビュー

失敗したレスポンスを使用して、失敗した操作と返された認可エラーを特定します。

次の応答フィールドを記録します。

  • operation_name

  • status

  • code

  • opc-request-id

この問題の場合、一般的な失敗したレスポンスには次の値が含まれます。

  • operation_name: create_deployment

  • status: 404

  • code: NotAuthorizedOrNotFound

失敗したリクエストを診断およびサポート・データと関連付けられるように、opc-request-id値を保持します。

IAMポリシー・スコープの確認

失敗した操作を、操作に必要なポリシー・スコープと照合します。

ゲートウェイの作成または更新操作の場合は、次の要件を確認します。

  • 呼出し側は、ゲートウェイを含むコンパートメント内のAPIゲートウェイ・リソースを管理できます。

  • 呼出し側は、サブネットおよび関連するネットワーク・リソースを含むコンパートメント内のネットワーク・リソースを管理できます。

デプロイメント作成または更新操作の場合は、次の要件を確認します。

  • コール元は、デプロイメントを含むコンパートメント内のAPIゲートウェイ・リソースを管理できます。

  • コール元には、デプロイメント構成に必要な各機能固有のポリシーがあります。

リクエストでカスタム・ドメイン、CAバンドル、ボールト・シークレットまたはファンクション・バックエンドを使用する場合は、対応する機能固有のポリシーを確認します。

コンパートメントおよび関連リソースの確認

リクエストは、メインAPIゲートウェイ・ポリシーが存在する場合でも失敗する可能性があります。この障害は、関連リソースが欠落しているか、アクセスできないか、またはポリシー・スコープ外にある場合に発生する可能性があります。

必要に応じて、コール元が次のリソースにアクセスできることを確認します。

  • ターゲット・ゲートウェイ。

  • ターゲット・デプロイメント・コンパートメント。

  • ゲートウェイによって参照されるサブネット。

  • 任意の証明書リソース。

  • 任意のCAバンドルまたはCAリソース。

  • 任意のFunctionsバックエンド・サービス。

  • ゲートウェイまたはデプロイメント・フローに必要なボールト・シークレット。

各リソースが、関連するポリシーの対象となるコンパートメントにあることを確認します。

タグベースのポリシー条件の確認

テナンシがタグに基づいてIAM条件を使用する場合は、タグ条件がコール元および各ターゲット・リソースと一致することを確認します。

一般的なタグ関連の障害点には、次の問題があります。

  • リクエスト・プリンシパル・グループ・タグがターゲット・リソース・タグと一致しません。

  • ターゲット・リソース・タグ値がポリシー式と一致しません。

  • リソースは存在しますが、タグ条件はfalseと評価されます。

  • 関連リソースに必須の定義済タグがありません。

リソースが存在することを確認した後に停止しないでください。リソース・タグもポリシーを満たしていることを確認します。

Gatewayネットワーク構成の確認

失敗した操作によってゲートウェイが作成または更新される場合は、ゲートウェイが予期されるサブネットおよびエンドポイント・タイプを参照していることを確認します。

次の要求フィールドを確認します。

  • gateway.subnetId

  • gateway.endpointType

次のネットワーク要件を確認します。

  • サブネットが存在しています。

  • サブネットはリージョナルです。

  • サブネットは必要なコンパートメントにあります。

  • エンドポイント・タイプは、目的のパブリック設計またはプライベート設計と一致します。

  • 呼び出し元には、サブネットおよび関連するネットワークリソースを使用する権限があります。

要求コンテキストの検証

既存のゲートウェイの場合、ゲートウェイの詳細を直接取得します:

oci api-gateway gateway get --gateway-id <gateway_ocid>

応答を使用して、次の値を確認します。

  • ゲートウェイが存在します。

  • ゲートウェイは必要なコンパートメントにあります。

  • ゲートウェイは意図したサブネットを使用します。

  • ゲートウェイは、予期されるエンドポイント・タイプを使用します。

失敗した操作でデプロイメントが作成された場合は、リクエストが目的のゲートウェイおよびコンパートメントをターゲットにしていることを確認します。

ポリシーおよびリソース・アクセスの修正

失敗した認可またはリソース・アクセス・チェックに一致する修正を適用します。

次の修正をガイドとして使用します。

  • コール元にAPIゲートウェイ・リソース権限がない場合は、manage api-gateway-familyを追加または修正します。

  • コール元にサブネットまたはネットワーク権限がない場合は、manage virtual-network-familyを追加または修正します。

  • デプロイメントでFunctionsが使用されている場合は、use functions-familyを追加または修正します。

  • ゲートウェイが証明書アソシエーションを使用する場合は、manage certificate-associationsを追加または修正します。

  • ゲートウェイがカスタムCAまたはCAバンドルを使用する場合は、manage certificate-authority-familyを追加または修正します。

  • ゲートウェイがシークレットを読み取る必要がある場合は、ゲートウェイ動的グループおよびread secret-bundlesポリシーを作成または修正します。

  • リソースが許可されたコンパートメント外にある場合は、コンパートメント・スコープを修正してください。

  • タグベースの認可に失敗した場合は、タグ値またはIAM条件を修正してください。

  • リクエスト内の不正なOCIDを修正してください。

一般的な根本原因チェックリスト

リクエストを再試行する前に、次のすべてを確認します。

  • コール元はAPIゲートウェイ・リソースを管理できます。

  • 呼び出し元はネットワークリソースを管理できます。

  • コール元には、リクエストに必要な機能固有のポリシーがあります。

  • ゲートウェイ動的グループには、必要なシークレット・アクセスがあります。

  • すべての参照リソースが存在します。

  • 参照されるリソースはすべて、必要なコンパートメントにあります。

  • すべてのタグベースの条件が一致します。

  • リクエストは正しいOCIDsを使用します。

解決の確認

IAMポリシー、タグ条件または関連リソース・アクセスを修正した後、同じゲートウェイまたはデプロイメント操作を再試行してください。

次の結果を確認します。

  • この操作は、NotAuthorizedOrNotFoundまたはRelatedResourceNotAuthorizedOrNotFoundを返さなくなりました。

  • ゲートウェイまたはデプロイメントは、予想されるライフサイクル状態に入ります。

  • 認可または関連リソース検証中にリクエストが失敗しなくなりました。