Container Registry secara otomatis menandatangani gambar di namespace tertentu untuk melindungi rantai pasokan Anda dari serangan man-in-the-middle (MITM) dan modifikasi gambar yang tidak sah. Setelah gambar didorong ke Container Registry, gambar tersebut ditandatangani berdasarkan aturan penandatanganan yang sesuai, sehingga hanya gambar yang telah diverifikasi yang dapat dijalankan di lingkungan Anda.
Prasyarat
Sebelum memulai, pastikan Anda telah:
-
Instans Container Registry Enterprise Edition (Edisi Lanjutan) — Penandatanganan gambar memerlukan tier Edisi Lanjutan. Untuk petunjuk penyiapan, lihat Buat instans Container Registry Enterprise Edition.
-
Key Management Service (KMS) diaktifkan — KMS menyediakan kunci asimetris yang digunakan untuk menandatangani gambar. Untuk petunjuk penyiapan, lihat Aktifkan KMS.
Buat kunci asimetris
Penandatanganan gambar menggunakan algoritma kunci asimetris. Buat kunci KMS bertipe EC atau RSA dengan tujuan diatur sebagai SIGN/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 Key.
-
Pada kotak dialog Create Key, atur tipe kunci menjadi EC atau RSA dan atur parameter Purpose menjadi SIGN/VERIFY, lalu klik OK. 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 role Resource Access Management (RAM) dengan kebijakan kustom.
Buat role RAM
-
Masuk ke Konsol RAM.
-
Pada panel navigasi kiri, pilih Identities > Roles.
-
Pada halaman Roles, klik Create Role.
-
Pada halaman Create Role, atur Principal Type menjadi Cloud Account, tentukan Akun Alibaba Cloud Anda, lalu klik OK.
-
Pada kotak dialog Create Role, atur Role Name menjadi
AliyunContainerRegistryKMSRole, lalu klik OK.
Perbarui kebijakan kepercayaan
-
Pada halaman Roles, cari
AliyunContainerRegistryKMSRoledan klik nama role tersebut. -
Klik tab Trust Policy, lalu klik Edit Trust Policy.
-
Ganti konten kebijakan dengan berikut ini, lalu klik OK:
{ "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 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 OK. Pada kotak dialog Create Policy, atur Policy Name menjadi
AliyunContainerRegistryKMSRolePolicydan konfigurasikan Description, lalu klik OK. -
Pada panel navigasi kiri, pilih Identities > Roles. Temukan
AliyunContainerRegistryKMSRoledan klik Add Permissions pada kolom Actions. -
Pada panel Add Permissions, pilih Custom Policy sebagai tipe kebijakan, temukan dan pilih
AliyunContainerRegistryKMSRolePolicy, lalu klik OK.
Konfigurasikan witness dan kebijakan verifikasi signature
Witness menghubungkan kunci KMS Anda ke alur kerja penandatanganan Container Registry. Secara opsional, kaitkan witness dengan kluster 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 kaitkan dengan kunci KMS yang telah Anda buat. Kunci-kunci ini digunakan untuk penandatanganan gambar.
-
(Opsional) Buat kebijakan verifikasi signature untuk mengaitkan witness dengan kluster Container Service for Kubernetes (ACK). Untuk detailnya, lihat Gunakan fitur container signature.
Konfigurasikan aturan penandatanganan
Aturan penandatanganan menentukan gambar mana yang akan ditandatangani dan bagaimana cara menandatangani gambar tersebut. 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 Edisi Perusahaan yang ingin Anda kelola.
-
Pada panel navigasi kiri, pilih Security and Trust > Image Signature, lalu klik Create a signature rule.
-
Pada langkah Key Configuration, pilih witness yang telah Anda buat di Cloud Security Center dan kaitkan 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 Namespace yang gambarnya ditandatangani secara otomatis. Signature types Default: Menandatangani digest dan tag gambar. Gunakan ini untuk verifikasi signature dalam instans yang sama. Simple: Hanya menandatangani digest gambar (bukan tag). Gunakan 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 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. Untuk petunjuk penyiapan, lihat Pengantar kritis-validation-hook.
Sebagai alternatif, gunakan fitur verifikasi signature KMS untuk memverifikasi signature gambar secara langsung di Container Registry.
Batasan
| Batasan | Detail |
|---|---|
| Hanya gambar baru | Aturan penandatanganan hanya berlaku untuk gambar yang didorong setelah aturan dibuat. Gambar yang sudah ada di namespace tidak ditandatangani. |
Langkah selanjutnya
-
Gunakan fitur container signature — Siapkan kebijakan verifikasi signature untuk menerapkan penggunaan gambar bertanda tangan pada kluster ACK.
-
Pengantar kritis-validation-hook — Terapkan kritis-validation-hook untuk secara otomatis memblokir gambar tanpa tanda tangan agar tidak berjalan.