Atribuir grupos de segurança a pods individuais - Amazon EKS

Ajudar a melhorar esta página

Quer contribuir para este guia do usuário? Role até o final desta página e selecione Editar esta página no GitHub. Suas contribuições ajudarão a tornar nosso guia do usuário melhor para todos.

Atribuir grupos de segurança a pods individuais

Aplica-se a: nós do Linux com instâncias do Amazon EC2

Aplica-se a: sub-redes privadas

Os grupos de segurança para Pods integram os grupos de segurança do Amazon EC2 com os Pods do Kubernetes. Você pode usar grupos de segurança do Amazon EC2 para definir regras que permitem tráfego de rede de entrada e saída de e para Pods implantados em nós executados em muitos tipos de instância do Amazon EC2 e Fargate. Para obter uma explicação detalhada sobre esse recurso, consulte o post do blog Introducing grupo de segurança for Pods (Apresentação de grupos de segurança para pods).

Compatibilidade com recursos do Amazon VPC CNI plugin for Kubernetes

É possível usar os grupos de segurança dos Pods com os seguintes recursos:

Considerações

Antes de implantar grupos de segurança para Pods, considere as seguintes limitações e condições:

  • Os grupos de segurança para Pods não podem ser usados com nós do Windows.

  • Os grupos de segurança para Pods podem ser usados com clusters configurados para a família IPv6 que contém nós do Amazon EC2 usando a versão 1.16.0 ou posterior do plug-in CNI do Amazon VPC. Você pode usar grupos de segurança para IPv6 com clusters configurados para a família Pods que contêm apenas nós Fargate usando a versão 1.7.7 ou posterior do plug-in CNI do Amazon VPC. Para ter mais informações, consulte Atribuir endereços IPv6 a clusters, pods e serviços.

  • Os grupos de segurança para os Pods são compatíveis com a maioria das famílias de instâncias do Amazon EC2 baseadas no Nitro, mas não com todas as gerações de uma família. Por exemplo, eles são compatíveis com a família e as gerações de instâncias m5, c5, r5, m6g, c6g e r6g. Mas não são compatíveis com nenhum tipo de instância da família t. Para obter uma lista completa de tipos de instância compatíveis, consulte o arquivo limits.go no GitHub. Seus nós devem ser um dos tipos de instâncias listados que têm IsTrunkingCompatible: true nesse arquivo.

  • Se você também estiver usando políticas de segurança de Pod para restringir o acesso à mutação de Pods, o usuário do eks:vpc-resource-controller Kubernetes deverá ser especificado no ClusterRoleBinding do Kubernetes para o role ao qual o psp está atribuído. Se você estiver usando o Amazon EKS padrão psp, role e ClusterRoleBinding, este é o eks:podsecuritypolicy:authenticated ClusterRoleBinding. Por exemplo, você adiciona o usuário à seção subjects:, como mostrado no seguinte exemplo:

    [...] subjects: - kind: Group apiGroup: rbac.authorization.k8s.io name: system:authenticated - apiGroup: rbac.authorization.k8s.io kind: User name: eks:vpc-resource-controller - kind: ServiceAccount name: eks-vpc-resource-controller
  • Se você estiver usando redes personalizadas e grupos de segurança para Pods juntos, o grupo de segurança especificado por grupos de segurança para Pods é usado em vez do grupo de segurança especificado no ENIConfig.

  • Se você estiver utilizando a versão 1.10.2 ou anterior do plug-in Amazon VPC CNI e incluir a configuração terminationGracePeriodSeconds na especificação do Pod, o valor dessa configuração não poderá ser zero.

  • Se estiver utilizando a versão 1.10 ou anterior do plug-in CNI da Amazon VPC ou a versão 1.11 com POD_SECURITY_GROUP_ENFORCING_MODE = strict, que é a configuração padrão, os serviços do Kubernetes do tipo NodePort e LoadBalancer que usam destinos de instância com a externalTrafficPolicy definida como Local não serão compatíveis com os Pods a que você atribuir grupos de segurança. Para obter mais informações sobre como usar um balanceador de carga com destinos de instância, consulte Roteamento TCP e tráfego UDP com Network Load Balancers.

  • Se estiver utilizando a versão 1.10 ou anterior do plugin Amazon VPC CNI ou a versão 1.11 com POD_SECURITY_GROUP_ENFORCING_MODE=strict, que é a configuração padrão, o NAT de origem estará desabilitado para tráfego de saída de Pods com grupos de segurança atribuídos para que as regras de grupo de segurança de saída sejam aplicadas. Para acessar a Internet, Pods com grupos de segurança atribuídos devem ser iniciados em nós implantados em uma sub-rede privada configurada com um gateway ou instância NAT. Pods com grupos de segurança atribuídos implantados em sub-redes públicas não podem acessar a Internet.

    Se estiver utilizando a versão 1.11 ou posterior do plugin com POD_SECURITY_GROUP_ENFORCING_MODE=standard, o tráfego do Pod destinado para fora da VPC será convertido no endereço IP da interface de rede primária da instância. Para esse tráfego, as regras nos grupos de segurança da interface de rede principal são utilizadas, e não as regras nos grupos de segurança do Pod's.

  • Para usar a política de rede do Calico com Pods que têm grupos de segurança associados, é necessário usar a versão 1.11.0 ou posterior do plug-in Amazon VPC CNI e definir POD_SECURITY_GROUP_ENFORCING_MODE=standard. Caso contrário, o fluxo de tráfego entrando e saindo de Pods com grupos de segurança associados não estará sujeito à política de rede do Calico e estará limitado apenas à imposição do grupo de segurança do Amazon EC2. Para atualizar sua versão do Amazon VPC CNI, consulte Atribuir IPs a Pods com a CNI da Amazon VPC.

  • Pods em execução em nós do Amazon EC2 que utilizam grupos de segurança em clusters que usam Nodelocal DNSCache são compatíveis apenas com a versão 1.11.0 ou posterior do plug-in CNI da Amazon VPC e com POD_SECURITY_GROUP_ENFORCING_MODE=standard. Para atualizar sua versão do plugin Amazon VPC CNI, consulte Atribuir IPs a Pods com a CNI da Amazon VPC.

  • Grupos de segurança para Pods podem levar a uma latência de inicialização mais alta Pod no para o Pods com alta rotatividade. Isso se deve à limitação de taxa no controlador de recursos.

  • O escopo do grupo de segurança do EC2 está no nível do Pod: para obter mais informações, consulte Grupos de segurança.

    Se você definiu POD_SECURITY_GROUP_ENFORCING_MODE=standard e AWS_VPC_K8S_CNI_EXTERNALSNAT=false, o tráfego destinado a endpoints fora da VPC usa os grupos de segurança do nó e não os grupos de segurança do Pod.