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.
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