Container Compute Service (ACS) mendukung penarikan gambar dari Container Registry (ACR) tanpa kata sandi untuk meningkatkan efisiensi dan keamanan. Topik ini menjelaskan cara menarik gambar ACR tanpa kata sandi di kluster ACS.
Informasi latar belakang
Container Registry (ACR) menyediakan hosting aman dan distribusi efisien artefak cloud native di berbagai edisi, termasuk ACR Personal Edition dan ACR Enterprise Edition. Untuk informasi selengkapnya, lihat Pengenalan Container Registry (ACR). ACS menyediakan metode konfigurasi terpadu untuk menarik gambar ACR tanpa kata sandi di semua edisi ACR.
Dengan mengonfigurasi akses tanpa kata sandi untuk kluster ACS, ACS secara otomatis menyuntikkan informasi autentikasi untuk gambar ACR saat membuat instans. Hal ini menyederhanakan proses pembuatan instans dan mengurangi risiko eksposur kata sandi, sehingga meningkatkan keamanan.
Gambar Docker, repositori yang di-host sendiri, dan gambar non-ACR lainnya tidak mendukung penarikan tanpa kata sandi.
Prasyarat
Sebelum mengonfigurasi penarikan gambar ACR tanpa kata sandi di kluster ACS, selesaikan tugas-tugas berikut:
-
Buat kluster ACS. Untuk informasi selengkapnya, lihat Buat kluster ACS.
-
Anda telah membuat instans ACR dan mengonfigurasi repositori serta gambarnya.
-
Untuk mengonfigurasi instans ACR Personal Edition, lihat Push dan pull gambar menggunakan instans Personal Edition.
-
Untuk mengonfigurasi instans ACR Enterprise Edition, lihat Push dan pull gambar menggunakan instans Enterprise Edition.
-
-
Jika Anda menggunakan instans ACR Enterprise Edition, konfigurasikan metode aksesnya.
Instans ACR Enterprise Edition yang baru dibuat secara default dalam keadaan terputus. Anda harus mengonfigurasi kebijakan ACL yang sesuai sebelum mengakses instans melalui Internet atau virtual private cloud (VPC).
-
Akses Internet: Setelah mengaktifkan akses jaringan publik, Anda dapat langsung mengakses gambar instans ACR Enterprise Edition menggunakan nama domain publik (lintas domain didukung). Untuk informasi selengkapnya, lihat Konfigurasi kontrol akses jaringan publik.
-
Akses VPC: Untuk mengakses instans ACR Enterprise Edition melalui VPC, aktifkan otorisasi yang diperlukan. Untuk informasi selengkapnya, lihat Konfigurasi kontrol akses VPC.
-
Cara kerja
Komponen tanpa kata sandi menarik gambar privat dengan membaca konfigurasi konsol Anda. Setelah Anda mengonfigurasi komponen tersebut, komponen secara otomatis membuat Secret di kluster dan mengaitkannya dengan ServiceAccount yang ditentukan dalam konfigurasi. Pod apa pun yang menggunakan ServiceAccount ini secara otomatis menggunakan Secret yang dihasilkan oleh komponen tanpa kata sandi untuk menarik gambar, sehingga mencapai penarikan gambar tanpa kata sandi.
Instal dan konfigurasi komponen tanpa password
-
Masuk ke Konsol ACS. Di panel navigasi kiri, klik Clusters.
-
Di halaman Clusters, klik nama kluster target. Di panel navigasi kiri, klik Add-ons.
-
Di halaman Add-ons, pilih tab Security. Temukan aliyun-acr-credential-helper dan klik Install.
-
Di kotak dialog Parameters, klik Add di samping AcrInstanceInfo untuk menambahkan beberapa entri instans ACR. Gunakan contoh konfigurasi berikut, lalu klik OK.
-
Tambahkan AcrInstanceInfo.
CatatanSkenario default dikonfigurasi sebagai berikut:
-
Untuk menyinkronkan instans ACR Personal Edition, gunakan konfigurasi default AcrInstanceInfo.
-
Untuk menyinkronkan instans ACR Enterprise Edition, masukkan instanceID dan biarkan bidang lain pada nilai default-nya.
Parameter key
Configuration Item Key Description
Value
instanceID
ACR instance ID.
Temukan instans Anda di Container Registry.
-
Enterprise Edition: Di Instance , temukan Instance ID. Nilainya adalah string yang dimulai dengan
cri-. -
Personal Edition: Biarkan bidang ini kosong untuk mengaktifkan penarikan tanpa kata sandi untuk Personal Edition.
Nilai default: kosong (mengonfigurasi instans Personal Edition di wilayah saat ini).
regionID
Region ID of the ACR instance.
Region ID tempat instans ACR Anda berada. Misalnya, region ID untuk Hangzhou adalah
cn-hangzhou.Nilai default: wilayah kluster ACS Anda. Biarkan kosong jika instans ACR berada di wilayah yang sama.
domains
Domain names used to access the ACR instance.
Nama domain untuk menarik gambar. Pisahkan beberapa domain dengan koma (,).
Nilai default: semua domain yang terkait dengan instans ACR yang ditentukan oleh instanceID (domain publik registry.*, domain VPC registry-vpc.*, domain internal registry-internal.*).
assumeRoleARN
(Opsional) ARN dari role RAM pemilik repositori gambar yang diperoleh pada langkah 4 di Konfigurasi penarikan gambar lintas akun. Biarkan kosong jika tidak menarik lintas akun.
Contoh: acs:ram::123456789012****:test-rrsa-acr
Nilai default: kosong.
expireDuration
(Opsional) Masa berlaku kredensial sementara dalam skenario lintas akun. Biarkan kosong jika tidak menarik lintas akun.
PentingNilai expireDuration harus kurang dari atau sama dengan Max Session Duration yang ditetapkan untuk role pemilik repositori gambar pada langkah 4 di Konfigurasi penarikan gambar lintas akun.
Nilai default:
3600.rrsaRoleARN
(Opsional) ARN dari role RAM kluster ACS yang diperoleh pada langkah 3 di Konfigurasi penarikan gambar lintas akun. Biarkan kosong jika tidak menarik lintas akun.
Contoh: acs:ram::987654321012****:demo-role-for-rrsa
Nilai default: kosong.
rrsaOIDCProviderRoleARN
(Opsional) ARN dari provider OIDC RRSA kluster ACS yang diperoleh pada langkah 2 di Konfigurasi penarikan gambar lintas akun. Biarkan kosong jika tidak menarik lintas akun.
Contoh: acs:ram::987654321012**:oidc-provider/ack-rrsa-abcd1234**
Nilai default: kosong.
-
-
Konfigurasikan parameter lainnya.
Parameter key
Configuration Item Key Description
Configuration Item Value
Enable RRSA
Pilih opsi ini untuk mengaktifkan RRSA (konfigurasi terkait RRSA harus diselesaikan terlebih dahulu).
Secara default tidak dipilih. Setelah mengonfigurasi parameter RRSA dan memilih opsi ini, Anda dapat pull images across accounts.
watchNamespace
Namespace tempat fitur pull image tanpa kata sandi diaktifkan.
Nilai default-nya adalah
default. Jika nilainya diatur ke all, artinya semua Namespace harus mendukung pull image tanpa kata sandi. Untuk mengonfigurasi multiple Namespace, pisahkan dengan koma (,).CatatanDisarankan hanya menentukan namespace aplikasi Anda. Hindari mengatur nilai ini ke all atau namespace komponen sistem untuk mencegah kegagalan dalam menarik gambar komponen sistem.
serviceAccount
Terapkan komponen tanpa kata sandi ke akun layanan yang ditentukan.
Nilai default:
default.CatatanUntuk menentukan beberapa ServiceAccount, pisahkan dengan koma (,). Gunakan * untuk menerapkan ke semua ServiceAccount dalam namespace yang ditentukan.
expiringThreshold
Ambang batas kedaluwarsa untuk kredensial yang di-cache secara lokal.
Nilai default:
15m.CatatanDisarankan menggunakan 15m, yang memperbarui kredensial 15 menit sebelum masa berlakunya habis.
notifyEmail
Label email dalam Secret yang dihasilkan oleh komponen tanpa kata sandi.
Nilai default:
xxx@aliyun.com.
-
Konfigurasi penarikan gambar lintas akun
Gunakan RRSA untuk penarikan lintas akun
RAM Roles for Service Accounts (RRSA) memungkinkan isolasi izin tingkat pod di kluster ACS. Dengan mengaktifkan RRSA untuk kluster ACS Anda dan membagikan ARN role yang diotorisasi kepada pemilik repositori gambar, komponen tanpa kata sandi dapat menarik gambar ACR lintas akun.
RRSA saat ini hanya mendukung penarikan gambar dari instans ACR Enterprise Edition (Basic, Standard, dan Pro).
-
Setelah mengaktifkan RRSA, kredensial yang dihasilkan oleh komponen tidak dapat menarik gambar privat dari Personal Edition atau menggunakan metode autentikasi lain yang dijelaskan dalam topik ini.
-
Untuk mengaktifkan RRSA untuk plug-in tanpa kata sandi, pertama aktifkan RRSA, lalu konfigurasikan parameter terkait RRSA untuk plug-in tersebut. Jika urutannya dibalik, hapus pod plug-in tanpa kata sandi setelah konfigurasi agar RRSA berlaku.
-
Aktifkan RRSA untuk kluster ACS Anda. Untuk informasi selengkapnya, lihat Aktifkan RRSA.
-
ACS secara otomatis membuat provider OIDC RRSA untuk kluster. Di konsol kluster, buka Informasi Dasar > Keamanan dan Audit > RRSA > OIDC untuk melihat Provider URL dan Provider ARN.
-
Pemilik kluster mengonfigurasi role RAM menggunakan provider OIDC dan memberikan izin asumsi role.
-
Buat role RAM menggunakan provider OIDC atau kaitkan role RAM yang sudah ada dengan provider OIDC agar komponen tanpa kata sandi dapat menggunakan role tersebut untuk mengakses OpenAPI.
Buat role RAM menggunakan provider OIDC
-
Masuk ke Konsol Resource Access Management (RAM) dengan Akun Alibaba Cloud Anda.
-
Di panel navigasi kiri, pilih . Di halaman Roles, klik Create Role.
-
Di halaman Create Role, klik Switch to Policy Editor. Atur Principal ke Identity Provider. Konfigurasikan role seperti berikut, lalu klik OK.
-
Gunakan contoh konfigurasi berikut.
configuration item
Description
IdP Type
OIDC.
Select IdP
acs-rrsa-<cluster_id>. Ganti <cluster_id> dengan ID kluster Anda.
Condition
-
oidc:iss: Pertahankan nilai default.
-
oidc:aud: Pertahankan nilai default.
-
oidc:sub: Atur operator kondisi ke StringEquals. Gunakan format system:serviceaccount:<namespace>:<serviceAccountName>.
-
<namespace>: Namespace aplikasi Anda.
-
<serviceAccountName>: Nama service account.
Untuk plug-in tanpa password, Anda harus menggunakan
system:serviceaccount:kube-system:aliyun-acr-credential-helper. -
-
-
Di kotak dialog Create Role, atur Role Name menjadi demo-role-for-rrsa. Klik OK.
Kaitkan role RAM yang sudah ada dengan provider OIDC
-
Masuk ke Konsol Resource Access Management (RAM) dengan Akun Alibaba Cloud Anda.
-
Di panel navigasi kiri, pilih . Klik nama role RAM target Anda.
-
Di tab Trust Policy, klik Edit Trust Policy. Untuk informasi selengkapnya, lihat Ubah kebijakan kepercayaan role RAM.
-
Tambahkan entri contoh berikut ke daftar
Statementdalam kebijakan kepercayaan.{ "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "oidc:aud": "sts.aliyuncs.com", "oidc:iss": "<oidc_issuer_url>", "oidc:sub": "system:serviceaccount:kube-system:aliyun-acr-credential-helper" } }, "Effect": "Allow", "Principal": { "Federated": [ "<oidc_provider_arn>" ] } }PentingGanti
<oidc_issuer_url>dan<oidc_provider_arn>dengan Provider URL dan Provider ARN yang diperoleh pada langkah 2.
-
-
Lampirkan kebijakan izin
AliyunSTSAssumeRoleAccesske role RAM agar komponen tanpa kata sandi dapat mengasumsikan role tersebut. Untuk informasi selengkapnya, lihat Kelola izin role RAM. -
Di halaman Basic Information > ARN, lihat ARN dari role RAM tersebut.
-
-
Konfigurasikan role RAM untuk pemilik repositori gambar, percayai role RAM pemilik kluster, dan berikan izin penarikan gambar.
-
Buat role RAM. Untuk informasi selengkapnya, lihat Buat role RAM dengan Akun Alibaba Cloud sebagai entitas tepercaya.
-
Percayai role RAM kluster ACS agar dapat mengasumsikan role pemilik repositori. Untuk informasi selengkapnya, lihat Ubah kebijakan kepercayaan role RAM. Gunakan contoh isi kebijakan berikut:
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "<acs_role_arn>" ] } } ], "Version": "1" }PentingGanti
<acs_role_arn>dengan ARN role RAM kluster ACS yang diperoleh pada langkah 3. -
Berikan izin penarikan gambar ke role RAM.
-
Buat kebijakan kustom dalam mode edit skrip. Isi dokumen kebijakan adalah sebagai berikut. Kami menyarankan Anda memberi nama kebijakan Name
AliyunACRBasicAccess. Untuk informasi selengkapnya, lihat Membuat kebijakan kustom.{ "Version": "1", "Statement": [ { "Action": [ "cr:GetAuthorizationToken", "cr:ListInstanceEndpoint", "cr:PullRepository" ], "Resource": "*", "Effect": "Allow" } ] } -
Berikan izin
AliyunACRBasicAccesske role RAM. Untuk informasi selengkapnya, lihat Kelola izin role RAM.
-
-
[Opsional] Atur Max Session Duration untuk role RAM. Nilai yang valid berkisar antara 3600 hingga 43200 detik. Jika Anda mengatur Max Session Duration, atur juga parameter expireDuration saat mengonfigurasi AcrInstanceInfo di langkah 5.
-
Di halaman Basic Information > ARN, lihat ARN dari role RAM tersebut.
-
-
Di konfigurasi komponen tanpa kata sandi, pilih Enable RRSA dan konfigurasikan AcrInstanceInfo.
Ubah AcrInstanceInfo sebagai berikut.
Parameter key
Description
configuration item value
Enable RRSA
Pilih untuk mengaktifkan RRSA (memerlukan penyelesaian konfigurasi terkait RRSA).
Selected
rrsaRoleARN
ARN role RAM kluster ACS yang diperoleh pada langkah 3.
<acs_role_arn>rrsaOIDCProviderRoleARN
provider ARN OIDC RRSA kluster ACS yang diperoleh pada langkah 2.
oidc_provider_arnassumeRoleARN
ARN role RAM pemilik repository gambar yang diperoleh pada langkah 4.
<acr_role_arn>expireDuration
Masa berlaku kredensial temporary yang dihasilkan oleh komponen tanpa password.
PentingNilai expireDuration harus kurang dari atau sama dengan Max Session Duration yang ditetapkan untuk role pemilik repository gambar pada langkah 4.
Default: 3600. Rentang valid: [3600, 43200]. Satuan: detik.