Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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.
- Siapkan koneksi layanan untuk terhubung dengan aman ke Azure atau layanan lain seperti GitHub atau Docker. Untuk informasi selengkapnya, lihat Menyambungkan ke Azure dengan koneksi layanan Azure Resource Manager.
- Gunakan identitas terkelola untuk memungkinkan aplikasi dan layanan Anda mengautentikasi dengan layanan Azure tanpa menggunakan kredensial eksplisit.
- Gunakan tugas Azure CLI dengan opsi
addSpnToEnvironmentdi pipeline Anda untuk mengakses detail principal layanan tanpa meneruskan rahasia secara eksplisit.
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