この記事では、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 Shell の Azure CLI の最新バージョン。
- CLI 参照コマンドをローカルで実行する場合は、
az login
コマンドを使用して Azure CLI にサインインします。
- CLI 参照コマンドをローカルで実行する場合は、
サインイン ID メタデータを取得する
まず、現在サインインしている ID の一意の識別子を取得します。
az ad signed-in-user
を使用して、現在ログインしているアカウントの詳細を取得します。az ad signed-in-user show
このコマンドは、さまざまなフィールドを含む 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>" }
id
プロパティの値を記録します。 このプロパティは、プリンシパルの一意識別子であり、プリンシパル ID と呼ばれることもあります。 この値は、次の一連の手順で使用します。
認証用に既存のクラスターを構成する
Azure Cosmos DB for MongoDB 仮想コア クラスターを作成すると、クラスターは既定でネイティブ認証用に構成されます。 Azure CLI を使用して、Microsoft Entra ID 認証をサポートするように既存のクラスターを構成します。 次に、ユーザーをサインイン ID にマップするようにクラスターを構成します。
次に、
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
出力を確認します。 Microsoft Entra ID 認証が構成されていない場合、出力には
allowedModes
配列のNativeAuth
値のみが含まれます。{ "allowedModes": [ "NativeAuth" ] }
次に、
PATCH
値をMicrosoftEntraID
に追加して、HTTPallowedModes
操作で既存のクラスターを更新します。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"]}}}'
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" ] }, ... }, ... }
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
関連コンテンツ
- Azure Cosmos DB for MongoDB 仮想コアでの Microsoft Entra ID 認証の概要
- Azure Cosmos DB for MongoDB 仮想コアでの Microsoft Entra ID の制限を 確認する
- コンソール アプリケーションを使用して接続する