Konfigurasikan kunci yang dikelola pelanggan untuk akun Azure Cosmos DB Anda dengan Azure Key Vault

BERLAKU UNTUK: Nosql MongoDB Cassandra Gremlin Meja

Data yang disimpan di akun Azure Cosmos DB Anda dienkripsi secara otomatis dan lancar dengan kunci yang dikelola oleh Microsoft (kunci yang dikelola layanan). Secara opsional, Anda dapat memilih untuk menambahkan lapisan kedua pada enkripsi dengan kunci yang Anda kelola (kunci yang dikelola pelanggan atau CMK).

Diagram lapisan enkripsi di sekitar data pelanggan.

Anda harus menyimpan kunci yang dikelola pelanggan di Azure Key Vault dan menyediakan kunci untuk setiap akun Azure Cosmos DB yang diaktifkan dengan kunci yang dikelola pelanggan. Kunci ini digunakan untuk mengenkripsi semua data yang tersimpan di akun tersebut.

Catatan

Jika Anda ingin mengaktifkan kunci yang dikelola pelanggan di akun Azure Cosmos DB yang ada, Maka Anda dapat merujuk ke tautan di sini untuk detail selengkapnya

Peringatan

Nama bidang berikut dicadangkan pada tabel Cassandra API di akun menggunakan Kunci yang dikelola pelanggan:

  • id
  • ttl
  • _ts
  • _etag
  • _rid
  • _self
  • _attachments
  • _epk

Ketika Kunci yang dikelola pelanggan tidak diaktifkan, hanya nama bidang yang dimulai dengan __sys_ yang dicadangkan.

Prasyarat

Mendaftarkan penyedia sumber daya Azure Cosmos DB

Jika penyedia sumber daya Microsoft.DocumentDB belum terdaftar, Anda harus mendaftarkan penyedia ini sebagai langkah pertama.

  1. Masuk ke portal Microsoft Azure, masuk ke langganan Azure Anda, dan pilih Penyedia sumber daya pada tab Pengaturan:

    Cuplikan layar opsi Penyedia sumber daya di menu navigasi sumber daya.

  2. Cari penyedia sumber daya Microsoft.DocumentDB. Pastikan bahwa penyedia sumber daya sudah ditandai sebagai terdaftar. Jika tidak, pilih penyedia sumber daya dan pilih Daftar:

    Cuplikan layar opsi Daftar untuk penyedia sumber daya Microsoft.DocumentDB.

Mengonfigurasi instans Azure Key Vault Anda

Penting

Instans Azure Key Vault Anda harus dapat diakses melalui akses jaringan publik atau mengizinkan layanan Microsoft tepercaya untuk melewati firewallnya. Instans yang dapat diakses secara eksklusif melalui titik akhir privat tidak dapat digunakan untuk menghosting kunci yang dikelola pelanggan.

Menggunakan kunci yang dikelola pelanggan dengan Azure Cosmos DB mengharuskan Anda untuk mengatur dua properti pada instans Azure Key Vault yang anda rencanakan untuk digunakan guna menghosting kunci enkripsi Anda: Penghapusan Sementara dan Perlindungan Penghapusan Menyeluruh.

  1. Jika Anda membuat instans Azure Key Vault baru, aktifkan properti ini selama pembuatan:

    Cuplikan layar opsi Azure Key Vault termasuk penghapusan sementara dan perlindungan penghapusan menyeluruh.

  2. Jika Anda menggunakan instans Azure Key Vault yang sudah ada, Anda dapat memverifikasi bahwa properti ini diaktifkan dengan melihat bagian Properti di portal Microsoft Azure. Jika salah satu properti ini tidak diaktifkan, lihat bagian "Mengaktifkan penghapusan sementara" dan "Mengaktifkan Perlindungan Pembersihan Menyeluruh" di salah satu artikel berikut ini:

Memilih model keamanan pilihan

Setelah perlindungan penghapusan menyeluruh dan penghapusan sementara diaktifkan, pada tab kebijakan akses, Anda dapat memilih model izin pilihan Anda untuk digunakan. Kebijakan akses diatur secara default, tetapi kontrol akses berbasis peran Azure juga didukung.

Izin yang diperlukan harus diberikan agar Cosmos DB dapat menggunakan kunci enkripsi Anda. Langkah ini bervariasi tergantung pada apakah Azure Key Vault menggunakan kebijakan Akses atau kontrol akses berbasis peran.

Catatan

Penting untuk dicatat bahwa hanya satu model keamanan yang dapat aktif pada satu waktu, sehingga tidak perlu menyemai kontrol akses berbasis peran jika Azure Key Vault diatur untuk menggunakan kebijakan akses dan sebaliknya)

Menambahkan kebijakan akses

Dalam variasi ini, gunakan prinsipal Azure Cosmos DB untuk membuat kebijakan akses dengan izin yang sesuai.

  1. Dari portal Microsoft Azure, buka instans Azure Key Vault yang Anda rencanakan untuk digunakan guna menghosting kunci enkripsi Anda. Pilih Kebijakan Akses dari menu sebelah kiri:

    Cuplikan layar opsi Kebijakan akses di menu navigasi sumber daya.

  2. Pilih + Tambahkan Kebijakan Akses.

  3. Pada drop-down Izin kunci, pilih izin Dapatkan, Buka Bungkus Kunci, dan Bungkus izin:

    Cuplikan layar izin kebijakan akses termasuk Dapatkan, Buka bungkus kunci, dan kunci Bungkus.

  4. Pada Pilih prinsipal, pilih Tidak ada yang dipilih.

  5. Cari prinsipal Azure Cosmos DB dan pilih (untuk memudahkan ditemukan, Anda juga dapat mencari berdasarkan ID aplikasi: a232010e-820c-4083-83bb-3ace5fc29d0b untuk wilayah Azure mana pun kecuali wilayah Azure Government tempat ID aplikasi berada 57506a73-e302-42a9-b869-6f12d9ec29e9).

    Tip

    Ini mendaftarkan identitas pihak pertama Azure Cosmos DB dalam kebijakan akses Azure Key Vault Anda. Jika perwakilan Azure Cosmos DB tidak ada dalam daftar, Anda mungkin perlu mendaftarkan ulang penyedia sumber daya Microsoft.DocumentDB.

  6. Pilih opsi Pilih di bagian bawah.

    Cuplikan layar opsi Pilih prinsipal di halaman Tambahkan kebijakan akses.

  7. Pilih Tambahkan untuk menambahkan kebijakan akses baru.

  8. Pilih Simpan pada instans Key Vault untuk menyimpan semua perubahan.

Menambahkan peran kontrol akses berbasis peran

  1. Dari portal Microsoft Azure, buka instans Azure Key Vault yang Anda rencanakan untuk digunakan guna menghosting kunci enkripsi Anda. Pilih Kontrol akses (IAM) dari menu sebelah kiri dan pilih Berikan akses ke sumber daya ini.

    Cuplikan layar opsi Kontrol akses di menu navigasi sumber daya.

    Cuplikan layar opsi Berikan akses ke sumber daya ini di halaman Kontrol akses.

  2. Cari "peran Administrator Key Vault" dan tetapkan sendiri. Penugasan ini dilakukan dengan terlebih dahulu mencari nama peran dari daftar lalu mengklik tab "Anggota" . Setelah berada di tab, pilih opsi "Pengguna, grup, atau perwakilan layanan" dari radio lalu cari akun Azure Anda. Setelah akun dipilih, peran dapat ditetapkan.

    Cuplikan layar peran Administrator brankas kunci dalam hasil pencarian.

    Cuplikan layar penetapan peran di halaman Kontrol akses.

  3. Kemudian, izin yang diperlukan harus ditetapkan ke perwakilan Cosmos DB. Jadi, seperti penetapan peran terakhir, buka halaman penugasan tetapi kali ini cari peran "Pengguna Enkripsi Layanan Kripto Key Vault" dan pada tab anggota cari prinsipal Cosmos DB. Untuk menemukan perwakilan, cari perwakilan Azure Cosmos DB dan pilih.

    Cuplikan layar prinsipal Azure Cosmos DB yang ditetapkan ke izin.

    Penting

    Di wilayah Azure Government, ID aplikasi adalah 57506a73-e302-42a9-b869-6f12d9ec29e9.

  4. Pilih Tinjau + tetapkan dan peran akan ditetapkan ke Cosmos DB.

Validasi bahwa peran telah diatur dengan benar

Selanjutnya, gunakan halaman kontrol akses untuk mengonfirmasi bahwa semua peran telah dikonfigurasi dengan benar.

  1. Setelah peran ditetapkan, pilih "Lihat akses ke sumber daya ini" di halaman IAM Kontrol Akses untuk memverifikasi bahwa semuanya telah diatur dengan benar.

    Cuplikan layar opsi Tampilkan akses ke sumber daya di halaman Kontrol akses.

  2. Pada halaman, atur cakupan ke "sumber daya ini" dan verifikasi bahwa Anda memiliki peran Administrator Key Vault, dan perwakilan Cosmos DB memiliki peran Pengguna Enkripsi Kripto Key Vault.

    Cuplikan layar opsi penyesuaian cakupan untuk kueri penetapan peran.

Membuat kunci di Azure Key Vault

Di sini, buat kunci baru menggunakan Azure Key Vault dan ambil pengidentifikasi unik.

  1. Dari portal Microsoft Azure, buka instans Azure Key Vault yang Anda rencanakan untuk digunakan guna menghosting kunci enkripsi Anda. Lalu, pilih Kunci dari menu sebelah kiri:

    Cuplikan layar opsi Kunci di menu navigasi sumber daya.

  2. Pilih Hasilkan/Impor, berikan nama untuk kunci baru, dan pilih ukuran kunci RSA. Minimal 3072 direkomendasikan untuk keamanan terbaik. Kemudian pilih Buat:

    Cuplikan layar dialog untuk membuat kunci baru.

    Tip

    Atau, Anda dapat menggunakan Azure CLI untuk menghasilkan kunci dengan:

    az keyvault key create \
        --vault-name <name-of-key-vault> \
        --name <name-of-key>
    

    Untuk informasi selengkapnya tentang mengelola brankas kunci dengan Azure CLI, lihat mengelola Azure Key Vault dengan Azure CLI.

  3. Setelah kunci dibuat, pilih kunci yang baru dibuat lalu versi saat ini.

  4. Salin Pengidentifikasi Kunci dari kunci tersebut, kecuali bagian setelah garis miring terakhir:

    Cuplikan layar bidang pengidentifikasi kunci dan tindakan salin.

Membuat akun Azure Cosmos DB baru

Buat akun Azure Cosmos DB baru menggunakan portal Azure atau Azure CLI.

Saat Anda membuat akun Azure Cosmos DB baru dari portal Microsoft Azure, pilih Kunci yang dikelola pelanggan di langkah Enkripsi. Di bidang URI Kunci, tempelkan pengidentifikasi URI/dari kunci Azure Key Vault yang Anda salin dari langkah sebelumnya:

Cuplikan layar halaman Enkripsi dengan URI kunci yang dikelola kustom dikonfigurasi.

Menggunakan identitas terkelola dalam kebijakan akses Azure Key Vault

Kebijakan akses ini memastikan bahwa kunci enkripsi Anda dapat diakses oleh akun Azure Cosmos DB Anda. Kebijakan akses diterapkan dengan memberikan akses ke identitas Microsoft Entra tertentu. Dua jenis identitas didukung:

  • Identitas pihak pertama Azure Cosmos DB dapat digunakan untuk memberikan akses ke layanan Azure Cosmos DB.
  • Identitas terkelola akun Azure Cosmos DB Anda dapat digunakan untuk memberikan akses ke akun Anda secara khusus.

Tidak tersedia

Menggunakan kunci yang dikelola pelanggan dengan pencadangan berkelanjutan

Anda dapat membuat akun cadangan berkala dengan menggunakan Azure CLI atau templat Azure Resource Manager.

Saat ini, hanya identitas terkelola yang ditetapkan pengguna yang didukung untuk membuat akun cadangan berkala.

Setelah akun dibuat, Anda dapat memperbarui identitas ke identitas terkelola yang ditetapkan sistem.

Atau, pengguna juga dapat membuat identitas sistem dengan mode pencadangan berkala terlebih dahulu, lalu memigrasikan akun ke mode pencadangan berkelanjutan menggunakan instruksi ini Memigrasikan akun Azure Cosmos DB dari mode pencadangan berkala ke berkelanjutan

Tidak tersedia

Memulihkan akun berkelanjutan yang dikonfigurasi dengan identitas terkelola

Identitas yang ditetapkan pengguna diperlukan dalam permintaan pemulihan karena identitas terkelola akun sumber (Identitas yang ditetapkan pengguna dan Ditetapkan sistem) tidak dapat dibawa secara otomatis ke akun database target.

Tidak tersedia

Kunci yang dikelola pelanggan dan enkripsi ganda

Data yang Anda simpan di akun Azure Cosmos DB Anda saat menggunakan kunci yang dikelola pelanggan pada akhirnya dienkripsi dua kali:

  • Setelah melalui enkripsi default dilakukan dengan kunci yang dikelola Microsoft.
  • Setelah melalui enkripsi ekstra yang dilakukan dengan kunci yang dikelola pelanggan.

Enkripsi ganda hanya berlaku untuk penyimpanan transaksional Azure Cosmos DB utama. Beberapa fitur melibatkan replikasi internal data Anda ke penyimpanan tingkat kedua tempat enkripsi ganda tidak disediakan, bahkan dengan kunci yang dikelola pelanggan. Fitur ini mencakup:

Rotasi kunci

Memutar kunci yang dikelola pelanggan yang digunakan oleh akun Azure Cosmos DB Anda dapat dilakukan dengan dua cara.

  • Buat versi baru kunci yang saat ini digunakan dari Azure Key Vault:

    Cuplikan layar opsi Versi Baru di halaman Versi portal Azure.

  • Tukar kunci yang saat ini digunakan dengan kunci yang berbeda dengan memperbarui URI kunci di akun Anda. Dari portal Azure, buka akun Azure Cosmos DB Anda dan pilih Enkripsi Data dari menu sebelah kiri:

    Cuplikan layar opsi Enkripsi Data pada menu navigasi sumber daya.

    Kemudian, ganti URI Kunci dengan kunci baru yang ingin Anda gunakan dan pilih Simpan:

    Cuplikan layar opsi Simpan di halaman Kunci.

    Berikut cara mencapai hasil yang sama di PowerShell:

    # Variable for resource group name
    $RESOURCE_GROUP_NAME = "<resource-group-name>"
    
    # Variable for account name
    $ACCOUNT_NAME = "<globally-unique-account-name>"
    
    # Variable for new key URI in the key vault
    $NEW_KEY_VAULT_KEY_URI="https://<key-vault-name>.vault.azure.net/keys/<new-key-name>"
    
    $parameters = @{
        ResourceGroupName = $RESOURCE_GROUP_NAME 
        Name = $ACCOUNT_NAME
        ResourceType = "Microsoft.DocumentDb/databaseAccounts"
    }
    $ACCOUNT = Get-AzResource @parameters
    
    $ACCOUNT.Properties.keyVaultKeyUri = $NEW_KEY_VAULT_KEY_URI
    
    $ACCOUNT | Set-AzResource -Force
    

Kunci atau versi kunci sebelumnya dapat dinonaktifkan setelah log audit Azure Key Vault tidak lagi menampilkan aktivitas dari Azure Cosmos DB pada kunci atau versi kunci tersebut. Tidak ada lagi aktivitas yang akan dilakukan pada versi kunci atau kunci sebelumnya setelah 24 jam rotasi kunci.

Penanganan kesalahan

Jika ada kesalahan dengan kunci yang dikelola pelanggan di Azure Cosmos DB, Azure Cosmos DB menampilkan detail kesalahan bersama dengan kode substatus HTTP dalam respons. Anda dapat menggunakan kode substatus HTTP untuk mendebug penyebab utama masalah. Lihat artikel Kode Status HTTP untuk Azure Cosmos DB untuk mendapatkan daftar kode substatus HTTP yang didukung.

Tanya jawab umum

Disertakan di sini adalah pertanyaan umum tentang menyiapkan kunci yang dikelola pelanggan di Azure Cosmos DB.

Apakah ada biaya tambahan untuk mengaktifkan kunci yang dikelola pelanggan?

Tidak, tidak ada biaya untuk mengaktifkan fitur ini.

Bagaimana kunci yang dikelola pelanggan memengaruhi perencanaan kapasitas?

Unit Permintaan yang digunakan oleh operasi database Anda melihat peningkatan untuk mencerminkan pemrosesan ekstra yang diperlukan untuk melakukan enkripsi dan dekripsi data Anda saat menggunakan kunci yang dikelola pelanggan. Penggunaan RU ekstra dapat menyebabkan pemanfaatan kapasitas yang Anda sediakan sedikit lebih tinggi. Gunakan tabel ini untuk panduan:

Jenis operasi Peningkatan Unit Permintaan
Point-read (mengambil item berdasarkan ID mereka) + 5% per operasi
Setiap operasi penulisan + 6% per operasi | Sekitar + 0,06 RU per properti terindeks
Kueri, umpan perubahan baca, atau umpan konflik + 15% per operasi

Data apa yang dienkripsi dengan kunci yang dikelola pelanggan?

Semua data yang disimpan di akun Azure Cosmos DB Anda dienkripsi dengan kunci yang dikelola pelanggan, kecuali untuk metadata berikut:

Apakah kunci yang dikelola pelanggan didukung untuk akun Azure Cosmos DB yang ada?

Fitur ini sekarang hanya tersedia untuk akun baru.

Apakah mungkin menggunakan kunci yang dikelola pelanggan dengan penyimpanan analitik Azure Cosmos DB?

Ya, Azure Synapse Link hanya mendukung konfigurasi kunci yang dikelola pelanggan menggunakan identitas terkelola akun Azure Cosmos DB Anda. Anda harus menggunakan identitas terkelola akun Azure Cosmos DB dalam kebijakan akses Azure Key Vault Anda sebelum mengaktifkan Azure Synapse Link di akun Anda. Untuk panduan cara mengaktifkan identitas terkelola dan menggunakannya dalam kebijakan akses, lihat mengakses Azure Key Vault dari Azure Cosmos DB menggunakan identitas terkelola.

Apakah ada rencana untuk mendukung pemerincian yang lebih halus daripada kunci tingkat akun?

Tidak saat ini, tetapi kunci tingkat kontainer sedang dipertimbangkan.

Bagaimana cara mengetahui apakah kunci yang dikelola pelanggan diaktifkan di akun Azure Cosmos DB saya?

Dari portal Azure, buka akun Azure Cosmos DB Anda dan perhatikan entri Enkripsi Data di menu sebelah kiri; jika entri ini ada, kunci yang dikelola pelanggan diaktifkan di akun Anda:

Cuplikan layar opsi Enkripsi data di menu navigasi sumber daya.

Anda juga dapat secara terprogram mengambil detail akun Azure Cosmos DB Anda dan mencari keberadaan keyVaultKeyUri properti.

Bagaimana kunci yang dikelola pelanggan memengaruhi pencadangan berkala?

Azure Cosmos DB mengambil cadangan data reguler dan otomatis yang disimpan di akun Anda. Operasi ini mencadangkan data terenkripsi.

Kondisi berikut diperlukan untuk berhasil memulihkan cadangan berkala:

  • Kunci enkripsi yang Anda gunakan pada saat pencadangan diperlukan dan harus tersedia di Azure Key Vault. Kondisi ini mengharuskan tidak ada pencabutan yang dilakukan dan versi kunci yang digunakan pada saat pencadangan masih diaktifkan.
  • Jika Anda menggunakan identitas terkelola yang ditetapkan sistem dalam kebijakan akses, beri akses sementara ke identitas pihak pertama Azure Cosmos DB sebelum memulihkan data Anda. Persyaratan ini ada karena identitas terkelola yang ditetapkan sistem khusus untuk akun dan tidak dapat digunakan kembali di akun target. Setelah data sepenuhnya dipulihkan ke akun target, Anda dapat mengatur konfigurasi identitas yang diinginkan dan menghapus identitas pihak pertama dari kebijakan akses Key Vault.

Bagaimana kunci yang dikelola pelanggan memengaruhi pencadangan berkala?

Azure Cosmos DB memberi Anda opsi untuk mengonfigurasi pencadangan berkala di akun Anda. Dengan cadangan berkala, Anda dapat memulihkan data Anda ke titik waktu apa pun dalam 30 hari terakhir. Untuk menggunakan pencadangan berkelanjutan pada akun tempat kunci yang dikelola pelanggan diaktifkan, Anda harus menggunakan identitas terkelola yang ditetapkan sistem atau ditetapkan pengguna dalam kebijakan akses Key Vault. Identitas pihak pertama Azure Cosmos DB saat ini tidak didukung pada akun menggunakan pencadangan berkelanjutan.

Langkah-langkah prasyarat untuk akun yang diaktifkan Kunci Terkelola Pelanggan untuk memperbarui identitas yang ditetapkan pengguna.

  • Tambahkan identitas yang ditetapkan pengguna ke akun Cosmos DB, dan berikan izin dalam kebijakan akses brankas kunci.
  • Atur identitas default yang ditetapkan pengguna melalui Azure CLI atau ARM.
az cosmosdb update --resource-group MyResourceGroup --name MyAccountName --default-identity UserAssignedIdentity=/subscriptions/MySubscriptionId/resourcegroups/MyResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/MyUserAssignedIdentity

Kondisi berikut diperlukan agar berhasil melakukan pemulihan titik waktu:

  • Kunci enkripsi yang Anda gunakan pada saat pencadangan diperlukan dan harus tersedia di Azure Key Vault. Persyaratan ini berarti bahwa tidak ada pencabutan yang dilakukan dan versi kunci yang digunakan pada saat pencadangan masih diaktifkan.
  • Anda harus memastikan bahwa identitas terkelola yang ditetapkan pengguna yang awalnya digunakan pada akun sumber masih dinyatakan dalam kebijakan akses Key Vault.

Penting

Jika Anda mencabut kunci enkripsi sebelum menghapus akun Anda, cadangan akun Anda mungkin kehilangan data yang ditulis hingga 1 jam sebelum pencabutan dibuat.

Bagaimana cara mencabut kunci enkripsi?

Pencabutan kunci dilakukan dengan menonaktifkan versi terbaru kunci:

Cuplikan layar versi kunci kustom yang dinonaktifkan.

Atau, untuk mencabut semua kunci dari instans Azure Key Vault, Anda dapat menghapus kebijakan akses yang diberikan kepada prinsipal Azure Cosmos DB:

Cuplikan layar opsi Hapus untuk kebijakan akses.

Operasi apa yang tersedia setelah kunci yang dikelola pelanggan dicabut?

Satu-satunya operasi yang dimungkinkan ketika kunci enkripsi telah dicabut adalah penghapusan akun.

Tetapkan identitas terkelola baru ke akun database yang dipulihkan untuk terus mengakses atau memulihkan akses ke akun database

Identitas yang Ditetapkan Pengguna terkait dengan akun Cosmos DB tertentu, setiap kali kami menetapkan Identitas yang Ditetapkan Pengguna ke akun, ARM meneruskan permintaan ke identitas layanan terkelola untuk membuat koneksi ini. Saat ini kami membawa informasi identitas pengguna dari akun database sumber ke akun database target selama pemulihan (untuk pemulihan cadangan Berkelanjutan dan Berkala) dari CMK + Identitas yang Ditetapkan Pengguna,

Karena metadata identitas terikat dengan akun database sumber dan alur kerja pemulihan tidak mencakup ulang identitas ke akun database target. Ini akan menyebabkan akun database yang dipulihkan dalam keadaan buruk, dan menjadi tidak dapat diakses setelah akun sumber dihapus dan waktu perpanjangan identitas kedaluwarsa.

Langkah-langkah untuk menetapkan identitas terkelola baru:

  1. Buat identitas terkelola baru yang ditetapkan pengguna.
  2. Berikan akses kunci KeyVault ke identitas ini.
  3. Tetapkan identitas baru ini ke akun database yang dipulihkan.

Langkah berikutnya