--- title: Credential Policy category: concepts tags: [credentials, security, 1password, secrets] created: "2026-07-24" modified: "2026-07-24" --- # Credential Policy ## Regel Credentials, API-Keys und Secrets gehören in den 1Password Vault "Hermes" und werden von dort abgerufen (via `op` CLI). Passwörter in .env-Dateien sind ebenfalls akzeptabel. **Keine Secrets in Git-Repositories.** ## 1Password Vaults | Vault | Zweck | Used By | |-------|-------|---------| | Hermes | General secrets | Hermes Agent | | Kubernetes ESO | K8s ExternalSecrets Operator | ESO → K8s Secrets | ## ESO (External Secrets Operator) - Liest aus Vault "Kubernetes ESO" - Failing ExternalSecrets burn 1000 requests/hr - Bei Problemen: ESO scale 0, warten, fixen, wieder scale 1 ## Bekannte Issues - **`mariadb-root` Item in 1Password**: PASSWORT IST FALSCH — echtes PW in `/root/.my.cnf` auf VM300 - **1Password CLI v2.35**: assignment statements (`username=val`), NOT `--username` flags - **op CLI**: `--reveal` für blocked fields - **Account-Level Rate Limit**: 1Password rate-limited auf ACCOUNT-Ebene, nicht per SA. ESO (25 ExternalSecrets × 1h) kann das gemeinsame Kontingent erschöpfen → op item get auf Hermes Host schlägt fehl. Fix: ESO scale 0, 1h warten, refresh intervals auf 6h erhöhen. Siehe Solution Doc: `docs/solutions/architecture/2026-07-24-1password-account-level-rate-limit.md` ## K8s Secret Pattern ```yaml # ExternalSecret referenziert 1Password Item apiVersion: external-secrets.io/v1beta1 kind: ExternalSecret spec: data: - secretKey: password remoteRef: key: "Paperless DB Pass" # 1Password Item Title property: password ``` ## Related - [[reference/ssh-keys]] - [[systems/gitea]] (NIEMALS öffentlich — enthält Secrets) - [[systems/hindsight]]