Configuração das permissões do Argo CD - 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 Argo CD

A funcionalidade gerenciada do Argo CD se integra ao Centro de Identidade da AWS para autenticação e usa perfis de RBAC integrados para autorização. Este tópico explica como configurar permissões para usuários e equipes.

Funcionamento de permissões com o Argo CD

A funcionalidade do Argo CD usa o Centro de Identidade da AWS para autenticação e fornece três perfis de RBAC integrados para autorização.

Quando um usuário acessa o Argo CD:

  1. A autenticação é realizada por meio do Centro de Identidade da AWS (que pode ser federado ao seu provedor de identidades corporativo)

  2. O Centro de Identidade da AWS fornece informações de usuários e grupos ao Argo CD

  3. O Argo CD mapeia usuários e grupos para perfis de RBAC com base na sua configuração

  4. Os usuários visualizam somente as aplicações e os recursos aos quais têm permissão de acessar

Perfis de RBAC integrados

A funcionalidade do Argo CD fornece três perfis integrados que você mapeia para usuários e grupos do Centro de Identidade da AWS.

ADMIN

Acesso total a todas as aplicações e configurações:

  • Criação, atualização e exclusão de Applications e ApplicationSets

  • Gerenciamento da configuração do Argo CD

  • Registro e gerenciamento de clusters de destino para implantação

  • Configuração do acesso ao repositório

  • Gerenciamento de projetos

  • Visualização do status e do histórico de todas as aplicações

EDITOR

Capacidade de criação e modificação de aplicações, sem permissão para alteração das configurações do Argo CD:

  • Criação e atualização de Applications e ApplicationSets

  • Sincronização e atualização de aplicações

  • Visualização do status e do histórico da aplicação

  • Sem permissão para a exclusão de aplicações

  • Sem permissão para a alteração da configuração do Argo CD

  • Sem permissão para o gerenciamento de clusters ou de repositórios

VIEWER

Acesso somente leitura às aplicações:

  • Visualização do status e do histórico da aplicação

  • Visualização de manifestos e de recursos da aplicação

  • Sem permissão para a realização de quaisquer alterações

  • Sem permissão para a sincronização e atualização de aplicações

Configuração de mapeamentos de perfil

Mapeie usuários e grupos do Centro de Identidade da AWS para os perfis do Argo CD durante a criação ou a atualização da funcionalidade.

Exemplo de mapeamento de perfil:

{ "rbacRoleMapping": { "ADMIN": ["AdminGroup", "alice@example.com"], "EDITOR": ["DeveloperGroup", "DevOpsTeam"], "VIEWER": ["ReadOnlyGroup", "bob@example.com"] } }
nota

Os nomes dos perfis diferenciam maiúsculas de minúsculas e devem estar em letras maiúsculas (ADMIN, EDITOR e VIEWER).

Importante

A integração das funcionalidades do EKS com o Centro de Identidade da AWS fornece suporte para até mil identidades por funcionalidade do Argo CD. Uma identidade pode ser um usuário ou um grupo.

Atualize os mapeamentos de perfil:

aws eksfe update-capability \ --region us-east-1 \ --cluster-name cluster \ --capability-name capname \ --endpoint "https://eks.ap-northeast-2.amazonaws.com" \ --role-arn "arn:aws:iam::[.replaceable]111122223333:role/[.replaceable]`EKSCapabilityRole`" \ --configuration '{ "argoCd": { "rbacRoleMappings": { "addOrUpdateRoleMappings": [ { "role": "ADMIN", "identities": [ { "id": "686103e0-f051-7068-b225-e6392b959d9e", "type": "SSO_USER" } ] } ] } } }'

Uso da conta de administrador

A conta de administrador é destinada à configuração inicial e às tarefas administrativas, como o registro de clusters e a configuração de repositórios.

Situações apropriadas para o uso da conta de administrador:

  • Configuração inicial da funcionalidade

  • Desenvolvimento individual ou demonstrações rápidas

  • Tarefas administrativas (como registro de cluster, configuração de repositórios e criação de projetos)

Práticas recomendadas para a conta de administrador:

  • Sem permissão para a confirmação de tokens da conta para o controle de versão

  • Rotação imediata de tokens em caso de exposição

  • Limitação do uso de tokens da conta para tarefas de configuração e de administração

  • Definição de prazos curtos de expiração (máximo de 12 horas)

  • Limite de criação de apenas cinco tokens simultâneos na conta

Situações para uso do acesso baseado em projetos::

  • Ambientes de desenvolvimento compartilhados com vários usuários

  • Qualquer ambiente com características do ambiente de produção

  • Quando há necessidade de trilhas de auditoria para identificação de ações por parte dos usuários

  • Quando há necessidade da aplicação de restrições de recursos ou limites de acesso

Para ambientes de produção e cenários com vários usuários, use o controle de acesso baseado em projetos com perfis de RBAC dedicados e mapeados para grupos do Centro de Identidade da AWS.

Controle de acesso baseado em projetos

Use o Argo CD Projects (AppProject) para a disponibilização de controle de acesso detalhado e isolamento de recursos para as equipes.

Os projetos fornecem:

  • Restrições de origem: limitam quais repositórios do Git podem ser utilizados

  • Restrições de destino: limitam quais clusters e namespaces podem ser destinos de implantação

  • Restrições de recursos: limitam quais tipos de recursos do Kubernetes podem ser implantados

  • Integração de RBAC: mapeamento de projetos para grupos do Centro de Identidade da AWS ou perfis do Argo CD

Exemplo de projeto para isolamento de equipes:

apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: team-a namespace: argocd spec: description: Team A applications # Source restrictions sourceRepos: - https://github.com/myorg/team-a-apps # Destination restrictions destinations: - namespace: team-a-* server: arn:aws:eks:us-west-2:111122223333:cluster/production # Resource restrictions clusterResourceWhitelist: - group: '' kind: Namespace namespaceResourceWhitelist: - group: 'apps' kind: Deployment - group: '' kind: Service - group: '' kind: ConfigMap

Atribua usuários a projetos:

É possível restringir usuários com perfis de EDITOR ou VIEWER a projetos específicos. Usuários com perfil de ADMIN têm acesso a todos os projetos.

apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: team-a spec: # ... project configuration ... # Map Identity Center groups to project roles roles: - name: developer description: Team A developers policies: - p, proj:team-a:developer, applications, *, team-a/*, allow groups: - TeamADevelopers - name: viewer description: Team A viewers policies: - p, proj:team-a:viewer, applications, get, team-a/*, allow groups: - TeamAViewers

Padrões de permissão comuns

Padrão 1: equipe administrativa com acesso total

{ "rbacRoleMapping": { "ADMIN": ["PlatformTeam", "SRETeam"] } }

Padrão 2: desenvolvedores com capacidade de realizar implantações e outros com capacidade de visualização

{ "rbacRoleMapping": { "ADMIN": ["PlatformTeam"], "EDITOR": ["DevelopmentTeam", "DevOpsTeam"], "VIEWER": ["AllEmployees"] } }

Padrão 3: isolamento baseado em equipe com projetos

  1. Mapeie todos os desenvolvedores para o perfil de EDITOR

  2. Crie AppProjects separados para cada equipe

  3. Use perfis de projeto para restringir o acesso a aplicações específicas de cada equipe

{ "rbacRoleMapping": { "ADMIN": ["PlatformTeam"], "EDITOR": ["AllDevelopers"] } }

Em seguida, crie projetos com restrições exclusivas para cada equipe e seus respectivos mapeamentos de perfis.

Práticas recomendadas

Use grupos em vez de usuários individuais: mapeie grupos do Centro de Identidade da AWS para perfis do Argo CD, em vez de usuários individuais, para facilitar o gerenciamento.

Comece a aplicar permissões com o privilégio mínimo: inicie com acesso com o perfil de VIEWER e conceda acesso de EDITOR ou de ADMIN, conforme necessário.

Use projetos para o isolamento de equipes: crie AppProjects separados para diferentes equipes ou ambientes a fim de aplicar limites.

Aproveite a federação do Centro de Identidade: configure o Centro de Identidade da AWS para federar com seu provedor de identidades corporativo para gerenciamento centralizado de usuários

Análises de acesso regulares: revise periodicamente os mapeamentos de perfis e as atribuições de projetos para garantir níveis de acesso adequados.

Limite o acesso ao cluster: lembre-se de que o RBAC do Argo CD controla o acesso a recursos e operações do Argo CD, mas não corresponde ao RBAC do Kubernetes. Usuários com acesso ao Argo CD podem implantar aplicações em clusters aos quais o Argo CD tem acesso. Limite quais clusters o Argo CD pode acessar e use restrições de destino de projeto para controlar os locais em que as aplicações podem ser implantadas.

AWSPermissões de serviço do

Para usar serviços da AWS diretamente nos recursos da Application (sem a necessidade de criar recursos de Repository), vincule as permissões do IAM obrigatórias ao perfil da funcionalidade.

ECR para charts do Helm:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*" } ] }

Repositórios do CodeCommit:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:GitPull" ], "Resource": "arn:aws:codecommit:region:account-id:repository-name" } ] }

CodeConnections (GitHub, GitLab e Bitbucket):

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codeconnections:UseConnection" ], "Resource": "arn:aws:codeconnections:region:account-id:connection/connection-id" } ] }

Consulte Configuração do acesso ao repositório para obter detalhes sobre como usar essas integrações.

Próximas etapas