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:
-
Verifica se um “IAMRoleSelector” corresponde ao namespace do recurso
-
Se uma correspondência for encontrada, assume esse perfil do IAM
-
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 |
|---|---|
|
|
O ARN da funcionalidade EKS que faz a solicitação |
|
|
O namespace do Kubernetes do recurso gerenciado |
|
|
O grupo do recurso de API do Kubernetes (por exemplo, |
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
-
Conceitos do ACK: compreenda os conceitos do ACK e o ciclo de vida dos recursos
-
Conceitos do ACK: saiba mais sobre as políticas de adoção e exclusão de recursos
-
Considerações sobre segurança para funcionalidades do EKS: compreenda as práticas recomendadas de segurança para as funcionalidades