WAF-SEC-060 – Secrets Management – No Hardcoded Credentials
Beschreibung
Alle Secrets, API-Keys, Passwörter, Datenbank-Credentials und Zertifikate MÜSSEN in einer dedizierten Secrets-Management-Lösung (AWS Secrets Manager oder HashiCorp Vault) gespeichert sein. Secrets DÜRFEN NICHT hartcodiert in IaC-Code, Terraform-Variable-Dateien, Umgebungsvariablen in Task-Definitions, Quellcode oder CI/CD-Pipeline-Konfigurationen erscheinen. Secrets-Manager-Secrets MÜSSEN mit kundenverwalteten KMS-Schlüsseln verschlüsselt sein. Automatische Rotation MUSS für alle langlebigen Credentials konfiguriert sein, wo der Zieldienst dies unterstützt.
Rationale
Hartcodierte Credentials in Quellcode, IaC oder CI/CD-Konfigurationen gehören zu den häufigsten Ursachen kritischer Sicherheitsvorfälle. Einmal in die Versionskontrolle eingecheckt, persistieren Secrets in der Git-Historie indefinit – auch nach Löschung aus der aktuellen Revision – und sind für jeden mit Lesezugriff auf das Repository zugänglich. Zentralisiertes Secrets Management bietet Zugriffs-Auditing, Rotations-Automatisierung, feingranulare Zugriffssteuerung und einen einzigen Revokationspunkt im Kompromittierungsfall.
Bedrohungskontext
| Risiko | Beschreibung |
|---|---|
Git-Repository-Leak |
In der Git-Historie persistierte Secrets sind für alle Repository-Zugreifenden zugänglich – einschließlich externer Angreifender nach einem Repository-Leak. |
CI/CD-Log-Exposition |
Secrets in Pipeline-Logs, Artifact-Stores oder Container-Image-Layern werden bei Build-System-Kompromittierung sofort offenbart. |
Langlebige Credentials nach Mitarbeiterwechsel |
Ohne Rotation bleiben Credentials nach Ausscheiden von Mitarbeitenden oder nach einer Service-Kompromittierung unbegrenzt gültig. |
Kaskadierende Breach |
Ein einziges geleaktes Secret, das Zugriff auf den Secrets Store gewährt, kompromittiert alle dort gespeicherten Credentials aller Services. |
Anforderung
-
Alle Secrets MÜSSEN in AWS Secrets Manager mit explizitem
name, CMK-Encryption (kms_key_id) undrecovery_window_in_days >= 7gespeichert sein. -
Kein Plaintext-Secret DARF in
.tfvars,terraform.tfstate, Umgebungsvariablen oder Source-Code erscheinen. -
Pre-Commit-Hooks oder CI-Pipeline-Scans (gitleaks, detect-secrets, truffleHog) MÜSSEN auf jedem Commit auf Secrets prüfen.
-
ECS Task Definitions, Lambda-Umgebungsvariablen und Kubernetes Pods MÜSSEN Secrets via Secrets-Manager-ARN-Referenzen einbinden – nicht als Plaintext.
-
Automatische Rotation MUSS für Datenbank-Passwörter, API-Keys und OAuth-Tokens konfiguriert sein.
-
recovery_window_in_days = 0(sofortige Löschung) ist in produktiven Umgebungen VERBOTEN.
Implementierungsanleitung
-
Secrets Manager Terraform-Ressourcen erstellen:
aws_secretsmanager_secretmitname,kms_key_idundrecovery_window_in_days. -
CMK-Schlüssel bereitstellen:
aws_kms_keymitenable_key_rotation = truefür Secrets-Verschlüsselung. -
Secret-Werte sicher einbringen: Actual Secret Values nie in Terraform-State speichern; initial via AWS CLI oder Secrets-Manager-Console setzen.
-
Rotation aktivieren: Secrets Manager Rotation Lambda für RDS-Datenbank-Passwörter und API-Keys konfigurieren.
-
Pre-Commit-Hook installieren:
gitleaksoderdetect-secretsals Pre-Commit-Hook; in CI-Pipeline als Pflichtschritt einbinden. -
ARN-Referenzen in Workloads verwenden: ECS-Task-Definitions auf
valueFrom: secrets_arnumstellen; keinevalue: "my-password". -
CloudTrail-Audit:
secretsmanager:GetSecretValue-Events überwachen; Alert bei ungewöhnlichen Zugriffsmustern.
Reifegrad-Abstufung
| Level | Bezeichnung | Kriterien |
|---|---|---|
1 |
Secrets in IaC hartcodiert |
Passwörter und API-Keys als Plaintext in |
2 |
Secrets Manager eingesetzt; Migration laufend |
AWS Secrets Manager für Datenbank-Credentials und API-Keys; Pre-Commit-Hooks für Neucommits; CMK-Verschlüsselung aktiv. |
3 |
Alle Secrets zentralisiert; Rotation aktiv |
Alle Produktions-Secrets in Secrets Manager; keine Plaintext-Secrets in IaC oder CI/CD; automatische Rotation für alle unterstützten Dienste. |
4 |
Dynamische kurzlebige Credentials; Zugriffs-Anomalie-Alerting |
Datenbank-Credentials dynamisch via Secrets-Manager-RDS-Integration; Alarm bei ungewöhnlichem Secret-Zugriff. |
5 |
Zero-Secret-Workloads via IAM-Rollen |
Alle Service-zu-Service-Authentifizierung via IAM-Rollen mit temporären Credentials; Secrets Manager nur noch für Drittanbieter-Integrationen. |
Terraform Checks
waf-sec-060.tf.aws.secrets-manager-exists
Prüft: Secrets-Manager-Secrets müssen mit Namen und Recovery-Window konfiguriert sein.
| Compliant | Non-Compliant |
|---|---|
|
|
Remediation: Allen aws_secretsmanager_secret-Ressourcen name und recovery_window_in_days = 30 hinzufügen. force_overwrite_replica_secret = true und recovery_window_in_days = 0 nur in kontrollierten Testumgebungen verwenden.
waf-sec-060.tf.aws.secrets-encrypted-with-cmk
Prüft: Secrets-Manager-Secrets müssen mit einem kundenverwalteten KMS-Schlüssel verschlüsselt sein.
| Compliant | Non-Compliant |
|---|---|
|
|
Remediation: aws_kms_key-Ressource mit enable_key_rotation = true erstellen und deren ARN via kms_key_id = aws_kms_key.secrets.arn in der aws_secretsmanager_secret-Ressource referenzieren. Die KMS-Key-Policy muss dem Secrets-Manager-Service-Principal Encrypt/Decrypt-Berechtigungen gewähren.
Evidenz
| Typ | Pflicht | Beschreibung |
|---|---|---|
IaC |
✅ Pflicht |
Terraform-Konfiguration mit |
Config |
✅ Pflicht |
Pre-Commit- oder CI-Pipeline-Secret-Scanning-Konfiguration (gitleaks, detect-secrets) mit Ergebnissen ohne erkannte Secrets. |
Process |
Optional |
Secret-Rotations-Zeitplan-Dokumentation mit Angabe, welche Secrets, in welchem Intervall und durch welche Automation rotiert werden. |
Config |
Optional |
CloudTrail-Log-Sample mit |
Regulatorisches Mapping
| Framework | Controls |
|---|---|
ISO 27001:2022 |
A.5.15 – Threat intelligence; A.5.16 – Threat classification; A.5.24 – Information security incident management; A.5.25 – Assessment and decision on information security events; A.5.26 – Response to information security incidents; A.5.27 – Learning from information security incidents; A.8.2 – Privileged access rights; A.8.5 – Secure authentication; A.8.8 – Management of technical vulnerabilities; A.8.10 – Information deletion; A.8.11 – Data masking; A.8.22 – Segregation of networks; A.8.23 – Network security; A.8.24 – Use of cryptography |
ISO 27017 |
CLD.5.1 – Information security in cloud services; CLD.5.2 – Access control in cloud services; CLD.6.3 – Shared roles and responsibilities |
ISO 27018 |
A.2 – Purpose legitimacy and PII protection; A.10 – Confidentiality and security of PII |
GDPR |
Art. 5(1)(c) – Data minimisation; Art. 5(1)(f) – Integrity and confidentiality; Art. 9 – Special categories of personal data; Art. 25 – Data protection by design and by default; Art. 32 – Security of processing; Art. 44 – General principles for transfers; Art. 46 – Appropriate safeguards; Art. 30 – Records of processing activities |
BSI C5:2020 |
IDM-01 – Identity and access management policy; IDM-02 – Role management; IDM-03 – User lifecycle management; COM-01 – Network and service security; COM-02 – Cloud monitoring; COM-03 – Cloud logging |
EUCS (ENISA) |
IAM-01 – Identity and access management; IAM-02 – Access rights management; IAM-03 – Privileged access management; IAM-04 – Access control policy |
NIST SP 800-53 |
AC-1 – Policy and procedures; AC-2 – Account management; AC-3 – Access enforcement; AC-6 – Least privilege; IA-2 – Identification and authentication; IA-5 – Authenticator management; SI-4 – Information system monitoring; SI-5 – Malicious code protection |
FedRAMP |
AC-1, AC-2, AC-3, AC-6, IA-2, IA-5, SI-4, SI-5 (Moderate/High baseline) |
HIPAA |
§ 164.308(a)(4) – Access management; § 164.312(a) – Access control; § 164.312(d) – Information system activity review; § 164.312(e)(1) – Transmission security |
PCI DSS v4.0 |
Req 7 – Restrict access to cardholder data; Req 8 – Identify and authenticate access; Req 8.3 – Non-service accounts; Req 8.6 – Password policy; Req 8.2.4 – MFA |
SOC 2 Type II |
CC6.1 – Logical access security software; CC6.2 – Logical access security management; CC6.6 – Secure configuration; CC6.7 – Network security |
CSRD |
ESRS E1 – Climate change – Disclosure of information; ESRS G1 – Governance – Disclosure of information |
NIST CSF 2.0 |
GV.AC – Identity management and access control; DE.CM – Configuration management; DE.AE – Anomaly detection |
CIS Controls v8 |
CIS 4 – Secure Configuration; CIS 4.1 – Inventory and control of enterprise assets; CIS 4.4 – Access control; CIS 4.5 – Least privilege; CIS 4.8 – Audit log management |
TISAX |
Information security – Access rights management; Prototype protection – Sensitive data handling |
ANSSI SecNumCloud |
Domain – Identity and access management; Domain – Security monitoring |
BIO |
BIO – Identificatie en authenticatie; BIO – Toegangsbeheer |
ENS High |
org.3 – Políticas de acceso; op.exp.5 – Monitorización de la configuración |
UK NCSC CAF |
B1 – Access control; B2 – Secure configuration |
CMMC 2.0 |
AC.L2-3.1.1 – Access control policy; AC.L2-3.5.1 – Access enforcement |
IRAP |
ISM – Identity and access management; ISM – Access control |
CCCS PBMM |
AC-6 – Least privilege; AC-7 – Unsuccessful logon attempts |
MAS TRM |
Ch.4 – Identity and access management; Ch.8 – Security monitoring |
ISMAP |
Access control and identity management |
FISC |
Operational measures – Access control |