Saltar para o conteúdo principal
Versão Next

Segurança — ArgoCD

O chart tdp-argo suporta autenticação LDAP via Dex (tdp-argo.dex.enabled: true), com credenciais de bind em argocd-secret (chaves dex.ldap.bindDN e dex.ldap.bindPW), dex.config em tdp-argo.configs.cm e RBAC em tdp-argo.rbacConfig.

1. Credenciais LDAP no Secret

Com tdp-argo.configs.secret.createSecret: true, você pode definir extras renderizados no argocd-secret:

tdp-argo:
configs:
secret:
createSecret: true
extra:
dex.ldap.bindDN: "uid=ldap.user,cn=users,cn=accounts,dc=example,dc=com"
dex.ldap.bindPW: "<ldap-bind-password>"
perigo

Não commite senhas. Use arquivos de valores privados, CI seguro ou gestão de secrets externa.

2. Habilitar Dex e dex.config

tdp-argo:
configs:
cm:
url: https://<host>
dex.config: |
connectors:
- type: ldap
id: ldap
name: LDAP
config:
host: "<ldap-host>:389"
insecureNoSSL: true
insecureSkipVerify: true
bindDN: "$dex.ldap.bindDN"
bindPW: "$dex.ldap.bindPW"
userSearch:
baseDN: "cn=users,cn=accounts,dc=example,dc=com"
filter: "(objectClass=person)"
username: uid
idAttr: uid
emailAttr: mail
nameAttr: givenName
secret:
createSecret: false

dex:
enabled: true

Ajuste host, baseDN e flags SSL conforme seu diretório. Quando createSecret: false, crie e mantenha o argocd-secret por outro meio, com as chaves referenciadas em dex.config.

3. RBAC para grupos LDAP

tdp-argo:
rbacConfig:
policy.default: role:readonly
policy.csv: |
g:devops-admins, role:admin
g:data-platform, role:admin
g:data-read, role:readonly
p, role:ldap-user, applications, *, default/<namespace>, get
p, role:ldap-user, applications, *, default/<namespace>, sync
p, role:ldap-user, applications, *, default/<namespace>, override
p, role:ldap-user, clusters, *, *, get
g, *, role:ldap-user

Substitua <namespace> pelo projeto/namespace lógico do Argo CD que você utiliza.

Instalação ou atualização

Terminal input
helm upgrade --install <release> \
oci://registry.tecnisys.com.br/tdp/charts/tdp-argo \
-n <namespace> --create-namespace

Login

  • UI: acesse https://<host> e use "LOG IN VIA LDAP" (login/senha local é só para contas locais).
  • CLI: argocd login <host> --sso

Solução de problemas

ProblemaCausa provável
no such host para argocd-dex-serverDex desabilitado — tdp-argo.dex.enabled: true
config referenced key does not exist in secretChaves ausentes em argocd-secret
LDAP inválidoBind DN/senha, conectividade, userSearch
Usuário sem permissãorbacConfig.policy.csv
Terminal input
kubectl logs -n <namespace> deployment/<argocd-server-deployment> -f

Teste LDAP a partir do pod Dex (exemplo com ldapsearch):

Terminal input
kubectl exec -n <namespace> deployment/<argocd-dex-deployment> -- \
ldapsearch -x -H ldap://<ldap-host>:389 \
-D "<bind-dn>" \
-w "<password>" \
-b "<user-search-base>" \
"(uid=<username>)"

Substitua nomes dos deployments pelos recursos reais (kubectl get deploy -n <namespace>).