Einschränkungen der POD-Sicherheitsrichtlinie verstehen
Astra Control Center unterstützt die Einschränkung von Berechtigungen durch POD-Sicherheitsrichtlinien (PSPs). Mithilfe der POD-Sicherheitsrichtlinien können Sie begrenzen, welche Benutzer oder Gruppen Container ausführen können und welche Berechtigungen diese Container haben können.
Einige Kubernetes Distributionen, wie z. B. RKE2, verfügen über eine Standard-Pod-Sicherheitsrichtlinie, die zu restriktiv ist und bei der Installation von Astra Control Center Probleme verursacht.
Anhand der hier enthaltenen Informationen und Beispiele können Sie die von Astra Control Center erstellten POD-Sicherheitsrichtlinien verstehen und die Richtlinien für die POD-Sicherheit konfigurieren, die den erforderlichen Schutz bieten, ohne die Funktionen des Astra Control Center zu beeinträchtigen.
PSPs, die vom Astra Control Center installiert werden
Astra Control Center erstellt während der Installation mehrere POD-Sicherheitsrichtlinien. Einige davon sind dauerhaft, und einige von ihnen werden während bestimmter Operationen erstellt und werden entfernt, sobald der Vorgang abgeschlossen ist.
PSPs, die während der Installation erstellt wurden
Bei der Installation von Astra Control Center installiert der Astra Control Center-Operator eine benutzerdefinierte POD-Sicherheitsrichtlinie, ein Rollenobjekt und ein rollenbindendes Objekt, um die Implementierung von Astra Control Center-Diensten im Astra Control Center-Namespace zu unterstützen.
Die neue Richtlinie und die neuen Objekte haben folgende Attribute:
kubectl get psp NAME PRIV CAPS SELINUX RUNASUSER FSGROUP SUPGROUP READONLYROOTFS VOLUMES avp-psp false RunAsAny RunAsAny RunAsAny RunAsAny false * netapp-astra-deployment-psp false RunAsAny RunAsAny RunAsAny RunAsAny false * kubectl get role NAME CREATED AT netapp-astra-deployment-role 2022-06-27T19:34:58Z kubectl get rolebinding NAME ROLE AGE netapp-astra-deployment-rb Role/netapp-astra-deployment-role 32m
Während des Backup-Betriebs erstellte PSPs
Astra Control Center erstellt während des Backup-Betriebs eine dynamische Pod-Sicherheitsrichtlinie, ein ClusterRollenobjekt und ein rollenbindendes Objekt. Diese unterstützen den Backup-Prozess, der in einem separaten Namespace geschieht.
Die neue Richtlinie und die neuen Objekte haben folgende Attribute:
kubectl get psp NAME PRIV CAPS SELINUX RUNASUSER FSGROUP SUPGROUP READONLYROOTFS VOLUMES netapp-astra-backup false DAC_READ_SEARCH RunAsAny RunAsAny RunAsAny RunAsAny false * kubectl get role NAME CREATED AT netapp-astra-backup 2022-07-21T00:00:00Z kubectl get rolebinding NAME ROLE AGE netapp-astra-backup Role/netapp-astra-backup 62s
PSPs, die während des Clustermanagements erstellt wurden
Wenn Sie einen Cluster verwalten, installiert Astra Control Center den netapp Monitoring Operator im Managed Cluster. Dieser Operator erstellt eine Pod-Sicherheitsrichtlinie, ein ClusterRole-Objekt und ein RoleBending-Objekt, um Telemetrieservices im Namespace von Astra Control Center bereitzustellen.
Die neue Richtlinie und die neuen Objekte haben folgende Attribute:
kubectl get psp NAME PRIV CAPS SELINUX RUNASUSER FSGROUP SUPGROUP READONLYROOTFS VOLUMES netapp-monitoring-psp-nkmo true AUDIT_WRITE,NET_ADMIN,NET_RAW RunAsAny RunAsAny RunAsAny RunAsAny false * kubectl get role NAME CREATED AT netapp-monitoring-role-privileged 2022-07-21T00:00:00Z kubectl get rolebinding NAME ROLE AGE netapp-monitoring-role-binding-privileged Role/netapp-monitoring-role-privileged 2m5s
Aktivieren der Netzwerkkommunikation zwischen Namespaces
Einige Umgebungen verwenden NetworkPolicy-Konstrukte, um den Datenverkehr zwischen Namespaces zu beschränken. Der Astra Control Center Operator, Astra Control Center und das Astra Plugin für VMware vSphere sind allesamt in verschiedenen Namespaces. Die Dienste in diesen verschiedenen Namespaces müssen in der Lage sein, miteinander zu kommunizieren. Gehen Sie wie folgt vor, um diese Kommunikation zu aktivieren.
-
Löschen Sie alle im Astra Control Center Namespace vorhandenen NetworkPolicy-Ressourcen:
kubectl get networkpolicy -n netapp-acc
-
Verwenden Sie für jedes NetworkPolicy-Objekt, das vom vorhergehenden Befehl zurückgegeben wird, den folgenden Befehl, um es zu löschen. Ersetzen Sie <OBJECT_NAME> durch den Namen des zurückgegebenen Objekts:
kubectl delete networkpolicy <OBJECT_NAME> -n netapp-acc
-
Wenden Sie die folgende Ressourcendatei an, um das ACC-avp-Netzwerk-Policy-Objekt zu konfigurieren, damit das Astra Plugin für VMware vSphere Services Anfragen an die Astra Control Center Services stellen kann. Ersetzen Sie die Informationen in Klammern <> durch Informationen aus Ihrer Umgebung:
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: acc-avp-network-policy namespace: <ACC_NAMESPACE_NAME> # REPLACE THIS WITH THE ASTRA CONTROL CENTER NAMESPACE NAME spec: podSelector: {} policyTypes: - Ingress ingress: - from: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: <PLUGIN_NAMESPACE_NAME> # REPLACE THIS WITH THE ASTRA PLUGIN FOR VMWARE VSPHERE NAMESPACE NAME
-
Wenden Sie die folgende Ressourcendatei an, um das ACC-Operator-Network-Policy-Objekt so zu konfigurieren, dass der Astra Control Center-Operator mit den Astra Control Center-Diensten kommunizieren kann. Ersetzen Sie die Informationen in Klammern <> durch Informationen aus Ihrer Umgebung:
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: acc-operator-network-policy namespace: <ACC_NAMESPACE_NAME> # REPLACE THIS WITH THE ASTRA CONTROL CENTER NAMESPACE NAME spec: podSelector: {} policyTypes: - Ingress ingress: - from: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: <NETAPP-ACC-OPERATOR> # REPLACE THIS WITH THE OPERATOR NAMESPACE NAME
Ressourceneinschränkungen entfernen
In einigen Umgebungen werden die Objekte ResourceQuotas und LimitRanges verwendet, um zu verhindern, dass die Ressourcen in einem Namespace alle verfügbaren CPUs und Speicher im Cluster verbrauchen. Das Astra Control Center stellt keine Höchstgrenzen ein, sodass diese Ressourcen nicht eingehalten werden. Sie müssen sie aus den Namespaces entfernen, in denen Sie Astra Control Center installieren möchten.
Sie können folgende Schritte verwenden, um diese Kontingente und Grenzen abzurufen und zu entfernen. In diesen Beispielen wird die Befehlsausgabe direkt nach dem Befehl angezeigt.
-
Holen Sie sich die Ressourcenkontingente im netapp-ACC Namespace:
kubectl get quota -n netapp-acc
Antwort:
NAME AGE REQUEST LIMIT pods-high 16s requests.cpu: 0/20, requests.memory: 0/100Gi limits.cpu: 0/200, limits.memory: 0/1000Gi pods-low 15s requests.cpu: 0/1, requests.memory: 0/1Gi limits.cpu: 0/2, limits.memory: 0/2Gi pods-medium 16s requests.cpu: 0/10, requests.memory: 0/20Gi limits.cpu: 0/20, limits.memory: 0/200Gi
-
Alle Ressourcen-Kontingente nach Namen löschen:
kubectl delete resourcequota pods-high -n netapp-acc
kubectl delete resourcequota pods-low -n netapp-acc
kubectl delete resourcequota pods-medium -n netapp-acc
-
Grenzbereiche im netapp-ACC Namespace abrufen:
kubectl get limits -n netapp-acc
Antwort:
NAME CREATED AT cpu-limit-range 2022-06-27T19:01:23Z
-
Grenzwerte nach Namen löschen:
kubectl delete limitrange cpu-limit-range -n netapp-acc