Zugriffskontrolle und Kubernetes-Engine (OKE)

Informieren Sie sich über die Berechtigungen, die für den Zugriff auf Cluster erforderlich sind, die Sie mit der Kubernetes Engine (OKE) erstellt haben.

Um Vorgänge mit einem Kubernetes-Cluster ausführen zu können, benötigen Sie die entsprechenden Berechtigungen für den Zugriff auf das Cluster.

Für die meisten Vorgänge mit Kubernetes-Clustern, die von der Kubernetes-Engine erstellt und verwaltet werden, bietet Oracle Cloud Infrastructure Identity and Access Management (IAM) eine Zugriffskontrolle. Die Berechtigungen eines Benutzers für den Zugriff auf Cluster hängen von den IAM-Gruppen (einschließlich dynamischer Gruppen) ab, zu denen er gehört. Die Berechtigungen für eine Gruppe werden durch Policys definiert. Policys definieren, welche Aktionen Mitglieder einer Gruppe ausführen können und in welchen Compartments diese ausgeführt werden können. Benutzer können dann auf Cluster zugreifen und Vorgänge basierend auf den Policys ausführen, die für die Gruppen, bei denen sie Mitglied sind, festgelegt wurden.

IAM bietet die folgenden Steueroptionen:

  • Angabe, ob ein Benutzer Cluster erstellen oder löschen kann
  • Angabe, ob ein Benutzer Knotenpools hinzufügen, entfernen oder ändern kann
  • Angabe, welche Vorgänge zum Erstellen/Löschen/Anzeigen von Kubernetes-Objekten ein Benutzer in allen Clustern innerhalb eines Compartments oder Mandanten ausführen kann

Siehe Policy-Konfiguration für Clustererstellung und -Deployment.

Zusätzlich zu IAM kann der Kubernetes-RBAC-Autorisierer weitere fein granulierte Zugriffskontrollen für Benutzer auf bestimmten Clustern über Kubernetes-RBAC-Rollen und -clusterroles durchsetzen. Eine Kubernetes-RBAC-Rolle ist eine Gruppe von Berechtigungen. Beispiel: Eine Rolle kann Leseberechtigungen und Listenberechtigungen für Pods enthalten. Eine Kubernetes-RBAC-clusterrole funktioniert genauso wie eine Rolle, kann jedoch überall im Cluster verwendet werden. Ein Kubernetes-RBAC-Rlebinding ordnet eine Rolle einem Benutzer oder einer Gruppe zu und erteilt dem Benutzer oder der Gruppe die Berechtigungen dieser Rolle für Ressourcen in diesem Namespace. Ebenso ordnet ein Kubernetes-RBAC-clusterrolebinding eine clusterrole einem Benutzer oder einer Gruppe zu und erteilt dem Benutzer oder der Gruppe die Berechtigungen dieser clusterrole im gesamten Cluster.

Benutzer, die von IAM und/oder dem Kubernetes-RBAC-Autorisierer erfolgreich autorisiert wurden, sind berechtigt, den gewünschten Kubernetes-Vorgang durchzuführen. Mit OCIDs können Sie Kubernetes-RBAC-Rlebindings und clusterrolebindings IAM-Benutzern und -Gruppen (einschließlich dynamischer Gruppen) zuordnen.

Wenn ein Benutzer versucht, einen Vorgang für ein Cluster auszuführen (außer zum Erstellen von Rollen und zum Erstellen von clusterrole-Vorgängen), bestimmt IAM zunächst, ob eine Gruppe (oder dynamische Gruppe), zu der der der Benutzer gehört, über die entsprechenden und ausreichenden Berechtigungen verfügt. Wenn ja, verläuft der Vorgang erfolgreich. Erfordert der versuchte Vorgang außerdem zusätzliche Berechtigungen, die über eine Kubernetes-RBAC-Rolle oder eine clusterrole erteilt werden, bestimmt der Kubernetes-RBAC-Autorisierer, ob dem Benutzer oder der Gruppe die entsprechende Kubernetes-Rolle oder -Clusterrolle erteilt wurde.

In der Regel sollten Sie Ihre eigenen Kubernetes-RBAC-Rollen und -clusterroles definieren, wenn Sie ein Kubernetes-Cluster bereitstellen, um eine zusätzliche fein granulierte Zugriffskontrolle zu gewährleisten. Wenn Sie versuchen, einen Vorgang zum Erstellen einer Rolle oder einer clusterrole auszuführen, bestimmt der Kubernetes-RBAC-Autorisierer zunächst, ob Sie über ausreichende Kubernetes-Berechtigungen verfügen. Um eine Rolle oder clusterrole zu erstellen, muss Ihnen eine vorhandene Kubernetes-RBAC-Rolle (oder eine clusterrole) zugewiesen worden sein, die mindestens dieselbe oder eine höhere Berechtigung als die neue Rolle (oder clusterrole) aufweist, die Sie erstellen möchten.

Standardmäßig sind Benutzern keine Kubernetes-RBAC-Rollen (oder clusterroles) zugewiesen. Bevor Sie also versuchen, eine neue Rolle (oder clusterrole) zu erstellen, muss Ihnen eine entsprechend privilegierte Rolle (oder clusterrole) zugewiesen worden sein. Eine Reihe solcher Rollen und clusterroles werden immer standardmäßig erstellt, einschließlich der clusterrole "cluster-admin" (siehe Standardrollen und Rollen-Bindings in der Kubernetes-Dokumentation). Die clusterrole "cluster-admin" gewährt im Wesentlichen Superuser-Berechtigungen. Ein Benutzer, dem die clusterrole "cluster-admin" erteilt wurde, kann in einem bestimmten Cluster jeden beliebigen Vorgang in sämtlichen Namespaces ausführen.

Beachten Sie, dass Oracle Cloud Infrastructure-Mandantenadministratoren bereits über ausreichende Berechtigungen verfügen und die clusterrole "cluster-admin" nicht benötigen.

Beispiel 1: Kubernetes-RBAC-Clusterrolle "cluster-admin" erteilen
Hinweis

Bei den nachstehenden Anweisungen wird Folgendes vorausgesetzt:

  • Sie verfügen über die erforderliche Zugriffsberechtigung zum Erstellen von Kubernetes-RBAC-Rollen und -clusterroles, entweder weil Sie Mitglied der Administratorengruppe des Mandanten sind oder weil Sie über die clusterrole "cluster-admin" für Kubernetes-RBAC verfügen.
  • Der Benutzer, dem Sie die RBAC-clusterrole "cluster-admin" erteilen möchten, ist kein OCI-Mandantenadministrator. OCI-Mandantenadministratoren benötigen keine Kubernetes-RBAC-clusterrole "cluster-admin".

Führen Sie die folgenden Schritte aus, um einem Benutzer, der kein Mandantenadministrator ist, die Kubernetes-RBAC-clusterrole "cluster-admin" für ein in Oracle Cloud Infrastructure bereitgestelltes Cluster zu erteilen:

  1. Falls noch nicht geschehen, führen Sie die Schritte zum Einrichten der kubeconfig-Konfigurationsdatei des Clusters aus, und legen Sie (gegebenenfalls) die Umgebungsvariable KUBECONFIG so fest, dass sie auf die Datei verweist. Beachten Sie, dass Sie Ihre eigene kubeconfig-Datei einrichten müssen. Sie können nicht mit einer kubeconfig-Datei, die von einem anderen Benutzer eingerichtet wurde, auf ein Cluster zugreifen. Siehe Clusterzugriff einrichten.
  2. Erteilen Sie dem Benutzer in einem Terminalfenster die Kubernetes-RBAC-clusterrole "cluster-admin", indem Sie Folgendes eingeben:

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

    Hierbei gilt:

    • <my-cluster-admin-binding> ist eine Zeichenfolge Ihrer Wahl, die als Name für das Binding zwischen dem Benutzer und der Kubernetes-RBAC-clusterrole "cluster-admin" verwendet werden soll. Beispiel: jdoe_clst_adm
    • <user_OCID> ist die OCID des Benutzers (aus der Konsole abgerufen). Beispiel: ocid1.user.oc1..aaaaa...zutq (zur besseren Lesbarkeit abgekürzt).

    Beispiel:

    
    kubectl create clusterrolebinding jdoe_clst_adm --clusterrole=cluster-admin --user=ocid1.user.oc1..aaaaa...zutq
Beispiel 2: Kubernetes-Rolle und Rolebinding erstellen, damit ein Benutzer ohne Administratorrechte Pods in einem Cluster lesen kann

Führen Sie die folgenden Schritte aus, um einem Nicht-Administratorbenutzer die erforderlichen Oracle Cloud Infrastructure- und Kubernetes-RBAC-Berechtigungen zum Anzeigen von Pods zu erteilen, die auf einem Kubernetes-Cluster ausgeführt werden. In diesem Beispiel erhält ein Benutzer ohne Administratorrechte expliziten Zugriff auf das Cluster (und nicht als Mitglied einer Gruppe).

Als Mandantenadministrator:

Hinweis

Bei den folgenden Anweisungen wird davon ausgegangen, dass Sie zur Administratorengruppe des Mandanten gehören und daher über die erforderlichen Berechtigungen zum Erstellen von Benutzern, Gruppen und IAM-Policys verfügen.
  1. Erstellen Sie einen neuen Oracle Cloud Infrastructure IAM-Benutzeraccount für den Benutzer ohne Administratorrechte (z.B. jdoe@acme.com). Siehe So erstellen Sie einen Benutzer.
  2. Notieren Sie sich die OCID des neuen IAM-Benutzeraccounts (Beispiel: ocid1.user.oc1..aa______tx5a, aus Gründen der Lesbarkeit abgekürzt).
  3. Erstellen Sie eine neue Oracle Cloud Infrastructure-IAM-Gruppe (Beispiel: acme-developer-group), und fügen Sie ihr den neuen IAM-Benutzeraccount hinzu. Siehe So erstellen Sie eine Gruppe.
  4. Erstellen Sie eine neue Oracle Cloud Infrastructure-Policy, die der neuen Gruppe die CLUSTER_USE-Berechtigung für Cluster erteilt. Verwenden Sie dazu eine Policy-Anweisung wie:
    Allow group acme-developer-group to use clusters in <location>

    Ersetzen Sie in der obigen Policy-Anweisung <location> durch tenancy (wenn Sie die Policy im Root-Compartment des Mandanten erstellen) oder durch compartment <compartment-name> (wenn Sie die Policy in einem einzelnen Compartment erstellen). Siehe So erstellen Sie eine Policy.

    Wenn eine Gruppe nicht in der Standardidentitätsdomain enthalten ist, stellen Sie dem Gruppennamen den Namen der Identitätsdomain im Format group '<identity-domain-name>'/'group-name' voran. Sie können eine Gruppe auch mit ihrer OCID im Format group id <group-ocid> angeben.

Als Clusteradministrator:

Hinweis

Bei den folgenden Anweisungen wird davon ausgegangen, dass Sie über die erforderlichen Berechtigungen zum Erstellen und Verwalten von Clustern und den erforderlichen Zugriff zum Erstellen von Kubernetes-RBAC-Rollen und -Clusterrollen verfügen.
  1. Erstellen Sie in einem Texteditor das folgende Manifest (z.B. pod-reader-user.yaml), um eine Kubernetes-RBAC-Rolle und ein Rollen-Binding zu definieren, damit der neue IAM-Benutzeraccount Pods im Kube-System-Namespace auflisten kann:
    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
    

    wobei name: <user-ocid> die OCID des neuen IAM-Benutzeraccounts angibt, den Sie zuvor erstellt haben. Beispiel: name: ocid1.user.oc1..aa______tx5a

  2. Erstellen Sie die neue Rolle und rolebinding, indem Sie Folgendes eingeben:
    kubectl apply -f pod-reader-user.yml

Als Benutzer ohne Administratorrechte:

Hinweis

Bei den folgenden Anweisungen wird davon ausgegangen, dass Sie über die Zugangsdaten des neuen IAM-Benutzeraccounts verfügen, der zuvor erstellt wurde. Daher verfügen Sie über die erforderlichen Berechtigungen zur Verwendung von Kubernetes-Clustern im Mandanten oder Compartment.
  1. Melden Sie sich mit den Zugangsdaten des neuen IAM-Benutzeraccounts bei der Konsole an.
  2. Konfigurieren Sie den Clusterzugriff, indem Sie die Anweisungen unter Clusterzugriff einrichten befolgen.
  3. Listen Sie die Pods im kube-system-Namespace auf, indem Sie Folgendes eingeben:
    kubectl get pods -n kube-system
Beispiel 3: Kubernetes-Rolle und Rolebinding erstellen, damit eine Gruppe Pods in einem Cluster lesen kann

So erteilen Sie Nicht-Administratorbenutzern in einer Gruppe die erforderlichen Oracle Cloud Infrastructure- und Kubernetes-RBAC-Berechtigungen, um Pods anzuzeigen, die auf einem Kubernetes-Cluster ausgeführt werden. In diesem Beispiel erhalten Benutzer ohne Administratorrechte Zugriff auf das Cluster als Mitglieder einer IAM-Gruppe (Sie können stattdessen eine dynamische Gruppe angeben).

Als Mandantenadministrator:

Hinweis

Bei den folgenden Anweisungen wird davon ausgegangen, dass Sie zur Administratorengruppe des Mandanten gehören und daher über die erforderlichen Berechtigungen zum Erstellen von Benutzern, Gruppen und IAM-Policys verfügen.
  1. Erstellen Sie einen neuen Oracle Cloud Infrastructure IAM-Benutzeraccount für einen Benutzer ohne Administratorrechte (z.B. jsmith@acme.com). Siehe So erstellen Sie einen Benutzer.
  2. Erstellen Sie eine neue Oracle Cloud Infrastructure-IAM-Gruppe (Beispiel: acme-developer-group), und fügen Sie ihr den neuen IAM-Benutzeraccount hinzu. Siehe So erstellen Sie eine Gruppe.
  3. Notieren Sie sich die OCID der neuen IAM-Gruppe (Beispiel: ocid1.group.oc1..aa______m7dt, aus Gründen der Lesbarkeit abgekürzt).
  4. Erstellen Sie eine neue Oracle Cloud Infrastructure-Policy, die der neuen Gruppe die CLUSTER_USE-Berechtigung für Cluster erteilt. Verwenden Sie dazu eine Policy-Anweisung wie:
    Allow group acme-developer-group to use clusters in <location>

    Ersetzen Sie in der obigen Policy-Anweisung <location> durch tenancy (wenn Sie die Policy im Root-Compartment des Mandanten erstellen) oder durch compartment <compartment-name> (wenn Sie die Policy in einem einzelnen Compartment erstellen). Siehe So erstellen Sie eine Policy.

    Wenn eine Gruppe nicht in der Standardidentitätsdomain enthalten ist, stellen Sie dem Gruppennamen den Namen der Identitätsdomain im Format group '<identity-domain-name>'/'group-name' voran. Sie können eine Gruppe auch mit ihrer OCID im Format group id <group-ocid> angeben.

Als Clusteradministrator:

Hinweis

Bei den folgenden Anweisungen wird davon ausgegangen, dass Sie über die erforderlichen Berechtigungen zum Erstellen und Verwalten von Clustern und den erforderlichen Zugriff zum Erstellen von Kubernetes-RBAC-Rollen und -Clusterrollen verfügen.
  1. Erstellen Sie in einem Texteditor das folgende Manifest (z.B. pod-reader-group.yaml), um eine Kubernetes-RBAC-Rolle und ein Rollen-Binding zu definieren, damit Benutzer in der neuen IAM-Gruppe Pods im kube-system-Namespace auflisten können:
    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
    

    wobei name: <group-ocid> die OCID der neuen IAM-Gruppe angibt, die Sie zuvor erstellt haben. Beispiel: name: ocid1.group.oc1..aa______m7dt

  2. Erstellen Sie die neue Rolle und rolebinding, indem Sie Folgendes eingeben:
    kubectl apply -f pod-reader-group.yml

Als Benutzer ohne Administratorrechte:

Hinweis

Bei den folgenden Anweisungen wird davon ausgegangen, dass Sie über die Zugangsdaten des neuen IAM-Benutzeraccounts verfügen, der zuvor als Mitglied der neuen IAM-Gruppe erstellt wurde. Daher verfügen Sie über die erforderlichen Berechtigungen zur Verwendung von Kubernetes-Clustern im Mandanten oder Compartment.
  1. Melden Sie sich mit den Zugangsdaten des neuen IAM-Benutzeraccounts bei der Konsole an.
  2. Konfigurieren Sie den Clusterzugriff, indem Sie die Anweisungen unter Clusterzugriff einrichten befolgen.
  3. Listen Sie die Pods im kube-system-Namespace auf, indem Sie Folgendes eingeben:
    kubectl get pods -n kube-system
Beispiel 4: Erstellen einer Kubernetes-Clusterrolle und eines clusterrolebinding, damit Benutzer und Gruppen Secrets in einem Cluster auflisten können

So erteilen Sie Nicht-Administratorbenutzern in einer Gruppe die erforderlichen Oracle Cloud Infrastructure- und Kubernetes-RBAC-Berechtigungen, um Pods anzuzeigen, die auf einem Kubernetes-Cluster ausgeführt werden. In diesem Beispiel erhält ein Benutzer ohne Administratorrechte explizit oder als Mitglied einer IAM-Gruppe Zugriff auf das Cluster (Sie können stattdessen eine dynamische Gruppe angeben).

Als Mandantenadministrator:

Hinweis

Bei den folgenden Anweisungen wird davon ausgegangen, dass Sie zur Administratorengruppe des Mandanten gehören und daher über die erforderlichen Berechtigungen zum Erstellen von Benutzern, Gruppen und IAM-Policys verfügen.
  1. Erstellen Sie einen neuen Oracle Cloud Infrastructure IAM-Benutzeraccount für einen Benutzer ohne Administratorrechte (z.B. jjones@acme.com). Siehe So erstellen Sie einen Benutzer.
  2. Wenn Sie nur diesem Benutzer das Auflisten von Secrets ermöglichen möchten, notieren Sie sich die OCID des neuen IAM-Benutzeraccounts (Beispiel: ocid1.user.oc1..aa______4gs6, aus Gründen der Lesbarkeit abgekürzt).
  3. Erstellen Sie eine neue Oracle Cloud Infrastructure-IAM-Gruppe (Beispiel: acme-developer-group), und fügen Sie ihr den neuen IAM-Benutzeraccount hinzu. Siehe So erstellen Sie eine Gruppe.
  4. Wenn Sie allen Benutzern in dieser Gruppe das Auflisten von Secrets ermöglichen möchten, notieren Sie sich die OCID der neuen IAM-Gruppe (Beispiel: ocid1.group.oc1..aa______e26f, aus Gründen der Lesbarkeit abgekürzt).
  5. Erstellen Sie eine neue Oracle Cloud Infrastructure-Policy, die der neuen Gruppe die CLUSTER_USE-Berechtigung für Cluster erteilt. Verwenden Sie dazu eine Policy-Anweisung wie:
    Allow group acme-developer-group to use clusters in <location>

    Ersetzen Sie in der obigen Policy-Anweisung <location> durch tenancy (wenn Sie die Policy im Root-Compartment des Mandanten erstellen) oder durch compartment <compartment-name> (wenn Sie die Policy in einem einzelnen Compartment erstellen). Siehe So erstellen Sie eine Policy.

    Wenn eine Gruppe nicht in der Standardidentitätsdomain enthalten ist, stellen Sie dem Gruppennamen den Namen der Identitätsdomain im Format group '<identity-domain-name>'/'group-name' voran. Sie können eine Gruppe auch mit ihrer OCID im Format group id <group-ocid> angeben.

Als Clusteradministrator:

Hinweis

Bei den folgenden Anweisungen wird davon ausgegangen, dass Sie über die erforderlichen Berechtigungen zum Erstellen und Verwalten von Clustern und den erforderlichen Zugriff zum Erstellen von Kubernetes-RBAC-Rollen und -Clusterrollen verfügen.
  1. Führen Sie in einem Texteditor eine der folgenden Aktionen aus, je nachdem, ob Sie nur den neuen IAM-Benutzer oder alle Benutzer in der neuen IAM-Gruppe aktivieren möchten, um Secrets in einem Kubernetes-Cluster aufzulisten:
    • Wenn Sie nur dem neuen IAM-Benutzer das Auflisten von Secrets in einem Kubernetes-Cluster ermöglichen möchten, erstellen Sie das folgende Manifest (Beispiel: 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
      

      wobei name: <user-ocid> die OCID des neuen IAM-Benutzers angibt, den Sie zuvor erstellt haben. Beispiel: name: ocid1.user.oc1..aa______4gs6

    • Wenn Sie allen Benutzern in der neuen IAM-Gruppe das Auflisten von Secrets in einem Kubernetes-Cluster ermöglichen möchten, erstellen Sie das folgende Manifest (Beispiel: 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
      

      Dabei ist name: <group-ocid> die OCID der neuen IAM-Gruppe, die Sie zuvor erstellt haben. Beispiel: ocid1.group.oc1..aa______e26f

  2. Erstellen Sie die neue clusterrole und das clusterrolebinding, indem Sie Folgendes eingeben:
    kubectl apply -f secret-reader.yml

Als Benutzer ohne Administratorrechte:

Hinweis

Bei den folgenden Anweisungen wird davon ausgegangen, dass Sie über die Zugangsdaten des neuen IAM-Benutzeraccounts verfügen, der zuvor als Mitglied der neuen IAM-Gruppe erstellt wurde. Daher verfügen Sie über die erforderlichen Berechtigungen, um Kubernetes-Cluster im Mandanten oder Compartment explizit oder als Mitglied einer Gruppe zu verwenden.
  1. Melden Sie sich mit den Zugangsdaten des neuen IAM-Benutzeraccounts bei der Konsole an.
  2. Konfigurieren Sie den Clusterzugriff, indem Sie die Anweisungen unter Clusterzugriff einrichten befolgen.
  3. Listen Sie die Secrets in allen Namespaces auf, indem Sie Folgendes eingeben:
    kubectl get secrets --all-namespaces