Melindungi rahasia di Azure Pipelines

Artikel ini menyediakan praktik terbaik tentang 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. Namun, Anda mungkin perlu menambahkan rahasia ke alur untuk menyimpan data sensitif seperti kunci API. Untuk mempelajari selengkapnya tentang mengatur variabel rahasia, lihat Mengatur variabel rahasia.

Jangan gunakan rahasia jika metode lain tersedia

Metode terbaik untuk melindungi rahasia adalah tidak memiliki rahasia di tempat pertama. Periksa untuk melihat apakah alur Anda dapat menggunakan metode yang berbeda dari menggunakan rahasia untuk melakukan tugas.

Menggunakan variabel rahasia

Nilai sensitif tidak boleh disimpan sebagai teks biasa dalam file .yml Azure Pipelines.

Variabel rahasia dapat digunakan untuk informasi privat seperti kata sandi, ID, dan data identifikasi lainnya yang tidak ingin Anda ekspos dalam alur. Cara yang disarankan untuk mengatur variabel rahasia adalah dengan Azure Key Vault. Anda juga dapat mengatur variabel rahasia di UI atau dalam grup variabel. Menggunakan perintah pengelogan untuk mengatur variabel rahasia tidak disarankan. Saat Anda mengatur rahasia dengan perintah pengelogan, siapa pun yang dapat mengakses alur Anda juga akan dapat melihat rahasianya.

Variabel rahasia dienkripsi dan dapat digunakan dalam alur tanpa mengekspos nilainya. Meskipun nilainya tidak diekspos, jangan pernah menggaungkan rahasia sebagai output dan tidak meneruskan rahasia pada baris perintah. Sebagai gantinya, kami sarankan Anda memetakan rahasia Anda ke dalam variabel lingkungan.

Saat Anda membuat rahasia, ikuti panduan penamaan variabel dan pastikan bahwa nama rahasia Anda tidak mengungkapkan informasi sensitif.

Membatasi akses ke variabel rahasia

Untuk membatasi akses ke rahasia di Azure DevOps, Anda dapat:

  • Simpan rahasia Anda di Azure Key Vault. Dengan Azure Key Vault, Anda kemudian dapat menggunakan model kontrol akses berbasis peran Azure untuk membatasi akses ke rahasia atau grup rahasia.
  • Atur variabel rahasia di UI untuk alur. Variabel rahasia yang diatur dalam antarmuka pengguna pengaturan alur untuk alur dilingkup ke alur tempat variabel diatur. Jadi, Anda dapat memiliki rahasia yang hanya terlihat oleh pengguna dengan akses ke alur tersebut.
  • Atur rahasia dalam grup variabel. Grup variabel mengikuti model keamanan pustaka. Anda bisa mengontrol siapa yang bisa menentukan item baru di pustaka, dan siapa yang bisa menggunakan item yang sudah ada.

Jangan menulis rahasia ke log

Azure Pipelines mencoba menggosok rahasia dari log sedapat mungkin. Pemfilteran ini berdasarkan upaya terbaik dan tidak dapat menangkap setiap cara rahasia dapat bocor. Hindari menggemakan rahasia ke konsol, menggunakannya dalam parameter baris perintah, atau mencatatnya ke file. Misalnya, beberapa informasi output perintah Azure CLI yang harus Anda lindungi. Jika Anda memanggil Azure CLI dari alur Anda, gunakan format output Tidak Ada, dan jika Anda perlu mengambil rahasia dari panggilan Azure CLI, Gunakan format output tidak ada dan ambil informasi keamanan ke variabel rahasia.

Jangan gunakan data terstruktur sebagai rahasia

Data terstruktur dapat menyebabkan redaksi rahasia dalam log gagal, karena redaksi sebagian besar bergantung pada menemukan kecocokan yang tepat untuk nilai rahasia tertentu. Misalnya, jangan gunakan blob JSON, XML, atau YAML (atau serupa) untuk merangkum nilai rahasia, termasuk karakter kontrol seperti pengembalian pengangkutan (\r) dan umpan baris (\n), karena ini secara signifikan mengurangi probabilitas rahasia diredaksi dengan benar. Sebagai gantinya, buat rahasia individual untuk setiap nilai sensitif.

Mengaudit bagaimana rahasia ditangani

Audit bagaimana rahasia digunakan, untuk membantu memastikan rahasia tersebut ditangani seperti yang diharapkan. Anda dapat melakukan ini dengan meninjau kode sumber repositori yang menghosting alur, dan memeriksa tugas apa pun yang digunakan dalam alur. Misalnya, periksa apakah mereka tidak dikirim ke host yang tidak diinginkan, atau secara eksplisit dicetak ke output log.

Lihat log eksekusi untuk alur Anda setelah menguji input yang valid/tidak valid, dan periksa apakah rahasia diredaksi dengan benar, atau tidak ditampilkan. Tidak selalu jelas bagaimana perintah atau alat yang Anda panggil akan memancarkan kesalahan, dan rahasia mungkin kemudian berakhir dalam log kesalahan. Azure Pipelines mencoba menggosok rahasia dari log sedapat mungkin. Pemfilteran ini berdasarkan upaya terbaik dan tidak dapat menangkap setiap cara rahasia dapat bocor. Akibatnya, praktik yang baik untuk meninjau log alur secara manual setelah menguji input yang valid dan tidak valid.

Mengaudit dan memutar rahasia

Tinjau rahasia terdaftar yang digunakan oleh alur Anda secara berkala untuk mengonfirmasi bahwa rahasia tersebut masih diperlukan, dan hapus rahasia yang tidak lagi diperlukan.

Putar rahasia secara berkala untuk mengurangi jendela waktu di mana rahasia yang disusupi valid.

Jenis rahasia yang digunakan oleh alur dapat mencakup:

Langkah berikutnya