Kelola rahasia di templat ARM Anda dengan membaca dari Azure Key Vault

Selesai

Infrastruktur sebagai kode (IaC) mengacu pada menjelaskan persyaratan infrastruktur Anda sebagai file teks yang dapat dibaca manusia. Templat Azure Resource Manager (ARM) adalah bentuk IaC.

Sama seperti kode aplikasi, Anda dapat mengelola kode infrastruktur dalam sistem kontrol versi seperti Git. Melakukan hal tersebut mengaktifkan Anda berkolaborasi dengan orang lain dan menelusuri perubahan persyaratan infrastruktur Anda ketika berkembang.

Seperti halnya kode aplikasi Anda, Anda tidak boleh memasukkan informasi sensitif seperti kata sandi dan kunci API ke templat ARM Anda. Jika tidak, siapa pun yang memiliki akses baca ke repositori Anda akan memiliki akses ke informasi rahasia ini.

Meskipun hanya individu yang berwenang di organisasi Anda yang harus memiliki akses ke informasi sensitif, templat ARM Anda juga memerlukan informasi ini. Azure Key Vault adalah salah satu cara untuk membantu melindungi informasi sensitif.

Azure Key Vault membantu melindungi informasi sensitif

Azure Key Vault adalah layanan cloud yang berfungsi sebagai penyimpanan aman untuk rahasia. Azure Key Vault memungkinkan Anda untuk membuat beberapa kontainer aman, yang disebut brankas. Brankas ini didukung oleh modul keamanan perangkat keras (HSM). Brankas membantu mengurangi kemungkinan hilangnya informasi keamanan secara tidak disengaja dengan memusatkan penyimpanan rahasia aplikasi. Brankas juga mengontrol dan mencatat akses ke apa pun yang di simpan di dalamnya.

Azure Key Vault mampu menyimpan kunci dan rahasia. Banyak fiturnya menjadikannya pilihan yang baik untuk mengelola rahasia Anda, tetapi juga pilihan yang baik untuk digunakan untuk proses penyebaran Anda.

  • Kontrol akses berbasis peran. Anda dapat mengelola brankas kunci dengan menggunakan berbagai peran, sehingga Anda dapat memastikannya dapat digunakan oleh aplikasi serta berbagai tingkat admin.

  • Mengizinkan pengguna dan aplikasi. Anda dapat mengonfigurasi brankas kunci sehingga pengguna tertentu serta aplikasi dapat memiliki akses ke brankas kunci. Untuk aplikasi, Anda membuat perwakilan layanan. Faktanya, Anda dapat mengonfigurasi brankas kunci sehingga hanya perwakilan layanan yang memiliki akses ke sana.

    Catatan

    Perwakilan layanan adalah identitas yang dibuat untuk digunakan dengan aplikasi, layanan yang dihosting, dan alat otomatis untuk mengakses sumber daya Azure. Anda membatasi akses ke sumber daya hanya dengan menetapkan peran utama atau sebagian peran dengan hak akses terbatas. Pendekatan ini memberikan kontrol yang lebih terperinci terhadap apa dan seberapa banyak sesuatu dapat mengakses sumber daya Anda.

  • Dapat berinteraksi dengan templat ARM. Selama penyebaran templat ARM, Anda dapat membaca dari brankas kunci. Ada sedikit konfigurasi yang diperlukan untuk membuatnya berfungsi. Bagian berikutnya memberikan perincian lebih lanjut.

Konfigurasikan izin

Anda telah memilih Azure Key Vault sebagai layanan tempat Anda akan menyimpan informasi masuk Anda. Dari sana, Anda ingin dapat membaca rahasia selama penyebaran sehingga, contohnya, Anda dapat menetapkan kata sandi komputer virtual.

Ada beberapa langkah konfigurasi yang perlu Anda lakukan untuk menyiapkan Azure Key Vault sehingga dapat dibaca selama penyebaran. Langkah-langkahnya adalah:

  1. Aktifkan Azure Key Vault untuk penyebaran. Azure Key Vault perlu diizinkan untuk dibaca selama penyebaran. Anda dapat meneruskan pengaturan ini ketika membuat atau mengubahnya nanti.

  2. Pengguna memerlukan izin penyebaran pada grup sumber daya. Hal ini tidak berbeda dengan penyebaran lainnya. Namun, jika Anda belum membuat grup sumber daya, Anda dapat menetapkan peran untuk memastikan Anda dapat menyebarkannya.

  3. Pengguna memerlukan akses yang tepat ke brankas kunci. Anda harus memastikan bahwa Anda memiliki akses yang tepat ke brankas kunci ketika Anda membacanya selama penyebaran. Ketika Anda membuat brankas kunci, hal tersebut membuat kebijakan akses yang memberikan hak kepada pengguna untuk mengelola semua rahasia, kunci, dan sertifikat.

Konfigurasikan Azure Key Vault untuk penyebaran

Konfigurasikan instans Azure Key Vault Anda sehingga informasi masuk dapat dibaca darinya selama penyebaran templat ARM.

Agar dapat mengaktifkan Azure Key Vault untuk penyebaran, ada pengaturan yang dapat Anda lewati, baik selama pembuatan instans Azure Key Vault maupun sesuatu yang dapat Anda ubah di lain waktu. Di PowerShell, ini adalah sakelar yang disebut -EnabledForTemplateDeployment. Dalam Azure CLI, ini adalah argumen yang disebut --enabled-for-template-deployment yang memerlukan nilai true untuk diteruskan juga.

Catatan

Azure CLI juga mengharuskan Anda untuk meneruskan Boolean dengan nilai true.

Pengguna memerlukan izin penyebaran pada Azure Key Vault dan grup sumber daya

Sebelum Anda mencoba untuk menyebarkan dan membaca rahasia dari brankas kunci, Anda harus memastikan bahwa Anda memiliki izin penyebaran. Ada dua peran yang sama-sama memberikan izin kepada Anda:

  • Owner: Jika Anda membuat brankas kunci, Anda secara otomatis memiliki peran ini.
  • Contributor: Peran ini memberikan akses kepada Anda untuk mengelola semua rahasia. Jika Anda tidak membuat brankas kunci, pendekatan termudah adalah memberikan peran Contributor terhadap diri sendiri.

Pilihan lain adalah membuat dan menetapkan peran kustom, dan memastikan bahwa peran tersebut memuat izin Microsoft.KeyVault/vaults/deploy/action.

Konfigurasikan file parameter penyebaran

Daripada menentukan setiap parameter dan nilai terkait sebagai pasangan kunci-nilai selama penyebaran, Anda dapat menggunakan file parameter.

Dalam file parameter ini, Anda menentukan brankas kunci dan rahasia dalam brankas kunci yang Anda minati. Anda melakukan hal ini dengan memodifikasi parameter, lalu memperbarui templat penyebaran untuk menggunakan parameter ini.

Catatan

Templat tidak memiliki gagasan tentang brankas kunci atau rahasianya. Konfigurasi yang Anda buat dilakukan dalam file parameter.

Konfigurasikan brankas kunci dan rahasia untuk parameter

Dalam file parameter, dan untuk parameter tertentu, arahkan ke brankas kunci tempat Anda memiliki izin penyebaran. Selanjutnya, tentukan rahasia yang Anda minati. Anda menunjukkan rahasia dengan nama. Selama penyebaran, konfigurasi ini akan menghasilkan nilai rahasia. Berikut adalah parameter yang disebut myPassword yang dikonfigurasi untuk menggunakan brankas kunci tertentu, dan untuk menggunakan rahasia yang disebut databaseSecret.

"myPassword" : {
  "reference": {
    "keyVault": {
      "id": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.KeyVault/vaults/<vault-name>",
      "secretName": "databaseSecret"
    }
  }
}

Dalam JSON sebelumnya, Anda menentukan ID lengkap ke brankas kunci, dan terus meminta rahasia databaseSecret. Nilai rahasia ini kemudian diekstraksi dan ditetapkan ke parameter myPassword.

Tetapkan parameter ke kata sandi sumber daya

Langkah ini tidak terkait dengan brankas kunci. Hal ini tentang memastikan bahwa sumber daya yang dimaksudkan menggunakan parameter yang dikonfigurasi untuk membaca nilai rahasia dari brankas kunci. Berikut adalah cuplikan singkat dari VM, dalam file templat, yang menunjukkan pembacaan elemen adminPassword dari parameter myPassword. Nilai rahasia kemudian akan dibaca dari brankas kunci pada waktu penyebaran, dan ditetapkan ke elemen adminPassword.

{
  "osProfile": {
    "adminPassword": "[parameters('myPassword')]"
  }
}