Créez des utilisateurs locaux ou des utilisateurs RAM et configurez le contrôle d'accès RBAC Argo CD pour gérer les autorisations au niveau des applications.
Types d'utilisateurs
ACK One GitOps prend en charge la collaboration multi-utilisateurs. Les administrateurs peuvent créer ou supprimer des utilisateurs et configurer, pour chaque utilisateur, les autorisations RBAC Argo CD ainsi que les autorisations Application Argo CD. Deux types d'utilisateurs sont pris en charge :
| Type d'utilisateur | Description | Idéal pour |
|---|---|---|
| Utilisateur local | Créé dans Argo CD. Prend en charge la connexion via l'interface utilisateur et la génération de clés API. | Petites équipes ou pipelines CI/CD automatisés ne nécessitant pas de SSO, d'historique de connexion ou d'accès basé sur des groupes |
| Utilisateur RAM ou rôle RAM | Identité Alibaba Cloud. Les utilisateurs RAM se connectent via le SSO, sans informations d'identification distinctes. | Équipes utilisant RAM pour la gestion des identités, ou nécessitant un accès basé sur des groupes, un historique de connexion ou des autorisations granulaires |
Créer un utilisateur local
Prérequis
Assurez-vous que les conditions suivantes sont remplies :
kubectl est connecté à l'instance Fleet avec le fichier kubeconfig issu de la console ACK One.
GitOps est activé pour l'instance Fleet.
Le mot de passe administrateur Argo CD. Consultez la section Accéder à Argo CD à l'aide de l'CLI Argo CD.
Ajouter un utilisateur local
-
Modifiez le ConfigMap
argocd-cm.kubectl edit cm argocd-cm -n argocd -
Ajoutez l'utilisateur local sous le champ
data. Cet exemple ajoute un utilisateur nommélocaluser1.data: accounts.localuser1: login,apiKey # Grants UI login and API key generation accounts.localuser1.enabled: "true" # Enables the userChaque compte prend en charge deux fonctionnalités :
login— se connecter à l'interface utilisateur et à l'CLI Argo CDapiKey— générer des jetons d'authentification pour l'accès API
-
Vérifiez que l'utilisateur a bien été créé.
argocd account listRésultat attendu :
NAME ENABLED CAPABILITIES admin true login localuser1 true login,apiKey -
Définissez un mot de passe et générez un jeton.
# 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......
Configurer les autorisations RBAC Argo CD
Le contrôle d'accès RBAC Argo CD gère l'accès des utilisateurs et des groupes aux ressources. Les politiques sont définies dans le ConfigMap argocd-rbac-cm.
Rôles prédéfinis
Pour accorder des autorisations, attribuez d'abord les permissions à un rôle, puis associez un groupe SSO ou un utilisateur local à ce rôle. Les rôles personnalisés sont pris en charge et les rôles intégrés suivants sont disponibles :
| Rôle | Autorisations |
|---|---|
role:readonly |
Accès en lecture seule (get) à toutes les ressources Argo CD |
role:admin |
Accès complet à toutes les ressources Argo CD |
Les rôles personnalisés avec des autorisations granulaires sont également pris en charge.
Syntaxe des politiques
Toutes les politiques sont définies dans le champ .data.policy.csv du ConfigMap argocd-rbac-cm.
Attribuer une autorisation (règle p) :
p, <role/user/group>, <resource>, <action>, <object>
Pour les ressources au sein d'un projet :
p, <role/user/group>, <resource>, <action>, <appproject>/<object>
Où :
<role/user/group>— nom de rôle, nom d'utilisateur local ou groupe/UID SSO<resource>— type de ressource Argo CD<action>— opération à autoriser<object>— instance de ressource spécifique, ou*pour toutes les instances
Associer un utilisateur ou un groupe à un rôle (règle g) :
g, <user/group>, <role>
Ressources et actions prises en charge
Argo CD prend en charge les ressources suivantes : clusters, projects, applications, applicationsets, repositories, certificates, accounts, gpgkeys, logs, exec et extensions.
Les actions suivantes sont prises en charge : get, create, update, delete, sync, override et action/<api-group>/<Kind>/<action-name>.
Les actionssync,overrideetaction/<api-group>/<Kind>/<action-name>sont valides uniquement pour la ressourceapplications.
Accorder des autorisations à un utilisateur local
-
Modifiez le ConfigMap
argocd-rbac-cm.kubectl edit cm argocd-rbac-cm -n argocd -
Ajoutez une règle
gpour mapper l'utilisateur local à un rôle. Cet exemple mappelocaluser1àrole:admin.Mappez
localuser1àrole:adminpour un accès complet à toutes les ressources Argo CD.Mappez
localuser1au rôle personnaliséproject-admin(commenté) pour un accès limité au projet.
ImportantNe modifiez pas les autres configurations existantes dans le ConfigMap.
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.Cet exemple couvre deux scénarios :
Accorder des autorisations aux utilisateurs RAM ou aux rôles RAM
ACK One GitOps intègre par défaut l'interface utilisateur Argo CD et l'CLI Argo CD avec l'authentification SSO RAM d'Alibaba Cloud. Une fois connecté à la console Alibaba Cloud, vous pouvez accéder à l'interface utilisateur Argo CD ou à l'CLI Argo CD via le SSO sans ressaisir vos informations d'identification. Les administrateurs d'instance Fleet reçoivent automatiquement les autorisations d'administrateur Argo CD. L'administrateur du fleet doit accorder des autorisations aux utilisateurs RAM ordinaires.
Pour un utilisateur RAM ordinaire, accordez à la fois :
Les autorisations RBAC Argo CD dans
argocd-rbac-cmLes autorisations au niveau de l'application via les projets Argo CD
Accorder des autorisations RBAC Argo CD
-
Modifiez le ConfigMap
argocd-rbac-cm.kubectl edit cm argocd-rbac-cm -n argocd -
Ajoutez une règle
gpour mapper l'UID de l'utilisateur RAM à un rôle. Cet exemple accorde le rôlerole:adminà l'utilisateur27***02.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.
Accorder des autorisations d'application Argo CD
Chaque application appartient à un projet. Utilisez les projets pour attribuer des autorisations d'application à différents utilisateurs ou rôles RAM.
Les projets prennent en charge ces contrôles d'accès :
Limite de référentiel Git — restreint les référentiels Git autorisés pour le déploiement
Limite de cluster et d'espace de noms — restreint les clusters cibles et les espaces de noms pour le déploiement
Limite de type d'objet — restreint les types de ressources Kubernetes déployables (par exemple, RBAC, CRD, DaemonSets et NetworkPolicies)
RBAC au niveau de l'application — accorde des autorisations par application aux utilisateurs ou rôles RAM en liant les rôles de projet aux groupes OpenID Connect (OIDC) et aux jetons Web JSON (JWT)
Pour accorder des autorisations d'application à un utilisateur RAM :
Connectez-vous à la console RAM à l'aide du compte racine RAM ou d'un compte administrateur d'autorisations. Cliquez sur Users ou Roles, ouvrez l'utilisateur ou le rôle cible et copiez l'UID ou l'ID de rôle.
Connectez-vous à la console ACK One. Choisissez Fleet > Multi-cluster GitOps, puis cliquez sur GitOps Console.
Accédez à Settings > Projects. Cliquez sur + NEW PROJECT ou ouvrez un projet existant.
-
Cliquez sur + ADD ROLE, configurez les éléments suivants et cliquez sur CREATE.
GENERAL — paramètres de base du rôle
POLICY RULES — configurez les autorisations de l'application
GROUPS — saisissez l'UID ou l'ID de rôle copié à l'étape 1, puis cliquez sur ADD GROUP
Cet exemple crée un rôle roletest qui accorde à l'utilisateur 27***02 un accès en lecture seule (get) à toutes les applications du projet test. Après avoir créé le rôle, cliquez sur LOG IN VIA ALIYUN SSO pour vous connecter et vérifier les autorisations.
