Anthos VM Runtime verwaltet eine Vielzahl von Ressourcen im Zusammenhang mit Ihren VMs. Zu diesen Ressourcen gehören Anthos-, KubeVirt-definierte und Kubernetes-Ressourcen. Die Anthos-VM-Laufzeit verwendet die rollenbasierte Zugriffssteuerung (Role-based Access Control, RBAC), um Berechtigungen für verwaltete Ressourcen festzulegen und durchzusetzen. Wir haben vier vorkonfigurierte ClusterRoles bereitgestellt, um Ihnen die Arbeit mit diesen Ressourcen und die Verwaltung Ihrer VMs zu erleichtern:
kubevm.admin
kubevm.edit
kubevm.view
kubevm.cluster.view
Diese integrierten Rollen bieten ein allgemeines Zugriffsmodell für die benutzerdefinierten Ressourcen im Zusammenhang mit der Anthos-VM-Laufzeit. Jede Rolle hat vordefinierte Berechtigungen, um mit den Ressourcen zu arbeiten. Dieses Dokument enthält Informationen zu Ressourcen, die Anthos VM Runtime verwaltet, damit Clusteradministratoren ihr eigenes Zugriffsmodell anpassen können.
Vordefinierte ClusterRoles
In diesem Abschnitt werden alle vordefinierten ClusterRoles beschrieben. Diese ClusterRoles sind nur verfügbar, wenn die Anthos-VM-Laufzeit aktiviert ist:
- Wenn die Anthos-VM-Laufzeit aktiviert ist, werden automatisch die vier vordefinierten ClusterRoles erstellt.
- Wenn die Anthos-VM-Laufzeit deaktiviert ist, werden die vier vordefinierten ClusterRoles gelöscht.
In der folgenden Tabelle sind die Clusterrollen und die zugehörigen Berechtigungen aufgeführt:
Clusterrolle | Beschreibung | Verben aufrufen |
---|---|---|
kubevm.admin |
Gewährt vollständigen Zugriff auf alle Anthos-Ressourcen. |
|
kubevm.edit |
Gewährt Lese-/Schreibzugriff auf alle Anthos-Ressourcen. |
|
kubevm.view |
Gewährt Lesezugriff auf alle Anthos-Ressourcen. |
|
kubevm.cluster.view |
Gewährt Lesezugriff auf clusterbezogene Ressourcen. Diese Clusterrolle ist erforderlich, wenn die Bearbeitungs-/Ansichtsrolle an einen Namespace gebunden ist, während Zugriff auf clusterbezogene Ressourcen benötigt wird. |
|
Aggregierte ClusterRoles
Die ClusterRole-Objekte kubevm.admin
, kubevm.view
und kubevm.edit
werden nicht direkt verwendet. Stattdessen werden diese drei Rollen mit den Kubernetes-Standard-Clusterrollen admin
, view
und edit
zusammengefasst. Diese Aggregation erweitert die Kubernetes-Standardrollen, sodass sie zum Verwalten von Anthos-Ressourcen verwendet werden können. Mit aggregierten ClusterRoles können Sie Kubernetes-Standardrollen verwenden, um den Zugriff auf Anthos-Ressourcen zu verwalten, oder eigene Rollen anhand der vordefinierten ClusterRoles erstellen.
Beispiel für ein Aggregationslabel
Die ClusterRole kubevm.edit
hat das Label rbac.authorization.k8s.io/aggregate-to-edit: "true"
, das sie für die Kubernetes-Clustercluster edit
zusammenfasst. Die Berechtigungen in der ClusterRole kubevm.edit
werden der Kubernetes-Standardrolle edit
gewährt. Die ClusterRole-Objekte kubevm.admin
und kubevm.view
werden auf ähnliche Weise mit den Annotationen aggregate-to-admin
oder aggregate-to-view
zusammengefasst.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: kubevm.edit
labels:
kubevm: kubevm.edit
rbac.authorization.k8s.io/aggregate-to-edit: "true"
...
Typische Nutzerszenarien
In den folgenden Abschnitten wird beschrieben, wie Sie einem Nutzer oder einer Gruppe von Nutzern mit Rollen und Clustern die in den vordefinierten ClusterRole-Objekten angegebenen Berechtigungen gewähren.
Clusteradministrator
Wenn Sie einem Nutzer oder einer Gruppe von Nutzern Administratorberechtigungen erteilen möchten, erstellen Sie ClusterRole mit der Kubernetes-Standard-Clustercluster admin
.
Beispiel für ClusterRole
Im folgenden admin-charlie
-Beispielclustercluster erhält der Nutzer charlie
-Administratorberechtigungen. ClusterRole verwendet Berechtigungen aus der standardmäßigen Kubernetes-ClusterRole admin
, die Berechtigungen für die vordefinierte ClusterRole kubevm.admin
durch Aggregation enthält.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-charlie
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: admin
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: charlie
Clusterbetrachter
Wenn Sie einem Nutzer oder einer Nutzergruppe Berechtigungen für den Betrachter gewähren möchten, müssen Sie ein ClusterRole-Objekt mit der Kubernetes-Standardclusterclusterrolle view
erstellen. Ein ähnliches ClusterRole-Beispiel finden Sie unter ClusterRole-Beispiel.
Cluster editor
Wenn Sie einem Nutzer oder einer Nutzergruppe Bearbeitungsberechtigungen erteilen möchten, erstellen Sie ein ClusterRole-Objekt mit der Kubernetes-Standardclusterclusterrolle edit
. Ein ähnliches ClusterRole-Beispiel finden Sie unter ClusterRole-Beispiel.
Namespace-Editor
Wenn Sie einem Nutzer oder einer Nutzergruppe Namespace-Bearbeiter-Berechtigungen gewähren möchten, müssen Sie zwei separate Bindungen erstellen:
Erstellen Sie ein KPI für den Namespace und verweisen Sie auf die standardmäßige Kubernetes-ClusterRole
edit
.Erstellen Sie ein ClusterRole-Objekt, das auf die vordefinierte ClusterRole
kubevm.cluster.view
verweist. Dieses ClusterBlob ist erforderlich, da einige Ressourcen wievirtualmachinetypes
undstorageclasses
keinen Namespace haben.
Beispiele für Rollenbindungen (Namespace-Editor)
Mit den folgenden Beispielen für Blob und ClusterBlob erhalten Nutzer die Berechtigung charlie
Editor für Ressourcen im Namespace default
:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: edit-charlie
namespace: default
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: edit
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: charlie
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: kubevm-cluster-view-charlie
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: kubevm.cluster.view
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: charlie
Namespace-Betrachter
Wenn Sie einem Nutzer oder einer Nutzergruppe Namespace-Betrachter-Berechtigungen gewähren möchten, müssen Sie zwei separate Bindungen erstellen:
Erstellen Sie ein KPI für den Namespace und verweisen Sie auf die standardmäßige Kubernetes-ClusterRole
view
.Erstellen Sie ein ClusterRole-Objekt, das auf die vordefinierte ClusterRole
kubevm.cluster.view
verweist.
Unter Rollenbindungsbeispiele (Namespace-Editor) finden Sie weitere Beispiele für Blob und ClusterRole.
Von der Anthos-VM-Laufzeit verwendete Ressourcen
Die folgenden Abschnitte enthalten Ressourcentabellen, die von der Anthos-VM-Laufzeit verwendet werden. Diese Abschnitte dienen nur zu Informationszwecken. Wenn Sie vorhaben, vordefinierte Rollen in den typischen Nutzerszenarien zu verwenden, die in den vorherigen Abschnitten beschrieben wurden, wird diese Information nicht spezifisch verwendet.
Wenn Sie die vordefinierten Rollen jedoch nicht verwenden möchten, können Sie anhand dieser Ressourceninformationen Ihre eigenen benutzerdefinierten Rollen erstellen.
Von Anthos definierte Ressourcen
Der Schwerpunkt der vordefinierten ClusterRoles liegt auf dem Zugriff auf von Anthos definierte Ressourcen. In der folgenden Tabelle sind die Anthos-Ressourcen und die Zugriffsberechtigungen aufgeführt, die von den vordefinierten ClusterRole-Objekten erteilt werden.
Ressource | Generiert | Clusterbezogen | kubevm.admin |
kubevm.view |
kubevm.edit |
kubevm.cluster.view |
---|---|---|---|---|---|---|
virtualmachineaccessrequests |
– | – | Vollständig | Lesen | Lesen/Schreiben | – |
virtualmachinedisks |
– | – | Vollständig | Lesen | Lesen/Schreiben | – |
virtualmachines |
– | – | Vollständig | Lesen | Lesen/Schreiben | – |
gpuallocations |
– | – | Vollständig | Lesen | Lesen/Schreiben | – |
guestenvironmentdata |
Ja | – | Vollständig | Lesen | Lesen/Schreiben | – |
vmruntimes |
– | Ja | Vollständig | Lesen | Lesen/Schreiben | Lesen |
virtualmachinetypes |
– | Ja | Vollständig | Lesen | Lesen/Schreiben | Lesen |
vmhighavailabilitypolicies |
– | Ja | Vollständig | Lesen | Lesen/Schreiben | Lesen |
networkinterfaces |
Ja | – | Vollständig | Lesen | Lesen/Schreiben | – |
networks |
– | Ja | Vollständig | Lesen | Lesen/Schreiben | Lesen |
KubeVirt-Ressourcen
Die Anthos-VM-Laufzeit basiert auf dem Open-Source-Projekt KubeVirt. Standardmäßig werden die Berechtigungen für die KubeVirt-Ressourcen automatisch in den Kubernetes-Standardrollen zusammengefasst, ähnlich wie bei den von Anthos verwalteten Ressourcen. Verwenden Sie die Ressourceninformationen in der folgenden Tabelle, wenn Sie eigene benutzerdefinierte Rollen erstellen möchten:
Ressource | Generiert | Clusterbezogen |
---|---|---|
virtualmachineinstances /Konsole |
– | – |
virtualmachineinstances /VNC |
– | – |
virtualmachineinstances /Portweiterleitung |
– | – |
virtualmachineinstances /Start |
– | – |
virtualmachineinstances /Stopp |
– | – |
virtualmachineinstances /Neustart |
– | – |
virtualmachines |
Ja | – |
virtualmachineinstances |
Ja | – |
datavolumes |
– | – |
storageprofiles |
– | Ja |
cdiconfigs |
– | Ja |
Kubernetes-Ressourcen
Wenn Sie mit Anthos-VM-Laufzeit und VMs arbeiten, müssen Sie möglicherweise den Zugriff auf die folgenden Kubernetes-Ressourcen verwalten. Verwenden Sie die Ressourceninformationen in der folgenden Tabelle, wenn Sie eigene benutzerdefinierte Rollen erstellen möchten:
Ressource | Generiert | Clusterbezogen |
---|---|---|
pods |
Ja | – |
services |
– | – |
persistentvolumeclaims |
– | – |
secrets |
– | – |
nodes |
– | Ja |
storageclasses |
– | Ja |
configmaps |
– | – |
YAML-Beispiele für ClusterRole
Sie können YAML für die ClusterRoles mit dem folgenden kubectl
-Befehl abrufen:
kubectl get ClusterRole CLUSTERROLE_NAME -o yaml --kubeconfig KUBECONFIG_PATH
Dabei gilt:
CLUSTERROLE_NAME
: der Name der ClusterRole, z. B.kubevm.cluster.view
.KUBECONFIG_PATH
: der Pfad zur kubeconfig-Datei für den Cluster.
Hier sind Beispiele für die Befehlsausgabe für jede der vier vordefinierten ClusterRoles:
kubevm.admin
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: creationTimestamp: "2022-10-11T21:10:31Z" labels: kubevm: kubevm.admin rbac.authorization.k8s.io/aggregate-to-admin: "true" name: kubevm.admin resourceVersion: "16654950" uid: 3296c279-6e85-4ea6-b250-548bf0c3e935 rules: - apiGroups: - vm.cluster.gke.io resources: - virtualmachineaccessrequests - virtualmachinedisks - virtualmachines - gpuallocations - guestenvironmentdata - vmruntimes - virtualmachinetypes - vmhighavailabilitypolicies verbs: - get - delete - create - update - patch - list - watch - deletecollection - apiGroups: - networking.gke.io resources: - networkinterfaces - networks verbs: - get - delete - create - update - patch - list - watch - deletecollection
kubevm.edit
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: creationTimestamp: "2022-10-11T21:10:31Z" labels: kubevm: kubevm.edit rbac.authorization.k8s.io/aggregate-to-edit: "true" name: kubevm.edit resourceVersion: "16654951" uid: 237bf9ae-b2c8-4303-94dc-e6425a2df331 rules: - apiGroups: - vm.cluster.gke.io resources: - virtualmachineaccessrequests - virtualmachinedisks - virtualmachines - gpuallocations - guestenvironmentdata - vmruntimes - virtualmachinetypes - vmhighavailabilitypolicies verbs: - get - delete - create - update - patch - list - watch - apiGroups: - networking.gke.io resources: - networkinterfaces - networks verbs: - get - delete - create - update - patch - list - watch
kubevm.view
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: creationTimestamp: "2022-10-11T21:10:31Z" labels: kubevm: kubevm.view rbac.authorization.k8s.io/aggregate-to-view: "true" name: kubevm.view resourceVersion: "16654953" uid: b5b54e2d-0097-4698-abbd-aeac212d0a34 rules: - apiGroups: - vm.cluster.gke.io resources: - virtualmachineaccessrequests - virtualmachinedisks - virtualmachines - gpuallocations - guestenvironmentdata - vmruntimes - virtualmachinetypes - vmhighavailabilitypolicies verbs: - get - list - watch - apiGroups: - networking.gke.io resources: - networkinterfaces - networks verbs: - get - list - watch
kubevm.cluster.view
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: creationTimestamp: "2022-10-11T21:10:31Z" labels: kubevm: kubevm.cluster.view name: kubevm.cluster.view resourceVersion: "16654956" uid: b25dde64-67da-488b-81d2-1a08f9a4a7c1 rules: - apiGroups: - vm.cluster.gke.io resources: - vmruntimes - virtualmachinetypes - vmhighavailabilitypolicies verbs: - get - list - watch - apiGroups: - networking.gke.io resources: - networks verbs: - get - list - watch