Informazioni sul controllo degli accessi e sul motore Kubernetes (OKE)

Scopri le autorizzazioni necessarie per accedere ai cluster creati utilizzando Kubernetes Engine (OKE).

Per eseguire operazioni su un cluster Kubernetes, è necessario disporre delle autorizzazioni appropriate per accedere al cluster.

Per la maggior parte delle operazioni sui cluster Kubernetes creati e gestiti da Kubernetes Engine, Oracle Cloud Infrastructure Identity and Access Management (IAM) fornisce il controllo dell'accesso. Le autorizzazioni di un utente per accedere ai cluster provengono dai gruppi IAM (inclusi i gruppi dinamici) a cui appartengono. Le autorizzazioni per un gruppo sono definite dai criteri. I criteri definiscono le azioni che i membri di un gruppo possono eseguire e in quali compartimenti. Gli utenti possono quindi accedere ai cluster ed eseguire le operazioni in base ai criteri impostati per i gruppi di cui sono membri.

IAM fornisce il controllo su:

  • se un utente può creare o eliminare cluster
  • se un utente può aggiungere, rimuovere o modificare pool di nodi
  • operazioni di creazione/eliminazione/visualizzazione dell'oggetto Kubernetes che un utente può eseguire su tutti i cluster all'interno di un compartimento o di una tenancy

Vedere Configurazione dei criteri per la creazione e la distribuzione del cluster.

Oltre a IAM, il responsabile autorizzazioni RBAC Kubernetes può applicare un controllo dell'accesso con filtro aggiuntivo per gli utenti su cluster specifici tramite ruoli RBAC e clusterroles Kubernetes. Un ruolo RBAC Kubernetes è una raccolta di autorizzazioni. Ad esempio, un ruolo potrebbe includere l'autorizzazione di lettura per i pod e l'autorizzazione di elenco per i pod. Un ruolo cluster RBAC Kubernetes è simile a un ruolo, ma può essere utilizzato in qualsiasi punto del cluster. Un'associazione di ruoli RBAC Kubernetes mappa un ruolo a un utente o a un gruppo, concedendo le autorizzazioni di tale ruolo all'utente o al gruppo per le risorse in tale spazio di nomi. Analogamente, un clusterrolebinding RBAC Kubernetes mappa un clusterrole a un utente o a un gruppo, concedendo le autorizzazioni di tale clusterrole all'utente o al gruppo nell'intero cluster.

IAM e il responsabile autorizzazioni RBAC Kubernetes collaborano per consentire agli utenti che sono stati autorizzati con successo da almeno uno di loro di completare l'operazione Kubernetes richiesta. Puoi utilizzare gli OCID per mappare le associazioni di ruoli RBAC Kubernetes e le associazioni di ruoli cluster a utenti e gruppi IAM (inclusi i gruppi dinamici).

Quando un utente tenta di eseguire qualsiasi operazione su un cluster (ad eccezione delle operazioni di creazione ruolo e creazione ruolo cluster), IAM determina innanzitutto se un gruppo (o gruppo dinamico) a cui appartiene l'utente dispone delle autorizzazioni appropriate e sufficienti. In tal caso, l'operazione ha esito positivo. Se l'operazione tentata richiede anche autorizzazioni aggiuntive concesse tramite un ruolo RBAC Kubernetes o un ruolo cluster, il responsabile autorizzazioni RBAC Kubernetes determina se all'utente o al gruppo è stato concesso il ruolo o il ruolo cluster Kubernetes appropriato.

In genere, durante la distribuzione di un cluster Kubernetes dovrai definire i tuoi ruoli RBAC Kubernetes e i tuoi cluster per fornire un controllo con filtro aggiuntivo. Quando si tenta di eseguire un ruolo di creazione o di creare un'operazione clusterrole, il responsabile autorizzazioni RBAC Kubernetes determina innanzitutto se si dispone di privilegi Kubernetes sufficienti. Per creare un ruolo o un ruolo cluster, è necessario che all'utente sia stato assegnato un ruolo RBAC Kubernetes (o ruolo cluster) esistente con almeno gli stessi privilegi o i privilegi più elevati del nuovo ruolo (o ruolo cluster) che si sta tentando di creare.

Per impostazione predefinita, agli utenti non vengono assegnati ruoli RBAC Kubernetes (o clusterroles) per impostazione predefinita. Pertanto, prima di tentare di creare un nuovo ruolo (o clusterrole), è necessario disporre di un ruolo con privilegi appropriati (o clusterrole). Alcuni di questi ruoli e clusterroles vengono sempre creati per impostazione predefinita, incluso il ruolo cluster-admin (per una lista completa, vedere Ruoli predefiniti e associazioni di ruoli nella documentazione di Kubernetes). Il ruolo cluster-admin essenzialmente conferisce privilegi di utente privilegiato. Un utente a cui è stato concesso il ruolo cluster-admin può eseguire qualsiasi operazione su tutti gli spazi di nomi in un determinato cluster.

Tenere presente che gli amministratori della tenancy di Oracle Cloud Infrastructure dispongono già di privilegi sufficienti e non richiedono il ruolo cluster-admin.

Esempio 1: concessione del cluster-admin RBAC Kubernetes
Nota

Le seguenti istruzioni presuppongono:

  • Hai l'accesso necessario per creare ruoli RBAC Kubernetes e clusterroles, perché fai parte del gruppo Amministratori della tenancy o perché disponi del ruolo cluster di amministrazione del cluster RBAC Kubernetes.
  • L'utente a cui si desidera concedere il ruolo cluster-admin RBAC non è un amministratore della tenancy OCI. Gli amministratori della tenancy OCI non richiedono il ruolo cluster di amministrazione del cluster RBAC Kubernetes.

Attenersi alla procedura riportata di seguito per concedere a un utente che non è un amministratore della tenancy il ruolo cluster di amministrazione del cluster RBAC Kubernetes in un cluster distribuito su Oracle Cloud Infrastructure.

  1. Se non è già stato fatto, attenersi alla procedura per impostare il file di configurazione kubeconfig del cluster e (se necessario) impostare la variabile di ambiente KUBECONFIG in modo che punti al file. Si noti che è necessario impostare il proprio file kubeconfig. Non è possibile accedere a un cluster utilizzando un file kubeconfig impostato da un altro utente. Vedere Impostazione dell'accesso al cluster.
  2. In una finestra del terminale, concedere il ruolo cluster-admin RBAC Kubernetes all'utente immettendo:

    
    kubectl create clusterrolebinding <my-cluster-admin-binding> --clusterrole=cluster-admin --user=<user_OCID>

    Dove:

    • <my-cluster-admin-binding> è una stringa scelta da utilizzare come nome per l'associazione tra l'utente e il ruolo cluster di amministrazione del cluster RBAC Kubernetes. Ad esempio jdoe_clst_adm
    • <user_OCID> è l'OCID dell'utente (ottenuto dalla console). Ad esempio, ocid1.user.oc1..aaaaa...zutq (abbreviato per leggibilità).

    Ad esempio:

    
    kubectl create clusterrolebinding jdoe_clst_adm --clusterrole=cluster-admin --user=ocid1.user.oc1..aaaaa...zutq
Esempio 2: creazione di un ruolo Kubernetes e di un'associazione di ruoli per consentire a un utente non amministratore di leggere i pod in un cluster

Attenersi alla procedura riportata di seguito per concedere a un utente non amministratore le autorizzazioni RBAC Oracle Cloud Infrastructure e Kubernetes necessarie per visualizzare i pod in esecuzione in un cluster Kubernetes. In questo esempio, a un utente non amministratore viene concesso l'accesso esplicito al cluster (anziché come membro di un gruppo).

In qualità di amministratore della tenancy:

Nota

Le istruzioni riportate di seguito presuppongono di appartenere al gruppo Amministratori della tenancy e, pertanto, di disporre delle autorizzazioni necessarie per creare utenti, gruppi e criteri IAM.
  1. Crea un nuovo account utente IAM Oracle Cloud Infrastructure per l'utente non amministratore (ad esempio, jdoe@acme.com). Vedere Creazione di un utente.
  2. Prendere nota dell'OCID del nuovo account utente IAM (ad esempio, ocid1.user.oc1..aa______tx5a, abbreviato per leggibilità).
  3. Creare un nuovo gruppo IAM di Oracle Cloud Infrastructure (ad esempio, denominato acme-developer-group) e aggiungere il nuovo account utente IAM al gruppo. Vedere Per creare un gruppo.
  4. Creare un nuovo criterio di Oracle Cloud Infrastructure che conceda al nuovo gruppo l'autorizzazione CLUSTER_USE sui cluster, con un'istruzione criterio simile alla seguente:
    Allow group acme-developer-group to use clusters in <location>

    Nell'istruzione dei criteri precedente, sostituire <location> con tenancy (se si sta creando il criterio nel compartimento radice della tenancy) o compartment <compartment-name> (se si sta creando il criterio in un singolo compartimento). Vedere Creazione di un criterio.

    Si noti che se un gruppo non si trova nel dominio di identità predefinito, inserire il nome del gruppo prima del nome del dominio di identità nel formato group '<identity-domain-name>'/'group-name'. È anche possibile specificare un gruppo utilizzando il relativo OCID, nel formato group id <group-ocid>.

L'amministratore del cluster:

Nota

Le istruzioni riportate di seguito presuppongono di disporre delle autorizzazioni necessarie per creare e gestire i cluster e dell'accesso necessario per creare i ruoli RBAC e i clusterroles Kubernetes.
  1. In un editor di testo, creare il seguente file manifesto (ad esempio, pod-reader-user.yaml) per definire un ruolo RBAC Kubernetes e un'associazione di ruoli per consentire al nuovo account utente IAM di elencare i pod nello spazio di nomi 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
    

    dove name: <user-ocid> specifica l'OCID del nuovo account utente IAM creato in precedenza. Ad esempio, name: ocid1.user.oc1..aa______tx5a

  2. Creare il nuovo ruolo e l'associazione dei ruoli immettendo:
    kubectl apply -f pod-reader-user.yml

L'utente non amministratore:

Nota

Le istruzioni riportate di seguito presuppongono che le credenziali del nuovo account utente IAM siano state create in precedenza. Pertanto, hai le autorizzazioni necessarie per utilizzare i cluster Kubernetes nella tenancy o nel compartimento.
  1. Collegarsi alla console utilizzando le credenziali del nuovo account utente IAM.
  2. Configurare l'accesso al cluster seguendo le istruzioni riportate in Impostazione dell'accesso al cluster.
  3. Elencare i pod nello spazio di nomi kube-system immettendo:
    kubectl get pods -n kube-system
Esempio 3: creazione di un ruolo Kubernetes e di un'associazione di ruoli per consentire a un gruppo di leggere i pod in un cluster

Attenersi alla procedura riportata di seguito per concedere agli utenti non amministratori di un gruppo le autorizzazioni RBAC Oracle Cloud Infrastructure e Kubernetes necessarie per visualizzare i pod in esecuzione in un cluster Kubernetes. In questo esempio, agli utenti non amministratori viene concesso l'accesso al cluster come membri di un gruppo IAM (è possibile specificare un gruppo dinamico).

In qualità di amministratore della tenancy:

Nota

Le istruzioni riportate di seguito presuppongono di appartenere al gruppo Amministratori della tenancy e, pertanto, di disporre delle autorizzazioni necessarie per creare utenti, gruppi e criteri IAM.
  1. Crea un nuovo account utente IAM Oracle Cloud Infrastructure per un utente non amministratore (ad esempio, jsmith@acme.com). Vedere Creazione di un utente.
  2. Creare un nuovo gruppo IAM di Oracle Cloud Infrastructure (ad esempio, denominato acme-developer-group) e aggiungere il nuovo account utente IAM al gruppo. Vedere Per creare un gruppo.
  3. Prendere nota dell'OCID del nuovo gruppo IAM (ad esempio, ocid1.group.oc1..aa______m7dt, abbreviato per leggibilità).
  4. Creare un nuovo criterio di Oracle Cloud Infrastructure che conceda al nuovo gruppo l'autorizzazione CLUSTER_USE sui cluster, con un'istruzione criterio simile alla seguente:
    Allow group acme-developer-group to use clusters in <location>

    Nell'istruzione dei criteri precedente, sostituire <location> con tenancy (se si sta creando il criterio nel compartimento radice della tenancy) o compartment <compartment-name> (se si sta creando il criterio in un singolo compartimento). Vedere Creazione di un criterio.

    Si noti che se un gruppo non si trova nel dominio di identità predefinito, inserire il nome del gruppo prima del nome del dominio di identità nel formato group '<identity-domain-name>'/'group-name'. È anche possibile specificare un gruppo utilizzando il relativo OCID, nel formato group id <group-ocid>.

L'amministratore del cluster:

Nota

Le istruzioni riportate di seguito presuppongono di disporre delle autorizzazioni necessarie per creare e gestire i cluster e dell'accesso necessario per creare i ruoli RBAC e i clusterroles Kubernetes.
  1. In un editor di testo, creare il seguente file manifesto (ad esempio, denominato pod-reader-group.yaml) per definire un ruolo RBAC Kubernetes e un'associazione di ruoli per consentire agli utenti nel nuovo gruppo IAM di elencare i pod nello spazio di nomi 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
    

    dove name: <group-ocid> specifica l'OCID del nuovo gruppo IAM creato in precedenza. Ad esempio, name: ocid1.group.oc1..aa______m7dt

  2. Creare il nuovo ruolo e l'associazione dei ruoli immettendo:
    kubectl apply -f pod-reader-group.yml

L'utente non amministratore:

Nota

Le seguenti istruzioni presuppongono che le credenziali del nuovo account utente IAM siano state create in precedenza come membro del nuovo gruppo IAM. Pertanto, hai le autorizzazioni necessarie per utilizzare i cluster Kubernetes nella tenancy o nel compartimento.
  1. Collegarsi alla console utilizzando le credenziali del nuovo account utente IAM.
  2. Configurare l'accesso al cluster seguendo le istruzioni riportate in Impostazione dell'accesso al cluster.
  3. Elencare i pod nello spazio di nomi kube-system immettendo:
    kubectl get pods -n kube-system
Esempio 4: creazione di un ruolo cluster Kubernetes e di un'associazione clusterrolebinding per consentire a utenti e gruppi di elencare i segreti in un cluster

Attenersi alla procedura riportata di seguito per concedere agli utenti non amministratori di un gruppo le autorizzazioni RBAC Oracle Cloud Infrastructure e Kubernetes necessarie per visualizzare i pod in esecuzione in un cluster Kubernetes. In questo esempio, a un utente non amministratore viene concesso l'accesso al cluster in modo esplicito o come membro di un gruppo IAM (è possibile specificare un gruppo dinamico).

In qualità di amministratore della tenancy:

Nota

Le istruzioni riportate di seguito presuppongono di appartenere al gruppo Amministratori della tenancy e, pertanto, di disporre delle autorizzazioni necessarie per creare utenti, gruppi e criteri IAM.
  1. Crea un nuovo account utente IAM Oracle Cloud Infrastructure per un utente non amministratore (ad esempio, jjones@acme.com). Vedere Creazione di un utente.
  2. Se si intende abilitare solo questo utente per elencare i segreti, prendere nota dell'OCID del nuovo account utente IAM (ad esempio, ocid1.user.oc1..aa______4gs6, abbreviato per leggibilità).
  3. Creare un nuovo gruppo IAM di Oracle Cloud Infrastructure (ad esempio, denominato acme-developer-group) e aggiungere il nuovo account utente IAM al gruppo. Vedere Per creare un gruppo.
  4. Se si intende consentire a tutti gli utenti di questo gruppo di elencare i segreti, prendere nota dell'OCID del nuovo gruppo IAM (ad esempio, ocid1.group.oc1..aa______e26f, abbreviato per leggibilità).
  5. Creare un nuovo criterio di Oracle Cloud Infrastructure che conceda al nuovo gruppo l'autorizzazione CLUSTER_USE sui cluster, con un'istruzione criterio simile alla seguente:
    Allow group acme-developer-group to use clusters in <location>

    Nell'istruzione dei criteri precedente, sostituire <location> con tenancy (se si sta creando il criterio nel compartimento radice della tenancy) o compartment <compartment-name> (se si sta creando il criterio in un singolo compartimento). Vedere Creazione di un criterio.

    Si noti che se un gruppo non si trova nel dominio di identità predefinito, inserire il nome del gruppo prima del nome del dominio di identità nel formato group '<identity-domain-name>'/'group-name'. È anche possibile specificare un gruppo utilizzando il relativo OCID, nel formato group id <group-ocid>.

L'amministratore del cluster:

Nota

Le istruzioni riportate di seguito presuppongono di disporre delle autorizzazioni necessarie per creare e gestire i cluster e dell'accesso necessario per creare i ruoli RBAC e i clusterroles Kubernetes.
  1. In un editor di testo, eseguire una delle seguenti operazioni, a seconda che si desideri abilitare solo il nuovo utente IAM o tutti gli utenti del nuovo gruppo IAM a elencare i segreti in un cluster Kubernetes:
    • Se si desidera abilitare solo il nuovo utente IAM a elencare i segreti in un cluster Kubernetes, creare il file manifesto seguente (ad esempio, denominato 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
      

      dove name: <user-ocid> specifica l'OCID del nuovo utente IAM creato in precedenza. Ad esempio, name: ocid1.user.oc1..aa______4gs6

    • Se si desidera consentire a tutti gli utenti del nuovo gruppo IAM di elencare i segreti in un cluster Kubernetes, creare il file manifesto seguente (ad esempio, denominato 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
      

      dove name: <group-ocid> è l'OCID del nuovo gruppo IAM creato in precedenza. Ad esempio, ocid1.group.oc1..aa______e26f

  2. Creare il nuovo clusterrole e clusterrolebinding immettendo:
    kubectl apply -f secret-reader.yml

L'utente non amministratore:

Nota

Le seguenti istruzioni presuppongono che le credenziali del nuovo account utente IAM siano state create in precedenza come membro del nuovo gruppo IAM. Pertanto, hai le autorizzazioni necessarie per utilizzare i cluster Kubernetes nella tenancy o nel compartimento in modo esplicito o come membro di un gruppo.
  1. Collegarsi alla console utilizzando le credenziali del nuovo account utente IAM.
  2. Configurare l'accesso al cluster seguendo le istruzioni riportate in Impostazione dell'accesso al cluster.
  3. Elencare i segreti in tutti gli spazi dei nomi immettendo:
    kubectl get secrets --all-namespaces