Skip to main content
Uma versão mais recente deste produto está disponível.
O português é fornecido por meio de tradução automática para sua conveniência. O inglês precede o português em caso de inconsistências.

Compreender as restrições da política de segurança do pod

Colaboradores

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.

Passos
  1. Exclua todos os recursos da NetworkPolicy que existem no namespace Astra Control Center:

    kubectl get networkpolicy -n netapp-acc
  2. 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
  3. 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
  4. 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.

Passos
  1. 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
  2. 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
  3. 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
  4. Eliminar os intervalos de limite por nome:

    kubectl delete limitrange cpu-limit-range -n netapp-acc