SecurityAuthentification
Argo CD
Connecteurs, rôles et projets d'Argo CD
Comment on entre dans Argo CD et ce que chacun y peut, d'après 1.pulu-conf/main.go (Dex, RBAC, réglages) et les AppProjects rendus par les charts. Ce que décrit 1.pulu-conf n'est en place qu'après pulumi up.
Réglages
| Clé | Valeur (1.pulu-conf) | Rôle |
|---|---|---|
admin.enabled | pulumi.String(fmt.Sprintf("%t", !deployed)) | compte local admin (mot de passe statique) |
exec.enabled | pulumi.Bool(false) | terminal web dans les pods |
users.session.duration | pulumi.String("8h") | durée d'une session (24h par défaut) |
policy.default | pulumi.String("") | rôle de qui n'est nommé nulle part |
scopes | pulumi.String("[groups, email]") | claims lues comme groupes par le RBAC |
server.rbac.log.enforce.enable | pulumi.String("true") | journalisation des refus RBAC |
server.insecure | pulumi.Bool(deployed) | TLS terminé en amont (Traefik) |
Connecteurs Dex
| Connecteur | Nom | Émetteur | Groupes transmis | Nom d'utilisateur |
|---|---|---|---|---|
weebo | Weebo | $argo-dev-auth:url | oui | défaut |
weebo-admin | Weebo admin (2FA) | $argo-admin-auth:url | oui | défaut |
forgejo-actions | forgejo-actions | https://git.batleforc.fr/api/actions | non | sub |
Un connecteur sans groupes ni email n'obtient que ce qu'un rôle de projet donne à son nom d'utilisateur ; policy.default donne le reste.
Rôles globaux (policy.csv)
| Claim | Rôle | Nature |
|---|---|---|
weebo_admin:step-up | role:admin | marqueur émis par un mapping |
weebo_admin | role:readonly | groupe Authentik |
Projets
L'app of apps main est dans le projet bootstrap, destination argocd (1.pulu-conf).
Projet default : Non verrouillé : le projet intégré d'Argo CD permet tout (lockDefaultProject: false dans 2.argo/app/values.yaml). Plus aucune Application ne l'utilise : il peut être verrouillé.
| Projet | Sources | Destinations | Types cluster | Types namespacés | Applications | Rendu par |
|---|---|---|---|---|---|---|
bootstrap | ce dépôt | argocd, kube-system | ClusterRoleBinding | tous | main (1.pulu-conf) | app of apps |
che-config-batleforc | https://github.com/batleforc/weebo-dotfiles-che | dev-ws-batleforc | aucun | ConfigMap, Secret | batleforc-external-config (2.helm/user-app) | che |
che-users | ce dépôt | dev-ws-*, argocd | Namespace | RoleBinding, SecretStore, Application, ConfigMap | che-user-batleforc (weebo-si-operator)che-user-batleforc-test (weebo-si-operator) | che |
database | oci://ghcr.io/clickhouse/clickhouse-operator-helmhttps://mongodb.github.io/helm-chartshttps://cloudnative-pg.github.io/chartshttps://operator.rustfs.comhttps://github.com/rustfs/operatorhttps://valkey.io/valkey-helmce dépôt | argocd, database, monitoring, s3, valkey | Namespace, CustomResourceDefinition, ClusterRole, MutatingWebhookConfiguration, ValidatingWebhookConfiguration, ClusterRoleBinding, Tenant | tous | clickhouse-operatorcnpg-operatordatabasedatabase-appmongodb-operators3-operatorvalkey-operator | app of apps |
dev | https://github.com/devfile/devworkspace-operatorhttps://eclipse-che.github.io/che-operator/chartsoci://ghcr.io/batleforc/charts/weebo-si-operatoroci://ghcr.io/batleforc/charts/endpoint-gatewayce dépôt | argocd, eclipse-che, devworkspace-controller, weebo-si-hardening | Namespace, ClusterRole, ClusterRoleBinding, MutatingWebhookConfiguration, CustomResourceDefinition, ValidatingWebhookConfiguration, DevWorkspaceOperatorConfig, Bundle, WeeboSiConfig, WeeboSiTeam, WeeboSiUser | tous | cheche-appche-app-bisdevworkspace-operatoreclipse-che-operatorweebo-si-endpoint-gatewayweebo-si-hardening-configweebo-si-hardening-operator | app of apps |
dev-base | oci://ghcr.io/batlehub/batlehub/charts/batlehuboci://code.forgejo.org/forgejo-helm/forgejooci://ghcr.io/batleforc/charts/weebo-forgejooci://ghcr.io/batleforc/charts/weebo-batlehuboci://ghcr.io/batleforc/charts/weebo-angosoci://ghcr.io/batleforc/charts/weebo-stalwartce dépôt | argocd, angos, batlehub, forgejo, weebo-forgejo, weebo-batlehub, weebo-angos, angos-node, mail, weebo-stalwart | Namespace, ValkeyCluster, ClusterRole, ClusterRoleBinding, ClusterSecretStore, ClusterExternalSecret, CustomResourceDefinition, ValidatingWebhookConfiguration, ForgejoInstance, ForgejoNamespacePolicy, StalwartInstance, StalwartNamespacePolicy, StalwartDomain | tous | angosbatlehubbatlehub-appforgejoforgejo-appweebo-angosweebo-batlehubweebo-forgejo | app of apps |
infra | oci://ghcr.io/traefik/helm/traefikoci://quay.io/jetstack/charts/cert-manageroci://ghcr.io/bank-vaults/helm-charts/vault-operatoroci://quay.io/jetstack/charts/trust-manageroci://ghcr.io/tarampampam/error-pages/charts/error-pageshttps://ghcr.io/external-secrets/chartshttps://ghcr.io/bank-vaults/helm-chartshttps://charts.dexidp.iohttps://kyverno.github.io/kyverno/https://charts.longhorn.iohttps://github.com/kubernetes-csi/external-snapshotterhttps://charts.goauthentik.iooci://ghcr.io/batleforc/charts/weebo-authentikghcr.io/external-secrets/chartsghcr.io/bank-vaults/helm-chartshttps://github.com/rancher/local-path-provisionerce dépôt | argocd, auth, dex, cert-manager, kube-system, hook, longhorn, netbird, traefik, vault, vault-operator, vault-infra, external-secrets, local-path-storage | Namespace, CustomResourceDefinition, ClusterRole, Role, ClusterRoleBinding, RoleBinding, IngressClass, ValidatingWebhookConfiguration, MutatingWebhookConfiguration, ClusterIssuer, Vault, Bundle, Certificate, MutatingPolicy, ClusterPolicy, PriorityClass, AuthentikInstance, AuthentikNamespacePolicy, AuthentikUser, AuthentikGroup, AuthentikBrand, AuthentikFlow, AuthentikScopeMapping, AuthentikBlueprint, RecurringJob, StorageClass | tous | authauth-appauthentikauthentik-operatorcert-managerdexerror-pages-externalerror-pages-internalexternal-secretshookhook-appingressingress-appkyvernolocal-storagelonghornmain-storagesnapshot-crdsterra-authentikterra-vaulttraefiktrust-managervaultvault-appvault-operatorvault-webhookvpn | app of apps |
monitoring | https://open-telemetry.github.io/opentelemetry-helm-chartshttps://github.com/batleforc/weebo-si-hardeningce dépôt | argocd, monitoring, obi | Namespace, ClusterRole, ClusterRoleBinding, ClusterSecretStore, ClusterExternalSecret | tous | clickstackclickstack-preauthmonitoringobiotel-clusterotel-node | app of apps |
Rôles de projet
| Projet | Rôle | Sujets | Politiques |
|---|---|---|---|
che-config-batleforc | user-batleforc | max@weebo.internal | p, proj:che-config-batleforc:user-batleforc, applications, get, che-config-batleforc/*, allowp, proj:che-config-batleforc:user-batleforc, applications, sync, che-config-batleforc/*, allow |
che-users | user-batleforc | max@weebo.internal | p, proj:che-users:user-batleforc, applications, get, che-users/che-user-batleforc, allowp, proj:che-users:user-batleforc, applications, sync, che-users/che-user-batleforc, allow |
che-users | user-batleforc-test | batleforc-test@weebo.internal | p, proj:che-users:user-batleforc-test, applications, get, che-users/che-user-batleforc-test, allowp, proj:che-users:user-batleforc-test, applications, sync, che-users/che-user-batleforc-test, allow |