Security configurations should use explicit controls and secure defaults rather than implicit permissions or hardcoded credentials. This principle helps prevent accidental privilege escalation and credential exposure.
Key practices:
Example of explicit RBAC configuration:
# Explicit logs permission instead of implicit access via applications.get
p, dev-team, logs, get, my-app/*, allow
p, dev-team, applications, get, my-app/*, allow
# Explicit override permission with secure default (disabled)
application.sync.externalRevisionConsideredOverride: 'true'
p, dev-team, applications, override, my-app/*, allow
Example of avoiding hardcoded secrets:
# Instead of hardcoding in manifests:
# oidc.clientSecret: "hardcoded-secret-value"
# Use kubectl or external secret management:
kubectl create secret generic argocd-secret \
--from-literal=oidc.clientSecret="your-secret-value"
This approach reduces security risks by making security boundaries explicit and preventing accidental exposure of sensitive information.
Enter the URL of a public GitHub repository