Gérer les accès pour les utilisateurs OKS
OKS vous permet de gérer les accès à vos clusters Kubernetes. Vous pouvez accorder des droits d’accès par utilisateur, des accès temporaires, et accès à des traces de log spécifiques.
Configurer des accès en fonction des utilisateurs
Vous pouvez générer des fichiers kubeconfig spécifiques pour votre cluster Kubernetes.
Cela vous permet de gérer les accès d’un cluster pour chaque utilisateur, et de suivre leurs actions dans les logs d’accès du cluster. La valeur par défaut de ce paramètre est kube-user
.
$ oks-cli cluster kubeconfig \
--project-name NAME_OF_PROJECT \
--cluster-name NAME_OF_CLUSTER \
--user user2 \
--print-path
Cette commande contient les options suivantes que vous devez spécifier :
-
cluster-name
: Le nom du cluster, d’une longueur maximale de 40 caractères alphanumériques et tirets (-). Ce nom ne doit pas commencer ou finir par un tiret, et il doit être unique dans le projet. -
(optionnel)
project-name
: Le nom du projet dans lequel le cluster a été créé. -
user
: Le nom de l’utilisateur.
Pour accorder des droits au nouvel utilisateur, vous devez lui appliquer le contrôle d’accès basé sur les rôles (RBAC) correspondant à son nom d’utilisateur, ou lui appliquer un des groupes existants. Pour en savoir plus sur le RBAC, voir la documentation Kubernetes (anglais uniquement).
Gérer les droits pour les groupes
Au sein d’un projet, vous pouvez gérer les droits pour différentes équipes ou différents rôles en assignant les groupes qui utilisent le RBAC aux fichiers kubeconfigs qui ont été générés.
Le groupe par défaut est cluster-admin
. Il possède tous les droits sur le cluster, à l’exception d’actions qui sont considérées comme dangereuses.
Les noms de groupe commençant par |
$ oks-cli cluster kubeconfig \
--project-name NAME_OF_PROJECT \
--cluster-name NAME_OF_CLUSTER \
--group "devops" \
--print-path
Cette commande contient les options suivantes que vous devez spécifier :
-
cluster-name
: Le nom du cluster, d’une longueur maximale de 40 caractères alphanumériques et tirets (-). Ce nom ne doit pas commencer ou finir par un tiret, et il doit être unique dans le projet. -
(optionnel)
project-name
: Le nom du projet dans lequel le cluster a été créé. -
group
: Le nom du groupe.
Après avoir obtenu votre fichier kubeconfig admin, vous pouvez appliquer les définitions RBAC requises, et générer des droits d’accès limités.
Donner accès à un seul namespace
-
Pour accorder des droits d’accès à un namespace, vous devez remplacer la valeur suivante dans les paramètres RBAC du fichier YAML :
-
namespace-admin
: Le nom du groupe auquel vous voulez accorder des droits. -
target-namespace
: Le namespace auquel vous voulez donner accès.--- # Service Account apiVersion: v1 kind: ServiceAccount metadata: name: namespace-admin namespace: target-namespace --- # Role definition with full permissions in the namespace apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: namespace-admin-role namespace: target-namespace rules: - apiGroups: ["*"] resources: ["*"] verbs: ["*"] --- # RoleBinding to bind the Role to the ServiceAccount apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: namespace-admin-binding namespace: target-namespace subjects: - kind: Group name: namespace-admin namespace: target-namespace roleRef: kind: Role name: namespace-admin-role apiGroup: rbac.authorization.k8s.io
-
-
Appliquez le manifeste, puis rafraîchissez le fichier kubeconfig correspondant :
Exemple de requête$ oks-cli cluster kubeconfig \ --project-name NAME_OF_PROJECT \ --cluster-name NAME_OF_CLUSTER \ --group "namespace-admin" \ --print-path \ --refresh
Donner accès en lecture seule
-
Pour donner accès en lecture seule à un cluster, vous devez remplacer la valeur suivante dans les paramètres RBAC du fichier YAML :
readonly-users
: Le nom du groupe auquel vous voulez accorder des droits.apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: readonly labels: app.kubernetes.io/name: readonly app.kubernetes.io/part-of: rbac-system rules: - apiGroups: ["*"] resources: ["*"] verbs: ["get", "list", "watch"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: readonly-binding labels: app.kubernetes.io/name: readonly-binding app.kubernetes.io/part-of: rbac-system subjects: - kind: Group name: readonly-users apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: readonly apiGroup: rbac.authorization.k8s.io --- # Optional: ServiceAccount for programmatic access apiVersion: v1 kind: ServiceAccount metadata: name: readonly-service-account namespace: default labels: app.kubernetes.io/name: readonly-service-account app.kubernetes.io/part-of: rbac-system --- # Optional: RoleBinding for ServiceAccount apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: readonly-sa-binding labels: app.kubernetes.io/name: readonly-sa-binding app.kubernetes.io/part-of: rbac-system subjects: - kind: ServiceAccount name: readonly-service-account namespace: default roleRef: kind: ClusterRole name: readonly apiGroup: rbac.authorization.k8s.io
-
Appliquez le manifeste, puis générez le fichier kubeconfig correspondant :
Exemple de requête$ oks-cli cluster kubeconfig \ --project-name NAME_OF_PROJECT \ --cluster-name NAME_OF_CLUSTER \ --group "readonly-users" \ --refresh
Pages connexes