Bagikan melalui


Menggunakan rahasia Azure Key Vault di Azure Pipelines

Layanan Azure DevOps | Azure DevOps Server 2022 - Azure DevOps Server 2019

Azure Key Vault memungkinkan pengembang untuk menyimpan dan mengelola informasi sensitif dengan aman seperti kunci API, kredensial, atau sertifikat. Layanan Azure Key Vault mendukung dua jenis kontainer: vault dan kumpulan HSM (Modul Keamanan Perangkat Keras) terkelola. Vault dapat menyimpan kunci, rahasia, dan sertifikat yang didukung HSM dan perangkat lunak, sementara kumpulan HSM terkelola secara eksklusif mendukung kunci yang didukung HSM.

Dalam tutorial ini, Anda akan belajar cara:

  • Membuat Azure Key Vault menggunakan Azure CLI
  • Menambahkan rahasia dan mengonfigurasi akses ke brankas kunci Azure
  • Menggunakan rahasia dalam alur Anda

Prasyarat

Mendapatkan kode sampel

Jika Anda sudah memiliki repositori Anda sendiri, lanjutkan ke langkah berikutnya. Jika tidak, impor repositori sampel berikut ke Azure Repo Anda.

  1. Masuk ke organisasi Azure DevOps Anda, lalu navigasikan ke proyek Anda.

  2. Pilih Repos, lalu pilih Impor. Masukkan URL repositori berikut, lalu pilih Impor.

    https://github.com/MicrosoftDocs/pipelines-dotnet-core
    

Membuat Azure Key Vault

  1. Masuk ke portal Microsoft Azure, lalu pilih tombol Cloud Shell di sudut kanan atas.

  2. Jika Anda memiliki lebih dari satu langganan Azure yang terkait dengan akun Anda, gunakan perintah di bawah ini untuk menentukan langganan default. Anda dapat menggunakan az account list untuk membuat daftar langganan Anda.

    az account set --subscription <YOUR_SUBSCRIPTION_NAME_OR_ID>
    
  3. Atur wilayah Azure default Anda. Anda dapat menggunakan az account list-locations untuk menghasilkan daftar wilayah yang tersedia.

    az config set defaults.location=<YOUR_REGION>
    
  4. Membuat grup sumber daya baru.

    az group create --name <YOUR_RESOURCE_GROUP_NAME>
    
  5. Buat Azure Key Vault baru.

    az keyvault create \
      --name <YOUR_KEY_VAULT_NAME> \
      --resource-group <YOUR_RESOURCE_GROUP_NAME>
    
  6. Buat rahasia baru di brankas kunci Azure Anda.

    az keyvault secret set \
      --name <YOUR_SECRET_NAME> \
      --value <YOUR_ACTUAL_SECRET> \
      --vault-name <YOUR_KEY_VAULT_NAME>
    

Mengonfigurasikan autentikasi

Membuat identitas terkelola yang ditetapkan pengguna

  1. Masuk ke portal Azure, lalu cari layanan Identitas Terkelola di bilah pencarian.

  2. Pilih Buat, dan isi bidang yang diperlukan sebagai berikut:

    • Langganan: Pilih langganan Anda dari menu dropdown.
    • Grup sumber daya: Pilih grup sumber daya yang sudah ada atau buat yang baru.
    • Wilayah: Pilih wilayah dari menu dropdown.
    • Nama: Masukkan nama untuk identitas terkelola yang ditetapkan pengguna Anda.
  3. Pilih Tinjau + buat saat Anda selesai.

  4. Setelah penyebaran selesai, pilih Buka sumber daya, lalu salin nilai Langganan dan ID Klien untuk digunakan dalam langkah-langkah mendatang.

  5. Navigasi ke Properti Pengaturan>, dan salin nilai ID Penyewa identitas terkelola Anda untuk digunakan nanti.

Menyiapkan kebijakan akses brankas kunci

  1. Navigasi ke portal Azure, dan gunakan bilah pencarian untuk menemukan brankas kunci yang Anda buat sebelumnya.

  2. Pilih Kebijakan akses, lalu pilih Buat untuk menambahkan kebijakan baru.

  3. Di bawah Izin rahasia, pilih kotak centang Dapatkan dan Daftar .

  4. Pilih Berikutnya, lalu tempelKAN ID Klien identitas terkelola yang Anda buat sebelumnya ke bilah pencarian. Pilih identitas terkelola Anda.

  5. Pilih Berikutnya, lalu Berikutnya sekali lagi.

  6. Tinjau kebijakan baru Anda, lalu pilih Buat setelah selesai.

Membuat koneksi layanan

  1. Masuk ke organisasi Azure DevOps Anda, lalu navigasikan ke proyek Anda.

  2. Pilih Pengaturan proyek>Koneksi layanan, lalu pilih Koneksi layanan baru untuk membuat koneksi layanan baru.

  3. Pilih Azure Resource Manager, lalu pilih Berikutnya.

  4. Untuk Jenis Identitas, pilih Identitas terkelola dari menu dropdown.

  5. Untuk Langkah 1: Detail identitas terkelola, isi bidang sebagai berikut:

    • Langganan untuk identitas terkelola: Pilih langganan yang berisi identitas terkelola Anda.

    • Grup sumber daya untuk identitas terkelola: Pilih grup sumber daya yang menghosting identitas terkelola Anda.

    • Identitas Terkelola: Pilih identitas terkelola Anda dari menu dropdown.

  6. Untuk Langkah 2: Cakupan Azure, isi bidang sebagai berikut:

    • Tingkat cakupan untuk koneksi layanan: Pilih Langganan.

    • Langganan untuk koneksi layanan: Pilih langganan yang akan diakses identitas terkelola Anda.

    • Grup sumber daya untuk Koneksi layanan: (Opsional) Tentukan untuk membatasi akses identitas terkelola ke satu grup sumber daya.

  7. Untuk Langkah 3: Detail koneksi layanan:

    • Nama koneksi layanan: Berikan nama untuk koneksi layanan Anda.

    • Referensi Manajemen Layanan: (Opsional) Informasi konteks dari database ITSM.

    • Deskripsi: (Opsional) Tambahkan deskripsi.

  8. Di Keamanan, pilih kotak centang Berikan izin akses ke semua alur untuk mengizinkan semua alur menggunakan koneksi layanan ini. Jika Anda tidak memilih opsi ini, Anda harus memberikan akses secara manual ke setiap alur yang menggunakan koneksi layanan ini.

  9. Pilih Simpan untuk memvalidasi dan membuat koneksi layanan.

    Cuplikan layar yang menampilkan cara membuat koneksi layanan ARM identitas terkelola.

Mengakses rahasia brankas kunci dari alur Anda

  1. Masuk ke organisasi Azure DevOps Anda, lalu navigasikan ke proyek Anda.

  2. Pilih Alur, lalu pilih Alur Baru.

  3. Pilih Azure Repos Git (YAML), lalu pilih repositori Anda.

  4. Pilih templat alur Starter.

  5. Alur default akan menyertakan skrip yang menjalankan perintah echo. Itu tidak diperlukan sehingga kita dapat menghapusnya.

  6. Tambahkan tugas AzureKeyVault, ganti tempat penampung dengan nama koneksi layanan yang Anda buat sebelumnya dan nama brankas kunci Anda. File YAML Anda harus menyerupai cuplikan berikut:

    trigger:
    - main
    
    pool:
      vmImage: ubuntu-latest
    
    steps:
    - task: AzureKeyVault@2
      displayName: Azure Key Vault
      inputs:
        azureSubscription: 'SERVICE_CONNECTION_NAME'
        KeyVaultName: 'KEY_VAULT_NAME'
        SecretsFilter: '*'
        RunAsPreJob: false
    
  7. Mari kita tambahkan tugas berikut untuk menyalin dan menerbitkan rahasia kita. Contoh ini hanya untuk tujuan demonstrasi dan tidak boleh diimplementasikan di lingkungan produksi.

    trigger:
    - main
    
    pool:
      vmImage: ubuntu-latest
    
    steps:
    - task: AzureKeyVault@2
      displayName: Azure Key Vault
      inputs:
        azureSubscription: 'SERVICE_CONNECTION_NAME'
        KeyVaultName: 'KEY_VAULT_NAME'
        SecretsFilter: '*'
        RunAsPreJob: false
    
    - task: CmdLine@2
      displayName: Create file
      inputs:
        script: 'echo $(SECRET_NAME) > secret.txt'
    
    - task: CopyFiles@2
      displayName: Copy file
      inputs:
        Contents: secret.txt
        targetFolder: '$(Build.ArtifactStagingDirectory)'
    
    - task: PublishBuildArtifacts@1
      displayName: Publish Artifact
      inputs:
        PathtoPublish: '$(Build.ArtifactStagingDirectory)'
        ArtifactName: 'drop'
        publishLocation: 'Container'
    
  8. Pilih Simpan dan jalankan, lalu pilih sekali lagi untuk menerapkan perubahan Anda dan memicu alur. Anda mungkin diminta untuk mengizinkan akses alur ke sumber daya Azure, jika diminta pilih Izinkan. Anda hanya perlu menyetujui alur Anda sekali.

  9. Pilih tugas CmdLine untuk melihat log.

    Cuplikan layar memperlihatkan log tugas baris perintah.

  10. Setelah eksekusi alur selesai, kembali ke ringkasan alur dan pilih artefak yang diterbitkan.

    Cuplikan layar memperlihatkan artefak yang diterbitkan di tab ringkasan.

  11. Pilih jatuhkan>secret.txt untuk mengunduhnya.

    Cuplikan layar yang menunjukkan cara mengunduh artefak yang diterbitkan.

  12. Buka file teks yang baru saja Anda unduh, file teks harus berisi rahasia dari brankas kunci Azure Anda.

Peringatan

Tutorial ini hanya untuk tujuan pendidikan. Untuk praktik terbaik keamanan dan cara bekerja dengan aman dengan rahasia, lihat Mengelola rahasia di aplikasi server Anda dengan Azure Key Vault.

Membersihkan sumber daya

Ikuti langkah-langkah di bawah ini untuk menghapus sumber daya yang Anda buat:

  1. Jika Anda telah membuat organisasi baru untuk menghosting proyek Anda, lihat cara menghapus organisasi Anda, jika tidak , hapus proyek Anda.

  2. Semua sumber daya Azure yang dibuat selama tutorial ini dihosting di bawah satu grup sumber daya. Jalankan perintah berikut untuk menghapus grup sumber daya Anda dan semua sumber dayanya.

    az group delete --name <YOUR_RESOURCE_GROUP_NAME>
    

FAQ

T: Saya mendapatkan kesalahan berikut: "pengguna atau grup tidak memiliki izin daftar rahasia" apa yang harus saya lakukan?

A: Jika Anda mengalami kesalahan yang menunjukkan bahwa pengguna atau grup tidak memiliki izin daftar rahasia pada brankas kunci, jalankan perintah berikut untuk mengotorisasi aplikasi Anda untuk mengakses kunci atau rahasia di Azure Key Vault:

az account set --subscription <YOUR_SUBSCRIPTION_ID>

az login

$spnObjectId = az ad sp show --id <YOUR_SERVICE_PRINCIPAL_ID>

az keyvault set-policy --name <YOUR_KEY_VAULT_NAME> --object-id $spnObjectId --secret-permissions get list