ACK One GitOps mendukung kolaborasi multi-pengguna. Sebagai administrator, Anda dapat membuat pengguna, menetapkan izin Role-Based Access Control (RBAC) Argo CD, serta mengelola akses tingkat aplikasi melalui proyek Argo CD.
Jenis pengguna
ACK One GitOps mendukung dua jenis pengguna:
| Jenis pengguna | Deskripsi | Paling cocok untuk |
|---|---|---|
| Local user | Dibuat langsung di Argo CD. Mendukung login UI dan pembuatan API key untuk otomatisasi. | Tim kecil atau pipeline CI/CD terotomatisasi yang tidak memerlukan SSO, riwayat login, atau akses berbasis kelompok |
| RAM user atau RAM role | Identitas Alibaba Cloud. ACK One GitOps mendukung single sign-on (SSO) secara default, sehingga RAM user dapat login ke UI Argo CD atau CLI Argo CD tanpa memasukkan username dan password terpisah. | Tim yang sudah menggunakan RAM untuk manajemen identitas, atau saat Anda memerlukan akses berbasis kelompok, riwayat login, atau kontrol izin detail halus |
Buat local user
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
-
File kubeconfig dari instans Fleet, dengan kubectl yang terhubung ke instans Fleet tersebut. Dapatkan file tersebut dari Konsol ACK One.
-
GitOps diaktifkan untuk instans Fleet ACK One Anda. Lihat Aktifkan GitOps untuk instans Fleet.
-
Kata sandi administrator Argo CD untuk login ke CLI Argo CD. Lihat Akses Argo CD menggunakan CLI Argo CD.
Tambahkan pengguna lokal
-
Edit ConfigMap
argocd-cm.kubectl edit cm argocd-cm -n argocd -
Tambahkan local user di bawah bidang
data. Contoh berikut menambahkan pengguna bernamalocaluser1.data: accounts.localuser1: login,apiKey # Memberikan akses login UI dan pembuatan API key accounts.localuser1.enabled: "true" # Mengaktifkan penggunaSetiap akun mendukung dua kemampuan:
-
login— memungkinkan pengguna login ke UI Argo CD dan CLI Argo CD -
apiKey— memungkinkan pengguna menghasilkan token autentikasi untuk akses API
-
-
Verifikasi bahwa pengguna telah dibuat.
argocd account listOutput yang diharapkan:
NAME ENABLED CAPABILITIES admin true login localuser1 true login,apiKey -
Tetapkan kata sandi dan hasilkan token untuk pengguna tersebut.
# Tetapkan kata sandi argocd account update-password \ --account localuser1 \ --current-password <admin-password> \ --new-password <localuser1-password> # Hasilkan token API key argocd account generate-token --account localuser1 eyJhb......
Konfigurasikan izin RBAC Argo CD
RBAC Argo CD memungkinkan Anda mengontrol pengguna dan kelompok mana yang dapat mengakses resource tertentu. Konfigurasi disimpan dalam ConfigMap argocd-rbac-cm dan mengikuti sintaks berbasis kebijakan.
Peran bawaan
Argo CD menyertakan dua peran bawaan:
| Peran | Izin |
|---|---|
role:readonly |
Akses read-only (get) ke semua resource Argo CD |
role:admin |
Akses penuh ke semua resource Argo CD |
Peran kustom dengan izin detail halus juga didukung.
Sintaks kebijakan
Semua kebijakan didefinisikan dalam bidang .data.policy.csv dari argocd-rbac-cm.
Tetapkan izin (`p` rule):
p, <role/user/group>, <resource>, <action>, <object>
Untuk resource dalam proyek:
p, <role/user/group>, <resource>, <action>, <appproject>/<object>
Di mana:
-
<role/user/group>— entitas yang menerima izin (nama peran, username lokal, atau kelompok/UID SSO) -
<resource>— tipe resource Argo CD -
<action>— operasi yang diizinkan -
<object>— instance resource spesifik, atau*untuk semua
Petakan pengguna atau kelompok ke peran (`g` rule):
g, <user/group>, <role>
Resource dan aksi yang didukung
Argo CD mendukung resource berikut: clusters, projects, applications, applicationsets, repositories, certificates, accounts, gpgkeys, logs, exec, dan extensions.
Aksi berikut didukung: get, create, update, delete, sync, override, dan action/<api-group>/<Kind>/<action-name>.
sync,override, danaction/<api-group>/<Kind>/<action-name>hanya berlaku untuk resourceapplications.
Berikan izin kepada local user
-
Edit ConfigMap
argocd-rbac-cm.kubectl edit cm argocd-rbac-cm -n argocd -
Tambahkan aturan
guntuk memetakan local user ke suatu peran. Contoh berikut memetakanlocaluser1ke peran bawaanrole:admin.-
Petakan
localuser1kerole:adminuntuk akses penuh ke semua resource Argo CD. -
Petakan
localuser1ke peran kustomproject-admin(dikomentari) untuk akses yang dibatasi pada proyek dan aplikasi tertentu.
PentingJangan mengubah konfigurasi lain yang sudah ada dalam ConfigMap.
data: policy.csv: | ## p, role:project-admin, applications, *, */*, allow ## p, role:project-admin, projects, *, *, allow g, "14***01", role:admin # Pertahankan pengaturan saat ini. g, localuser1, role:admin # Petakan localuser1 ke role:admin. ## g, localuser1, role:project-admin # Alternatif: petakan ke peran kustom. scopes: '[uid]' # Pertahankan pengaturan saat ini.Contoh ini mendukung dua skenario:
-
Berikan izin kepada RAM user atau RAM role
Secara default, RAM user yang merupakan administrator instans Fleet secara otomatis menerima izin admin Argo CD melalui SSO. RAM user biasa memerlukan pemberian izin eksplisit.
Untuk RAM user biasa, berikan keduanya:
-
Izin RBAC Argo CD dalam
argocd-rbac-cm -
Izin tingkat aplikasi melalui proyek Argo CD
Berikan izin RBAC Argo CD
-
Edit ConfigMap
argocd-rbac-cm.kubectl edit cm argocd-rbac-cm -n argocd -
Tambahkan aturan
guntuk memetakan UID RAM user ke suatu peran. Contoh berikut memberikan izinrole:adminkepada RAM user27***02.data: policy.csv: | ## p, role:project-admin, applications, *, */*, allow ## p, role:project-admin, projects, *, *, allow g, "14***01", role:admin # Pertahankan pengaturan saat ini. g, "27***02", role:admin # Berikan role:admin kepada RAM user 27***02. ## g, "27***02", role:project-admin # Alternatif: petakan ke peran kustom. scopes: '[uid]' # Pertahankan pengaturan saat ini.
Berikan izin aplikasi Argo CD
Setiap aplikasi Argo CD termasuk dalam suatu proyek. Gunakan proyek Argo CD untuk memberikan izin aplikasi berbeda kepada RAM user atau RAM role yang berbeda.
Proyek Argo CD mendukung kontrol akses berikut:
-
Batas repositori Git — mengontrol repositori Git mana yang dapat digunakan untuk men-deploy aplikasi
-
Batas kluster dan namespace — menentukan kluster dan namespace tempat aplikasi dapat di-deploy
-
Batas tipe objek — membatasi tipe resource Kubernetes yang dapat di-deploy (misalnya, RBAC, Custom Resource Definitions (CRDs), DaemonSets, dan NetworkPolicies)
-
RBAC tingkat aplikasi — memberikan izin per-aplikasi kepada RAM user atau RAM role tertentu dengan mengikat peran proyek ke kelompok OpenID Connect (OIDC) dan Token Web JSON (JWT)
Untuk memberikan izin aplikasi kepada RAM user:
-
Login ke Konsol RAM menggunakan Akun Alibaba Cloud atau akun administrator Anda. Di panel navigasi kiri, klik Users atau Roles. Di halaman detail pengguna atau peran tersebut, salin UID atau Role ID.
-
Masuk ke Konsol ACK One. Di panel navigasi kiri, pilih Fleet > Multi-cluster GitOps, lalu klik GitOps Console untuk membuka UI Argo CD.
-
Di panel navigasi kiri konsol Argo CD, buka Settings > Projects. Klik + NEW PROJECT untuk membuat proyek, atau buka proyek yang sudah ada.
-
Klik + ADD ROLE, isi bidang-bidang berikut, lalu klik CREATE.
-
GENERAL — konfigurasikan informasi dasar peran
-
POLICY RULES — konfigurasikan izin aplikasi
-
GROUPS — masukkan UID atau Role ID yang disalin pada langkah 1, lalu klik ADD GROUP
-
Contoh berikut menunjukkan peran bernama roletest yang memberikan akses read-only (get) kepada RAM user 27***02 untuk semua aplikasi dalam proyek test. Setelah peran dibuat, RAM user tersebut dapat mengklik LOG IN VIA ALIYUN SSO di Konsol ACK One untuk login ke UI Argo CD dan memverifikasi bahwa izin tersebut berlaku.