次の方法で共有


Azure Cosmos DB for MongoDB 仮想コア クラスターの Microsoft Entra ID 認証を構成する

この記事では、Azure Cosmos DB for MongoDB 仮想コアの Microsoft Entra ID 認証を構成する方法について説明します。 このガイドの手順では、既存の Azure Cosmos DB for MongoDB 仮想コア クラスターを構成して、ユーザー ID (現在サインインしているアカウント) で Microsoft Entra ID 認証を使用します。 Microsoft Entra ID 認証を使用すると、組織の既存の ID を使用して、データベースに安全かつシームレスにアクセスできます。 このガイドでは、認証の設定、ユーザーまたはサービス プリンシパルの登録、構成の検証の手順について説明します。

[前提条件]

  • 既存の Azure Cosmos DB for MongoDB (仮想コア) クラスター。
  • Azure Cloud ShellAzure CLI の最新バージョン。

    • CLI 参照コマンドをローカルで実行する場合は、 az login コマンドを使用して Azure CLI にサインインします。

サインイン ID メタデータを取得する

まず、現在サインインしている ID の一意の識別子を取得します。

  1. az ad signed-in-user を使用して、現在ログインしているアカウントの詳細を取得します。

    az ad signed-in-user show
    
  2. このコマンドは、さまざまなフィールドを含む JSON 応答を出力します。

    {
      "@odata.context": "<https://graph.microsoft.com/v1.0/$metadata#users/$entity>",
      "businessPhones": [],
      "displayName": "Kai Carter",
      "givenName": "Kai",
      "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
      "jobTitle": "Senior Sales Representative",
      "mail": "<kai@adventure-works.com>",
      "mobilePhone": null,
      "officeLocation": "Redmond",
      "preferredLanguage": null,
      "surname": "Carter",
      "userPrincipalName": "<kai@adventure-works.com>"
    }
    
  3. id プロパティの値を記録します。 このプロパティは、プリンシパルの一意識別子であり、プリンシパル ID と呼ばれることもあります。 この値は、次の一連の手順で使用します。

認証用に既存のクラスターを構成する

Azure Cosmos DB for MongoDB 仮想コア クラスターを作成すると、クラスターは既定でネイティブ認証用に構成されます。 Azure CLI を使用して、Microsoft Entra ID 認証をサポートするように既存のクラスターを構成します。 次に、ユーザーをサインイン ID にマップするようにクラスターを構成します。

  1. 次に、authConfigを使用して、既存のクラスターから az resource show プロパティを取得します。

    az resource show \
        --resource-group "<resource-group-name>" \
        --name "<cluster-name>" \
        --resource-type "Microsoft.DocumentDB/mongoClusters" \
        --query "properties.authConfig" \
        --latest-include-preview
    
  2. 出力を確認します。 Microsoft Entra ID 認証が構成されていない場合、出力にはallowedModes配列のNativeAuth値のみが含まれます。

    {
      "allowedModes": [
        "NativeAuth"
      ]
    }
    
  3. 次に、PATCH値を MicrosoftEntraID に追加して、HTTP allowedModes操作で既存のクラスターを更新します。

    az resource patch \
        --resource-group "<resource-group-name>" \
        --name "<cluster-name>" \
        --resource-type "Microsoft.DocumentDB/mongoClusters" \
        --properties '{"authConfig":{"allowedModes":["MicrosoftEntraID","NativeAuth"]}}' \
        --latest-include-preview
    

    ヒント

    Azure Cloud Shell を使用している場合は、ファイルをシェルに直接アップロードまたはダウンロードできます。 詳細については、 Azure Cloud Shell のマネージド ファイルに関するページを参照してください。

    また、 az restで直接 Azure REST API を使用する場合は、次の代替コマンドを使用します。

    az rest \
        --method "PUT" \
        --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.DocumentDB/mongoClusters/<cluster-name>?api-version=2025-04-01-preview" \
        --body '{"___location":"<cluster-region>","properties":{"authConfig":{"allowedModes":["MicrosoftEntraID","NativeAuth"]}}}'
    
  4. az resource showをもう一度使用し、properties.authConfigを含むクラスターの構成全体を監視することで、構成が成功したことを検証します。

    az resource show \
        --resource-group "<resource-group-name>" \
        --name "<cluster-name>" \
        --resource-type "Microsoft.DocumentDB/mongoClusters" \
        --latest-include-preview
    
    {
      ...
      "properties": {
        ...
        "authConfig": {
          "allowedModes": [
            "MicrosoftEntraID",
            "NativeAuth"
          ]
        },
        ...
      },
      ...
    }
    
  5. az resource createを使用して、Microsoft.DocumentDB/mongoClusters/users型の新しいリソースを作成します。 親クラスターの名前と ID のプリンシパル ID を連結して、リソースの名前を作成します。

    az resource create \
        --resource-group "<resource-group-name>" \
        --name "<cluster-name>/users/<principal-id>" \
        --resource-type "Microsoft.DocumentDB/mongoClusters/users" \
        --___location "<cluster-region>" \
        --properties '{"identityProvider":{"type":"MicrosoftEntraID","properties":{"principalType":"User"}},"roles":[{"db":"admin","role":"dbOwner"}]}' \
        --latest-include-preview
    

    ヒント

    たとえば、親リソースの名前が example-cluster で、プリンシパル ID が aaaaaaaa-0000-1111-2222-bbbbbbbbbbbbされた場合、リソースの名前は次のようになります。

    "example-cluster/users/aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
    

    また、マネージド ID などのサービス プリンシパルを登録する場合は、 identityProvider.properties.principalType プロパティの値を ServicePrincipalに置き換えます。

    最後に、 az restで直接 Azure REST API を使用する場合は、次の代替コマンドを使用します。

    az rest \
        --method "PUT" \
        --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.DocumentDB/mongoClusters/<cluster-name>/users/<principal-id>?api-version=2025-04-01-preview" \
        --body '{"___location":"<cluster-region>","properties":{"identityProvider":{"type":"MicrosoftEntraID","properties":{"principalType":"User"}},"roles":[{"db":"admin","role":"dbOwner"}]}}'
    

クラスターに追加された Microsoft Entra ID ユーザーは、同じクラスターで定義されているネイティブ DocumentDB ユーザーに加わります。 Azure Cosmos DB for MongoDB 仮想コア クラスターは、少なくとも 1 人の組み込みのネイティブ DocumentDB ユーザーで作成されます。 クラスターのプロビジョニングが完了した後で、さらにネイティブ DocumentDB ユーザーを追加できます。

クラスターに接続する

任意の言語のドライバーから接続 URI またはカスタム設定オブジェクトを使用してクラスターに接続できます。 どちらのオプションでも、クラスターに接続するために スキームmongodb+srv に設定する必要があります。 ホストは、現在のクラスターまたはグローバル読み取り/書き込みエンドポイントのどちらを使用しているかに応じて、*.global.mongocluster.cosmos.azure.comまたは*.mongocluster.cosmos.azure.comドメインにあります。 +srvスキームと*.global.* ホストにより、リージョンスワップ操作が発生した場合でも、クライアントがマルチクラスター構成の適切な書き込み可能なクラスターに動的に接続されます。 単一クラスター構成では、いずれかのホストを無差別に使用できます。

tls設定も有効にする必要があります。 残りの推奨設定は、ベスト プラクティスの構成設定です。

選択肢 価値
スキームの mongodb+srv
ホスト <cluster-name>.global.mongocluster.cosmos.azure.com または <cluster-name>.mongocluster.cosmos.azure.com
tls true
authMechanism MONGODB-OIDC
retrywrites false
maxIdleTimeMS 120000

Azure portal の [クラスターのプロパティ] ページの [設定] で[ 接続文字列] を開きます。 [ 接続文字列] ページには、クラスターで有効になっている認証方法の接続文字列が含まれています。 Microsoft Entra ID 接続文字列は、 Microsoft Entra ID セクションにあります。

  • グローバル

    mongodb+srv://<cluster-name>.global.mongocluster.cosmos.azure.com/?tls=true&authMechanism=MONGODB-OIDC&retrywrites=false&maxIdleTimeMS=120000
    
  • クラスター

    mongodb+srv://<cluster-name>.mongocluster.cosmos.azure.com/?tls=true&authMechanism=MONGODB-OIDC&retrywrites=false&maxIdleTimeMS=120000