Bagikan melalui


Menonaktifkan autentikasi berbasis kunci dengan Azure Cosmos DB for NoSQL

Artikel ini membahas proses menonaktifkan otorisasi berbasis kunci (atau autentikasi kredensial kata sandi pemilik sumber daya) untuk akun Azure Cosmos DB for NoSQL.

Menonaktifkan otorisasi berbasis kunci mencegah akun Anda digunakan tanpa metode autentikasi Microsoft Entra yang lebih aman. Prosedur ini adalah langkah yang harus dilakukan pada akun baru dalam beban kerja yang aman. Atau, lakukan prosedur ini pada akun yang ada yang dimigrasikan ke pola beban kerja yang aman.

Prasyarat

  • Jika Anda memilih untuk menggunakan Azure PowerShell secara lokal:
    • Pasang versi terbaru modul Az PowerShell.
    • Sambungkan ke akun Azure Anda menggunakan cmdlet Connect-AzAccount.
  • Jika Anda memilih untuk menggunakan Azure Cloud Shell:

Menonaktifkan autentikasi berbasis kunci

Pertama, nonaktifkan autentikasi berbasis kunci ke akun Anda yang ada sehingga aplikasi diperlukan untuk menggunakan autentikasi Microsoft Entra. Gunakan az resource update untuk mengubah properties.disableLocalAuth akun yang ada.

az resource update \
    --resource-group "<name-of-existing-resource-group>" \
    --name "<name-of-existing-account>" \
    --resource-type "Microsoft.DocumentDB/databaseAccounts" \
    --set properties.disableLocalAuth=true

Pertama, buat akun baru dengan autentikasi berbasis kunci dinonaktifkan sehingga aplikasi diperlukan untuk menggunakan autentikasi Microsoft Entra.

  1. Buat file Bicep baru untuk menyebarkan akun baru Anda dengan autentikasi berbasis kunci dinonaktifkan. Beri nama file 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
      }
    }
    
  2. Gunakan az deployment group create untuk menyebarkan file Bicep dengan akun baru.

    az deployment group create \
        --resource-group "<name-of-existing-resource-group>" \
        --template-file deploy-new-account.bicep
    

Pertama, nonaktifkan autentikasi berbasis kunci ke akun Anda yang ada sehingga aplikasi diperlukan untuk menggunakan autentikasi Microsoft Entra. Gunakan Get-AzResource dan Set-AzResource untuk masing-masing membaca dan memperbarui akun yang ada.

$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

Gunakan langkah-langkah ini untuk membuat akun Azure Cosmos DB for NoSQL baru dengan autentikasi berbasis kunci dinonaktifkan sehingga aplikasi diperlukan untuk hanya menggunakan autentikasi Microsoft Entra.

  1. Saat menyiapkan akun Azure Cosmos DB for NoSQL baru, navigasikan ke bagian Keamanan dari proses pembuatan akun.

  2. Kemudian, pilih Nonaktifkan untuk opsi Autentikasi berbasis kunci .

    Cuplikan layar opsi untuk menonaktifkan autentikasi berbasis kunci saat membuat akun baru di portal Microsoft Azure.

Validasi bahwa autentikasi dinonaktifkan

Mencoba menggunakan Azure SDK untuk menyambungkan ke Azure Cosmos DB for NoSQL menggunakan kredensial kata sandi pemilik sumber daya (ROPC). Upaya ini harus gagal. Jika perlu, sampel kode untuk bahasa pemrograman umum disediakan di sini.

using Microsoft.Azure.Cosmos;

string connectionString = "AccountEndpoint=<nosql-endpoint>;AccountKey=<key>;";

CosmosClient client = new(connectionString);

Penting

Sampel kode ini menggunakan Microsoft.Azure.Cosmos pustaka dari NuGet.