Azure Cosmos DB for NoSQL でキーベース認証を無効にする
適用対象: NoSQL
次の場所を含むデプロイ ガイドのシーケンスの図: 概要、概念、準備、ロールベースのアクセス制御、ネットワーク、リファレンス。 現在は "準備" の場所が強調表示されています。
この記事では、Azure Cosmos DB for NoSQL アカウントのキーベース認可 (またはリソース所有者パスワード資格情報認証) を無効にするプロセスについて説明します。
キーベース認可を無効にすることで、アカウントはより安全な Microsoft Entra 認証方法なしでは使用できなくなります。 この手順は、セキュリティで保護されたワークロードの新しいアカウントに対して実行する必要があるステップです。 または、セキュリティで保護されたワークロード パターンに移行されている既存のアカウントに対して、この手順を実行します。
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。
CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。
ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。
初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。
az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。
- Azure PowerShell をローカルで使用する場合は、次のようにします。
- Az PowerShell モジュールの最新バージョンをインストールします。
- Connect-AzAccount コマンドレットを使用して、Azure アカウントに接続します。
- Azure Cloud Shell を使用する場合は、次のようにします。
- 詳細については、Azure Cloud Shell の概要に関するページを参照してください。
キーベースの認証を無効にする
最初に、アプリケーションで Microsoft Entra 認証の使用が必要になるように、既存のアカウントに対するキーベースの認証を無効にします。 az resource update
を使用して、既存のアカウントの properties.disableLocalAuth
を変更します。
az resource update \
--resource-group "<name-of-existing-resource-group>" \
--name "<name-of-existing-account>" \
--resource-type "Microsoft.DocumentDB/databaseAccounts" \
--set properties.disableLocalAuth=true
最初に、アプリケーションで Microsoft Entra 認証の使用が必要になるように、キーベースの認証を無効にして新しいアカウントを作成します。
新しい Bicep ファイルを作成し、キーベースの認証を無効にして、新しいアカウントをデプロイします。 ファイルに deploy-new-account.bicep という名前を付けます。
metadata description = 'Deploys a new Azure Cosmos DB account with key-based auth disabled.' @description('Name of the Azure Cosmos DB account.') param name string = 'csms-${uniqueString(resourceGroup().id)}' @description('Primary location for the Azure Cosmos DB account.') param location string = resourceGroup().location resource account 'Microsoft.DocumentDB/databaseAccounts@2024-05-15' = { name: name location: location kind: 'GlobalDocumentDB' properties: { databaseAccountOfferType: 'Standard' locations: [ { locationName: location } ] disableLocalAuth: true } }
az deployment group create
を使用して、新しいアカウントで Bicep ファイルをデプロイします。az deployment group create \ --resource-group "<name-of-existing-resource-group>" \ --template-file deploy-new-account.bicep
最初に、アプリケーションで Microsoft Entra 認証の使用が必要になるように、既存のアカウントに対するキーベースの認証を無効にします。 Get-AzResource
と Set-AzResource
を使用して、それぞれで既存アカウントの読み取りと更新を行います。
$parameters = @{
ResourceGroupName = "<name-of-existing-resource-group>"
ResourceName = "<name-of-existing-account>"
ResourceType = "Microsoft.DocumentDB/databaseAccounts"
}
$resource = Get-AzResource @parameters
$resource.Properties.DisableLocalAuth = $true
$resource | Set-AzResource -Force
認証が無効になっていることを確認する
Azure SDK を使用して、リソース所有者パスワード資格情報 (ROPC) を使用した Azure Cosmos DB for NoSQL への接続を試みます。 この試みは失敗するはずです。 必要な場合のために、一般的なプログラミング言語のコード サンプルを以下に示します。
using Microsoft.Azure.Cosmos;
string connectionString = "AccountEndpoint=<nosql-endpoint>;AccountKey=<key>;";
CosmosClient client = new(connectionString);
重要
このコード サンプルでは、NuGet の Microsoft.Azure.Cosmos
ライブラリを使用します。