Compreender as restrições da política de segurança do pod
O Astra Control Center oferece suporte à limitação de privilégios por meio de políticas de segurança de pod (PSPs). As políticas de segurança do pod permitem limitar o que usuários ou grupos podem executar contêineres e o que o Privileges desses contêineres pode ter.
Algumas distribuições do Kubernetes, como o RKE2, têm uma política de segurança de pod padrão que é muito restritiva e causa problemas ao instalar o Astra Control Center.
Use as informações e exemplos incluídos aqui para entender as políticas de segurança de pod criadas pelo Astra Control Center e configurar políticas de segurança de pod que fornecem a proteção de que você precisa sem interferir nas funções do Astra Control Center.
PSPs instalados pelo Astra Control Center
O Astra Control Center cria várias políticas de segurança de pod durante a instalação. Alguns deles são permanentes, e alguns deles são criados durante certas operações e são removidos assim que a operação estiver concluída.
PSP criados durante a instalação
Durante a instalação do Astra Control Center, o operador Astra Control Center instala uma política de segurança de pod personalizada, um objeto de função e um objeto RoleBinding para dar suporte à implantação dos serviços Astra Control Center no namespace Astra Control Center.
A nova política e os objetos têm os seguintes atributos:
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
PSP criados durante operações de cópia de segurança
Durante as operações de backup, o Astra Control Center cria uma política de segurança de pod dinâmico, um objeto ClusterRole e um objeto RoleBinding. Isso dá suporte ao processo de backup, que acontece em um namespace separado.
A nova política e os objetos têm os seguintes atributos:
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
PSP criados durante a gestão de clusters
Quando você gerencia um cluster, o Astra Control Center instala o operador de monitoramento de NetApp no cluster gerenciado. Esse operador cria uma política de segurança de pod, um objeto ClusterRole e um objeto RoleBinding para implantar serviços de telemetria no namespace Astra Control Center.
A nova política e os objetos têm os seguintes atributos:
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
Ative a comunicação de rede entre namespaces
Alguns ambientes usam construções NetworkPolicy para restringir o tráfego entre namespaces. O operador Astra Control Center, o Astra Control Center e o plug-in Astra para VMware vSphere estão todos em namespaces diferentes. Os serviços nesses diferentes namespaces precisam ser capazes de se comunicar uns com os outros. Para ativar esta comunicação, siga estes passos.
-
Exclua todos os recursos da NetworkPolicy que existem no namespace Astra Control Center:
kubectl get networkpolicy -n netapp-acc
-
Para cada objeto NetworkPolicy retornado pelo comando anterior, use o seguinte comando para excluí-lo. Substitua o <OBJECT_NAME> pelo nome do objeto retornado:
kubectl delete networkpolicy <OBJECT_NAME> -n netapp-acc
-
Aplique o seguinte arquivo de recurso para configurar o objeto de política de rede acc-avp para permitir que os serviços Astra Plugin for VMware vSphere façam solicitações aos serviços Astra Control Center. Substitua as informações entre parêntesis> por informações do seu ambiente:
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
-
Aplique o seguinte arquivo de recurso para configurar o objeto de diretiva de rede do operador acc para permitir que o operador do Astra Control Center se comunique com os serviços do Astra Control Center. Substitua as informações entre parêntesis> por informações do seu ambiente:
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
Remover limitações de recursos
Alguns ambientes usam os objetos ResourceQuotes e LimitRanges para impedir que os recursos em um namespace consumam toda a CPU e memória disponíveis no cluster. O Astra Control Center não define limites máximos, por isso não estará em conformidade com esses recursos. Você precisa removê-los dos namespaces onde você planeja instalar o Astra Control Center.
Você pode usar as etapas a seguir para recuperar e remover essas cotas e limites. Nestes exemplos, a saída do comando é mostrada imediatamente após o comando.
-
Obtenha as cotas de recursos no namespace NetApp-acc:
kubectl get quota -n netapp-acc
Resposta:
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
-
Excluir todas as cotas de recursos por nome:
kubectl delete resourcequota pods-high -n netapp-acc
kubectl delete resourcequota pods-low -n netapp-acc
kubectl delete resourcequota pods-medium -n netapp-acc
-
Obtenha os intervalos de limite no namespace NetApp-acc:
kubectl get limits -n netapp-acc
Resposta:
NAME CREATED AT cpu-limit-range 2022-06-27T19:01:23Z
-
Eliminar os intervalos de limite por nome:
kubectl delete limitrange cpu-limit-range -n netapp-acc