Akses aman ke HSM terkelola Anda

Azure Key Vault Managed HSM adalah layanan cloud yang melindungi kunci enkripsi. Karena data ini sensitif dan penting bagi bisnis, Anda perlu mengamankan akses ke HSM terkelola dengan hanya mengizinkan aplikasi dan pengguna untuk mengaksesnya. Artikel ini menyediakan gambaran umum model kontrol akses Managed HSM. Ini menjelaskan otentikasi dan otorisasi, dan menjelaskan cara mengamankan akses ke HSM terkelola Anda.

Tutorial ini akan memandu Anda melalui contoh sederhana yang menunjukkan cara mencapai pemisahan tugas dan kontrol akses menggunakan Azure RBAC dan RBAC lokal HSM terkelola. Lihat Kontrol akses HSM terkelola untuk mempelajari model kontrol akses HSM terkelola.

Prasyarat

Untuk menyelesaikan langkah-langkah dalam artikel ini, Anda harus memiliki item berikut:

Azure Cloud Shell

Azure meng-hosting Azure Cloud Shell, lingkungan shell interaktif yang dapat Anda gunakan melalui browser. Anda dapat menggunakan Bash atau PowerShell dengan Cloud Shell untuk bekerja dengan layanan Azure. Anda dapat menggunakan perintah Cloud Shell yang telah diinstal sebelumnya untuk menjalankan kode dalam artikel ini tanpa harus menginstal apa-apa di lingkungan lokal Anda.

Untuk memulai Azure Cloud Shell:

Opsi Contoh/Tautan
Pilih Coba di pojok kanan atas blok kode atau perintah. Memilih Coba tidak otomatis menyalin kode atau perintah ke Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
Buka https://shell.azure.com, atau pilih tombol Luncurkan Cloud Shell untuk membuka Cloud Shell di browser Anda. Button to launch Azure Cloud Shell.
Pilih tombol Cloud Shell pada bilah menu di kanan atas di portal Microsoft Azure. Screenshot that shows the Cloud Shell button in the Azure portal

Untuk menggunakan Azure Cloud Shell:

  1. Mulai Cloud Shell.

  2. Pilih tombol Salin pada blok kode (atau blok perintah) untuk menyalin kode atau perintah.

  3. Tempel kode atau perintah ke dalam sesi Cloud Shell dengan memilih Ctrl+Shift+V di Windows dan Linux, atau dengan memilih Cmd+Shift+V di macOS.

  4. Pilih Masukkan untuk menjalankan kode atau perintah.

Masuk ke Azure

Untuk masuk ke Azure menggunakan CLI, ketik:

az login

Untuk informasi selengkapnya tentang opsi masuk melalui CLI, lihat masuk dengan Azure CLI

Contoh

Dalam contoh ini, kami sedang mengembangkan aplikasi yang menggunakan kunci RSA 2,048-bit untuk operasi tanda tangan. Aplikasi kami berjalan di Azure Virtual Machine (VM) dengan identitas terkelola. Kedua kunci RSA yang digunakan untuk penandatanganan disimpan dalam HSM terkelola kami.

Kami telah mengidentifikasi peran berikut yang mengelola, menerapkan, dan mengaudit aplikasi kami:

  • Tim keamanan: Staf IT dari kantor CSO (Kepala Petugas Keamanan) atau kontributor serupa. Tim keamanan bertanggung jawab atas pengamanan kunci yang tepat. Kunci RSA atau EC untuk penandatanganan, dan kunci RSA atau AES untuk enkripsi data.
  • Pengembang dan operator: Staf yang mengembangkan aplikasi dan menerapkannya di Azure. Anggota tim ini bukan bagian dari staf keamanan. Mereka seharusnya tidak memiliki akses ke data sensitif seperti kunci RSA. Hanya aplikasi yang mereka terapkan yang memiliki akses ke data sensitif ini.
  • Auditor: Peran ini untuk kontributor yang bukan anggota pengembangan atau staf IT umum. Mereka meninjau penggunaan dan pemeliharaan sertifikat, kunci, dan rahasia untuk memastikan kepatuhan terhadap standar keamanan.

Ada peran lain yang berada di luar lingkup aplikasi kami: administrator langganan (atau grup sumber daya). Admin langganan menyiapkan izin akses awal untuk tim keamanan. Mereka memberikan akses ke tim keamanan menggunakan grup sumber daya yang memiliki sumber daya yang diperlukan oleh aplikasi.

Kita perlu mengotorisasi operasi berikut untuk peran kita:

Tim keamanan

  • Buat HSM terkelola.
  • Unduh domain keamanan HSM terkelola (untuk pemulihan bencana)
  • Aktifkan pengelogan.
  • Hasilkan atau impor kunci
  • Buat cadangan HSM terkelola untuk pemulihan bencana.
  • Atur RBAC lokal HSM terkelola untuk memberikan izin kepada pengguna dan aplikasi untuk operasi tertentu.
  • Gulung kunci secara berkala.

Pengembang dan operator

  • Dapatkan referensi (URI kunci) dari tim keamanan kunci RSA yang digunakan untuk penandatanganan.
  • Kembangkan dan terapkan aplikasi yang mengakses kunci secara terprogram.

Auditor

  • Tinjau tanggal kedaluwarsa kunci untuk memastikan kunci sudah diperbarui
  • Pantau penetapan peran untuk memastikan kunci hanya dapat diakses oleh pengguna/aplikasi yang berwenang
  • Tinjau log HSM terkelola untuk mengonfirmasi penggunaan kunci yang tepat sesuai dengan standar keamanan data.

Tabel berikut ini meringkas penetapan peran kepada tim dan sumber daya untuk mengakses HSM terkelola.

Peran Peran Management plane Peran Data plane
Tim keamanan Kontributor HSM Terkelola Administrator Managed HSM
Pengembang dan operator Tidak Tidak
Auditor Tidak Auditor Kripto HSM Terkelola
Identifikasi terkelola VM yang digunakan oleh Aplikasi Tidak Pengguna Kripto HSM Terkelola
Identifikasi terkelola VM yang digunakan oleh Aplikasi Tidak Enkripsi Layanan HSM Terkelola

Peran tiga tim membutuhkan akses ke sumber daya lain bersama dengan izin HSM terkelola. Untuk menerapkan VM (atau fitur Web Apps dari Azure App Service), pengembang dan operator memerlukan akses Contributor ke jenis sumber daya tersebut. Auditor memerlukan akses baca ke akun Penyimpanan tempat log HSM terkelola disimpan.

Untuk menetapkan peran management plane (Azure RBAC) Anda dapat menggunakan portal Azure atau antarmuka manajemen lainnya seperti Azure CLI atau Azure PowerShell. Untuk menetapkan peran data plane HSM terkelola, Anda harus menggunakan Azure CLI. Untuk informasi selengkapnya tentang peran bidang manajemen, lihat Peran bawaan Azure. Untuk informasi selengkapnya tentang peran sarana data HSM Terkelola, lihat Peran bawaan RBAC lokal untuk HSM Terkelola.

Cuplikan CLI Azure di bagian ini dibuat dengan asumsi berikut:

  • Administrator Microsoft Entra telah membuat grup keamanan untuk mewakili tiga peran: Contoso Security Team, Contoso App DevOps, dan Contoso App Auditors. Admin telah menambahkan pengguna ke grup masing-masing.
  • Semua sumber daya terletak di grup sumber daya ContosoAppRG.
  • Log HSM terkelola disimpan di akun penyimpanan kontosologstorage.
  • HSM terkelola ContosoMHSM dan akun penyimpanan kontosologstorage berada di lokasi Azure yang sama.

Admin langganan menetapkan peran Managed HSM Contributor tersebut ke tim keamanan. Peran ini memungkinkan tim keamanan untuk mengelola HSM terkelola yang ada dan membuat yang baru. Jika ada HSM terkelola, mereka harus diberi peran "Administrator HSM Terkelola" untuk dapat mengelolanya.

# This role assignment allows Contoso Security Team to create new Managed HSMs
az role assignment create --assignee-object-id $(az ad group show -g 'Contoso Security Team' --query 'id' -o tsv) --assignee-principal-type Group --role "Managed HSM Contributor"

# This role assignment allows Contoso Security Team to become administrator of existing managed HSM
az keyvault role assignment create  --hsm-name ContosoMHSM --assignee $(az ad group show -g 'Contoso Security Team' --query 'id' -o tsv) --scope / --role "Managed HSM Administrator"

Tim keamanan menyiapkan pengelogan dan menetapkan peran untuk auditor dan aplikasi VM.

# Enable logging
hsmresource=$(az keyvault show --hsm-name ContosoMHSM --query id -o tsv)
storageresource=$(az storage account show --name contosologstorage --query id -o tsv)
az monitor diagnostic-settings create --name MHSM-Diagnostics --resource $hsmresource --logs    '[{"category": "AuditEvent","enabled": true}]' --storage-account $storageresource

# Assign the "Crypto Auditor" role to Contoso App Auditors group. It only allows them to read.
az keyvault role assignment create  --hsm-name ContosoMHSM --assignee $(az ad group show -g 'Contoso App Auditors' --query 'objectId' -o tsv) --scope / --role "Managed HSM Crypto Auditor"

# Grant the "Crypto User" role to the VM's managed identity. It allows to create and use keys. 
# However it cannot permanently delete (purge) keys
az keyvault role assignment create  --hsm-name ContosoMHSM --assignee $(az vm identity show --name "vmname" --resource-group "ContosoAppRG" --query objectId -o tsv) --scope / --role "Managed HSM Crypto Auditor"

# Assign "Managed HSM Crypto Service Encryption User" role to the Storage account ID
storage_account_principal=$(az storage account show --id $storageresource --query identity.principalId -o tsv)
# (if no identity exists), then assign a new one
[ "$storage_account_principal" ] || storage_account_principal=$(az storage account update --assign-identity --id $storageresource)

az keyvault role assignment create --hsm-name ContosoMHSM --role "Managed HSM Crypto Service Encryption User" --assignee $storage_account_principal

Tutorial ini hanya menampilkan tindakan yang relevan dengan kontrol akses untuk sebagian besar bagian. Tindakan dan operasi lain yang terkait dengan penerapan aplikasi di VM Anda, mengaktifkan enkripsi dengan kunci yang dikelola pelanggan untuk akun penyimpanan, membuat HSM terkelola tidak ditampilkan di sini untuk menjaga contoh berfokus pada kontrol akses dan manajemen peran.

Contoh kami menjelaskan skenario sederhana. Skenario kehidupan nyata bisa lebih kompleks. Anda dapat menyesuaikan izin ke brankas kunci berdasarkan kebutuhan Anda. Kami berasumsi tim keamanan menyediakan referensi utama dan rahasia (URI dan sidik jari), yang digunakan oleh staf DevOps dalam aplikasi mereka. Pengembang dan operator tidak memerlukan akses data plane apa pun. Kami berfokus pada cara mengamankan brankas kunci Anda. Berikan pertimbangan serupa saat mengamankan VM Anda, akun penyimpanan, dan sumber daya Azure lainnya.

Sumber

Langkah berikutnya

Untuk tutorial memulai bagi administrator, lihat Apa itu HSM Terkelola?.

Untuk informasi selengkapnya tentang pengunaan pengelogan untuk HSM terkelola, lihat Pengelogan HSM terkelola.