Mengonfigurasi kunci yang dikelola pelanggan untuk enkripsi data di Azure Cognitive Search

Azure Cognitive Search secara otomatis mengenkripsi konten dengan kunci yang dikelola layanan. Jika perlindungan lebih diperlukan, Anda dapat melengkapi enkripsi default dengan lapisan enkripsi tambahan menggunakan kunci yang Anda buat dan kelola di Azure Key Vault. Objek yang dapat dienkripsi meliputi indeks, daftar sinonim, pengindeks, sumber data, dan skillset.

Artikel ini memandu Anda melalui langkah-langkah untuk menyiapkan enkripsi kunci yang dikelola pelanggan. Berikut adalah beberapa poin yang perlu diingat:

  • Enkripsi kunci yang dikelola pelanggan bergantung pada Azure Key Vault. Anda dapat membuat kunci enkripsi sendiri dan menyimpannya di key vault, atau Anda dapat menggunakan API Azure Key Vault untuk menghasilkan kunci enkripsi.

  • Enkripsi dengan kunci yang dikelola pelanggan diaktifkan saat objek dibuat, pada basis per objek. Anda tidak bisa mengenkripsi konten yang sudah ada.

Enkripsi secara komputasi mahal untuk didekripsi sehingga hanya konten sensitif yang dienkripsi. Ini mencakup semua konten dalam indeks dan daftar sinonim. Untuk pengindeks, sumber data, dan skillset, hanya bidang yang menyimpan string koneksi, deskripsi, kunci, dan input pengguna yang dienkripsi. Misalnya, skillset memiliki kunci Cognitive Services, dan beberapa keterampilan menerima input pengguna, seperti entitas kustom. Kunci dan input pengguna ke dalam keterampilan dienkripsi.

Enkripsi ganda

Enkripsi ganda adalah ekstensi dari enkripsi kunci yang dikelola pelanggan (CMK). Enkripsi CMK berlaku untuk penyimpanan jangka panjang yang ditulis ke disk data. Istilah enkripsi ganda mengacu pada enkripsi tambahan penyimpanan jangka pendek (konten yang ditulis ke disk sementara). Tidak memerlukan adanya konfigurasi. Saat Anda menerapkan CMK ke objek, enkripsi ganda dipanggil secara otomatis.

Meskipun enkripsi ganda tersedia di semua wilayah, dukungan diluncurkan dalam dua fase. Peluncuran pertama dilakukan pada Agustus 2020 dan termasuk lima wilayah yang tercantum di bawah ini. Peluncuran kedua pada Mei 2021 memperluas enkripsi ganda ke semua wilayah yang tersisa. Jika Anda menggunakan CMK pada layanan yang lebih lama dan menginginkan enkripsi ganda, Anda perlu membuat layanan pencarian baru di wilayah pilihan Anda.

Wilayah Tanggal pembuatan layanan
US Barat 2 Setelah 1 Agustus 2020
US Timur Setelah 1 Agustus 2020
US Tengah Selatan Setelah 1 Agustus 2020
US Gov Virginia Setelah 1 Agustus 2020
US Gov Arizona Setelah 1 Agustus 2020
Semua wilayah lain yang didukung Setelah 13 Mei 2021

Prasyarat

Alat dan layanan berikut digunakan dalam skenario ini.

Anda harus memiliki aplikasi pencarian yang dapat membuat objek terenkripsi. Dalam kode ini, Anda akan mereferensikan key vault utama dan informasi pendaftaran Direktori Aktif. Kode ini bisa menjadi aplikasi yang berfungsi, atau kode prototipe seperti sampel kode C# DotNetHowToEncryptionUsingCMK.

Tip

Anda dapat menggunakan Postman, Visual Studio Code, atau Azure PowerShell, untuk memanggil REST API yang membuat indeks dan peta sinonim yang menyertakan parameter kunci enkripsi. Anda juga dapat menggunakan SDK Azure. Dukungan portal untuk menambahkan kunci ke indeks atau peta sinonim tidak didukung.

Tips Key Vault

Jika Anda baru menggunakan Azure Key Vault, tinjau panduan memulai ini untuk mempelajari tentang tugas dasar: Menyetel dan mengambil rahasia dari Azure Key Vault menggunakan PowerShell. Berikut adalah beberapa tip untuk menggunakan Key Vault:

  • Gunakan brankas kunci sebanyak yang Anda butuhkan. Kunci yang dikelola dapat berada di brankas kunci yang berbeda. Layanan pencarian dapat memiliki beberapa objek terenkripsi, masing-masing dienkripsi dengan kunci enkripsi yang dikelola pelanggan yang berbeda, disimpan di brankas kunci yang berbeda.

  • Aktifkan pengelogan di Key Vault sehingga Anda dapat memantau penggunaan kunci.

  • Ingatlah untuk mengikuti prosedur yang ketat selama rotasi rutin kunci brankas kunci serta rahasia dan pendaftaran aplikasi Direktori Aktif. Selalu perbarui semua konten terenkripsi untuk menggunakan rahasia dan kunci baru sebelum menghapus yang lama. Jika Anda melewatkan langkah ini, konten Anda tidak dapat didekripsi.

1 - Mengaktifkan perlindungan penghapusan menyeluruh

Sebagai langkah pertama, pastikan penghapusan sementara dan perlindungan penghapusan menyeluruh diaktifkan pada brankas kunci. Karena sifat enkripsi dengan kunci yang dikelola pelanggan, tidak ada yang dapat mengambil data Anda jika kunci Azure Key Vault Anda dihapus.

Untuk mencegah hilangnya data yang disebabkan oleh penghapusan kunci Key Vault yang tidak disengaja, perlindungan penghapusan sementara dan penghapusan menyeluruh harus diaktifkan pada key vault. Penghapusan sementara diaktifkan secara default, sehingga Anda hanya akan mengalami masalah jika Anda sengaja menonaktifkannya. Perlindungan penghapusan menyeluruh tidak diaktifkan secara default, tetapi diperlukan untuk enkripsi kunci yang dikelola pelanggan dalam Cognitive Search.

Anda dapat mengatur kedua properti menggunakan perintah portal, PowerShell, atau Azure CLI.

Menggunakan Portal Azure

  1. Masuk ke Portal Azure dan buka halaman ringkasan key vault Anda.

  2. Di halaman Ringkasan di bagian Essential, aktifkan Penghapusan sementara dan Penghapusan menyeluruh.

Menggunakan PowerShell

  1. Jalankan Connect-AzAccount untuk menyiapkan info masuk Azure Anda.

  2. Jalankan perintah berikut untuk menyambungkan ke key vault Anda, yang mengganti <vault_name> dengan nama yang valid:

    $resource = Get-AzResource -ResourceId (Get-AzKeyVault -VaultName "<vault_name>").ResourceId
    
  3. Azure Key Vault dibuat dengan mengaktifkan penghapusan sementara. Jika dinonaktifkan di vault Anda, jalankan perintah berikut:

    $resource.Properties | Add-Member -MemberType NoteProperty -Name "enableSoftDelete" -Value 'true'
    
  4. Aktifkan perlindungan penghapusan menyeluruh:

    $resource.Properties | Add-Member -MemberType NoteProperty -Name "enablePurgeProtection" -Value 'true'
    
  5. Simpan pembaruan Anda:

    Set-AzResource -resourceid $resource.ResourceId -Properties $resource.Properties
    

Menggunakan Azure CLI

  • Jika Anda memiliki penginstalan Azure CLI, Anda dapat menjalankan perintah berikut untuk mengaktifkan properti yang diperlukan.

    az keyvault update -n <vault_name> -g <resource_group> --enable-soft-delete --enable-purge-protection
    

2 - Buat kunci di Key Vault

Lewati pembuatan kunci jika Anda sudah memiliki kunci di Azure Key Vault yang ingin digunakan, tetapi kumpulkan Pengidentifikasi Kunci. Anda akan memerlukan informasi ini saat membuat objek terenkripsi.

  1. Masuk ke Portal Azure dan buka halaman ringkasan key vault Anda.

  2. Pilih Kunci di sebelah kiri, lalu pilih + Buat/Impor.

  3. Di panel Buat kunci, dari daftar Opsi, pilih metode yang ingin Anda gunakan untuk membuat kunci. Anda dapat Buat kunci baru, Unggah kunci yang ada, atau gunakan Pulihkan Cadangan untuk memilih cadangan kunci.

  4. Masukkan Nama untuk kunci Anda, dan secara opsional pilih properti kunci lainnya.

  5. Pilih Buat untuk memulai penyebaran.

  6. Catat Key Identifier – ini terdiri dari Uri nilai kunci, nama kunci, dan versi kunci. Anda akan memerlukan pengidentifikasi untuk menentukan indeks terenkripsi di Azure Cognitive Search.

    Membuat kunci key vault baru

3 - Mendaftarkan aplikasi

  1. Di Portal Azure, temukan sumber daya Azure Active Directory untuk langganan Anda.

  2. Di sebelah kiri, di bagian Kelola, pilih Pendaftaran aplikasi, lalu pilih Pendaftaran baru.

  3. Beri nama pendaftaran, mungkin nama yang mirip dengan nama aplikasi pencarian. Pilih Daftar.

  4. Setelah pendaftaran aplikasi dibuat, salin ID Aplikasi. Anda harus memberikan string ini ke aplikasi Anda.

    Jika Anda melewati DotNetHowToEncryptionUsingCMK, tempel nilai ini ke file appsettings.json.

    ID Aplikasi di bagian Esensial

  5. Selanjutnya, pilih Sertifikat & rahasia di sebelah kiri.

  6. Pilih Rahasia klien baru. Beri nama tampilan rahasia dan pilih Tambahkan.

  7. Salin rahasia aplikasi. Jika Anda melewati, tempelkan nilai ini ke file appsettings.json.

    Rahasia aplikasi

4 - Memberikan izin

Dalam langkah ini, Anda akan membuat kebijakan akses di Key Vault. Kebijakan ini memberikan izin kepada aplikasi yang Anda daftarkan dengan Direktori Aktif untuk menggunakan kunci yang dikelola pelanggan.

Izin akses dapat dicabut pada waktu tertentu. Setelah dicabut, setiap indeks layanan pencarian atau peta sinonim yang menggunakan key vault tersebut akan menjadi tidak dapat digunakan. Memulihkan izin akses Key vault di lain waktu akan memulihkan akses indeks\peta sinonim. Untuk informasi selengkapnya, lihat Mengamankan akses ke key vault.

  1. Masih di Portal Azure, buka halaman Ringkasan key vault Anda.

  2. Pilih Kebijakan akses di sebelah kiri, dan pilih +Tambahkan Kebijakan Akses.

    Menambahkan kebijakan key vault Anda

  3. Pilih Pilih prinsip dan pilih aplikasi yang Anda daftarkan di Direktori Aktif. Anda dapat mencarinya dengan nama.

    Memilih prinsip kebijakan akses key vault

  4. Di Izin kunci, pilih Dapatkan, Buka Kunci dan Tutup Kunci.

  5. Di Izin Rahasia, pilih Dapatkan.

  6. Di Izin Sertifikat, pilih Dapatkan.

  7. Pilih Tambahkan, lalu Simpan.

Penting

Konten terenkripsi dalam Azure Cognitive Search dikonfigurasi untuk menggunakan kunci Azure Key Vault tertentu dengan versi tertentu. Jika Anda mengubah kunci atau versi, indeks atau peta sinonim harus diperbarui untuk menggunakan kunci\versi baru sebelum menghapus kunci\versi sebelumnya. Gagal melakukannya akan membuat indeks atau peta sinonim tidak dapat digunakan, karena Anda tidak akan dapat mendekripsi konten setelah akses kunci hilang.

5 - Enkripsi konten

Untuk menambahkan kunci yang dikelola pelanggan pada indeks, peta sinonim, pengindeks, sumber data, atau skillset, gunakan Cari REST API atau Azure SDK untuk membuat objek yang mengaktifkan enkripsi. Portal tidak mengekspos peta sinonim atau properti enkripsi.

  1. Panggil Buat API untuk menentukan properti encryptionKey:

  2. Masukkan konstruksi encryptionKey ke dalam definisi objek. Properti ini adalah properti tingkat pertama, pada tingkat yang sama dengan nama dan deskripsi. Contoh di bawah menampilkan penempatan properti. Jika Anda menggunakan brankas kunci, kunci, dan versi yang sama, Anda dapat menempelkan konstruksi encryptionKey yang sama ke setiap objek yang enkripsinya Anda aktifkan.

    Contoh JSON berikut menampilkan encryptionKey, dengan nilai tempat penampung untuk Azure Key Vault dan pendaftaran aplikasi di Azure Active Directory:

    {
      "encryptionKey": {
        "keyVaultUri": "https://demokeyvault.vault.azure.net",
        "keyVaultKeyName": "myEncryptionKey",
        "keyVaultKeyVersion": "eaab6a663d59439ebb95ce2fe7d5f660",
        "accessCredentials": {
          "applicationId": "00000000-0000-0000-0000-000000000000",
          "applicationSecret": "myApplicationSecret"
        }
      }
    }
    

Setelah membuat objek terenkripsi pada layanan pencarian, Anda dapat menggunakannya seperti objek lain dari jenisnya. Enkripsi transparan bagi pengguna dan pengembang.

Catatan

Tidak satu pun dari detail key vault ini dianggap rahasia dan dapat dengan mudah diambil dengan menjelajah ke halaman kunci Azure Key Vault yang relevan di Portal Azure.

Contoh REST

Bagian ini menampilkan JSON untuk beberapa objek sehingga Anda dapat melihat lokasi encryptionKey dalam definisi objek.

Enkripsi indeks

Detail membuat indeks baru melalui REST API dapat ditemukan di Create Index (REST API), dengan satu-satunya perbedaan di sini adalah menentukan detail kunci enkripsi sebagai bagian dari definisi indeks:

{
 "name": "hotels",
 "fields": [
  {"name": "HotelId", "type": "Edm.String", "key": true, "filterable": true},
  {"name": "HotelName", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": true, "facetable": false},
  {"name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.lucene"},
  {"name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "fr.lucene"},
  {"name": "Category", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true},
  {"name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "sortable": false, "facetable": true},
  {"name": "ParkingIncluded", "type": "Edm.Boolean", "filterable": true, "sortable": true, "facetable": true},
  {"name": "LastRenovationDate", "type": "Edm.DateTimeOffset", "filterable": true, "sortable": true, "facetable": true},
  {"name": "Rating", "type": "Edm.Double", "filterable": true, "sortable": true, "facetable": true},
  {"name": "Location", "type": "Edm.GeographyPoint", "filterable": true, "sortable": true}
 ],
  "encryptionKey": {
    "keyVaultUri": "https://demokeyvault.vault.azure.net",
    "keyVaultKeyName": "myEncryptionKey",
    "keyVaultKeyVersion": "eaab6a663d59439ebb95ce2fe7d5f660",
    "accessCredentials": {
      "applicationId": "00000000-0000-0000-0000-000000000000",
      "applicationSecret": "myApplicationSecret"
    }
  }
}

Anda sekarang dapat mengirim permintaan pembuatan indeks, lalu mulai menggunakan indeks secara normal.

Enkripsi peta sinonim

Buat peta sinonim terenkripsi menggunakan Create Synonym Map Azure Cognitive Search REST API. Gunakan properti encryptionKey untuk menentukan kunci enkripsi mana yang akan digunakan.

{
  "name" : "synonymmap1",
  "format" : "solr",
  "synonyms" : "United States, United States of America, USA\n
  Washington, Wash. => WA",
  "encryptionKey": {
    "keyVaultUri": "https://demokeyvault.vault.azure.net",
    "keyVaultKeyName": "myEncryptionKey",
    "keyVaultKeyVersion": "eaab6a663d59439ebb95ce2fe7d5f660",
    "accessCredentials": {
      "applicationId": "00000000-0000-0000-0000-000000000000",
      "applicationSecret": "myApplicationSecret"
    }
  }
}

Anda sekarang dapat mengirim permintaan pembuatan peta sinonim, lalu mulai menggunakannya secara normal.

Enkripsi sumber data

Buat sumber data terenkripsi menggunakan Buat Sumber Data (REST API). Gunakan properti encryptionKey untuk menentukan kunci enkripsi mana yang akan digunakan.

{
  "name" : "datasource1",
  "type" : "azureblob",
  "credentials" :
  { "connectionString" : "DefaultEndpointsProtocol=https;AccountName=datasource;AccountKey=accountkey;EndpointSuffix=core.windows.net"
  },
  "container" : { "name" : "containername" },
  "encryptionKey": {
    "keyVaultUri": "https://demokeyvault.vault.azure.net",
    "keyVaultKeyName": "myEncryptionKey",
    "keyVaultKeyVersion": "eaab6a663d59439ebb95ce2fe7d5f660",
    "accessCredentials": {
      "applicationId": "00000000-0000-0000-0000-000000000000",
      "applicationSecret": "myApplicationSecret"
    }
  }
}

Anda sekarang dapat mengirim permintaan pembuatan sumber data, lalu mulai menggunakannya secara normal.

Enkripsi skillset

Buat skillset terenkripsi menggunakan Buat REST API Skillset. Gunakan properti encryptionKey untuk menentukan kunci enkripsi mana yang akan digunakan.

{
    "name": "skillset1",
    "skills":  [ omitted for brevity ],
    "cognitiveServices": { omitted for brevity },
      "knowledgeStore":  { omitted for brevity  },
    "encryptionKey": (optional) { 
        "keyVaultKeyName": "myEncryptionKey",
        "keyVaultKeyVersion": "eaab6a663d59439ebb95ce2fe7d5f660",
        "keyVaultUri": "https://demokeyvault.vault.azure.net",
        "accessCredentials": {
            "applicationId": "00000000-0000-0000-0000-000000000000",
            "applicationSecret": "myApplicationSecret"}
    }
}

Anda sekarang dapat mengirim permintaan pembuatan skillset, lalu mulai menggunakannya secara normal.

Enkripsi pengindeks

Buat pengindeks terenkripsi menggunakan Buat REST API Pengindeks. Gunakan properti encryptionKey untuk menentukan kunci enkripsi mana yang akan digunakan.

{
  "name": "indexer1",
  "dataSourceName": "datasource1",
  "skillsetName": "skillset1",
  "parameters": {
      "configuration": {
          "imageAction": "generateNormalizedImages"
      }
  },
  "encryptionKey": {
    "keyVaultUri": "https://demokeyvault.vault.azure.net",
    "keyVaultKeyName": "myEncryptionKey",
    "keyVaultKeyVersion": "eaab6a663d59439ebb95ce2fe7d5f660",
    "accessCredentials": {
      "applicationId": "00000000-0000-0000-0000-000000000000",
      "applicationSecret": "myApplicationSecret"
    }
  }
}

Anda sekarang dapat mengirim permintaan pembuatan pengindeks, lalu mulai menggunakannya secara normal.

Penting

Meskipun encryptionKey tidak dapat ditambahkan ke indeks pencarian atau peta sinonim yang ada, ini dapat diperbarui dengan memberikan nilai yang berbeda untuk salah satu dari tiga detail key vault (misalnya, memperbarui versi kunci). Saat mengubah ke kunci Key Vault baru atau versi kunci baru, indeks pencarian atau peta sinonim apa pun yang menggunakan kunci harus terlebih dahulu diperbarui untuk menggunakan kunci\versi baru sebelum menghapus kunci\versi sebelumnya. Gagal melakukannya akan membuat indeks atau peta sinonim tidak dapat digunakan, karena tidak dapat mendekripsi konten setelah akses kunci hilang. Meskipun memulihkan izin akses Key vault di lain waktu akan memulihkan akses konten.

Alternatif yang lebih sederhana: Layanan tepercaya

Bergantung pada konfigurasi penyewa dan persyaratan autentikasi, Anda mungkin dapat menerapkan pendekatan yang lebih sederhana untuk mengakses key vault utama. Daripada membuat dan menggunakan aplikasi Active Directory, Anda dapat menjadikan layanan pencarian sebagai layanan tepercaya dengan mengaktifkan identitas yang dikelola sistem untuknya atau menetapkan identitas terkelola yang ditetapkan pengguna ke layanan pencarian Anda. Anda kemudian akan menggunakan layanan pencarian tepercaya atau identitas terkelola yang ditetapkan pengguna sebagai prinsip keamanan, daripada aplikasi yang terdaftar AD, untuk mengakses kunci brankas.

Kedua pendekatan ini memungkinkan Anda untuk menghilangkan langkah-langkah pendaftaran aplikasi dan rahasia aplikasi, serta menyederhanakan definisi kunci enkripsi.

Identitas terkelola yang ditetapkan sistem

Secara umum, identitas terkelola memungkinkan layanan pencarian Anda mengautentikasi ke Azure Key Vault tanpa menyimpan info masuk (ApplicationID atau ApplicationSecret) dalam kode. Siklus hidup jenis identitas terkelola ini terkait dengan siklus hidup layanan pencarian Anda, yang hanya dapat memiliki satu identitas terkelola. Untuk informasi selengkapnya tentang cara kerja identitas terkelola, lihat Apa itu identitas terkelola sumber daya Azure.

  1. Jadikan layanan pencarian Anda sebagai layanan tepercaya. Aktifkan identitas terkelola yang ditetapkan sistem

  2. Saat menyiapkan kebijakan akses di Azure Key Vault, pilih layanan pencarian tepercaya sebagai prinsip (bukan aplikasi terdaftar AD). Tetapkan izin yang sama (beberapa GET, WRAP, UNWRAP) seperti yang diinstruksikan dalam langkah izin kunci akses pemberian.

  3. Gunakan konstruksi yang disederhanakan dari encryptionKey yang menghilangkan properti Direktori Aktif.

    {
      "encryptionKey": {
        "keyVaultUri": "https://demokeyvault.vault.azure.net",
        "keyVaultKeyName": "myEncryptionKey",
        "keyVaultKeyVersion": "eaab6a663d59439ebb95ce2fe7d5f660"
      }
    }
    

Kondisi yang akan mencegah Anda mengadopsi pendekatan yang disederhanakan ini meliputi:

  • Anda tidak dapat langsung memberikan izin akses layanan pencarian ke Key vault (misalnya, jika layanan pencarian berada dalam penyewa Direktori Aktif yang berbeda dari Azure Key Vault).

  • Satu layanan pencarian diperlukan untuk menghost beberapa indeks terenkripsi\synonym peta, masing-masing menggunakan kunci yang berbeda dari Key vault yang berbeda, dengan setiap key vault harus menggunakan identitas yang berbeda untuk autentikasi. Karena layanan pencarian hanya dapat memiliki satu identitas terkelola, persyaratan untuk beberapa identitas akan mendiskualifikasi pendekatan yang disederhanakan untuk skenario Anda.

Identitas terkelola yang ditetapkan pengguna (pratinjau)

Penting

Dukungan identitas terkelola yang ditetapkan pengguna ada dalam pratinjau publik di bawah persyaratan penggunaan tambahan.

Versi REST API 2021-04-30-Preview dan REST API Manajemen 2021-04-01-Preview menyediakan fitur ini.

Menetapkan identitas terkelola yang ditetapkan pengguna ke layanan pencarian Anda akan memungkinkan layanan pencarian Anda untuk mengautentikasi ke Azure Key Vault tanpa menyimpan kredensial (ApplicationID atau ApplicationSecret) dalam kode. Siklus hidup jenis identitas terkelola ini tidak bergantung pada siklus hidup layanan pencarian Anda. Untuk informasi selengkapnya tentang cara kerja identitas terkelola, lihat Apa itu identitas terkelola sumber daya Azure.

  1. Jika Anda belum membuat identitas terkelola yang ditetapkan pengguna, Anda harus membuatnya. Untuk membuat identitas terkelola yang ditetapkan pengguna, ikuti langkah-langkah di bawah ini:

    1. Masuk ke Portal Microsoft Azure.
    2. Pilih + Buat sumber daya baru.
    3. Di bilah pencarian "Layanan pencarian dan marketplace", telusuri "Identitas Terkelola yang Ditetapkan Pengguna", lalu pilih Buat.
    4. Beri nama yang deskriptif pada identitas tersebut.
  2. Selanjutnya, tetapkan identitas terkelola yang ditetapkan pengguna ke layanan pencarian. Ini dapat dilakukan dengan menggunakan API manajemen 2021-04-01-preview.

    Properti identitas mengambil jenis dan satu atau lebih identitas yang ditetapkan pengguna yang memenuhi syarat:

    • jenis adalah jenis identitas yang digunakan untuk sumber daya. Jenis 'SystemAssigned, UserAssigned' mencakup identitas yang dibuat oleh sistem dan satu set identitas yang ditetapkan pengguna. Jenis 'Tidak Ada' akan menghapus semua identitas dari layanan.
    • userAssignedIdentities mencakup detail identitas terkelola yang ditetapkan pengguna.
      • Format identitas terkelola yang ditetapkan pengguna:
        • /langganan/ID langganan/resourcegroups/nama grup sumber daya/penyedia/Microsoft.ManagedIdentity/userAssignedIdentities/nama identitas terkelola

    Contoh cara menetapkan identitas terkelola yang ditetapkan pengguna ke layanan pencarian:

    PUT https://management.azure.com/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Search/searchServices/[search service name]?api-version=2021-04-01-preview
    Content-Type: application/json
    
    {
      "location": "[region]",
      "sku": {
        "name": "[sku]"
      },
      "properties": {
        "replicaCount": [replica count],
        "partitionCount": [partition count],
        "hostingMode": "default"
      },
      "identity": {
        "type": "UserAssigned",
        "userAssignedIdentities": {
          "/subscriptions/[subscription ID]/resourcegroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]": {}
        }
      }
    } 
    
  3. Saat menyiapkan kebijakan akses di Azure Key Vault, pilih identitas terkelola yang ditetapkan pengguna sebagai prinsip (bukan aplikasi terdaftar AD). Tetapkan izin yang sama (beberapa GET, WRAP, UNWRAP) seperti yang diinstruksikan dalam langkah izin kunci akses pemberian.

  4. Gunakan konstruksi sederhana dari encryptionKey yang menghilangkan properti Active Directory dan menambahkan properti identitas. Pastikan untuk menggunakan versi REST API 2021-04-30-preview.

    {
      "encryptionKey": {
        "keyVaultUri": "https://[key vault name].vault.azure.net",
        "keyVaultKeyName": "[key vault key name]",
        "keyVaultKeyVersion": "[key vault key version]",
        "identity" : { 
            "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
            "userAssignedIdentity" : "/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]"
        }
      }
    }
    

Bekerja dengan konten terenkripsi

Dengan enkripsi kunci yang dikelola pelanggan, Anda akan melihat latensi untuk pengindeksan dan kueri karena pekerjaan enkripsi/dekripsi ekstra. Azure Cognitive Search tidak mencatat aktivitas enkripsi, tetapi Anda dapat memantau akses kunci melalui pengelogan key vault. Sebaiknya aktifkan pengelogan sebagai bagian dari konfigurasi key vault.

Rotasi kunci diperkirakan akan terjadi dari waktu ke waktu. Setiap kali Anda memutar kunci, urutan ini wajib diikuti:

  1. Tentukan kunci yang digunakan oleh indeks atau peta sinonim.
  2. Buat kunci baru di key vault, tetapi biarkan kunci asli tersedia.
  3. Perbarui properti encryptionKey pada indeks atau peta sinonim untuk menggunakan nilai baru. Hanya objek yang awalnya dibuat dengan properti ini yang dapat diperbarui untuk menggunakan nilai yang berbeda.
  4. Nonaktifkan atau hapus kunci sebelumnya di key vault. Pantau akses kunci untuk memverifikasi kunci baru yang sedang digunakan.

Untuk alasan performa, layanan pencarian menyembunyikan kunci hingga beberapa jam. Jika Anda menonaktifkan atau menghapus kunci tanpa menyediakan kunci baru, kueri akan terus berfungsi sementara hingga cache kedaluwarsa. Namun, setelah layanan pencarian tidak dapat mendekripsi konten, Anda akan mendapatkan pesan ini: "Access forbidden. The query key used might have been revoked - please retry."

Langkah berikutnya

Jika Anda tidak terbiasa dengan arsitektur keamanan Azure, tinjau dokumentasi keamanan Azure, dan khususnya, artikel ini: