48 lines
1.8 KiB
Markdown
48 lines
1.8 KiB
Markdown
---
|
||
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]]
|