Crie usuários locais ou do RAM e configure o RBAC do Argo CD para controle de acesso no nível da aplicação.
Tipos de usuário
O ACK One GitOps permite a colaboração em equipe com múltiplos usuários. Administradores podem criar ou excluir usuários e configurar permissões RBAC e de aplicação do Argo CD individualmente. O sistema aceita os dois tipos de usuário a seguir:
|
Tipo de usuário |
Descrição |
Mais indicado para |
|
Usuário local |
Criado no Argo CD. Permite login pela UI e geração de chave de API. |
Equipes pequenas ou pipelines de CI/CD automatizados que não exigem SSO, histórico de login ou acesso baseado em grupos |
|
Usuário RAM ou função RAM |
Identidade do Alibaba Cloud. Usuários RAM fazem login via SSO, sem necessidade de credenciais separadas. |
Equipes que usam o RAM para gerenciamento de identidade ou exigem acesso baseado em grupos, histórico de login ou permissões refinadas |
Crie um usuário local
Pré-requisitos
Verifique se os seguintes requisitos foram atendidos:
O kubectl está conectado à instância Fleet com o kubeconfig obtido no console do ACK One.
O GitOps está ativado na instância Fleet.
Você tem a senha de administrador do Argo CD. Consulte Acessar o Argo CD usando a CLI do Argo CD.
Adicionar um usuário local
-
Edite o ConfigMap
argocd-cm.kubectl edit cm argocd-cm -n argocd -
Adicione o usuário local no campo
data. Este exemplo adiciona um usuário chamadolocaluser1.data: accounts.localuser1: login,apiKey # Grants UI login and API key generation accounts.localuser1.enabled: "true" # Enables the userCada conta oferece duas capacidades:
login— faz login na UI e na CLI do Argo CDapiKey— gera tokens de autenticação para acesso à API
-
Verifique se o usuário foi criado.
argocd account listSaída esperada:
NAME ENABLED CAPABILITIES admin true login localuser1 true login,apiKey -
Defina uma senha e gere um token.
# Set a password argocd account update-password \ --account localuser1 \ --current-password <admin-password> \ --new-password <localuser1-password> # Generate an API key token argocd account generate-token --account localuser1 eyJhb......
Configure permissões RBAC do Argo CD
O RBAC do Argo CD controla o acesso de usuários e grupos aos recursos. As políticas são definidas no ConfigMap argocd-rbac-cm.
Funções predefinidas
Para conceder permissões, atribua-as primeiro a uma função e depois mapeie um grupo SSO ou usuário local para essa função. O sistema aceita funções personalizadas e disponibiliza as seguintes funções integradas:
|
Função |
Permissões |
|
|
Acesso somente leitura ( |
|
|
Acesso total a todos os recursos do Argo CD |
Também é possível criar funções personalizadas com permissões refinadas.
Sintaxe da política
Todas as políticas são definidas no campo .data.policy.csv do argocd-rbac-cm.
Atribuir uma permissão (regra p):
p, <role/user/group>, <resource>, <action>, <object>
Para recursos dentro de um projeto:
p, <role/user/group>, <resource>, <action>, <appproject>/<object>
Onde:
<role/user/group>— nome da função, nome de usuário local ou grupo/UID do SSO<resource>— tipo de recurso do Argo CD<action>— operação a ser permitida<object>— instância específica do recurso ou*para todos
Mapear um usuário ou grupo para uma função (regra g):
g, <user/group>, <role>
Recursos e ações compatíveis
O Argo CD é compatível com os seguintes recursos: clusters, projects, applications, applicationsets, repositories, certificates, accounts, gpgkeys, logs, exec e extensions.
As seguintes ações são compatíveis: get, create, update, delete, sync, override e action/<api-group>/<Kind>/<action-name>.
sync,overrideeaction/<api-group>/<Kind>/<action-name>são válidos apenas para o recursoapplications.
Conceder permissões a um usuário local
-
Edite o ConfigMap
argocd-rbac-cm.kubectl edit cm argocd-rbac-cm -n argocd -
Adicione uma regra
gpara mapear o usuário local a uma função. Este exemplo mapeialocaluser1pararole:admin.Mapeie
localuser1pararole:adminpara obter acesso total a todos os recursos do Argo CD.Mapeie
localuser1para a função personalizadaproject-admin(comentada) para acesso restrito ao projeto.
ImportanteNão modifique outras configurações existentes no ConfigMap.
data: policy.csv: | ## p, role:project-admin, applications, *, */*, allow ## p, role:project-admin, projects, *, *, allow g, "14***01", role:admin # Keep the current setting. g, localuser1, role:admin # Map localuser1 to role:admin. ## g, localuser1, role:project-admin # Alternative: map to a custom role. scopes: '[uid]' # Keep the current setting.Este exemplo abrange dois cenários:
Conceder permissões a usuários RAM ou funções RAM
Por padrão, o ACK One GitOps integra a UI e a CLI do Argo CD à autenticação SSO do Alibaba Cloud RAM. Após fazer login no console do Alibaba Cloud, acesse a UI ou a CLI do Argo CD via SSO sem precisar inserir credenciais novamente. Os administradores da instância Fleet recebem automaticamente permissões de administrador do Argo CD. Usuários RAM comuns precisam receber permissões do administrador da frota.
Para um usuário RAM comum, conceda ambos os itens a seguir:
Permissões RBAC do Argo CD no
argocd-rbac-cmPermissões no nível da aplicação por meio de projetos do Argo CD
Conceder permissões RBAC do Argo CD
-
Edite o ConfigMap
argocd-rbac-cm.kubectl edit cm argocd-rbac-cm -n argocd -
Adicione uma regra
gpara mapear o UID do usuário RAM a uma função. Este exemplo concede a funçãorole:adminao usuário27***02.data: policy.csv: | ## p, role:project-admin, applications, *, */*, allow ## p, role:project-admin, projects, *, *, allow g, "14***01", role:admin # Keep the current setting. g, "27***02", role:admin # Grant role:admin to RAM user 27***02. ## g, "27***02", role:project-admin # Alternative: map to a custom role. scopes: '[uid]' # Keep the current setting.
Conceder permissões de aplicação do Argo CD
Cada aplicação pertence a um projeto. Use projetos para atribuir permissões de aplicação a diferentes usuários ou funções RAM.
Os projetos aceitam os seguintes controles de acesso:
Limite de repositório Git — restringe os repositórios Git permitidos para implantação
Limite de cluster e namespace — restringe os clusters e namespaces de destino para implantação
Limite de tipo de objeto — restringe os tipos de recursos Kubernetes implantáveis (por exemplo, RBAC, CRDs, DaemonSets e NetworkPolicies)
RBAC no nível da aplicação — concede permissões por aplicação a usuários ou funções RAM vinculando funções do projeto a grupos OpenID Connect (OIDC) e JSON Web Tokens (JWTs)
Para conceder permissões de aplicação a um usuário RAM:
Use a conta raiz do RAM ou uma conta de administrador de permissões para fazer login no console do RAM. Clique em Users ou Roles, abra o usuário ou função de destino e copie o UID ou Role ID.
Faça login no console do ACK One. Escolha Fleet > Multi-cluster GitOps e clique em GitOps Console.
Acesse Settings > Projects. Clique em + NEW PROJECT ou abra um projeto existente.
-
Clique em + ADD ROLE, configure os itens a seguir e clique em CREATE.
GENERAL — configurações básicas da função
POLICY RULES — configure as permissões da aplicação
GROUPS — insira o UID ou Role ID copiado na etapa 1 e clique em ADD GROUP
Este exemplo cria uma função roletest que concede ao usuário 27***02 acesso somente leitura (get) a todas as aplicações no projeto test. Após criar a função, clique em LOG IN VIA ALIYUN SSO para fazer login e verificar as permissões.
