À propos du contrôle d'accès et de Kubernetes Engine (OKE)
Découvrez les autorisations requises pour accéder aux grappes que vous avez créées à l'aide de Kubernetes Engine (OKE).
Pour appliquer des opérations à une grappe Kubernetes, vous devez disposer des autorisations appropriées pour accéder à cette grappe.
Pour la plupart des opérations sur des grappes Kubernetes créées et gérées par le moteur Kubernetes, le service Oracle Cloud Infrastructure Identity and Access Management (IAM) fournit le contrôle d'accès. Les autorisations d'un utilisateur pour accéder aux grappes sont définies par les groupes IAM (y compris les groupes dynamiques) dont il fait partie. Les autorisations d'un groupe sont définies par les politiques. Les politiques définissent les actions que les membres d'un groupe peuvent exécuter, et dans quels compartiments. Les utilisateurs peuvent ensuite accéder aux grappes et effectuer des opérations en fonction des politiques définies pour les groupes dont ils sont membres.
GIA permet de contrôler :
- si un utilisateur peut créer ou supprimer des grappes
- si un utilisateur peut ajouter, supprimer ou modifier des groupes de noeuds
- les opérations de création, de suppression ou de consultation d'objet Kubernetes qu'un utilisateur peut effectuer sur toutes les grappes d'un compartiment ou d'une location
Voir Configuration de politiques pour la création et le déploiement de grappes.
En complément de GIA, il est possible d'utiliser les autorisations du contrôle d'accès basé sur les rôles (RBAC) de Kubernetes pour affiner le contrôle d'accès des utilisateurs sur certaines grappes au moyen des rôles et des rôles de grappe Kubernetes. Un rôle RBAC Kubernetes est un ensemble d'autorisations. Par exemple, un rôle peut inclure l'autorisation de lecture et d'affichage pour les pods. Un rôle de grappe RBAC Kubernetes est un rôle qui peut être utilisé dans toute la grappe. Une liaison de rôle RBAC Kubernetes mappe un rôle à un utilisateur ou à un groupe, accordant les autorisations de ce rôle à l'utilisateur ou au groupe pour les ressources de cet espace de noms. De même, une liaison de rôle de grappe RBAC Kubernetes mappe un rôle de grappe à un utilisateur ou à un groupe, accordant les autorisations de ce rôle de grappe à l'utilisateur ou au groupe dans l'ensemble de la grappe.
GIA et le donneur d'autorisation RBAC Kubernetes fonctionnent ensemble pour permettre aux utilisateurs autorisés par l'un et/ou l'autre d'exécuter l'opération Kubernetes demandée. Vous pouvez utiliser des OCID pour mapper les liaisons de rôle et de rôle de grappe RBAC Kubernetes aux utilisateurs et groupes IAM (y compris les groupes dynamiques).
Lorsqu'un utilisateur tente d'effectuer une opération sur une grappe (à l'exception des opérations de création de rôle et de création de rôle de grappe), le service IAM détermine d'abord si un groupe (ou un groupe dynamique) auquel l'utilisateur appartient dispose des autorisations appropriées et suffisantes. Si tel est le cas, l'opération réussit. Si l'opération requiert également des autorisations supplémentaires accordées au moyen d'un rôle ou d'un rôle de grappe RBAC Kubernetes, l'approbateur RBAC Kubernetes détermine si le rôle ou le rôle de grappe Kubernetes approprié a été octroyé à l'utilisateur ou au groupe.
Vous préférerez probablement définir vos propres rôles et rôles de grappe RBAC Kubernetes lors du déploiement d'une grappe Kubernetes afin d'exercer un contrôle plus étroit. Lorsque vous tentez de créer un rôle ou un rôle de grappe, le donneur d'autorisation RBAC Kubernetes détermine d'abord si vous disposez de privilèges Kubernetes suffisants. Pour créer un rôle ou un rôle de grappe, vous devez disposer d'un rôle (ou d'un rôle de grappe) RBAC Kubernetes existant qui possède au moins des privilèges équivalents à ceux du rôle (ou rôle de grappe) que vous tentez de créer.
Par défaut, aucun rôle (ou rôle de grappe) RBAC Kubernetes n'est affecté aux utilisateurs. Ainsi, pour que vous puissiez créer un nouveau rôle (ou rôle de grappe), il faut qu'un rôle (ou rôle de grappe) disposant des privilèges appropriés vous soit affecté. Plusieurs de ces rôles et rôles de grappe sont toujours créés par défaut, notamment le rôle cluster-admin (pour une liste complète, voir Rôles et liaisons de rôles par défaut dans la documentation sur Kubernetes). Le rôle de grappe cluster-admin octroie essentiellement les privilèges de superutilisateur. Un utilisateur doté du rôle de grappe cluster-admin peut effectuer toutes les opérations possibles sur tous les espaces de noms d'une grappe donnée.
Notez que les administrateurs de location Oracle Cloud Infrastructure disposent déjà de privilèges suffisants et qu'ils n'ont pas besoin du rôle cluster-admin.
Les instructions qui suivent supposent que :
- Vous disposez des droits d'accès nécessaires pour créer des rôles et des rôles de grappe RBAC Kubernetes, soit parce que vous appartenez au groupe d'administrateurs de la location, soit parce que vous disposez du rôle de grappe RBAC Kubernetes cluster-admin.
- L'utilisateur auquel vous voulez accorder le rôle de grappe RBAC cluster-admin n'est pas un administrateur de location OCI. S'il s'agit d'un administrateur de location OCI, il n'a pas besoin du rôle de grappe RBAC Kubernetes cluster-admin.
Procédez comme suit pour octroyer à un utilisateur qui n'est pas un administrateur de location le rôle de grappe RBAC Kubernetes cluster-admin sur une grappe déployée dans Oracle Cloud Infrastructure :
-
Si vous ne l'avez pas encore fait, suivez les étapes pour configurer le fichier de configuration kubeconfig de la grappe et (s'il y a lieu) définissez la variable d'environnement KUBECONFIG pour qu'elle pointe vers le fichier. Notez que vous devez configurer votre propre fichier kubeconfig. Vous ne pouvez pas accéder à une grappe à l'aide d'un fichier kubeconfig configuré par un autre utilisateur. Voir Configuration de l'accès aux grappes.
-
Dans une fenêtre de terminal, entrez la commande suivante pour accorder le rôle de grappe RBAC Kubernetes cluster-admin à l'utilisateur :
kubectl create clusterrolebinding <my-cluster-admin-binding> --clusterrole=cluster-admin --user=<user_OCID>
où :
<my-cluster-admin-binding>
est une chaîne de votre choix à utiliser en tant que nom de la liaison entre l'utilisateur et le rôle de grappe RBAC Kubernetes cluster-admin. Par exemple,jdoe_clst_adm
<user_OCID>
est l'OCID de l'utilisateur (obtenu à partir de la console ). Par exemple,ocid1.user.oc1..aaaaa...zutq
(abrégé pour plus de lisibilité).
Par exemple :
kubectl create clusterrolebinding jdoe_clst_adm --clusterrole=cluster-admin --user=ocid1.user.oc1..aaaaa...zutq
Suivez ces étapes pour accorder à un utilisateur non administrateur les autorisations Oracle Cloud Infrastructure et RBAC Kubernetes nécessaires pour voir les pods en cours d'exécution sur une grappe Kubernetes. Dans cet exemple, un utilisateur non administrateur dispose d'un accès explicite au cluster (plutôt qu'en tant que membre d'un groupe).
En tant qu'administrateur de location :
Les instructions suivantes supposent que vous êtes dans le groupe Administrateurs de la location et que vous disposez donc des autorisations requises pour créer des utilisateurs, des groupes et des politiques IAM.
- Créez un nouveau compte d'utilisateur IAM pour Oracle Cloud Infrastructure pour l'utilisateur non administrateur (par exemple, jdoe@acme.com). Voir Pour créer un utilisateur.
- Notez l'OCID du nouveau compte d'utilisateur IAM (par exemple,
ocid1.user.oc1..aa______tx5a
, abrégé pour plus de lisibilité). - Créez un groupe IAM pour Oracle Cloud Infrastructure (par exemple,
acme-developer-group
) et ajoutez le nouveau compte d'utilisateur IAM au groupe. Voir Pour créer un groupe. - Créez une politique Oracle Cloud Infrastructure qui accorde au nouveau groupe l'autorisation CLUSTER_USE sur les grappes, à l'aide d'un énoncé de politique tel que le suivant :
Allow group acme-developer-group to use clusters in <location>
Dans l'énoncé de politique ci-dessus, remplacez
<location>
partenancy
(si vous créez la politique dans le compartiment racine de la location) oucompartment <compartment-name>
(si vous créez la politique dans un compartiment individuel). Voir Pour créer une politique.Notez que si un groupe ne se trouve pas dans le domaine d'identité par défaut, ajoutez le préfixe
group '<identity-domain-name>'/'group-name'
au nom du groupe. Vous pouvez également spécifier un groupe à l'aide de son OCID, dans le formatgroup id <group-ocid>
.
En tant qu'administrateur du cluster :
Les instructions suivantes supposent que vous disposez des autorisations requises pour créer et gérer des grappes, ainsi que de l'accès requis pour créer des rôles et des rôles de grappe RBAC Kubernetes.
- Dans un éditeur de texte, créez le manifeste suivant (par exemple, appelé
pod-reader-user.yaml
) pour définir un rôle et une liaison de rôle RBAC Kubernetes afin d'activer le nouveau compte d'utilisateur IAM pour lister les pods dans l'espace de noms kube-system :kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: pod-reader-ks namespace: kube-system rules: - apiGroups: [""] resources: ["pods"] verbs: ["get", "watch", "list"] --- kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: pod-reader-ks-role-binding namespace: kube-system subjects: - kind: User name: <user-ocid> apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: pod-reader-ks apiGroup: rbac.authorization.k8s.io
où
name: <user-ocid>
spécifie l'OCID du nouveau compte d'utilisateur IAM que vous avez créé précédemment. Par exemple,name: ocid1.user.oc1..aa______tx5a
- Créez le rôle et la liaison de rôle en entrant :
kubectl apply -f pod-reader-user.yml
En tant qu'utilisateur non administrateur :
Les instructions suivantes supposent que vous avez créé précédemment les données d'identification du nouveau compte d'utilisateur IAM. Ainsi, vous disposez des autorisations requises pour utiliser des grappes Kubernetes dans la location ou le compartiment.
- Connectez-vous à la console à l'aide des données d'identification du nouveau compte d'utilisateur IAM.
- Configurez l'accès aux grappes en suivant les instructions sous Configuration de l'accès aux grappes.
- Répertoriez les pods dans l'espace de noms kube-system en entrant :
kubectl get pods -n kube-system
Suivez ces étapes pour accorder aux utilisateurs non administrateurs d'un groupe les autorisations Oracle Cloud Infrastructure et RBAC Kubernetes nécessaires pour voir les pods en cours d'exécution sur une grappe Kubernetes. Dans cet exemple, les utilisateurs non administrateurs ont accès au cluster en tant que membres d'un groupe IAM (vous pouvez plutôt spécifier un groupe dynamique).
En tant qu'administrateur de location :
Les instructions suivantes supposent que vous êtes dans le groupe Administrateurs de la location et que vous disposez donc des autorisations requises pour créer des utilisateurs, des groupes et des politiques IAM.
- Créez un nouveau compte d'utilisateur IAM pour Oracle Cloud Infrastructure pour un utilisateur non administrateur (par exemple, jsmith@acme.com). Voir Pour créer un utilisateur.
- Créez un groupe IAM pour Oracle Cloud Infrastructure (par exemple,
acme-developer-group
) et ajoutez le nouveau compte d'utilisateur IAM au groupe. Voir Pour créer un groupe. - Notez l'OCID du nouveau groupe IAM (par exemple,
ocid1.group.oc1..aa______m7dt
, abrégé pour plus de lisibilité). - Créez une politique Oracle Cloud Infrastructure qui accorde au nouveau groupe l'autorisation CLUSTER_USE sur les grappes, à l'aide d'un énoncé de politique tel que le suivant :
Allow group acme-developer-group to use clusters in <location>
Dans l'énoncé de politique ci-dessus, remplacez
<location>
partenancy
(si vous créez la politique dans le compartiment racine de la location) oucompartment <compartment-name>
(si vous créez la politique dans un compartiment individuel). Voir Pour créer une politique.Notez que si un groupe ne se trouve pas dans le domaine d'identité par défaut, ajoutez le préfixe
group '<identity-domain-name>'/'group-name'
au nom du groupe. Vous pouvez également spécifier un groupe à l'aide de son OCID, dans le formatgroup id <group-ocid>
.
En tant qu'administrateur du cluster :
Les instructions suivantes supposent que vous disposez des autorisations requises pour créer et gérer des grappes, ainsi que de l'accès requis pour créer des rôles et des rôles de grappe RBAC Kubernetes.
- Dans un éditeur de texte, créez le manifeste suivant (par exemple, appelé
pod-reader-group.yaml
) pour définir un rôle et une liaison de rôle RBAC Kubernetes afin de permettre aux utilisateurs du nouveau groupe IAM de lister les pods dans l'espace de noms kube-system :kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: pod-reader-ks namespace: kube-system rules: - apiGroups: [""] resources: ["pods"] verbs: ["get", "watch", "list"] --- kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: pod-reader-ks-role-binding namespace: kube-system subjects: - kind: Group name: <group-ocid> apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: pod-reader-ks apiGroup: rbac.authorization.k8s.io
où
name: <group-ocid>
spécifie l'OCID du nouveau groupe IAM que vous avez créé précédemment. Par exemple,name: ocid1.group.oc1..aa______m7dt
- Créez le rôle et la liaison de rôle en entrant :
kubectl apply -f pod-reader-group.yml
En tant qu'utilisateur non administrateur :
Les instructions suivantes supposent que vous disposez des données d'identification du nouveau compte d'utilisateur IAM créé précédemment en tant que membre du nouveau groupe IAM. Ainsi, vous disposez des autorisations requises pour utiliser des grappes Kubernetes dans la location ou le compartiment.
- Connectez-vous à la console à l'aide des données d'identification du nouveau compte d'utilisateur IAM.
- Configurez l'accès aux grappes en suivant les instructions sous Configuration de l'accès aux grappes.
- Répertoriez les pods dans l'espace de noms kube-system en entrant :
kubectl get pods -n kube-system
Suivez ces étapes pour accorder aux utilisateurs non administrateurs d'un groupe les autorisations Oracle Cloud Infrastructure et RBAC Kubernetes nécessaires pour voir les pods en cours d'exécution sur une grappe Kubernetes. Dans cet exemple, un utilisateur non administrateur a accès au cluster explicitement ou en tant que membre d'un groupe IAM (vous pouvez spécifier un groupe dynamique à la place).
En tant qu'administrateur de location :
Les instructions suivantes supposent que vous êtes dans le groupe Administrateurs de la location et que vous disposez donc des autorisations requises pour créer des utilisateurs, des groupes et des politiques IAM.
- Créez un nouveau compte d'utilisateur IAM pour Oracle Cloud Infrastructure pour un utilisateur non administrateur (par exemple, jjones@acme.com). Voir Pour créer un utilisateur.
- Si vous avez l'intention d'activer uniquement cet utilisateur pour lister les clés secrètes, notez l'OCID du nouveau compte d'utilisateur IAM (par exemple,
ocid1.user.oc1..aa______4gs6
, abrégé pour plus de lisibilité). - Créez un groupe IAM pour Oracle Cloud Infrastructure (par exemple,
acme-developer-group
) et ajoutez le nouveau compte d'utilisateur IAM au groupe. Voir Pour créer un groupe. - Si vous voulez permettre à tous les utilisateurs de ce groupe de lister les clés secrètes, notez l'OCID du nouveau groupe IAM (par exemple,
ocid1.group.oc1..aa______e26f
, abrégé pour plus de lisibilité). - Créez une politique Oracle Cloud Infrastructure qui accorde au nouveau groupe l'autorisation CLUSTER_USE sur les grappes, à l'aide d'un énoncé de politique tel que le suivant :
Allow group acme-developer-group to use clusters in <location>
Dans l'énoncé de politique ci-dessus, remplacez
<location>
partenancy
(si vous créez la politique dans le compartiment racine de la location) oucompartment <compartment-name>
(si vous créez la politique dans un compartiment individuel). Voir Pour créer une politique.Notez que si un groupe ne se trouve pas dans le domaine d'identité par défaut, ajoutez le préfixe
group '<identity-domain-name>'/'group-name'
au nom du groupe. Vous pouvez également spécifier un groupe à l'aide de son OCID, dans le formatgroup id <group-ocid>
.
En tant qu'administrateur du cluster :
Les instructions suivantes supposent que vous disposez des autorisations requises pour créer et gérer des grappes, ainsi que de l'accès requis pour créer des rôles et des rôles de grappe RBAC Kubernetes.
- Dans un éditeur de texte, effectuez l'une des opérations suivantes, selon que vous souhaitez activer uniquement le nouvel utilisateur IAM ou tous les utilisateurs du nouveau groupe IAM pour lister les clés secrètes dans une grappe Kubernetes :
- Si vous voulez autoriser uniquement le nouvel utilisateur IAM à lister les clés secrètes d'une grappe Kubernetes, créez le manifeste suivant (par exemple, nommé
secrets-reader.yaml
) :apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: secret-reader rules: - apiGroups: [""] resources: ["secrets"] verbs: ["get", "watch", "list"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: read-secrets-global subjects: - kind: User name: <user-ocid> apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: secret-reader apiGroup: rbac.authorization.k8s.io
où
name: <user-ocid>
spécifie l'OCID du nouvel utilisateur IAM que vous avez créé précédemment. Par exemple,name: ocid1.user.oc1..aa______4gs6
- Si vous voulez permettre à tous les utilisateurs du nouveau groupe IAM de lister les clés secrètes d'une grappe Kubernetes, créez le manifeste suivant (par exemple, nommé
secrets-reader.yaml
) :apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: secret-reader rules: - apiGroups: [""] resources: ["secrets"] verbs: ["get", "watch", "list"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: read-secrets-global subjects: - kind: Group name: <group-ocid> apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: secret-reader apiGroup: rbac.authorization.k8s.io
où
name: <group-ocid>
est l'OCID du nouveau groupe IAM que vous avez créé précédemment. Par exemple,ocid1.group.oc1..aa______e26f
- Si vous voulez autoriser uniquement le nouvel utilisateur IAM à lister les clés secrètes d'une grappe Kubernetes, créez le manifeste suivant (par exemple, nommé
- Créez le rôle de grappe et la liaison de rôle de grappe en entrant :
kubectl apply -f secret-reader.yml
En tant qu'utilisateur non administrateur :
Les instructions suivantes supposent que vous disposez des données d'identification du nouveau compte d'utilisateur IAM créé précédemment en tant que membre du nouveau groupe IAM. Ainsi, vous disposez des autorisations requises pour utiliser des grappes Kubernetes dans la location ou le compartiment, explicitement ou en tant que membre d'un groupe.
- Connectez-vous à la console à l'aide des données d'identification du nouveau compte d'utilisateur IAM.
- Configurez l'accès aux grappes en suivant les instructions sous Configuration de l'accès aux grappes.
- Répertoriez les clés secrètes dans tous les espaces de noms en entrant :
kubectl get secrets --all-namespaces