Azure Cosmos DB for NoSQL でキーベース認証を無効にする

適用対象: NoSQL

デプロイ ガイドのシーケンス内の現在の場所 (

次の場所を含むデプロイ ガイドのシーケンスの図: 概要、概念、準備、ロールベースのアクセス制御、ネットワーク、リファレンス。 現在は "準備" の場所が強調表示されています。

この記事では、Azure Cosmos DB for NoSQL アカウントのキーベース認可 (またはリソース所有者パスワード資格情報認証) を無効にするプロセスについて説明します。

キーベース認可を無効にすることで、アカウントはより安全な Microsoft Entra 認証方法なしでは使用できなくなります。 この手順は、安全なワークロード内の新しいアカウントに対して実行する必要がある手順です。 または、安全なワークロード パターンへ移行中の既存のアカウントに対して、この手順を実行します。

前提条件

  • 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 を実行します。

キーベース認証を無効にする

まず、アプリケーションに 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 \
    --set properties.disableKeyBasedMetadataWriteAccess=true

まず、アプリケーションに Microsoft Entra 認証を使用させるために、キーベース認証が無効な新しいアカウントを作成します。

  1. 新しい 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,
        disableKeyBasedMetadataWriteAccess: true
      }
    }
    
  2. 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-AzResourceSet-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.Properties.DisableKeyBasedMetadataWriteAccess = $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 ライブラリを使用します。

次のステップ