A propos du contrôle d'accès et du moteur Kubernetes (OKE)

Découvrez les droits d'accès requis pour accéder aux clusters créés à l'aide de Kubernetes Engine (OKE).

Pour effectuer des opérations sur un cluster Kubernetes, vous devez disposer des droits d'accès appropriés au cluster.

Pour la plupart des opérations sur les clusters Kubernetes créés et gérés par Kubernetes Engine, Oracle Cloud Infrastructure Identity and Access Management (IAM) fournit le contrôle d'accès. Les droits d'accès aux clusters d'un utilisateur proviennent des groupes IAM (y compris les groupes dynamiques) auxquels il appartient. Les droits d'accès d'un groupe sont définis par des stratégies. Les stratégies définissent les actions que les membres d'un groupe peuvent effectuer, et dans quels compartiments. Les utilisateurs peuvent accéder aux clusters et effectuer des opérations en fonction des stratégies définies pour les groupes dont ils sont membres.

IAM vous permet de contrôler les éléments suivants :

  • L'utilisateur peut-il créer ou supprimer des clusters ?
  • L'utilisateur peut-il ajouter, enlever ou modifier des pools de noeuds ?
  • Quelles opérations de création/suppression/visualisation d'objets Kubernetes l'utilisateur peut-il effectuer sur tous les clusters au sein d'un compartiment ou d'une location ?

Reportez-vous à Configuration de stratégies pour la création et le déploiement de clusters.

En plus d'IAM, vous pouvez utiliser le donneur d'autorisation RBAC Kubernetes pour appliquer un contrôle d'accès détaillé supplémentaire aux utilisateurs sur des clusters spécifiques via les rôles et les rôles de cluster RBAC Kubernetes. Un rôle RBAC Kubernetes est un ensemble de droits d'accès. Par exemple, un rôle peut inclure des droits d'accès permettant de lire et de répertorier des pods. Les rôles de cluster RBAC Kubernetes sont identiques aux rôles, à la différence près qu'ils peuvent être utilisés n'importe où dans le cluster. Une liaison de rôle RBAC Kubernetes met en correspondance un rôle avec un utilisateur ou un groupe, en accordant les droits d'accès 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 cluster RBAC Kubernetes met en correspondance un rôle de cluster avec un utilisateur ou un groupe, en accordant les droits d'accès de ce rôle de cluster à l'utilisateur ou au groupe sur l'ensemble du cluster.

IAM et le donneur d'autorisation RBAC Kubernetes fonctionnent de pair pour permettre aux utilisateurs ayant été autorisés par au moins l'un d'entre eux de réaliser l'opération Kubernetes demandée. Vous pouvez utiliser des OCID pour mettre en correspondance des liaisons de rôle et des liaisons de rôle RBAC Kubernetes avec des utilisateurs et des groupes IAM (y compris des groupes dynamiques).

Lorsqu'un utilisateur tente d'effectuer une opération sur un cluster (à l'exception des opérations de création de rôle et de création de rôle de cluster), 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 tentée nécessite également des droits d'accès supplémentaires accordés via un rôle ou un rôle de cluster RBAC Kubernetes, le donneur d'autorisation RBAC Kubernetes détermine si l'utilisateur ou le groupe dispose du rôle ou du rôle de cluster Kubernetes approprié.

En général, vous devrez définir vos propres rôles et rôles de cluster RBAC Kubernetes lors du déploiement d'un cluster Kubernetes pour fournir un contrôle détaillé supplémentaire. Lorsque vous tentez de créer un rôle ou un rôle de cluster, le donneur d'autorisation RBAC Kubernetes détermine d'abord si vous disposez des privilèges Kubernetes suffisants. Pour créer un rôle ou un rôle de cluster, vous devez disposer d'un rôle (ou d'un rôle de cluster) RBAC Kubernetes existant qui offre des privilèges identiques ou supérieurs au rôle (ou au rôle de cluster) que vous tentez de créer.

Par défaut, aucun rôle (ou rôle de cluster) RBAC Kubernetes n'est affecté aux utilisateurs. Avant d'essayer de créer un rôle (ou un rôle de cluster), vous devez disposer d'un rôle (ou d'un rôle de cluster) offrant les privilèges appropriés. Certains de ces rôles et rôles de cluster sont toujours créés par défaut, notamment le rôle de cluster cluster-admin (pour obtenir la liste complète, reportez-vous à Rôles et liaisons de rôle par défaut dans la documentation Kubernetes). Le rôle de cluster cluster-admin confère essentiellement les privilèges de superutilisateur. Un utilisateur disposant du rôle de cluster cluster-admin peut exécuter n'importe quelle opération sur l'ensemble des espaces de noms d'un cluster donné.

Les administrateurs de location Oracle Cloud Infrastructure disposent déjà de privilèges suffisants et n'ont pas besoin du rôle de cluster cluster-admin.

Exemple 1 : octroi du rôle de cluster RBAC Kubernetes cluster-admin
Remarque

Les instructions supposent les points suivants :

  • Vous disposez de l'accès requis pour créer des rôles et des rôles de cluster RBAC Kubernetes, soit parce que vous appartenez au groupe d'administrateurs de la location, soit parce que vous êtes doté du rôle de cluster RBAC Kubernetes cluster-admin.
  • L'utilisateur auquel vous souhaitez octroyer le rôle de cluster RBAC cluster-admin n'est pas un administrateur de location OCI. S'il s'agit d'un administrateur de la location OCI, il n'a pas besoin du rôle de cluster RBAC Kubernetes cluster-admin.

Suivez les étapes ci-dessous afin d'octroyer le rôle de cluster RBAC Kubernetes cluster-admin à un utilisateur qui n'est pas un administrateur de location pour un cluster déployé sur Oracle Cloud Infrastructure :

  1. Si vous ne l'avez pas encore fait, suivez les étapes permettant de configurer le fichier de configuration Kubeconfig du cluster et (si nécessaire) de définir la variable d'environnement KUBECONFIG de sorte qu'elle pointe vers le fichier. Vous devez configurer votre propre fichier Kubeconfig. Vous ne pouvez pas accéder à un cluster à l'aide d'un fichier Kubeconfig configuré par un autre utilisateur. Reportez-vous à Configuration de l'accès à un cluster.
  2. Dans une fenêtre de terminal, octroyez le rôle de cluster RBAC Kubernetes cluster-admin à l'utilisateur en saisissant la commande suivante :

    
    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 pour la liaison entre l'utilisateur et le rôle de cluster 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
Exemple 2 : création d'un rôle Kubernetes et d'une liaison de rôle pour permettre à un utilisateur non administrateur de lire des pods dans un cluster

Suivez ces étapes pour accorder à un utilisateur non administrateur les droits d'accès Oracle Cloud Infrastructure et RBAC Kubernetes nécessaires à l'affichage des pods exécutés sur un cluster Kubernetes. Dans cet exemple, un utilisateur non administrateur bénéficie d'un accès explicite au cluster (plutôt qu'en tant que membre d'un groupe).

En tant qu'administrateur de location :

Remarque

Les instructions suivantes supposent que vous appartenez au groupe d'administrateurs de la location et que vous disposez donc des droits d'accès requis pour créer des utilisateurs, des groupes et des stratégies IAM.
  1. Créez un compte utilisateur Oracle Cloud Infrastructure IAM pour l'utilisateur non administrateur (par exemple, jdoe@acme.com). Reportez-vous à Procédure de création d'un utilisateur.
  2. Notez l'OCID du nouveau compte utilisateur IAM (par exemple, ocid1.user.oc1..aa______tx5a, abrégé pour plus de lisibilité).
  3. Créez un groupe Oracle Cloud Infrastructure IAM (par exemple, appelé acme-developer-group) et ajoutez le nouveau compte utilisateur IAM au groupe. Reportez-vous à Procédure de création d'un groupe.
  4. Créez une stratégie Oracle Cloud Infrastructure qui octroie au nouveau groupe le droit d'accès CLUSTER_USE sur les clusters en utilisant une instruction de stratégie semblable à la suivante :
    Allow group acme-developer-group to use clusters in <location>

    Dans l'instruction de stratégie ci-dessus, remplacez <location> par tenancy (si vous créez la stratégie dans le compartiment racine de la location) ou par compartment <compartment-name> (si vous créez la stratégie dans un compartiment individuel). Reportez-vous à Procédure de création d'une stratégie.

    Si un groupe ne se trouve pas dans le domaine d'identité par défaut, ajoutez un préfixe au nom de domaine d'identité au format group '<identity-domain-name>'/'group-name'. Vous pouvez également indiquer un groupe à l'aide de son OCID, au format group id <group-ocid>.

En tant qu'administrateur de cluster :

Remarque

Les instructions suivantes supposent que vous disposez des droits d'accès requis pour créer et gérer des clusters, ainsi que de l'accès requis pour créer des rôles et des rôles de cluster RBAC Kubernetes.
  1. Dans un éditeur de texte, créez le manifeste suivant (par exemple, appelé pod-reader-user.yaml) pour définir une liaison de rôle et de rôle RBAC Kubernetes afin de permettre au nouveau compte utilisateur IAM de répertorier 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
    

    name: <user-ocid> indique l'OCID du compte utilisateur IAM que vous avez créé précédemment. Par exemple, name: ocid1.user.oc1..aa______tx5a

  2. Créez le rôle et la liaison de rôle en saisissant ce qui suit :
    kubectl apply -f pod-reader-user.yml

En tant qu'utilisateur autre qu'administrateur :

Remarque

Les instructions suivantes supposent que vous disposez des informations d'identification du nouveau compte utilisateur IAM créé précédemment. Par conséquent, vous disposez des droits d'accès requis pour utiliser des clusters Kubernetes dans la location ou le compartiment.
  1. Connectez-vous à la console à l'aide des informations d'identification du nouveau compte utilisateur IAM.
  2. Configurez l'accès à un cluster en suivant les instructions de Configuration de l'accès à un cluster.
  3. Répertoriez les pods dans l'espace de noms kube-system en saisissant ce qui suit :
    kubectl get pods -n kube-system
Exemple 3 : création d'un rôle Kubernetes et d'une liaison de rôle pour permettre à un groupe de lire des pods dans un cluster

Suivez ces étapes pour accorder aux utilisateurs non administrateurs d'un groupe les droits d'accès Oracle Cloud Infrastructure et RBAC Kubernetes nécessaires à la visualisation des pods exécutés sur un cluster Kubernetes. Dans cet exemple, les utilisateurs non administrateurs ont accès au cluster en tant que membres d'un groupe IAM (vous pouvez indiquer un groupe dynamique à la place).

En tant qu'administrateur de location :

Remarque

Les instructions suivantes supposent que vous appartenez au groupe d'administrateurs de la location et que vous disposez donc des droits d'accès requis pour créer des utilisateurs, des groupes et des stratégies IAM.
  1. Créez un compte utilisateur Oracle Cloud Infrastructure IAM pour un utilisateur non administrateur (par exemple, jsmith@acme.com). Reportez-vous à Procédure de création d'un utilisateur.
  2. Créez un groupe Oracle Cloud Infrastructure IAM (par exemple, appelé acme-developer-group) et ajoutez le nouveau compte utilisateur IAM au groupe. Reportez-vous à Procédure de création d'un groupe.
  3. Notez l'OCID du nouveau groupe IAM (par exemple, ocid1.group.oc1..aa______m7dt, abrégé pour plus de lisibilité).
  4. Créez une stratégie Oracle Cloud Infrastructure qui octroie au nouveau groupe le droit d'accès CLUSTER_USE sur les clusters en utilisant une instruction de stratégie semblable à la suivante :
    Allow group acme-developer-group to use clusters in <location>

    Dans l'instruction de stratégie ci-dessus, remplacez <location> par tenancy (si vous créez la stratégie dans le compartiment racine de la location) ou par compartment <compartment-name> (si vous créez la stratégie dans un compartiment individuel). Reportez-vous à Procédure de création d'une stratégie.

    Si un groupe ne se trouve pas dans le domaine d'identité par défaut, ajoutez un préfixe au nom de domaine d'identité au format group '<identity-domain-name>'/'group-name'. Vous pouvez également indiquer un groupe à l'aide de son OCID, au format group id <group-ocid>.

En tant qu'administrateur de cluster :

Remarque

Les instructions suivantes supposent que vous disposez des droits d'accès requis pour créer et gérer des clusters, ainsi que de l'accès requis pour créer des rôles et des rôles de cluster RBAC Kubernetes.
  1. Dans un éditeur de texte, créez le manifeste suivant (par exemple, 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 répertorier 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
    

    name: <group-ocid> indique l'OCID du groupe IAM que vous avez créé précédemment. Par exemple, name: ocid1.group.oc1..aa______m7dt

  2. Créez le rôle et la liaison de rôle en saisissant ce qui suit :
    kubectl apply -f pod-reader-group.yml

En tant qu'utilisateur autre qu'administrateur :

Remarque

Les instructions suivantes supposent que vous disposez des informations d'identification du nouveau compte utilisateur IAM créé précédemment en tant que membre du nouveau groupe IAM. Par conséquent, vous disposez des droits d'accès requis pour utiliser des clusters Kubernetes dans la location ou le compartiment.
  1. Connectez-vous à la console à l'aide des informations d'identification du nouveau compte utilisateur IAM.
  2. Configurez l'accès à un cluster en suivant les instructions de Configuration de l'accès à un cluster.
  3. Répertoriez les pods dans l'espace de noms kube-system en saisissant ce qui suit :
    kubectl get pods -n kube-system
Exemple 4 : création d'un rôle de cluster Kubernetes et d'une liaison de rôle de cluster pour permettre aux utilisateurs et aux groupes de répertorier les clés secrètes dans un cluster

Suivez ces étapes pour accorder aux utilisateurs non administrateurs d'un groupe les droits d'accès Oracle Cloud Infrastructure et RBAC Kubernetes nécessaires à la visualisation des pods exécutés sur un cluster Kubernetes. Dans cet exemple, un utilisateur non administrateur est autorisé à accéder au cluster de manière explicite ou en tant que membre d'un groupe IAM (vous pouvez indiquer un groupe dynamique à la place).

En tant qu'administrateur de location :

Remarque

Les instructions suivantes supposent que vous appartenez au groupe d'administrateurs de la location et que vous disposez donc des droits d'accès requis pour créer des utilisateurs, des groupes et des stratégies IAM.
  1. Créez un compte utilisateur Oracle Cloud Infrastructure IAM pour un utilisateur non administrateur (par exemple, jjones@acme.com). Reportez-vous à Procédure de création d'un utilisateur.
  2. Si vous souhaitez autoriser uniquement cet utilisateur à répertorier les clés secrètes, notez l'OCID du nouveau compte utilisateur IAM (par exemple, ocid1.user.oc1..aa______4gs6, abrégé pour plus de lisibilité).
  3. Créez un groupe Oracle Cloud Infrastructure IAM (par exemple, appelé acme-developer-group) et ajoutez le nouveau compte utilisateur IAM au groupe. Reportez-vous à Procédure de création d'un groupe.
  4. Si vous avez l'intention d'autoriser tous les utilisateurs de ce groupe à répertorier 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é).
  5. Créez une stratégie Oracle Cloud Infrastructure qui octroie au nouveau groupe le droit d'accès CLUSTER_USE sur les clusters en utilisant une instruction de stratégie semblable à la suivante :
    Allow group acme-developer-group to use clusters in <location>

    Dans l'instruction de stratégie ci-dessus, remplacez <location> par tenancy (si vous créez la stratégie dans le compartiment racine de la location) ou par compartment <compartment-name> (si vous créez la stratégie dans un compartiment individuel). Reportez-vous à Procédure de création d'une stratégie.

    Si un groupe ne se trouve pas dans le domaine d'identité par défaut, ajoutez un préfixe au nom de domaine d'identité au format group '<identity-domain-name>'/'group-name'. Vous pouvez également indiquer un groupe à l'aide de son OCID, au format group id <group-ocid>.

En tant qu'administrateur de cluster :

Remarque

Les instructions suivantes supposent que vous disposez des droits d'accès requis pour créer et gérer des clusters, ainsi que de l'accès requis pour créer des rôles et des rôles de cluster RBAC Kubernetes.
  1. Dans un éditeur de texte, effectuez l'une des opérations suivantes, selon que vous voulez autoriser uniquement le nouvel utilisateur IAM ou tous les utilisateurs du nouveau groupe IAM à répertorier les clés secrètes dans un cluster Kubernetes :
    • Si vous voulez autoriser uniquement le nouvel utilisateur IAM à répertorier les clés secrètes dans un cluster Kubernetes, créez le manifeste suivant (par exemple, appelé 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
      

      name: <user-ocid> indique l'OCID du nouvel utilisateur IAM que vous avez créé précédemment. Par exemple, name: ocid1.user.oc1..aa______4gs6

    • Si vous voulez autoriser tous les utilisateurs du nouveau groupe IAM à répertorier les clés secrètes dans un cluster Kubernetes, créez le manifeste suivant (par exemple, appelé 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
      

      name: <group-ocid> est l'OCID du groupe IAM que vous avez créé précédemment. Par exemple, ocid1.group.oc1..aa______e26f

  2. Créez les nouveaux clusterrole et clusterrolebinding en saisissant la commande suivante :
    kubectl apply -f secret-reader.yml

En tant qu'utilisateur autre qu'administrateur :

Remarque

Les instructions suivantes supposent que vous disposez des informations d'identification du nouveau compte utilisateur IAM créé précédemment en tant que membre du nouveau groupe IAM. Par conséquent, vous disposez des droits d'accès requis pour utiliser des clusters Kubernetes dans la location ou le compartiment, explicitement ou en tant que membre d'un groupe.
  1. Connectez-vous à la console à l'aide des informations d'identification du nouveau compte utilisateur IAM.
  2. Configurez l'accès à un cluster en suivant les instructions de Configuration de l'accès à un cluster.
  3. Répertoriez les clés secrètes dans tous les espaces de noms en saisissant ce qui suit :
    kubectl get secrets --all-namespaces