Verwalten von Ebenen in Antrea

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.

Konfigurieren von Einstellungen für den rollenbasierten Zugriff auf Ebenen

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.

Erteilen von Berechtigungen für einen Benutzer zum Bearbeiten einer Ebene

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.

  1. Wechseln Sie zum Kontext des Arbeitslastclusters:

    kubectl config use-context *WORKLOAD-CLUSTER-CONTEXT*
    
  2. 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
    
  3. Wenden Sie die Definitionen an:

    kubectl apply -f ClusterRoleBinding.yaml
    

Erteilen von Berechtigungen für einen Benutzer zum Verweisen auf eine Ebene in einer Antrea-Netzwerkrichtlinie

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.

  1. Wechseln Sie zum Kontext des Arbeitslastclusters:

    kubectl config use-context *WORKLOAD-CLUSTER-CONTEXT*
    
  2. 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.

  3. Wenden Sie die CRD an:

    kubectl apply -f TierEntitlement.yaml
    
  4. 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.

  5. 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:

  • Der Benutzer securityops kann eine Antrea ClusterNetworkPolicy (ACNP) oder eine Antrea NetworkPolicy (ANP) erstellen, die einen Verweis auf die Ebene emergency in der Spezifikation enthält.
  • Der Benutzer 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).
  • Der Benutzer securityops kann eine vorhandene ACNP oder eine ANP aktualisieren oder patchen und den Verweis auf die Ebene emergency aus der Spezifikation entfernen.
  • Der Benutzer securityops kann eine vorhandene ACNP oder eine ANP löschen, die einen Verweis auf die Ebene emergency in der Spezifikation enthält.
  • Der Benutzer securityops kann die Details einer vorhandenen ACNP oder einer ANP abrufen, die einen Verweis auf die Ebene emergency in der Spezifikation enthält.
  • Dem 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.
  • Dem 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.
  • Dem 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.
Hinweis

Informationen zum Festlegen von Cluster-Netzwerkrichtlinien für Antrea finden Sie unter Festlegen von Cluster-Netzwerkrichtlinien für Antrea.

check-circle-line exclamation-circle-line close-line
Scroll to top icon