次の方法で共有


Azure Cosmos DB の 禁止例外を診断してトラブルシューティングする

HTTP 状態コード 403 は、要求の完了が禁止されていることを表します。

要求をブロックするファイアウォール

データ プレーン要求は、次の 3 つのパスを使用して Azure Cosmos DB に送信できます。

  • パブリック インターネット (IPv4)
  • サービス エンドポイント
  • プライベート エンドポイント

データ プレーン要求が 403 Forbidden でブロックされた場合、エラー メッセージに、要求が前述の 3 つのパスのどれを経由して Azure Cosmos DB に送信されたかが示されます。

  • Request originated from client IP {...} through public internet.
  • Request originated from client VNET through service endpoint.
  • Request originated from client VNET through private endpoint.

解決策

Azure Cosmos DB に送信される要求がどのパスを経由すると予期されるかを理解します。

  • 予期されるパスを介して要求が Azure Cosmos DB に送信されなかったことを示すエラー メッセージが表示された場合は、クライアント側の設定に問題があると考えられます。 次のドキュメントに従って、クライアント側の設定を再確認します。
    • パブリック インターネット: Azure Cosmos DB で IP ファイアウォールを構成します
    • サービス エンドポイント: 仮想ネットワークから Azure Cosmos DB へのアクセスを構成します。 サービス エンドポイントを使うことを予期したのに、要求がパブリック インターネットから Azure Cosmos DB に送信されたかどうかを検討します。 この状況は、クライアントが実行されていたサブネットで、Azure Cosmos DB へのサービス エンドポイントが有効になっていなかったことを示している可能性があります。
    • プライベート エンドポイント: Azure Cosmos DB アカウントの Azure Private Link を構成する。 また、プライベート エンドポイントを使うことを予期したのに、要求がパブリック インターネットから Azure Cosmos DB に送信されたかどうかも検討します。 この状況は、仮想マシン上のドメイン ネーム サーバー (DNS) が、アカウント エンドポイントをパブリック IP アドレスではなくプライベートに解決するように構成されていなかったことを示している可能性があります。
  • 要求が予期されるパスを経由して Azure Cosmos DB に送信された場合、ソース ネットワーク ID がアカウントに対して構成されていないため、要求はブロックされました。 要求が Azure Cosmos DB に送信されたパスに応じて、アカウントの設定を確認します。
    • パブリック インターネット: アカウントのパブリック ネットワーク アクセスと IP 範囲フィルターの構成を確認します。
    • サービス エンドポイント: アカウントのパブリック ネットワーク アクセスと仮想ネットワーク フィルター構成を確認します。
    • プライベート エンドポイント: アカウントのプライベート エンドポイント構成とクライアントのプライベート DNS 構成を確認します。 この問題は、別のアカウントに対して設定されているプライベート エンドポイントからアカウントにアクセスした場合に発生する可能性があります。

最近アカウントのファイアウォール構成を更新した場合は、変更が適用されるまでに最大 15 分かかる可能性があることに注意してください。

ストレージを超過するパーティション キー

このシナリオでは、次のようなエラーが表示されるのが一般的です:

Response status code does not indicate success: Forbidden (403); Substatus: 1014
Partition key reached maximum size of {...} GB

解決策

このエラーは、現在のパーティション デザインとワークロードでは、所与のパーティション キー値に対して、許可されるデータ量以上の格納が試行されることを意味します。 コンテナーの論理パーティションの数に上限はありませんが、各論理パーティションで格納できるデータのサイズには制限があります。 ご不明な点がございましたら、サポートにお問い合わせください。

除外されたデータ操作は許可されない

このシナリオは、Microsoft Entra の ID を使って除外されたデータ操作を実行しようとすると発生します。 このシナリオでは、次のようなエラーが表示されるのが一般的です:

Operation 'POST' on resource 'calls' is not allowed through Azure Cosmos DB endpoint
Forbidden (403); Substatus: 5300; The given request [PUT ...] cannot be authorized by AAD token in data plane.

解決策

Azure Resource Manager、Azure portal、Azure CLI、または Azure PowerShell から操作を実行します。

データベースまたはコンテナー リソース (データベースまたはコンテナーに対する create*createIfNotExistsreplace、または delete 操作など) を管理するデータ プレーン SDK メソッドで Microsoft Entra 認証を使用しているときにこのエラーが発生した場合、これらのメソッドはコントロール プレーンアクセスを必要とするため失敗します。 Microsoft Entra のロールベースのアクセス制御 (RBAC) を介してのみデータ プレーンにアクセスできる場合、コントロール プレーン操作を実行することはできません。 これらのタスクを完了するには、適切な Microsoft Entra RBAC ロール (共同作成者や Cosmos DB アカウント共同作成者など) と共に管理プレーン SDK を使用します。

Azure Functions Azure Cosmos DB トリガーを使用している場合は、CreateLeaseContainerIfNotExistsトリガーの プロパティが true に設定されていないことを確認してください。 Microsoft Entra ID を使用すると、リース コンテナーの作成など、データ以外の操作がブロックされます。