Bagikan melalui


Rekomendasi untuk mengamankan infrastruktur bersama di Azure Pipelines

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

Sumber daya yang dilindungi di Azure Pipelines adalah abstraksi infrastruktur nyata. Ikuti rekomendasi ini untuk melindungi infrastruktur yang mendasar.

Menggunakan kumpulan yang dihosting Microsoft

Kumpulan yang dihosting Microsoft menawarkan isolasi dan komputer virtual yang bersih untuk setiap eksekusi alur. Jika memungkinkan, gunakan kumpulan yang dihosting Microsoft daripada kumpulan yang dihost sendiri.

Agen terpisah untuk setiap proyek

Agen hanya dapat terikat ke satu kumpulan. Anda mungkin ingin berbagi agen di seluruh proyek dengan berbagi kumpulan dengan beberapa proyek. Dengan kata lain, beberapa proyek mungkin menjalankan pekerjaan pada agen yang sama, satu demi satu. Meskipun praktik ini menghemat biaya infrastruktur, praktik ini dapat memungkinkan pergerakan lateral.

Untuk menghilangkan bentuk gerakan lateral itu dan untuk mencegah satu proyek "meracuni" agen untuk proyek lain, simpan kumpulan agen terpisah dengan agen terpisah untuk setiap proyek.

Menggunakan akun dengan hak istimewa rendah untuk menjalankan agen

Sangat menggoda tetapi berbahaya untuk menjalankan agen di bawah identitas yang dapat langsung mengakses sumber daya Azure DevOps. Penyiapan bermasalah ini umum di organisasi yang menggunakan ID Microsoft Entra. Jika Anda menjalankan agen di bawah identitas yang didukung oleh ID Microsoft Entra, maka agen tersebut dapat langsung mengakses API Azure DevOps tanpa menggunakan token akses pekerjaan. Sebagai gantinya, Anda harus menjalankan agen sebagai akun lokal yang tidak memiliki hak istimewa seperti Layanan Jaringan.

Azure DevOps memiliki grup yang secara menyesatkan bernama Akun Layanan Koleksi Proyek. Berdasarkan pewarisan, anggota Akun Layanan Koleksi Proyek juga merupakan anggota Administrator Koleksi Proyek. Pelanggan terkadang menjalankan agen build mereka dengan menggunakan identitas yang didukung oleh ID Microsoft Entra dan itu adalah anggota Akun Layanan Koleksi Proyek. Jika adversaries menjalankan alur di salah satu agen build ini, maka mereka dapat mengambil alih seluruh organisasi Azure DevOps.

Kami juga telah melihat agen yang dihost sendiri berjalan di bawah akun yang sangat istimewa. Seringkali, agen ini menggunakan akun istimewa untuk mengakses rahasia atau lingkungan produksi. Tetapi jika iklan menjalankan alur yang disusupi pada salah satu agen build ini, maka mereka dapat mengakses rahasia tersebut. Kemudian para adversaries dapat bergerak secara lateral melalui sistem lain yang dapat diakses melalui akun-akun tersebut.

Untuk menjaga keamanan sistem Anda, gunakan akun dengan hak istimewa terendah untuk menjalankan agen yang dihost sendiri. Misalnya, gunakan akun komputer Anda atau identitas layanan terkelola. Biarkan Azure Pipelines mengelola akses ke rahasia dan lingkungan.

Meminimalkan cakupan koneksi layanan

Koneksi layanan harus hanya dapat mengakses sumber daya yang mereka butuhkan. Jika memungkinkan, gunakan federasi identitas beban kerja alih-alih perwakilan layanan untuk koneksi layanan Azure Anda. Federasi identitas beban kerja menggunakan teknologi standar industri, Open ID Koneksi (OIDC), untuk memfasilitasi autentikasi antara Azure dan Azure DevOps dan tidak menggunakan rahasia.

Koneksi layanan Azure Anda harus dicakup ke sumber daya yang perlu Anda akses koneksi layanan. Pengguna tidak boleh memiliki hak kontributor yang luas untuk seluruh langganan Azure.

Saat Anda membuat koneksi layanan Azure Resource Manager baru, selalu pilih grup sumber daya. Pastikan grup sumber daya Anda hanya berisi VM atau sumber daya yang diperlukan build. Demikian pula, saat Anda mengonfigurasi aplikasi GitHub, berikan akses hanya ke repositori yang ingin Anda buat dengan menggunakan Azure Pipelines.

Langkah berikutnya

Pertimbangkan beberapa rekomendasi umum untuk keamanan.