Yerel veya RAM kullanıcıları oluşturun ve uygulama düzeyinde erişim kontrolü için Argo CD RBAC yapılandırın.
Kullanıcı türleri
ACK One GitOps, çok kullanıcılı ekip iş birliğini destekler. Yöneticiler kullanıcı oluşturabilir veya silebilir; kullanıcı başına Argo CD RBAC izinlerini ve Argo CD Uygulama izinlerini yapılandırabilir. Aşağıdaki iki kullanıcı türü desteklenir:
| Kullanıcı türü | Açıklama | En uygun olduğu durum |
|---|---|---|
| Yerel kullanıcı | Argo CD'de oluşturulur. Kullanıcı arayüzü oturum açmayı ve API anahtarı oluşturmayı destekler. | Tek oturum açma (SSO), oturum açma geçmişi veya grup tabanlı erişime ihtiyaç duymayan küçük ekipler veya otomatik CI/CD işlem hatları |
| RAM kullanıcısı veya RAM rolü | Alibaba Cloud kimliği. RAM kullanıcıları SSO üzerinden oturum açar; ayrı kimlik bilgisi gerekmez. | Kimlik yönetimi için RAM kullanan ekipler veya grup tabanlı erişim, oturum açma geçmişi ya da ayrıntılı izinler gerektiren ekipler |
Yerel kullanıcı oluşturma
Ön koşullar
Aşağıdakilerin sağlandığından emin olun:
kubectl, ACK One konsolu üzerindeki kubeconfig dosyası kullanılarak Fleet örneğine bağlıdır.
Fleet örneği için GitOps etkinleştirilmiştir.
Argo CD yönetici parolası. Bkz. Argo CD CLI kullanarak Argo CD'ye erişme.
Yerel kullanıcı ekleme
-
argocd-cmConfigMap dosyasını düzenleyin.kubectl edit cm argocd-cm -n argocd -
dataalanı altına yerel kullanıcıyı ekleyin. Bu örnektelocaluser1adlı bir kullanıcı eklenmektedir.data: accounts.localuser1: login,apiKey # Grants UI login and API key generation accounts.localuser1.enabled: "true" # Enables the userHer hesap iki özelliği destekler:
login— Argo CD kullanıcı arayüzüne ve CLI'a oturum açmaapiKey— API erişimi için kimlik doğrulama belirteçleri oluşturma
-
Kullanıcının oluşturulduğunu doğrulayın.
argocd account listBeklenen çıktı:
NAME ENABLED CAPABILITIES admin true login localuser1 true login,apiKey -
Parola ayarlayın ve bir belirteç oluşturun.
# Set a password argocd account update-password \ --account localuser1 \ --current-password <admin-password> \ --new-password <localuser1-password> # Generate an API key token argocd account generate-token --account localuser1 eyJhb......
Argo CD RBAC izinlerini yapılandırma
Argo CD RBAC, kullanıcıların ve grupların kaynaklara erişimini kontrol eder. İlkeler, argocd-rbac-cm ConfigMap dosyasında tanımlanır.
Önceden tanımlanmış roller
İzin vermek için önce bir role izin atayın, ardından bir SSO grubunu veya yerel kullanıcıyı bu role eşleyin. Özel roller desteklenir ve aşağıdaki yerleşik roller kullanılabilir:
| Rol | İzinler |
|---|---|
role:readonly |
Tüm Argo CD kaynakları için salt okunur (get) erişim |
role:admin |
Tüm Argo CD kaynakları için tam erişim |
Ayrıntılı izinlere sahip özel roller desteklenir.
İlke sözdizimi
Tüm ilkeler, argocd-rbac-cm içindeki .data.policy.csv alanında tanımlanır.
Bir izin atama (p kuralı):
p, <role/user/group>, <resource>, <action>, <object>
Bir proje içindeki kaynaklar için:
p, <role/user/group>, <resource>, <action>, <appproject>/<object>
Burada:
<rol/kullanıcı/grup>— bir rol adı, yerel kullanıcı adı veya SSO grubu/KIMLIK NO'su<kaynak>— Argo CD kaynak türü<eylem>— izin verilecek işlem<nesne>— belirli kaynak örneği veya tümü için*
Bir kullanıcıyı veya grubu bir role eşleme (g kuralı):
g, <user/group>, <role>
Desteklenen kaynaklar ve eylemler
Argo CD aşağıdaki kaynakları destekler: clusters, projects, applications, applicationsets, repositories, certificates, accounts, gpgkeys, logs, exec ve extensions.
Aşağıdaki eylemler desteklenir: get, create, update, delete, sync, override ve action/<api-group>/<Kind>/<action-name>.
sync,overrideveaction/<api-group>/<Kind>/<action-name>yalnızcaapplicationskaynağı için geçerlidir.
Yerel kullanıcıya izin verme
-
argocd-rbac-cmConfigMap dosyasını düzenleyin.kubectl edit cm argocd-rbac-cm -n argocd -
Yerel kullanıcıyı bir role eşlemek için bir
gkuralı ekleyin. Bu örnektelocaluser1kullanıcısırole:adminrolüne eşlenir.Tüm Argo CD kaynaklarına tam erişim sağlamak için
localuser1kullanıcısınırole:adminrolüne eşleyin.Proje kapsamındaki erişim için
localuser1kullanıcısını özel rolproject-adminile eşleyin (yorum satırı olarak bırakılmıştır).
ÖnemliConfigMap içindeki diğer mevcut yapılandırmaları değiştirmeyin.
data: policy.csv: | ## p, role:project-admin, applications, *, */*, allow ## p, role:project-admin, projects, *, *, allow g, "14***01", role:admin # Keep the current setting. g, localuser1, role:admin # Map localuser1 to role:admin. ## g, localuser1, role:project-admin # Alternative: map to a custom role. scopes: '[uid]' # Keep the current setting.Bu örnek iki senaryoyu destekler:
RAM kullanıcılarına veya RAM rollerine izin verme
ACK One GitOps, Argo CD kullanıcı arayüzünü ve Argo CD CLI'ı varsayılan olarak Alibaba Cloud RAM SSO kimlik doğrulamasıyla entegre eder. Alibaba Cloud konsolunda oturum açtıktan sonra, kimlik bilgilerini yeniden girmeden SSO aracılığıyla Argo CD kullanıcı arayüzüne veya Argo CD CLI'a erişebilirsiniz. Fleet örneği yöneticileri otomatik olarak Argo CD yönetici izinlerini alır. Normal RAM kullanıcılarının izin alması için fleet yöneticisinin izin vermesi gerekir.
Normal bir RAM kullanıcısı için hem aşağıdakileri verin:
argocd-rbac-cmiçinde Argo CD RBAC izinleriArgo CD projeleri aracılığıyla uygulama düzeyinde izinler
Argo CD RBAC izinleri verme
-
argocd-rbac-cmConfigMap dosyasını düzenleyin.kubectl edit cm argocd-rbac-cm -n argocd -
RAM kullanıcısının KIMLIK NO'sunu bir role eşlemek için bir
gkuralı ekleyin. Bu örnekte27***02kullanıcısınarole:adminrolü verilir.data: policy.csv: | ## p, role:project-admin, applications, *, */*, allow ## p, role:project-admin, projects, *, *, allow g, "14***01", role:admin # Keep the current setting. g, "27***02", role:admin # Grant role:admin to RAM user 27***02. ## g, "27***02", role:project-admin # Alternative: map to a custom role. scopes: '[uid]' # Keep the current setting.
Argo CD uygulama izinleri verme
Her uygulama bir projeye aittir. Farklı RAM kullanıcılarına veya rollerine uygulama izinleri atamak için projeleri kullanın.
Projeler şu erişim kontrollerini destekler:
Git deposu sınırı — dağıtım için izin verilen Git depolarını kısıtlar
Küme ve ad alanı sınırı — dağıtım için hedef kümeleri ve ad alanlarını kısıtlar
Nesne türü sınırı — dağıtılabilen Kubernetes kaynak türlerini kısıtlar (örneğin, RBAC, CRD'ler, DaemonSet'ler ve NetworkPolicy'ler)
Uygulama düzeyinde RBAC — proje rollerini OpenID Connect (OIDC) gruplarına ve JSON Web Belirteçlerine (JWT) bağlayarak RAM kullanıcılarına veya rollerine uygulama başına izinler verir
Bir RAM kullanıcısına uygulama izni vermek için:
RAM root hesabını veya bir izin yöneticisi hesabını kullanarak RAM konsolunda oturum açın. Users veya Roles seçeneğini tıklayın, hedef kullanıcıyı veya rolü açın ve UID veya Role ID değerini kopyalayın.
ACK One konsolunda oturum açın. Fleet > Multi-cluster GitOps seçeneğini seçin, ardından GitOps Console seçeneğini tıklayın.
Settings > Projects bölümüne gidin. + NEW PROJECT seçeneğini tıklayın veya mevcut bir projeyi açın.
-
+ ADD ROLE seçeneğini tıklayın, aşağıdakileri yapılandırın ve CREATE seçeneğini tıklayın.
GENERAL — temel rol ayarları
POLICY RULES — uygulama izinlerini yapılandırın
GROUPS — 1. adımda kopyalanan UID veya Role ID değerini girin, ardından ADD GROUP seçeneğini tıklayın
Bu örnekte, test projesindeki tüm uygulamalara salt okunur (get) erişimi veren roletest adlı bir rol oluşturulur ve 27***02 kullanıcısına atanır. Rolü oluşturduktan sonra, oturum açıp izinleri doğrulamak için LOG IN VIA ALIYUN SSO seçeneğini tıklayın.
