Configuração das permissões do ACK - Amazon EKS

Ajudar a melhorar esta página

Para contribuir com este guia de usuário, escolha o link Editar esta página no GitHub, disponível no painel direito de cada página.

Configuração das permissões do ACK

O ACK precisa de permissões do IAM para realizar a criação e o gerenciamento de recursos da AWS em seu nome. Este tópico explica como o IAM funciona com o ACK e fornece orientações sobre como configurar permissões para diferentes casos de uso.

Funcionamento do IAM com o ACK

O ACK usa perfis do IAM para se autenticar na AWS e executar ações em seus recursos. Existem duas maneiras de fornecer permissões ao ACK:

Perfil da funcionalidade: consiste no perfil do IAM que você fornece ao criar a funcionalidade do ACK. Este perfil é usado por padrão para todas as operações do ACK.

Seletores de perfil do IAM: consistem em perfis adicionais do IAM que podem ser mapeados para namespaces ou recursos específicos. Esses perfis substituem o perfil da funcionalidade para recursos dentro de seu escopo.

Quando o ACK precisa criar ou gerenciar um recurso, ele determina qual perfil do IAM deve usar:

  1. Verifica se um “IAMRoleSelector” corresponde ao namespace do recurso

  2. Se uma correspondência for encontrada, assume esse perfil do IAM

  3. Caso contrário, usa o perfil da funcionalidade

Esta abordagem possibilita um gerenciamento de permissões flexível, desde configurações simples de perfil único até configurações complexas de diversas contas e várias equipes.

Conceitos básicos: configuração simples de permissões

Para ambientes de desenvolvimento, testes ou casos de uso simples, você pode adicionar todas as permissões de serviço necessárias diretamente ao perfil da funcionalidade.

Essa abordagem é ideal quando:

  • Você está começando a usar o ACK

  • Todos os recursos estão na mesma conta da AWS

  • Uma única equipe gerencia todos os recursos do ACK

  • Você confia que todos os usuários do ACK tenham as mesmas permissões

Prática recomendada para ambientes de produção: seletores de perfil do IAM

Para ambientes de produção, use os seletores de perfil do IAM para implementar o acesso de privilégio mínimo e o isolamento em nível de namespace.

Ao usar seletores de perfil do IAM, o perfil da funcionalidade precisa apenas das permissões sts:AssumeRole e sts:TagSession para assumir os perfis específicos de cada serviço. Não é necessário adicionar nenhuma permissão de serviço da AWS (como S3 ou RDS) ao perfil da funcionalidade em si, pois essas permissões são concedidas aos perfis individuais do IAM que o perfil da funcionalidade assume.

Escolha do modelo de permissões:

Use permissões diretas, com a adição de permissões de serviço ao perfil da funcionalidade, quando:

  • Você está começando a usar o serviço e deseja a configuração mais simples

  • Todos os recursos estão na mesma conta que o cluster

  • Você tem requisitos de permissão administrativos para todo o cluster

  • Todas as equipes podem compartilhar as mesmas permissões

Use seletores de perfil do IAM quando:

  • Gerenciar recursos em várias contas da AWS

  • Diferentes equipes ou namespaces precisarem de permissões distintas

  • Você precisar de controle de acesso granular por namespace

  • Você desejar seguir as práticas de segurança de privilégio mínimo

É possível começar com permissões diretas e migrar para os seletores de perfil do IAM posteriormente, conforme suas necessidades evoluem.

Vantagens de usar seletores de perfil do IAM em ambientes produção:

  • Privilégio mínimo: cada namespace recebe apenas as permissões de que necessita

  • Isolamento de equipes: a Equipe A não pode usar as permissões da Equipe B por engano

  • Auditoria facilitada: mapeamento claro de qual namespace usa cada perfil

  • Suporte entre contas: necessário para gerenciar recursos em várias contas

  • Separação de responsabilidades: diferentes serviços ou ambientes usam perfis distintos

Configuração básica do seletor de perfil do IAM

Etapa 1: criação de um perfil do IAM específico para o serviço

Crie um perfil do IAM com permissões para serviços específicos da AWS:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:*" ], "Resource": "*" } ] }

Configure a política de confiança para permitir que o perfil da funcionalidade o assuma:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ACKCapabilityRole" }, "Action": ["sts:AssumeRole", "sts:TagSession"] } ] }

Etapa 2: concessão da permissão AssumeRole ao perfil da funcionalidade

Adicione permissão ao perfil da funcionalidade para assumir o perfil específico do serviço:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["sts:AssumeRole", "sts:TagSession"], "Resource": "arn:aws:iam::111122223333:role/ACK-S3-Role" } ] }

Etapa 3: criação do IAMRoleSelector

Mapeie o perfil do IAM para um namespace:

apiVersion: services.k8s.aws/v1alpha1 kind: IAMRoleSelector metadata: name: s3-namespace-config spec: arn: arn:aws:iam::111122223333:role/ACK-S3-Role namespaceSelector: names: - s3-resources

Etapa 4: criação de recursos no namespace mapeado

Os recursos no namespace s3-resources usam automaticamente o perfil especificado:

apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: my-bucket namespace: s3-resources spec: name: my-production-bucket

Gerenciamento de várias contas

Use seletores de perfil do IAM para gerenciar recursos em várias contas da AWS.

Etapa 1: criação do perfil do IAM entre contas

Na conta de destino (444455556666), crie um perfil que confie no perfil da funcionalidade da conta de origem:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ACKCapabilityRole" }, "Action": ["sts:AssumeRole", "sts:TagSession"] } ] }

Anexe permissões específicas de serviço a este perfil.

Etapa 2: concessão da permissão AssumeRole

Na conta de origem (111122223333), permita que o perfil da funcionalidade assuma o perfil da conta de destino:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["sts:AssumeRole", "sts:TagSession"], "Resource": "arn:aws:iam::444455556666:role/ACKTargetAccountRole" } ] }

Etapa 3: criação do IAMRoleSelector

Mapeie o perfil entre contas para um namespace:

apiVersion: services.k8s.aws/v1alpha1 kind: IAMRoleSelector metadata: name: production-account-config spec: arn: arn:aws:iam::444455556666:role/ACKTargetAccountRole namespaceSelector: names: - production

Etapa 4: criação de recursos

Os recursos no namespace production são criados na conta de destino:

apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: my-bucket namespace: production spec: name: my-cross-account-bucket

Tags de sessão

A funcionalidade ACK do EKS define automaticamente as tags de sessão em todas as solicitações de API da AWS. Essas tags permitem ter controle de acesso e auditoria, identificando a origem de cada solicitação.

Tags de sessão disponíveis

As tags de sessão a seguir estão incluídas em todas as chamadas de API da AWS feitas pelo ACK:

Chave de tag Descrição

eks:eks-capability-arn

O ARN da funcionalidade EKS que faz a solicitação

eks:kubernetes-namespace

O namespace do Kubernetes do recurso gerenciado

eks:kubernetes-api-group

O grupo do recurso de API do Kubernetes (por exemplo, s3.services.k8s.aws)

Uso de tags de sessão para controle de acesso

É possível usar essas tags de sessão nas condições da política do IAM para restringir quais recursos o ACK pode gerenciar. Isso fornecerá uma camada adicional de segurança além dos seletores de perfil do IAM baseados em namespace.

Exemplo: restringir por namespace

Permitir que o ACK crie buckets do S3 somente quando a solicitação for originada do namespace production:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:CreateBucket", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalTag/eks:kubernetes-namespace": "production" } } } ] }

Exemplo: restringir por funcionalidade

Permitir ações somente a partir de um recurso do ACK específico:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:*", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalTag/eks:eks-capability-arn": "arn:aws:eks:us-west-2:111122223333:capability/my-cluster/ack/my-ack" } } } ] }
nota

As tags de sessão são uma diferença do ACK autogerenciado, que não define essas tags por padrão. Isso permite um controle de acesso mais granular com o recurso gerenciado.

Padrões avançados de seletores de perfil do IAM

Para obter configurações avançadas, incluindo selecionadores de rótulos, mapeamento de perfis específicos para recursos e exemplos adicionais, consulte a documentação relacionada ao IRSA para o ACK.

Próximas etapas