In Antrea besteht eine Ebene aus bestimmten Netzwerkrichtlinien, die hierarchisch gruppiert sind. Eine Ressourcendefinition (Custom Resource Definition, CRD) für eine Antrea-native NetworkPolicy
oder eine benutzerdefinierte ClusterNetworkPolicy
enthält einen optionalen Verweis auf die Ebene, zu der sie gehört. Beim Filtern des Netzwerkdatenverkehrs werden Antrea NetworkPolicies, die höheren Ebenen zugeordnet sind (mit einem niedrigen numerischen Prioritätswert), zuerst erzwungen. Weitere Informationen zu den verschiedenen Ebenentypen in Antrea finden Sie unter Antrea-Netzwerkrichtlinien-CRDs.
Der rollenbasierte Zugriff auf eine Ebene soll sicherstellen, dass nur autorisierte Benutzer auf eine Ebene in den Antrea-nativen Richtlinien verweisen können. Ein Clusteradministrator kann Antrea NetworkPolicies an eine Ebene mit hoher Priorität anhängen und verhindern, dass ein normaler Benutzer Antrea NetworkPolicies an die Ebene anhängt. Mit dieser Funktion kann der Clusteradministrator Sicherheitsrichtlinien in einem Cluster erzwingen, die von einem normalen Benutzer nicht außer Kraft gesetzt werden können.
Antrea bietet sechs Ebenen mit statischen Prioritäten. Standardmäßig können nur Kubernetes-Administratoren benutzerdefinierte Ebenen in Antrea erstellen. Um Benutzern Berechtigungen zum Erstellen neuer Ebenen und Bearbeiten der Ebenenprioritäten zu erteilen, konfigurieren Sie die ClusterRole
-Einstellungen und die ClusterRoleBinding
-Einstellungen im Kontext des Arbeitslastclusters.
Wechseln Sie zum Kontext des Arbeitslastclusters:
kubectl config use-context *WORKLOAD-CLUSTER-CONTEXT*
Erstellen Sie eine ClusterRoleBinding
-YAML-Datei, wie im folgenden Beispiel gezeigt (der securityops
-Benutzer hat die Möglichkeit erhalten, Ressourcen der Ebene [Tier] zu lesen, zu erstellen, zu löschen und zu aktualisieren):
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: tier-edit
rules:
- apiGroups: ["crd.antrea.io"]
resources: ["tiers"]
verbs: ["get", "list", "create", "patch", "update", "delete"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: tier-bind
subjects:
- kind: User
name: securityops # Name is case sensitive
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: tier-edit
apiGroup: rbac.authorization.k8s.io
Wenden Sie die Definitionen an:
kubectl apply -f ClusterRoleBinding.yaml
Standardmäßig kann jeder Benutzer eine Antrea-Netzwerkrichtlinie an eine beliebige Ebene anhängen. Um einer Gruppe von Benutzern Berechtigungen zum Verweisen auf eine Ebene in einer Antrea-Netzwerkrichtlinie zu erteilen und alle anderen Benutzer zu blockieren, erstellen Sie eine TierEntitlement
-CRD und weisen Sie den zulässigen Benutzern die Berechtigung über eine TierEntitlementBinding
-CRD zu.
Wechseln Sie zum Kontext des Arbeitslastclusters:
kubectl config use-context *WORKLOAD-CLUSTER-CONTEXT*
Erstellen Sie eine YAML-Datei für die TierEntitlement
-CRD wie im folgenden Beispiel gezeigt:
apiVersion: crd.antrea.tanzu.vmware.com/v1alpha1
kind: TierEntitlement
metadata:
name: emergency-edit
spec:
tiers: ["emergency"]
permission: "edit"
Hinweis
Edit
ist die einzige Berechtigung, die hier gültig ist. Sie ermöglicht den berechtigten Benutzern das Erstellen, Löschen, Aktualisieren und Patchen der Antrea-nativen Richtlinien, die zu den aufgelisteten Ebenen gehören.
Wenden Sie die CRD an:
kubectl apply -f TierEntitlement.yaml
Erstellen Sie eine YAML-Datei für die TierEntitlementBinding
-CRD, um die Berechtigung den Benutzern zuzuordnen, wie in diesem Beispiel gezeigt:
apiVersion: crd.antrea.tanzu.vmware.com/v1alpha1
kind: TierEntitlementBinding
metadata:
name: emergency-sec-bind
spec:
subjects:
- kind: User
name: securityops
apiGroup: rbac.authorization.k8s.io
- kind: Group
name: security-admins
apiGroup: rbac.authorization.k8s.io
- kind: ServiceAccount
name: network-admins
namespace: kube-system
tierEntitlement: emergency-edit
In diesem Beispiel wurde die Ebenenberechtigung emergency-edit
den Benutzer zugewiesen, die im Feld subjects
angegeben sind. Die unter subjects
angegebenen Benutzer sind „User“, „Group“ und „ServiceAccount“. Weitere Informationen finden Sie unter Verwenden der RBAC-Autorisierung.
Wenden Sie die CRD an:
kubectl apply -f TierEntitlementBinding.yaml
In den beiden obigen YAML-Beispieldateien wird die Ebene emergency
durch die Ebenenberechtigung emergency-edit
gesteuert. Die Benutzer, denen die Berechtigung emergency-edit
zugewiesen ist, erhalten bestimmte Berechtigungen, während andere Benutzer (normalUser
) bestimmte Aktionen nicht ausführen können. Beispiel:
securityops
kann eine Antrea ClusterNetworkPolicy (ACNP) oder eine Antrea NetworkPolicy (ANP) erstellen, die einen Verweis auf die Ebene emergency
in der Spezifikation enthält.securityops
kann eine vorhandene ACNP oder eine ANP aktualisieren oder patchen und einen Verweis auf die Ebene emergency
in der Spezifikation hinzufügen (wenn der Benutzer securityops
die Berechtigung erhalten hat, einen Verweis auf die vorhandene Ebene zu bearbeiten).securityops
kann eine vorhandene ACNP oder eine ANP aktualisieren oder patchen und den Verweis auf die Ebene emergency
aus der Spezifikation entfernen.securityops
kann eine vorhandene ACNP oder eine ANP löschen, die einen Verweis auf die Ebene emergency
in der Spezifikation enthält.securityops
kann die Details einer vorhandenen ACNP oder einer ANP abrufen, die einen Verweis auf die Ebene emergency
in der Spezifikation enthält.normalUser
, der versucht, eine ACNP oder eine ANP zu erstellen, die einen Verweis auf die Ebene emergency
in der Spezifikation enthält, wird die Berechtigung verweigert.normalUser
, der versucht, eine ACNP oder eine ANP zu löschen, die einen Verweis auf die Ebene emergency
in der Spezifikation enthält, wird die Berechtigung verweigert.normalUser
, der versucht, eine ACNP oder eine ANP zu aktualisieren oder zu patchen, die einen Verweis auf die Ebene emergency
in der Spezifikation enthält, wird die Berechtigung verweigert.HinweisInformationen zum Festlegen von Cluster-Netzwerkrichtlinien für Antrea finden Sie unter Festlegen von Cluster-Netzwerkrichtlinien für Antrea.