0Pricing
Cloud & IT Cert Prep · Lektion

Secrets Manager und Parameter Store

Rotieren Sie Datenbankzugangsdaten automatisch mit Secrets Manager, speichern Sie nicht geheime Konfigurationen im Parameter Store und integrieren Sie beide Services mit Lambda und ECS.

Secrets Manager und Parameter Store ist eine kostenlose Cloud & IT Cert Prep-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Cloud & IT Cert Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Cloud & IT Cert Prep-Kurs umfasst insgesamt 4 Lektionen.

Das Problem mit Secrets im Code

Ein häufiges und gefährliches Anti-Pattern besteht darin, Secrets (Datenbankpasswörter, API-Schlüssel und OAuth-Tokens) im Quellcode der Anwendung, in Umgebungsvariablen oder in Konfigurationsdateien zu speichern, die in die Versionsverwaltung eingecheckt wurden. Wenn diese Repositorys offengelegt werden – etwa versehentlich öffentlich gemacht oder von einem Angreifer aufgerufen –, sind alle Secrets sofort kompromittiert. AWS stellt zwei verwaltete Services bereit, die dieses Problem beseitigen: AWS Secrets Manager für Anmeldeinformationen, die automatisch rotiert werden müssen, und AWS Systems Manager Parameter Store für Konfigurationswerte und Secrets ohne Rotation.

# Anti-pattern: secrets in code (NEVER do this)
# db_password = 'supersecret123'
# api_key = 'sk-abc123def456'

# Best practice: retrieve at runtime
import boto3

client = boto3.client('secretsmanager', region_name='us-east-1')
response = client.get_secret_value(SecretId='prod/myapp/db-password')
password = response['SecretString']  # fresh value, always current

Überblick über AWS Secrets Manager

AWS Secrets Manager ist ein verwalteter Service zum Speichern, Abrufen und automatischen Rotieren von Secrets. Alle Secrets werden mit KMS verschlüsselt (standardmäßig mit einem von AWS verwalteten Schlüssel oder mit Ihrem CMK). Secrets können beliebige strukturierte Daten als Schlüssel-Wert-JSON-String speichern. Secrets Manager kostet 0,40 $ pro Secret und Monat sowie 0,05 $ pro 10.000 API-Aufrufen. Der entscheidende Unterschied zu Parameter Store ist die integrierte automatische Rotation für RDS, Redshift, DocumentDB und benutzerdefinierte Secrets über Lambda-Rotationsfunktionen – während der Rotation sind keine Änderungen an der Anwendung erforderlich.

# Create a secret in Secrets Manager
aws secretsmanager create-secret \
  --name 'prod/myapp/database' \
  --description 'Production MySQL credentials' \
  --secret-string '{"username":"admin","password":"changeme123","host":"mydb.rds.amazonaws.com","port":3306,"dbname":"orders"}'

# Retrieve the secret (by application)
aws secretsmanager get-secret-value \
  --secret-id 'prod/myapp/database' \
  --query 'SecretString' \
  --output text | python3 -c 'import sys,json; s=json.load(sys.stdin); print(s["password"])'

Automatische Rotation mit Secrets Manager

Die automatische Rotation ist die leistungsstärkste Funktion von Secrets Manager. Bei RDS-Datenbanken rotiert Secrets Manager Passwörter nativ, indem der Dienst: 1) ein neues Passwort generiert, 2) das Passwort des Datenbankbenutzers in RDS aktualisiert, 3) das Secret mit dem neuen Passwort aktualisiert und 4) überprüft, ob die neuen Anmeldedaten funktionieren. All das geschieht, während Ihre Anwendung ausgeführt wird – ohne Ausfallzeit und ohne manuellen Eingriff. Anwendungen rufen immer get-secret-value auf, um das aktuelle Passwort abzurufen, und verwenden daher automatisch die rotierten Anmeldedaten.

# Enable automatic rotation for RDS secret
aws secretsmanager rotate-secret \
  --secret-id 'prod/myapp/database' \
  --rotation-rules AutomaticallyAfterDays=30 \
  --rotation-lambda-arn arn:aws:lambda:us-east-1:123:function:SecretsManagerRDSMySQLRotationSingleUser

# AWS provides pre-built rotation Lambda functions for:
# - RDS MySQL/PostgreSQL/MariaDB/Oracle/SQL Server
# - DocumentDB
# - Redshift
# - Custom: write your own Lambda for other services

# Application code: always call GetSecretValue, never cache long-term

Secrets lokal zwischenspeichern

Secrets Manager bei jeder Datenbankabfrage aufzurufen, wäre teuer und langsam. Als Best Practice gilt, das Secret lokal für kurze Zeit im Arbeitsspeicher zwischenzuspeichern. AWS stellt offizielle Secrets-Manager-Caching-Clients für Java und Python bereit, die Secrets für eine konfigurierbare TTL zwischenspeichern. Wenn der Cache abläuft, ruft der Client das Secret erneut von Secrets Manager ab. Erhält eine Anwendung einen Authentifizierungsfehler (der darauf hindeutet, dass das Passwort rotiert wurde), aktualisiert sie den Cache sofort und versucht die Anfrage erneut. Dieses Muster bietet eine gute Leistung und aktuelle Daten, ohne die Secrets-Manager-API mit Anfragen zu überlasten.

# Python: Secrets Manager caching client
# pip install aws-secretsmanager-caching

from botocore.session import get_session
from aws_secretsmanager_caching import SecretCache, SecretCacheConfig

client = get_session().create_client('secretsmanager')
cache = SecretCache(
    config=SecretCacheConfig(secret_refresh_interval=3600),  # cache 1 hour
    client=client
)

# Returns cached value unless refresh interval expired
secret = cache.get_secret_string('prod/myapp/database')

AWS Systems Manager Parameter Store

AWS Systems Manager (SSM) Parameter Store ist ein kostenloser (für Standardparameter) hierarchischer Schlüssel-Wert-Speicher für Konfigurationsdaten und Secrets. Er unterstützt die Parametertypen String, StringList und SecureString. SecureString verschlüsselt Werte mit KMS. Im Gegensatz zu Secrets Manager unterstützt Parameter Store KEINE automatische Rotation – der Dienst ist für Konfigurationswerte gedacht, die nur selten geändert werden. Standardparameter sind kostenlos und können bis zu 4 KB speichern. Erweiterte Parameter unterstützen größere Werte (bis zu 8 KB), Parameterrichtlinien (Ablauf und Erinnerungen an die Rotation) und kosten 0,05 USD pro Parameter und Monat.

# Create Parameter Store parameters
aws ssm put-parameter \
  --name '/prod/myapp/db-host' \
  --value 'mydb.cluster-abc.us-east-1.rds.amazonaws.com' \
  --type String

aws ssm put-parameter \
  --name '/prod/myapp/db-password' \
  --value 'mysecretpassword' \
  --type SecureString \
  --key-id alias/my-kms-key

# Retrieve parameter
aws ssm get-parameter \
  --name '/prod/myapp/db-password' \
  --with-decryption \
  --query 'Parameter.Value' --output text

Parameter-Store-Hierarchie und IAM

Organisieren Sie Parameter-Store-Werte mithilfe einer hierarchischen Pfadstruktur, die Ihre Umgebungs- und Anwendungsarchitektur abbildet. Dadurch können Sie fein abgestufte IAM-Richtlinien erstellen, die den Zugriff auf Parameter anhand eines Pfadpräfixes gewähren. Beispielsweise können Sie einer Lambda-Funktion nur Zugriff auf Parameter unter /prod/payment-service/ gewähren – auf die Parameter anderer Services kann sie nicht zugreifen. Dieses Prinzip der geringsten Berechtigung für Konfigurationen verhindert, dass ein kompromittierter Service die Secrets eines anderen Services ausliest.

# Parameter hierarchy
/prod/payment-service/db-password
/prod/payment-service/stripe-api-key
/prod/order-service/db-password
/prod/order-service/redis-url
/staging/payment-service/db-password

# IAM policy: payment-service Lambda can ONLY read its params
{
  'Effect': 'Allow',
  'Action': ['ssm:GetParameter', 'ssm:GetParameters', 'ssm:GetParametersByPath'],
  'Resource': 'arn:aws:ssm:us-east-1:123:parameter/prod/payment-service/*'
}

# Get all parameters for an app at once
aws ssm get-parameters-by-path \
  --path '/prod/payment-service/' \
  --with-decryption --recursive

Secrets Manager und Parameter Store: Wann welcher Dienst verwendet wird

Wählen Sie anhand Ihrer Anforderungen zwischen den beiden Services: Verwenden Sie Secrets Manager, wenn Sie eine automatische Secret-Rotation benötigen, Datenbankanmeldedaten speichern, das Secret für mehrere AWS-Konten freigeben müssen oder Compliance-Vorgaben dokumentierte Rotationsrichtlinien erfordern. Verwenden Sie Parameter Store, wenn Sie Konfigurationswerte (keine Secrets) benötigen, eine kostenlose Lösung für die einfache Speicherung von Schlüssel-Wert-Paaren wünschen, eine hierarchische Konfiguration mit pfadbasierten Zugriffskontrollen benötigen oder den Versionsverlauf von Parametern speichern müssen. Viele Architekturen verwenden beide Services gemeinsam: Parameter Store für Konfigurationen und Secrets Manager für Anmeldedaten.

# Usage comparison:
# Secrets Manager:
#   Cost: $0.40/secret/month
#   Rotation: Automatic (RDS, custom Lambda)
#   Cross-account: Yes
#   Best for: Database passwords, API keys, OAuth tokens

# Parameter Store:
#   Cost: Free (standard) / $0.05/month (advanced)
#   Rotation: Manual only
#   Cross-account: No (use Secrets Manager)
#   Best for: Config values, feature flags, non-rotating secrets

Integration mit Lambda und ECS

Lambda-Funktionen und ECS-Tasks sollten Secrets beim Start und nicht bei jedem Aufruf abrufen. Für Lambda: Rufen Sie Secrets im Initialisierungscode (außerhalb der Handler-Funktion) ab und speichern Sie sie in globalen Variablen zwischen – die Lambda-Ausführungsumgebung bleibt zwischen Aufrufen bestehen, sodass Secrets nur einmal pro Lebensdauer der Umgebung abgerufen werden. Für ECS: Verwenden Sie das Feld secrets in der Task-Definition, um Secrets-Manager-Werte oder SecureStrings aus Parameter Store als Umgebungsvariablen zu injizieren – ECS ruft sie beim Start des Tasks ab und injiziert sie, ohne dass Änderungen am Anwendungscode erforderlich sind.

# ECS task definition: inject secret as environment variable
{
  'containerDefinitions': [{
    'name': 'api',
    'image': 'my-api:latest',
    'secrets': [
      {
        'name': 'DB_PASSWORD',
        'valueFrom': 'arn:aws:secretsmanager:us-east-1:123:secret:prod/myapp/database:password::'
      },
      {
        'name': 'API_KEY',
        'valueFrom': '/prod/myapp/api-key'
      }
    ]
  }]
}
# Application reads DB_PASSWORD from env var
# ECS injects the current secret value at task start

Parameter Store für EC2-AMI-IDs

Eine praktische, aber häufig übersehene Verwendung von Parameter Store ist die Speicherung von AMI-IDs und anderen Deployment-Referenzen. Statt AMI-IDs in Ihren CloudFormation-Templates fest zu codieren (die veralten, sobald neue AMIs veröffentlicht werden), verweisen Sie auf einen Wert in Parameter Store. Ihre CI/CD-Pipeline aktualisiert die AMI-ID in Parameter Store, sobald ein neues Golden AMI erstellt wurde. CloudFormation liest die aktuelle AMI-ID zum Bereitstellungszeitpunkt aus Parameter Store. AWS veröffentlicht außerdem die IDs der neuesten Amazon-Linux-AMIs in öffentlichen Parameter-Store-Pfaden, auf die Sie direkt verweisen können.

# Get AWS public AMI ID from Parameter Store
aws ssm get-parameter \
  --name '/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-x86_64' \
  --query 'Parameter.Value' --output text

# CloudFormation: reference public AMI parameter
Parameters:
  LatestAmiId:
    Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>'
    Default: '/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-x86_64'

Resources:
  MyEC2:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: !Ref LatestAmiId

Überwachung und Compliance für Secrets

Die Governance von Secrets setzt voraus, dass bekannt ist, wer wann auf Secrets zugegriffen hat. AWS CloudTrail zeichnet jeden API-Aufruf an Secrets Manager und Parameter Store auf: GetSecretValue, PutParameter, GetParameter. Dadurch erhalten Sie einen vollständigen Prüfpfad für Compliance-Zwecke. Verwenden Sie CloudWatch Alarms für CloudTrail-Metriken, um benachrichtigt zu werden, wenn außerhalb der üblichen Muster auf Secrets zugegriffen wird – etwa wenn von einem ungewöhnlichen IAM-Prinzipal oder von einer IP-Adresse außerhalb Ihres bekannten Bereichs auf ein Produktions-Secret zugegriffen wird. Lösen Sie in diesem Fall einen Alarm zur Untersuchung aus.

# CloudTrail metric filter: alert on unexpected secret access
aws logs put-metric-filter \
  --log-group-name CloudTrail/management-events \
  --filter-name 'SecretAccessOutsideHours' \
  --filter-pattern '{ $.eventSource = "secretsmanager.amazonaws.com" && $.eventName = "GetSecretValue" && $.userAgent != "lambda.amazonaws.com" }' \
  --metric-transformations \
    metricName=UnexpectedSecretAccess,metricNamespace=Security,metricValue=1

# Then create CloudWatch alarm on this metric
# Alert fires when non-Lambda principal accesses secrets

Freigabe von Secrets über Kontogrenzen hinweg

In Architekturen mit mehreren Konten benötigen Anwendungen in einem Konto gelegentlich Secrets, die in einem anderen Konto verwaltet werden (beispielsweise wenn ein zentrales Security-Konto alle RDS-Passwörter verwaltet). Ressourcenrichtlinien von Secrets Manager ermöglichen den kontenübergreifenden Zugriff. Konfigurieren Sie eine ressourcenbasierte Richtlinie für das Secret, die einer Rolle im nutzenden Konto die Berechtigung erteilt, GetSecretValue aufzurufen. Für die Rolle im nutzenden Konto muss außerdem eine IAM-Richtlinie vorhanden sein, die Aufrufe für die ARN des Secrets erlaubt. Auch die KMS-Schlüsselrichtlinien müssen dem nutzenden Konto Zugriff auf den zur Verschlüsselung des Secrets verwendeten CMK gewähren.

# Secret resource policy: allow cross-account access
aws secretsmanager put-resource-policy \
  --secret-id 'prod/shared/rds-password' \
  --resource-policy '{
    "Statement": [{
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::999999999999:role/AppRole"
      },
      "Action": "secretsmanager:GetSecretValue",
      "Resource": "*"
    }]
  }'

# KMS key policy must also allow account 999999999999
# IAM policy in 999999999999 must allow GetSecretValue on ARN

Kurze Wissensüberprüfung

Überprüfen Sie Ihr Verständnis der Konzepte aus AWS Solutions Architect (SAA-C03) in dieser Lektion.

Zusammenfassung der Lektion

In dieser Lektion haben Sie gelernt: Secrets Manager bietet eine automatische Rotation für Datenbankanmeldedaten und API-Schlüssel und ist die bevorzugte Wahl für Secrets, die regelmäßig rotiert werden müssen, Parameter Store bietet eine kostenlose hierarchische Speicherung von Konfigurationen mit pfadbasierten IAM-Zugriffskontrollen und ECS und Lambda können Secrets als Umgebungsvariablen injizieren, ohne dass Änderungen am Anwendungscode erforderlich sind. CloudTrail stellt Prüfpfade für jeden Zugriff auf Secrets bereit. Als Nächstes sehen wir uns WAF, Shield und Network Firewall an.

Häufig gestellte Fragen

Ist die Lektion „Secrets Manager und Parameter Store“ kostenlos?

Ja — der vollständige Text von „Secrets Manager und Parameter Store“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Cloud & IT Cert Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Cloud & IT Cert Prep-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Secrets Manager und Parameter Store“?

Rotieren Sie Datenbankzugangsdaten automatisch mit Secrets Manager, speichern Sie nicht geheime Konfigurationen im Parameter Store und integrieren Sie beide Services mit Lambda und ECS. Du übst Cloud & IT Cert Prep mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Cloud & IT Cert Prep zu starten?

Keine Vorkenntnisse erforderlich. Cloud & IT Cert Prep auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Secrets Manager und Parameter Store“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Cloud & IT Cert Prep-Lektion Code schreiben und ausführen?

Ja. Jede Cloud & IT Cert Prep-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. KMS, ACM und Verschlüsselungsmuster
  2. GuardDuty, Inspector und Macie
  3. Secrets Manager und Parameter Store
  4. WAF, Shield und Network Firewall
← Zurück zu Cloud & IT Cert Prep