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:
-
A autenticação é realizada por meio do Centro de Identidade da AWS (que pode ser federado ao seu provedor de identidades corporativo)
-
O Centro de Identidade da AWS fornece informações de usuários e grupos ao Argo CD
-
O Argo CD mapeia usuários e grupos para perfis de RBAC com base na sua configuração
-
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. Esses são perfis com escopo global que controlam o acesso aos recursos do Argo CD, como projetos, clusters e repositórios.
Importante
Os perfis globais controlam o acesso ao próprio Argo CD, não aos recursos do escopo do projeto, como Applications. Os usuários EDITOR e VIEWER não podem ver nem gerenciar Applications por padrão, eles precisam de perfis no projeto para acessar os recursos do escopo do projeto. Consulte Perfis do projeto e acesso ao escopo do projeto para obter detalhes sobre como conceder acesso a Applications e outros recursos do escopo do projeto.
ADMIN
Acesso total a todos os recursos e configurações do Argo CD:
-
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
-
Crie e gerencie projetos.
-
Visualização do status e do histórico de todas as aplicações
-
Liste e acesse todos os clusters e repositórios
EDITOR
Pode atualizar projetos e configurar perfis do projeto, mas não pode alterar as configurações globais do Argo CD:
-
Atualize projetos existentes (não é possível criar ou excluir projetos)
-
Configure perfis e permissões de projetos.
-
Visualize chaves e certificados GPG
-
Não é possível alterar a configuração do Argo CD
-
Não é possível gerenciar clusters ou repositórios diretamente
-
Não é possível ver ou gerenciar Applications sem perfis do projeto
VIEWER
Acesso somente de leitura a recursos do Argo CD:
-
Exiba a configuração do projeto
-
Liste todos os projetos (incluindo projetos aos quais o usuário não está atribuído)
-
Visualize chaves e certificados GPG
-
Sem permissão para o registro de clusters ou de repositórios
-
Sem permissão para a realização de quaisquer alterações
-
Não é possível ver ou gerenciar Applications sem perfis do projeto
nota
Para conceder aos usuários EDITOR ou VIEWER acesso a Applications, um ADMINISTRADOR ou EDITOR deve criar perfis do projeto que mapeiem os grupos do Centro de Identidade para permissões específicas em um projeto.
Perfis do projeto e acesso ao escopo do projeto
Perfis globais (ADMIN, EDITOR e VIEWER) controlam o acesso ao Argo CD em si. Os perfis do projeto controlam o acesso a recursos e funcionalidades em um projeto específico, incluindo:
-
Recursos: Applications, ApplicationSets, credenciais do repositório, credenciais do cluster
-
Funcionalidades: acesso a registros, acesso executivo aos pods de aplicações
Noções básicas sobre o modelo de permissão de dois níveis:
-
Escopo global: perfis integrados determinam o que os usuários podem fazer com projetos, clusters, repositórios e configurações de CD do Argo
-
Escopo do projeto: os perfis do projeto determinam o que os usuários podem fazer com recursos e funcionalidades em um projeto específico
Isso significa que:
-
Os usuários ADMIN podem acessar todos os recursos e funcionalidades do projeto sem configuração adicional
-
Os usuários EDITOR e VIEWER devem receber perfis de projeto para acessar os recursos e funcionalidades do projeto
-
Os usuários EDITOR podem criar perfis do projeto para conceder a si mesmos e a outras pessoas acesso aos projetos que possam ser atualizados
Exemplo de fluxo de trabalho
-
Um ADMIN mapeia um grupo do Centro de Identidade para o perfil EDITOR globalmente
-
Um ADMINISTRADOR cria um projeto para uma equipe
-
O EDITOR configura os perfis do projeto dentro desse projeto para conceder aos membros da equipe acesso aos recursos do escopo do projeto
-
Os membros da equipe (que podem ter o perfil global VIEWER) agora podem ver e gerenciar aplicações nesse projeto com base nas permissões de perfil do projeto
Para obter detalhes sobre como configurar os perfis do projeto, consulte Controle de acesso baseado em projetos.
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 eks update-capability \ --regionus-east-1\ --cluster-namecluster\ --capability-namecapname\ --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.
Importante
Antes de atribuir usuários ou grupos aos perfis específicos do projeto, é necessário primeiro mapeá-los para um perfil global do Argo CD (ADMIN, EDITOR ou VIEWER) na configuração do recurso. Os usuários não podem acessar o Argo CD sem um mapeamento global de perfis, mesmo que estejam atribuídos aos perfis do projeto.
Considere mapear usuários para o perfil VIEWER globalmente e, em seguida, conceder permissões adicionais por meio de perfis específicos do projeto. Isso fornece acesso básico e, ao mesmo tempo, permite um controle refinado no nível do projeto.
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 # Required: Specify which namespaces this project watches for Applications sourceNamespaces: - argocd # 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
Namespaces da origem
Ao usar a funcionalidade EKS do Argo CD, o campo spec.sourceNamespaces é obrigatório nas definições de AppProject. Esse campo especifica qual namespace pode conter Applications or ApplicationSets que façam referência a esse projeto.
Importante
A funcionalidade EKS do Argo CD oferece suporte a apenas um único namespace para Applications and ApplicationSets, o namespace que você especificou ao criar a funcionalidade (normalmente argocd). Isso difere do Argo CD de código aberto, que oferece suporte a vários namespaces.
Configuração do AppProject
Todos os AppProjects devem incluir o namespace configurado da funcionalidade em sourceNamespaces:
apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: team-a-project namespace: argocd spec: description: Applications for Team A # Required: Specify the capability's configured namespace (configuration.argoCd.namespace) sourceNamespaces: - argocd # Must match your capability's namespace configuration # Source repositories this project can deploy from sourceRepos: - 'https://github.com/my-org/team-a-*' # Destination restrictions destinations: - namespace: 'team-a-*' server: arn:aws:eks:us-west-2:111122223333:cluster/my-cluster
nota
Se você omitir o namespace da funcionalidade de sourceNamespaces, Applications ou ApplicationSets nesse namespace não poderão referenciar esse projeto, resultando em falhas de implantação.
Atribua usuários a projetos:
Os perfis do projeto concedem aos usuários EDITOR e VIEWER acesso aos recursos do projeto (Applications, ApplicationSets, credenciais de repositório e cluster) e funcionalidades (logs, exec). Sem os perfis do projeto, esses usuários não podem acessar esses recursos, mesmo que tenham acesso global ao perfil.
Usuários com perfil de ADMIN têm acesso a todas as Applications sem precisar de perfis do projeto.
Exemplo: concessão de acesso a Applications aos membros da equipe
apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: team-a namespace: argocd spec: # ... project configuration ... sourceNamespaces: - argocd # Project roles grant Application-level access roles: - name: developer description: Team A developers - can manage Applications policies: - p, proj:team-a:developer, applications, *, team-a/*, allow - p, proj:team-a:developer, clusters, get, *, allow # See cluster names in UI groups: - 686103e0-f051-7068-b225-e6392b959d9e # Identity Center group ID - name: viewer description: Team A viewers - read-only Application access policies: - p, proj:team-a:viewer, applications, get, team-a/*, allow - p, proj:team-a:viewer, clusters, get, *, allow # See cluster names in UI groups: - 786203e0-f051-7068-b225-e6392b959d9f # Identity Center group ID
nota
Inclua clusters, get, *, allow nos perfis do projeto para permitir que os usuários vejam os nomes dos clusters na interface do usuário. Sem essa permissão, o cluster de destino será exibido como “desconhecido”.
Noções básicas das políticas de perfis do projeto:
O formato da política é: p, proj:<project>:<role>, <resource>, <action>, <object>, <allow/deny>
Políticas de recursos:
-
applications, , team-a/, allow: acesso total a todas as Applications no projeto team-a -
applications, get, team-a/*, allow: acesso somente leitura às Applications -
applications, sync, team-a/*, allow: pode sincronizar Applications, mas não criar/excluir -
applications, delete, team-a/*, allow: pode excluir Applications (use com cuidado) -
applicationsets, , team-a/, allow: acesso total aos ApplicationSets -
repositories, *, *, allow: acesso às credenciais do repositório -
clusters, *, *, allow: acesso às credenciais do cluster
Políticas de funcionalidade:
-
logs, , team-a/, allow: acesso aos logs da aplicação -
exec, , team-a/, allow: acesso executivo aos pods de aplicações
nota
Os usuários EDITOR podem criar perfis de projeto para conceder a si mesmos e a outros permissões nos projetos que podem atualizar Isso permite que os líderes de equipe controlem o acesso aos recursos do escopo do projeto para sua equipe sem exigir a intervenção do ADMIN.
nota
Use IDs de grupo do Centro de Identidade (não nomes de grupos) no campo groups. Você também pode usar os IDs de usuário do Centro de Identidade para acesso de usuários individuais. Encontre esses IDs no console do Centro de Identidade da AWS ou usando a CLI da AWS.
Padrões de permissão comuns
Padrão 1: equipe administrativa com acesso total
{ "rbacRoleMapping": { "ADMIN": ["PlatformTeam", "SRETeam"] } }
Os usuários ADMIN podem visualizar e gerenciar todos os recursos do escopo do projeto sem configuração adicional.
Padrão 2: os líderes de equipes gerenciam projetos, os desenvolvedores os acessam por meio de perfis do projeto
{ "rbacRoleMapping": { "ADMIN": ["PlatformTeam"], "EDITOR": ["TeamLeads"], "VIEWER": ["AllDevelopers"] } }
-
Um ADMIN cria projetos para cada equipe
-
Os líderes da equipe (EDITOR) configuram os perfis do projeto para conceder aos desenvolvedores acesso aos recursos do projeto (Applications, ApplicationSets, credenciais) e funcionalidades (logs, execução)
-
Os desenvolvedores (VIEWER) só podem acessar recursos e funcionalidades permitidos por seus perfis no projeto
Padrão 3: acesso baseado em equipe com perfis do projeto
-
O ADMIN cria projetos e mapeia líderes de equipe para o perfil EDITOR globalmente
-
Os líderes da equipe (EDITOR) atribuem aos membros da equipe os perfis do projeto em seus projetos
-
Os membros da equipe só precisam do perfil VIEWER. Os perfis do projeto fornecem acesso aos recursos e funcionalidades do projeto
{ "rbacRoleMapping": { "ADMIN": ["PlatformTeam"], "EDITOR": ["TeamLeads"], "VIEWER": ["AllDevelopers"] } }
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
-
Como trabalhar com o Argo CD: saiba como criar aplicações e gerenciar implantações
-
Conceitos do Argo CD: compreenda os conceitos do Argo CD, incluindo o Projects
-
Considerações sobre segurança para funcionalidades do EKS: analise as práticas recomendadas de segurança para as funcionalidades