WAF++ WAF++
Back to WAF++ Homepage

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) und recovery_window_in_days >= 7 gespeichert 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

  1. Secrets Manager Terraform-Ressourcen erstellen: aws_secretsmanager_secret mit name, kms_key_id und recovery_window_in_days.

  2. CMK-Schlüssel bereitstellen: aws_kms_key mit enable_key_rotation = true für Secrets-Verschlüsselung.

  3. Secret-Werte sicher einbringen: Actual Secret Values nie in Terraform-State speichern; initial via AWS CLI oder Secrets-Manager-Console setzen.

  4. Rotation aktivieren: Secrets Manager Rotation Lambda für RDS-Datenbank-Passwörter und API-Keys konfigurieren.

  5. Pre-Commit-Hook installieren: gitleaks oder detect-secrets als Pre-Commit-Hook; in CI-Pipeline als Pflichtschritt einbinden.

  6. ARN-Referenzen in Workloads verwenden: ECS-Task-Definitions auf valueFrom: secrets_arn umstellen; keine value: "my-password".

  7. 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 .tfvars oder Code; kein zentraler Secrets Store; keine Rotation.

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
resource "aws_secretsmanager_secret" "db_password" {
  name                    = "prod/app/db-password"
  description             = "RDS-Masterpasswort für Produktionsdatenbank"
  kms_key_id              = aws_kms_key.secrets.arn
  recovery_window_in_days = 30
  tags = {
    owner       = "platform-team"
    environment = "production"
  }
}
resource "aws_secretsmanager_secret" "db_password" {
  # name fehlt             – WAF-SEC-060 Violation
  recovery_window_in_days = 0
  # recovery_window = 0   – WAF-SEC-060 Violation
  # kms_key_id fehlt       – WAF-SEC-060 Violation
}

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
resource "aws_kms_key" "secrets" {
  description         = "CMK für Secrets Manager"
  enable_key_rotation = true
}

resource "aws_secretsmanager_secret" "api_key" {
  name       = "prod/app/external-api-key"
  kms_key_id = aws_kms_key.secrets.arn
}
resource "aws_secretsmanager_secret" "api_key" {
  name = "prod/app/external-api-key"
  # kms_key_id fehlt – Standard-AWS-Schlüssel
  # aws/secretsmanager wird verwendet
  # WAF-SEC-060 Violation: CMK erforderlich
}

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 aws_secretsmanager_secret-Ressourcen mit kms_key_id und recovery_window_in_days; kein Plaintext-Secret in .tfvars oder Ressourcen-Attributen.

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 secretsmanager:GetSecretValue-API-Aufrufen nur durch autorisierte IAM-Principals.

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