Bagikan melalui


Informasi Rahasia di Azure Pipelines

Layanan Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022

Artikel ini menyediakan praktik terbaik untuk melindungi rahasia di Azure Pipelines. Rahasia adalah segala hal yang aksesnya ingin Anda kontrol dengan ketat, seperti kunci API, kata sandi, sertifikat, atau kunci kriptografi. Azure Pipelines tidak menghasilkan nilai rahasia, tetapi Anda mungkin perlu menambahkan rahasia ke alur untuk menyimpan data sensitif seperti kunci API.

Artikel ini adalah bagian dari seri yang membantu Anda menerapkan langkah-langkah keamanan untuk Azure Pipelines. Untuk informasi selengkapnya, lihat Mengamankan Azure Pipelines.

Prasyarat

Kategori Persyaratan
Azure DevOps - Terapkan rekomendasi di Membuat Azure DevOps Anda aman dan Alur Azure Aman.
- Pengetahuan dasar tentang YAML dan Azure Pipelines. Untuk informasi lebih lanjut, lihat Membuat Pipeline Pertama Anda.
Izin - Untuk mengubah izin alur: Anggota grup Administrator Proyek.
- Untuk mengubah izin organisasi: Anggota grup Administrator Koleksi Proyek.

Gunakan metode lain

Rahasia menyajikan risiko keamanan yang melekat, jadi yang terbaik adalah tidak menggunakannya sama sekali. Alih-alih mengelola rahasia dalam variabel atau mengeksposnya dalam konfigurasi alur Anda, lihat apakah alur Anda dapat menggunakan salah satu metode lain ini untuk melakukan tugas.

Untuk informasi selengkapnya, lihat Gunakan prinsipal layanan dan identitas terkelola.

Menggunakan variabel rahasia

Jangan pernah menyimpan nilai sensitif sebagai teks biasa dalam file azure-pipelines.yml . Anda dapat menggunakan variabel rahasia untuk informasi privat seperti kata sandi, ID, dan data identifikasi lainnya yang tidak ingin Anda ekspos. Variabel rahasia dienkripsi, sehingga Anda dapat menggunakannya dalam alur tanpa mengekspos nilainya.

  • Yang terbaik adalah mengelola variabel rahasia dengan aman di Azure Key Vault. Anda juga dapat mengatur variabel rahasia dalam UI definisi alur atau dalam grup variabel.
  • Jangan gunakan perintah pengelogan untuk mengatur variabel rahasia, karena siapa pun yang dapat mengakses alur Anda juga dapat melihat rahasianya.
  • Jangan pernah menampilkan rahasia sebagai output, dan jangan meneruskan rahasia di baris perintah. Sebaliknya, yang terbaik adalah memetakan rahasia Anda ke dalam variabel lingkungan.
  • Saat Anda membuat rahasia, ikuti panduan penamaan variabel, dan pastikan nama rahasia Anda tidak mengungkapkan informasi sensitif.

Untuk mempelajari selengkapnya tentang mengatur rahasia dalam variabel, lihat Mengatur variabel rahasia.

Membatasi akses ke variabel rahasia

Untuk membatasi akses ke rahasia di Azure DevOps, ikuti salah satu praktik berikut:

  • Simpan rahasia Anda di Azure Key Vault. Dengan menggunakan Azure Key Vault, Anda dapat menggunakan kontrol akses berbasis peran Azure untuk membatasi akses ke rahasia atau grup rahasia.
  • Atur variabel rahasia di UI alur. Variabel ini dicakup ke alur tempat variabel diatur, sehingga hanya terlihat oleh pengguna alur tersebut.
  • Atur rahasia dalam grup variabel. Grup variabel mengikuti model keamanan pustaka , sehingga Anda dapat mengontrol siapa yang dapat mengakses atau membuat item.

Jangan menulis rahasia ke log

Azure Pipelines mencoba menghapus rahasia dari log sebisa mungkin, tetapi tidak sepenuhnya dapat diandalkan. Hindari menggemakan rahasia ke konsol, menggunakannya dalam parameter baris perintah, atau mencatatnya ke file.

Berhati-hatilah saat Anda menggunakan perintah Azure CLI yang menghasilkan informasi sensitif. Gunakan format output Tidak Ada, dan jika Anda perlu mengambil rahasia dari panggilan Azure CLI, ambil informasi keamanan dari variabel rahasia.

Jangan gunakan data terstruktur sebagai rahasia

Hindari menggunakan format data terstruktur seperti JSON, XML, atau YAML untuk merangkum nilai rahasia, termasuk karakter kontrol seperti pengembalian kereta \r dan umpan baris \n. Sebagai gantinya, buat rahasia individual untuk setiap nilai sensitif. Pendekatan ini memastikan akurasi redaksi yang lebih baik dan meminimalkan risiko mengekspos data sensitif secara tidak sengaja.

Mengaudit penggunaan data rahasia

Untuk mengaudit bagaimana alur Anda menggunakan rahasia, ikuti praktik terbaik berikut:

  • Periksa kode sumber repositori yang menghosting alur. Untuk memastikan rahasia ditangani dengan benar, periksa semua tugas yang digunakan alur. Verifikasi bahwa rahasia tidak secara tidak sengaja dikirim ke host yang tidak diinginkan atau dicetak secara eksplisit ke output log.

  • Setelah menguji input yang valid dan tidak valid, lihat log eksekusi untuk alur Anda. Pastikan bahwa rahasia diredaksi dengan benar dan tidak terekspos. Terkadang, kesalahan dalam perintah atau alat mungkin secara tidak sengaja membocorkan rahasia ke dalam log kesalahan. Meskipun Azure Pipelines mencoba menggosok rahasia dari log, tinjauan manual masih penting.

Mengaudit dan memutar rahasia

Untuk mengaudit dan memutar rahasia, ikuti praktik terbaik berikut:

  • Tinjau rahasia yang terdaftar di pipeline Anda secara berkala. Konfirmasikan bahwa mereka masih diperlukan dan hapus yang tidak lagi diperlukan. Praktik ini membantu mengurangi kekacauan dan potensi risiko keamanan.
  • Pastikan konfigurasi yang tepat dan penanganan rahasia koneksi layanan yang aman.
  • Jaga agar durasi token akses pribadi (PAT) tetap pendek dan pilih izin minimal yang diperlukan.
  • Putar kunci rahasia secara teratur untuk meminimalkan durasi waktu kunci yang disusupi bisa dieksploitasi. Mengubah rahasia secara berkala meningkatkan keamanan.

Menggunakan templat YAML

Alih-alih menyertakan skrip sebaris dengan parameter rahasia langsung di YAML alur Anda, gunakan templat. Pendekatan ini meningkatkan keamanan dengan mengabstraksi informasi sensitif dari alur utama.

Untuk menerapkan pendekatan ini, buat file YAML terpisah untuk skrip Anda dan simpan skrip tersebut di repositori aman yang terpisah. Anda kemudian dapat mereferensikan templat dan meneruskan variabel rahasia dari Azure Key Vault, grup variabel, atau UI alur di YAML Anda sebagai parameter. Untuk informasi selengkapnya tentang menggunakan templat, lihat Referensi penggunaan templat.

Membatasi rahasia dengan kebijakan cabang dan izin grup variabel

Untuk memastikan bahwa rahasia hanya dapat diakses oleh cabang repositori tertentu, Anda dapat menggunakan kombinasi kebijakan cabang, izin grup variabel, dan penyisipan pekerjaan bersyarat.

Menerapkan kebijakan validasi build yang memungkinkan build hanya dari cabang tertentu. Kemudian gunakan izin grup variabel untuk memastikan bahwa hanya alur resmi yang dapat mengakses rahasia yang disimpan dalam grup variabel Anda. Terakhir, gunakan kondisi dalam alur Anda untuk memastikan bahwa hanya pendorongan ke cabang yang ditunjuk yang dapat mereferensikan grup variabel.

jobs:
- job: ExampleJob
  condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
  pool:
    vmImage: 'ubuntu-latest'
  steps:
  - script: echo "This runs only for the main branch"
    displayName: 'Conditional Step'
  variables:
  - group: your-variable-group-name