Menggunakan rahasia Azure Key Vault di Azure Pipelines

Azure DevOps | Azure DevOps Server 2020 | Azure DevOps Server 2019

Azure Key Vault memungkinkan pengembang untuk menyimpan dan mengelola rahasia dengan aman seperti kunci API, kredensial, atau sertifikat. Layanan Azure Key Vault mendukung dua jenis kontainer: brankas dan kumpulan HSM terkelola (modul keamanan perangkat keras). Vault mendukung penyimpanan perangkat lunak dan kunci, rahasia, dan sertifikat yang didukung HSM, sementara kumpulan HSM terkelola hanya mendukung kunci yang didukung HSM.

Dalam tutorial ini, Anda akan belajar cara:

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

Prasyarat

Membuat Azure Key Vault

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

  1. 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>
    
  2. Atur wilayah Azure default Anda. Anda dapat menggunakan az account list-locations untuk membuat daftar wilayah yang tersedia.

    az config set defaults.location=<your_region>
    

    Misalnya, perintah ini akan memilih wilayah westus2:

    az config set defaults.location=westus2
    
  3. Membuat grup sumber daya baru. Grup sumber daya adalah penampung yang menampung sumber daya terkait untuk sebuah solusi Azure.

    az group create --name <your-resource-group>
    
  4. Buat brankas kunci baru.

    az keyvault create \
      --name <your-key-vault> \
      --resource-group <your-resource-group>
    
  5. Buat rahasia baru di brankas kunci Azure Anda.

    az keyvault secret set \
      --name "Password" \
      --value "mysecretpassword" \
      --vault-name <your-key-vault-name>
    

Membuat proyek

  1. Masuk ke Organisasi Azure DevOps Anda.

  2. Jika Anda belum memiliki proyek apa pun di organisasi Anda, pilih Buat proyek untuk memulai. Jika tidak, pilih Proyek baru di sudut kanan atas.

Membuat repositori

Kami akan menggunakan YAML untuk membuat alur kami tetapi pertama-tama kita perlu membuat repositori baru.

  1. Masuk ke organisasi Azure DevOps Anda dan arahkan ke proyek Anda.

  2. Pilih Repositori, lalu pilih Inisialisasi untuk menginisialisasi repositori baru dengan README.

    A screenshot showing how to initialize a repository.

Buat alur baru

  1. Pilih Alur, lalu pilih Alur Baru.

  2. Pilih Azure Repos Git (YAML) .

    A screenshot showing how to select Azure Repos source control.

  3. Pilih repositori yang Anda buat di langkah sebelumnya.

  4. Pilih templat alur Starter .

  5. Alur default akan menyertakan beberapa skrip yang menjalankan perintah echo. Itu tidak diperlukan sehingga kita dapat menghapusnya. File YAML baru Anda akan terlihat seperti ini:

    trigger:
    - main
    
    pool:
        vmImage: 'ubuntu-latest'
    
    steps:
    
  6. Pilih Perlihatkan asisten untuk memperluas panel asisten. Panel ini menyediakan daftar tugas alur yang nyaman dan dapat dicari.

    A screenshot showing how to access the task assistant panel.

  7. Cari vault dan pilih tugas Azure Key Vault.

    A screenshot showing how to search for the Azure Key Vault task.

  8. Pilih langganan Azure Anda lalu pilih Otorisasi. Pilih Brankas kunci Anda dari menu dropdown, lalu pilih Tambahkan untuk menambahkan tugas ke alur YAML Anda.

    A screenshot showing how to configure the Azure Key Vault task.

    Catatan

    Fitur Buat rahasia tersedia untuk seluruh pekerjaan tidak didukung di Azure DevOps Server 2019 dan 2020.

  9. File YAML Anda akan terlihat seperti berikut ini:

    trigger:
    - main
    
    pool:
      vmImage: ubuntu-latest
    
    steps:
    - task: AzureKeyVault@2
      inputs:
        azureSubscription: 'Your-Azure-Subscription'
        KeyVaultName: 'Your-Key-Vault-Name'
        SecretsFilter: '*'
        RunAsPreJob: false
    
    - task: CmdLine@2
      inputs:
        script: 'echo $(Your-Secret-Name) > secret.txt'
    
    - task: CopyFiles@2
      inputs:
        Contents: secret.txt
        targetFolder: '$(Build.ArtifactStagingDirectory)'
    
    - task: PublishBuildArtifacts@1
      inputs:
        PathtoPublish: '$(Build.ArtifactStagingDirectory)'
        ArtifactName: 'drop'
        publishLocation: 'Container'
    

Jangan menyimpan atau mengantrekan alur Anda dulu. Pertama-tama kita harus memberikan alur kita izin yang tepat untuk mengakses Azure Key Vault. Biarkan tab browser Anda terbuka, kami akan melanjutkan langkah-langkah yang tersisa setelah kami menyiapkan izin brankas kunci.

Menyiapkan kebijakan akses Azure Key Vault

Untuk mengakses azure Key Vault kami, pertama-tama kita harus menyiapkan perwakilan layanan untuk memberikan akses ke Azure Pipelines. Ikuti panduan ini untuk membuat perwakilan layanan Anda lalu lanjutkan dengan langkah-langkah berikutnya di bagian ini.

  1. Navigasi ke portal Azure.

  2. Gunakan bilah pencarian untuk mencari brankas kunci yang Anda buat sebelumnya.

    A screenshot showing how to search for your Azure Key Vault.

  3. Di bawah Pengaturan Pilih Kebijakan akses.

  4. Pilih Tambahkan Kebijakan Akses untuk menambahkan kebijakan baru.

  5. Untuk Izin rahasia, pilih Dapatkan dan Daftar.

  6. Pilih opsi untuk memilih perwakilan layanan dan cari yang Anda buat di awal bagian ini. Perwakilan keamanan adalah objek yang mewakili pengguna, grup, layanan, atau aplikasi yang meminta akses ke sumber daya Azure.

  7. Pilih Tambahkan untuk membuat kebijakan akses, lalu pilih Simpan setelah selesai.

Menjalankan dan meninjau alur

  1. Kembali ke tab sebelumnya di mana kita tinggalkan.

  2. Pilih Simpan, lalu pilih Simpan 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.

  3. Pilih tugas CmdLine untuk melihat log.

    A screenshot showing the command-line task logs.

  4. Kembali ke ringkasan alur dan pilih artefak yang diterbitkan.

    A screenshot showing the pipeline summary and the published artifact.

  5. Pilih artefak secret.txt untuk membukanya.

    A screenshot showing how to open the published artifact.

  6. File teks harus berisi rahasia kami: mysecretpassword.

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 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 PipelinesKeyVaultResourceGroup. Jalankan perintah berikut untuk menghapus grup sumber daya dan semua sumber dayanya.

    az group delete --name PipelinesKeyVaultResourceGroup
    

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 di brankas kunci, jalankan perintah berikut untuk mengotorisasi aplikasi Anda untuk mengakses kunci atau rahasia di Azure Key Vault:

$ErrorActionPreference="Stop";
$Credential = Get-Credential;
Connect-AzAccount -SubscriptionId <YOUR_SUBSCRIPTION_ID> -Credential $Credential;
$spn=(Get-AzureRmADServicePrincipal -SPN <YOUR_SERVICE_PRINCIPAL_ID>);
$spnObjectId=$spn.Id;
Set-AzureRmKeyVaultAccessPolicy -VaultName key-vault-tutorial -ObjectId $spnObjectId -PermissionsToSecrets get,list;

Langkah berikutnya