Si les rôles prédéfinis d'Alibaba Cloud Container Compute Service (ACS) ne répondent pas à vos exigences de contrôle d'accès, créez un Role ou un ClusterRole personnalisé. Cette approche permet par exemple d'accorder l'accès à des ressources spécifiques dans certains namespaces ou de restreindre les verbes autorisés sur une ressource personnalisée.
ACS prend uniquement en charge la liaison de ClusterRoles personnalisés aux permissions RBAC (Role-Based Access Control). La liaison de Roles personnalisés aux permissions RBAC n'est pas prise en charge.
Roles et ClusterRoles
Un Role définit des permissions limitées à un seul namespace. Un ClusterRole s'applique à l'ensemble du cluster et remplit trois fonctions :
Accorder des permissions sur des ressources namespacées dans un ou plusieurs namespaces spécifiques.
Accorder des permissions sur des ressources namespacées dans tous les namespaces.
Accorder des permissions sur des ressources au niveau du cluster (telles que les nœuds ou les volumes persistants).
Utilisez un Role pour des permissions limitées à un namespace. Pour des permissions applicables à tout le cluster, utilisez un ClusterRole.
Le Role et le ClusterRole définissent leurs permissions via des rules, qui spécifient :
| Champ | Description |
|---|---|
apiGroups |
Groupe d'API auquel appartient la ressource. Une chaîne vide ("") désigne le groupe d'API principal, comprenant les pods, services et configmaps. |
resources |
Types de ressources concernés, par exemple pods ou services. |
verbs |
Opérations autorisées, telles que get, list ou create. |
Modèles YAML
Role
Le code YAML suivant crée un Role nommé test-role qui accorde un accès complet aux pods du namespace default.
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: test-role
namespace: default
rules:
- apiGroups:
- "" # "" indicates the core API group
resources:
- pods
verbs:
- create
- delete
- deletecollection
- get
- list
- patch
- update
- watch
ClusterRole
Le code YAML ci-dessous crée un ClusterRole nommé test-clusterrole accordant un accès complet aux pods dans tous les namespaces.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: test-clusterrole
rules:
- apiGroups:
- "" # "" indicates the core API group
resources:
- pods
verbs:
- create
- delete
- deletecollection
- get
- list
- patch
- update
- watch
Pour plus d'informations, consultez la section Roles et ClusterRoles de la documentation Kubernetes.
Créer un ClusterRole personnalisé
La procédure suivante décrit la création d'un ClusterRole personnalisé pour un utilisateur RAM (Resource Access Management) ou un rôle RAM via la console ACS. Pour créer un Role personnalisé, sélectionnez plutôt l'onglet Role à l'étape 3.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Un cluster ACS
Les permissions nécessaires pour gérer les ressources RBAC dans le cluster
Étapes
Connectez-vous à la console ACS. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom du cluster. Dans le volet de navigation de gauche, choisissez Security > Role.
Sur la page Role, cliquez sur l'onglet Cluster Role, puis sur Create.
Dans le panneau Create YAML, saisissez le code YAML du ClusterRole et cliquez sur OK. Le modèle YAML de cet exemple définit des permissions applicables à l'ensemble du cluster. Une fois créé, le ClusterRole apparaît sous le nom
test-clusterroledans l'onglet Cluster Role.
Étapes suivantes
Pour accorder des accès aux utilisateurs RAM ou aux rôles RAM à l'aide du ClusterRole créé, reportez-vous à la rubrique Accorder des permissions RBAC aux utilisateurs RAM ou aux rôles RAM.