Untuk mencegah serangan man-in-the-middle serta pembaruan atau eksekusi gambar yang tidak sah, Container Registry mendukung penandatanganan otomatis tingkat namespace. Setiap gambar yang didorong ke Container Registry ditandatangani sesuai dengan aturan penandatanganan yang berlaku, sehingga menjamin integritas gambar secara end-to-end mulai dari distribusi hingga penerapan.
Prasyarat
Sebelum memulai, pastikan Anda telah:
-
Instans Container Registry Enterprise Edition (Edisi Lanjutan) — Penandatanganan gambar memerlukan tier Edisi Lanjutan. Untuk petunjuk pengaturan, lihat Buat instans Container Registry Enterprise Edition.
-
Key Management Service (KMS) diaktifkan — KMS menyediakan kunci asimetris yang digunakan untuk menandatangani gambar. Untuk petunjuk pengaturan, lihat Aktifkan KMS.
Buat kunci asimetris
Penandatanganan gambar menggunakan algoritma kunci asimetris. Buat kunci KMS bertipe EC atau RSA dengan tujuan diatur sebagai SIGN atau VERIFY.
-
Masuk ke Konsol KMS.
-
Pada bilah navigasi atas, pilih wilayah tempat Anda ingin membuat kunci.
-
Pada panel navigasi kiri, klik Keys, lalu klik Create Secret.
-
Pada kotak dialog Create Secret, atur tipe kunci menjadi EC atau RSA dan atur parameter Purpose menjadi SIGN atau VERIFY, lalu klik Confirm. Untuk detail parameter lainnya, lihat Buat CMK.
Otorisasi Container Registry untuk mengakses kunci KMS
Container Registry memerlukan izin untuk membaca kunci asimetris Anda guna penandatanganan. Konfigurasikan akses ini menggunakan peran Resource Access Management (RAM) dengan kebijakan kustom.
Buat peran RAM
-
Masuk ke Konsol RAM.
-
Pada panel navigasi kiri, pilih Identities > Role.
-
Pada halaman Role, klik Create Role.
-
Pada halaman Create Role, atur Principal Type menjadi Cloud Account, tentukan Akun Alibaba Cloud Anda, lalu klik Confirm.
-
Pada kotak dialog Create Role, atur Role Name menjadi
AliyunContainerRegistryKMSRole, lalu klik Confirm.
Perbarui kebijakan kepercayaan
-
Pada halaman Role, cari
AliyunContainerRegistryKMSRoledan klik nama perannya. -
Klik tab Trust Policy, lalu klik Edit Trust Policy.
-
Ganti isi kebijakan dengan berikut ini, lalu klik Confirm:
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "cr.aliyuncs.com" ] } } ], "Version": "1" }
Buat dan sambungkan kebijakan izin
-
Pada panel navigasi kiri Konsol RAM, pilih Permissions > Policies.
-
Pada halaman Policies, klik Create Policy.
-
Pada halaman Create Policy, klik tab JSON Editor dan masukkan kebijakan berikut. Ganti
${region}dan${accountid}dengan wilayah dan ID akun Anda yang sebenarnya.{ "Statement": [ { "Effect": "Allow", "Action": [ "kms:*" ], "Resource": "acs:kms:${region}:${accountid}:*" } ], "Version": "1" } -
Klik Confirm. Pada kotak dialog Create Policy, atur Policy Name menjadi
AliyunContainerRegistryKMSRolePolicydan konfigurasikan Description, lalu klik Confirm. -
Pada panel navigasi kiri, pilih Identities > Role. Temukan
AliyunContainerRegistryKMSRoledan klik Add Permission pada kolom Actions. -
Pada panel Add Permission, pilih Custom Policy sebagai tipe kebijakan, temukan dan pilih
AliyunContainerRegistryKMSRolePolicy, lalu klik Confirm.
Konfigurasikan witness dan kebijakan verifikasi signature
Witness menghubungkan kunci KMS Anda ke alur kerja penandatanganan Container Registry. Secara opsional, asosiasikan witness dengan kluster Container Service for Kubernetes (ACK) untuk menerapkan verifikasi signature saat penerapan.
-
Masuk ke konsol Cloud Security Center.
-
Pada panel navigasi kiri, pilih Protection Configuration > Container Protection > Container Signature. Pada halaman Container Signature, klik tab Witness, lalu klik create a witness.
-
Buat witness dan asosiasikan dengan kunci KMS yang telah Anda buat. Kunci-kunci ini digunakan untuk penandatanganan gambar.
-
(Opsional) Buat kebijakan verifikasi signature untuk mengasosiasikan witness dengan kluster ACK. Untuk detailnya, lihat Gunakan fitur container signature.
Konfigurasikan aturan penandatanganan
Aturan penandatanganan menentukan gambar mana yang akan ditandatangani dan bagaimana cara menandatangani. Setelah Anda membuat aturan, Container Registry secara otomatis menandatangani setiap gambar baru yang didorong ke namespace yang ditentukan.
Aturan penandatanganan hanya berlaku untuk gambar yang didorong setelah aturan dibuat. Gambar yang sudah ada di namespace tidak ditandatangani.
-
Masuk ke Konsol Container Registry.
-
Pada bilah navigasi atas, pilih wilayah.
-
Pada panel navigasi kiri, klik Instances.
-
Pada halaman Instances, klik instans Enterprise Edition yang ingin Anda kelola.
-
Pada panel navigasi kiri, pilih Security and Trust > Image Signature , lalu klik Create a signature rule.
-
Pada langkah Key Configurations, pilih witness yang telah Anda buat di Cloud Security Center dan asosiasikan dengan kunci KMS, lalu klik Next.
-
Pada langkah Signature Configurations, konfigurasikan parameter berikut, lalu klik Create Signing Rule.
Parameter Deskripsi Algorithms Algoritma yang digunakan untuk menandatangani gambar. Nilai yang valid: RSA_PSS_SHA_256 dan RSA_PKCS1_SHA_256. Scope Saat ini, penandatanganan otomatis didukung pada tingkat namespace. Pilih namespace yang gambarnya akan ditandatangani secara otomatis. Signature types Default: Menandatangani baik digest maupun tag gambar. Gunakan opsi ini untuk verifikasi signature dalam instans yang sama. Simple: Hanya menandatangani digest gambar (bukan tag). Gunakan opsi ini untuk skenario replikasi gambar lintas-instans di mana tag dapat berubah. Trigger Type Cara pemicu penandatanganan gambar. Nilai default adalah Automatic Trigger, yang menandatangani gambar setiap kali gambar tersebut didorong ke Container Registry.
Verifikasi signature gambar
Gunakan kritis-validation-hook untuk memverifikasi signature gambar kontainer di kluster ACK. kritis-validation-hook dapat secara otomatis memblokir penerapan gambar jika verifikasi signature gagal. Ini merupakan metode verifikasi yang direkomendasikan. Untuk petunjuk pengaturan, lihat Pengantar kritis-validation-hook.
Sebagai alternatif, gunakan fitur verifikasi signature dari KMS untuk memverifikasi signature gambar secara langsung di Container Registry.