Verschlüsselung von Daten im Ruhezustand in Step Functions - AWS Step Functions

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verschlüsselung von Daten im Ruhezustand in Step Functions

Lesen Sie den Blog

Weitere Informationen zu kundenverwalteten Schlüsseln finden Sie unter Stärkung der Datensicherheit mit einem vom Kunden verwalteten AWS KMS Schlüssel

AWS Step Functions verschlüsselt Ihre Daten im Ruhezustand immer mit transparenter serverseitiger Verschlüsselung. Die standardmäßige Verschlüsselung von Daten im Ruhezustand reduziert den betrieblichen Aufwand und die Komplexität, die mit dem Schutz vertraulicher Daten verbunden sind. Sie können sicherheitsrelevante Anwendungen entwickeln, die strenge Verschlüsselungsvorschriften und regulatorische Anforderungen erfüllen.

Sie können diese Verschlüsselungsebene zwar nicht deaktivieren oder einen anderen Verschlüsselungstyp auswählen, aber Sie können eine zweite Verschlüsselungsebene über den vorhandenen AWS eigenen Verschlüsselungsschlüsseln hinzufügen, indem Sie bei der Erstellung Ihrer Zustandsmaschine und Ihrer Aktivitätsressourcen einen vom Kunden verwalteten Schlüssel wählen:

  • Vom Kunden verwaltete Schlüssel — Step Functions unterstützt die Verwendung eines symmetrischen, vom Kunden verwalteten Schlüssels, den Sie erstellen, besitzen und verwalten, um eine zweite Verschlüsselungsebene über der vorhandenen AWS eigenen Verschlüsselung hinzuzufügen. Da Sie die volle Kontrolle über diese Verschlüsselungsebene haben, können Sie beispielsweise folgende Aufgaben ausführen:

    • Festlegung und Pflege wichtiger Richtlinien

    • Festlegung und Aufrechterhaltung von IAM Richtlinien und Zuschüssen

    • Aktivieren und Deaktivieren wichtiger Richtlinien

    • Kryptographisches Material mit rotierendem Schlüssel

    • Hinzufügen von Tags

    • Erstellen von Schlüsselaliasen

    • Schlüssel für das Löschen von Schlüsseln planen

    Weitere Informationen finden Sie unter vom Kunden verwalteter Schlüssel im AWS Key Management Service Entwicklerhandbuch.

Sie können Ihre Daten mit einem vom Kunden verwalteten Schlüssel für AWS Step Functions Zustandsmaschinen und Aktivitäten verschlüsseln. Sie können einen Zeitraum für die Wiederverwendung von symmetrischen AWS KMS Schlüsseln und Datenschlüsseln konfigurieren, wenn Sie einen State Machine erstellen oder aktualisieren und wenn Sie eine Aktivität erstellen. Der Ausführungsverlauf und die State-Machine-Definition werden mit dem Schlüssel verschlüsselt, der auf die State Machine angewendet wird. Aktivitätseingaben werden mit dem Schlüssel verschlüsselt, der auf die Aktivität angewendet wurde.

Mit vom Kunden verwalteten AWS KMS Schlüsseln können Sie Kundendaten, einschließlich geschützter Gesundheitsinformationen (PHI), vor unbefugtem Zugriff schützen. Step Functions ist integriert CloudTrail, sodass Sie die neuesten Ereignisse in der CloudTrail Konsole im Ereignisverlauf anzeigen und überprüfen können.

Informationen zu AWS KMS finden Sie unter Was ist AWS Key Management Service?

Anmerkung

Step Functions ermöglicht automatisch und kostenlos die Verschlüsselung im Ruhezustand mit AWS eigenen Schlüsseln. Bei Verwendung eines vom Kunden verwalteten Schlüssels fallen jedoch AWS KMS Gebühren an. Informationen zu Preisen finden Sie unter AWS Key Management Service -Preise.

Verschlüsselung mit einem vom Kunden verwalteten Schlüssel

Step Functions entschlüsselt Nutzdaten mit Ihrem vom Kunden verwalteten AWS KMS Schlüssel, bevor sie zur Ausführung einer Aufgabe an einen anderen Dienst weitergegeben werden. Die Daten werden bei der Übertragung mit Transport Layer Security () TLS verschlüsselt.

Wenn Daten von einem integrierten Service zurückgegeben werden, verschlüsselt Step Functions die Daten mit Ihrem vom Kunden verwalteten AWS KMS Schlüssel. Sie können denselben Schlüssel verwenden, um die Verschlüsselung für viele AWS Dienste konsistent anzuwenden.

Sie können einen vom Kunden verwalteten Schlüssel mit den folgenden Ressourcen verwenden:

  • State Machine — sowohl Standard- als auch Express-Workflowtypen

  • Aktivität

Sie können den Datenschlüssel angeben, indem Sie eine KMSSchlüssel-ID eingeben, mit der Step Functions Ihre Daten verschlüsselt.

  • KMSSchlüssel-IDSchlüssel-ID für einen vom AWS KMS Kunden verwalteten Schlüssel in Form einer Schlüssel-ID, eines Schlüssels, eines Aliasnamens oder eines AliasARN. ARN

Erstellen Sie eine State Machine mit einem vom Kunden verwalteten Schlüssel

Voraussetzung: Bevor Sie eine Zustandsmaschine mit vom Kunden verwalteten AWS KMS Schlüsseln erstellen können, muss Ihr Benutzer oder Ihre Rolle über AWS KMS Berechtigungen für DescribeKey und verfügenGenerateDataKey.

Sie können die folgenden Schritte in der AWS Konsole, über oder durch Bereitstellung der API Infrastruktur mithilfe von AWS CloudFormation Ressourcen ausführen. (CloudFormation Beispiele werden weiter unten in diesem Handbuch vorgestellt.)

Schritt 1: AWS KMS Schlüssel erstellen

Sie können einen symmetrischen, vom Kunden verwalteten Schlüssel mit der AWS KMS Konsole oder AWS KMS APIs erstellen.

Einen symmetrischen kundenverwalteten Schlüssel erstellen

Folgen Sie den Schritten zum Erstellen eines symmetrischen kundenverwalteten Schlüssels im Entwicklerhandbuch zum AWS Key Management Service .

Anmerkung

Optional: Wenn Sie einen Schlüssel erstellen, können Sie Schlüsseladministratoren wählen. Den ausgewählten Benutzern oder Rollen wird Zugriff auf die Verwaltung des Schlüssels gewährt, z. B. die Aktivierung oder Deaktivierung des Schlüssels über dieAPI. Sie können auch Key-Benutzer auswählen. Diesen Benutzern oder Rollen wird die Möglichkeit gewährt, den AWS KMS Schlüssel für kryptografische Operationen zu verwenden.

Schritt 2: Legen Sie die AWS KMS Schlüsselrichtlinie fest

Schlüsselrichtlinien steuern den Zugriff auf den vom Kunden verwalteten Schlüssel. Jeder vom Kunden verwaltete Schlüssel muss über genau eine Schlüsselrichtlinie verfügen, die aussagt, wer den Schlüssel wie verwenden kann. Wenn Sie Ihren vom Kunden verwalteten Schlüssel erstellen, können Sie eine Schlüsselrichtlinie angeben. Weitere Informationen finden Sie unter Verwaltung des Zugriffs auf vom Kunden verwaltete Schlüssel im AWS Key Management Service Entwicklerhandbuch.

Im Folgenden finden Sie ein Beispiel für eine AWS KMS Schlüsselrichtlinie von der Konsole aus, ohne Schlüsseladministratoren oder Schlüsselbenutzer:

{ "Version": "2012-10-17", "Id": "key-consolepolicy-1", "Statement": [ { "Sid": "Enable IAM User Permissions for the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "kms:*", "Resource": "*" } ] }

Informationen zur Angabe von Berechtigungen in einer Richtlinie und zur Problembehandlung beim Schlüsselzugriff finden Sie im AWS Key Management Service Entwicklerhandbuch.

Schritt 3: (Optional) Fügen Sie eine Schlüsselrichtlinie zur Verschlüsselung von Protokollen CloudWatch hinzu

Step Functions ist CloudWatch für die Protokollierung und Überwachung integriert. Sie haben die Möglichkeit, an CloudWatch Logs gesendete Daten zu verschlüsseln. Um die verschlüsselte Protokollierung verwenden zu können, müssen Sie in der State-Machine-Schlüsselrichtlinie für AWS KMS Aktionen Zugriff auf den Protokollzustellungsdienst gewähren. Sie können Protokollgruppen mithilfe des Zustandsmaschinenschlüssels verschlüsseln, oder Sie können einen anderen Schlüssel speziell für die Protokollgruppe wählen (z. B. „Protokollgruppenschlüssel“).

Um die verschlüsselte CloudWatch Protokollintegration für eine Zustandsmaschine zu aktivieren, müssen Sie Ihrer AWS KMS Schlüsselrichtlinie Folgendes hinzufügen:

{ "Id": "key-consolepolicy-logging", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable log service for a single log group", "Effect": "Allow", "Principal": { "Service": "logs.region.amazonaws.com" }, "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:Describe*" ], "Resource": "*", "Condition": { "ArnEquals": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:region:account-id:log-group:log-group-name" } } } ] }
Anmerkung

ConditionIn diesem Abschnitt wird der AWS KMS Schlüssel auf eine einzelne Protokollgruppe ARN beschränkt.

Sie müssen auch die Protokolldienstbereitstellung für Integrationen mit der folgenden wichtigen Richtlinie aktivieren:

{ "Sid": "Enable log service delivery for integrations", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "kms:Decrypt*", "Resource": "*" }
Anmerkung

Weitere Informationen zum Festlegen von Berechtigungen für den AWS KMS Schlüssel für Ihre Protokollgruppe finden Sie in der Dokumentation zu den CloudWatch Protokollen.

Schritt 4: Zustandsmaschine erstellen

Nachdem Sie einen Schlüssel erstellt und die Richtlinie eingerichtet haben, können Sie diesen Schlüssel verwenden, um eine neue Zustandsmaschine zu erstellen.

Wählen Sie bei der Erstellung der Zustandsmaschine Zusätzliche Konfiguration und anschließend die Verschlüsselung mit dem vom Kunden verwalteten Schlüssel aus. Anschließend können Sie Ihren Schlüssel auswählen und den Zeitraum für die Wiederverwendung von Datenschlüsseln zwischen 1 Minute und 15 Minuten festlegen.

Optional können Sie die Protokollierung aktivieren, indem Sie eine Protokollebene festlegen und die Protokollgruppe mit Ihrem AWS KMS Schlüssel verschlüsseln.

Anmerkung

Sie können die Verschlüsselung nur für eine neue Protokollgruppe in der Step Functions-Konsole aktivieren. Informationen zum Zuordnen eines AWS KMS Schlüssels zu einer vorhandenen Protokollgruppe finden Sie unter Zuordnen eines AWS KMS Schlüssels zu einer Protokollgruppe.

Schritt 5: Rufen Sie die mit Ihrem AWS KMS Schlüssel verschlüsselte Zustandsmaschine auf

Sie können Ihre verschlüsselte Zustandsmaschine wie gewohnt aufrufen, und Ihre Daten werden mit Ihrem vom Kunden verwalteten Schlüssel verschlüsselt.

Um eine Ausführung für Standard-Workflows und asynchrone Express-Workflows mit vom Kunden verwalteten Schlüsseln zu starten, sind Ihre Ausführungsrolle kms:Decrypt und kms:GenerateDataKey Berechtigungen erforderlich. Die Ausführungsrolle für die Ausführung von Synchronous Express erfordert. kms:Decrypt Wenn Sie in der Konsole eine Zustandsmaschine erstellen und „Neue Rolle erstellen“ wählen, werden diese Berechtigungen automatisch für Sie übernommen.

Erstellen Sie eine Aktivität mit einem vom Kunden verwalteten Schlüssel

Das Erstellen einer Step Functions Functions-Aktivität mit einem vom Kunden verwalteten Schlüssel ähnelt dem Erstellen einer Zustandsmaschine mit einem vom Kunden verwalteten Schlüssel. Bevor Sie eine Aktivität mit vom Kunden verwalteten AWS KMS Schlüsseln erstellen können, benötigt Ihr Benutzer oder Ihre Rolle lediglich die AWS KMS entsprechenden BerechtigungenDescribeKey. Bei der Erstellung der Aktivität wählen Sie den Schlüssel aus und legen die Konfigurationsparameter für die Verschlüsselung fest.

Beachten Sie, dass die Ressourcen der Step Functions Functions-Aktivität unveränderlich bleiben. Sie können die encryptionConfiguration für eine Aktivität ARN einer vorhandenen Aktivität nicht aktualisieren. Sie müssen eine neue Aktivitätsressource erstellen. Anrufer der API Aktivitätsendpunkte müssen über die kms:DescribeKey erforderlichen Berechtigungen verfügen, um erfolgreich eine Aktivität mit einem AWS KMS Schlüssel erstellen zu können.

Wenn die vom Kunden verwaltete Schlüsselverschlüsselung für eine Aktivitätsaufgabe aktiviert ist, benötigt kms:GenerateDataKey die State-Machine-Ausführungsrolle eine kms:Decrypt Genehmigung für den Aktivitätsschlüssel. Wenn Sie diese Zustandsmaschine von der Step Functions Functions-Konsole aus erstellen, fügt die Funktion zur auto Rollenerstellung diese Berechtigungen hinzu.

Definieren Sie die AWS KMS Berechtigungsrichtlinien mit bestimmten Bedingungen

Sie können den Verschlüsselungskontext in wichtigen Richtlinien und IAM Richtlinien verwenden, conditions um den Zugriff auf Ihren symmetrischen, vom Kunden verwalteten Schlüssel zu kontrollieren. Um die Verwendung eines AWS KMS Schlüssels auf Anfragen von Step Functions im Namen einer bestimmten Rolle zu beschränken, können Sie die kms:ViaService Bedingung verwenden.

Geltungsbereich mit Verschlüsselungskontext

Ein Verschlüsselungskontext ist ein optionaler Satz von Schlüssel-Wert-Paaren, die zusätzliche kontextbezogene Informationen zu den Daten enthalten.

AWS KMS verwendet den Verschlüsselungskontext als zusätzliche authentifizierte Daten, um die authentifizierte Verschlüsselung zu unterstützen. Wenn Sie einen Verschlüsselungskontext in eine Anforderung zum Verschlüsseln von Daten einbeziehen, wird der Verschlüsselungskontext AWS KMS an die verschlüsselten Daten gebunden. Zur Entschlüsselung von Daten müssen Sie denselben Verschlüsselungskontext in der Anfrage übergeben.

Step Functions bietet einen Verschlüsselungskontext für AWS KMS kryptografische Operationen, wobei der Schlüssel aws:states:stateMachineArn für State Machines oder aws:states:activityArn für Activities ist und der Wert die Ressource Amazon Resource Name (ARN) ist.

"encryptionContext": {"aws:states:stateMachineArn": "arn:aws:states:region:123456789012:stateMachine:state_machine_name"}
"encryptionContext": {"aws:states:activityArn": "arn:aws:states:region:123456789012:activity:activity_name"}

Das folgende Beispiel zeigt, wie die Verwendung eines AWS KMS Schlüssels für Ausführungsrollen mit kms:EncryptionContext und dem aws:states:stateMachineArn Kontextschlüssel auf bestimmte Zustandsmaschinen beschränkt werden kann:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow KMS Permissions for StepFunctionsWorkflowExecutions", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:aa-example-1:1234567890:key/a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa" ], "Condition": { "StringEquals": { "kms:EncryptionContext:aws:states:stateMachineArn": "arn:aws:states:aa-example-1:1234567890:stateMachine:MyStateMachine" } } } ] }

Gültigkeitsbereich mit KMS: ViaService

Der kms:ViaService Bedingungsschlüssel beschränkt die Verwendung eines AWS Key Management Service Schlüssels auf Anfragen von bestimmten AWS Diensten.

Die folgende Beispielrichtlinie verwendet die kms:ViaService Bedingung, um zuzulassen, dass der AWS KMS Schlüssel nur dann für bestimmte Aktionen verwendet wird, wenn die Anforderung von Step Functions in der ca-central-1 Region stammt und im Namen von handelt: ExampleRole

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow access for Key Administrators in a region", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::1234567890:role/ExampleRole" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "states.ca-central-1.amazonaws.com" } } } ] }
Anmerkung

Die kms:ViaService Bedingung gilt nur, wenn der API Aufrufer AWS KMS Berechtigungen benötigt (z. B.CreateStateMachine, CreateActivityGetActivityTask, usw.). Das Hinzufügen einer kms:ViaService Bedingung zu einer Ausführungsrolle kann verhindern, dass eine neue Ausführung gestartet wird, oder dazu führen, dass eine laufende Ausführung fehlschlägt.

Erforderliche Berechtigungen für API Anrufer

Um Step Functions API Functions-Aktionen aufzurufen, die verschlüsselte Daten zurückgeben, benötigen Anrufer AWS KMS Berechtigungen. Alternativ verfügen einige API Aktionen über eine Option (METADATA_ONLY), mit der nur Metadaten zurückgegeben werden können, sodass keine AWS KMS Berechtigungen erforderlich sind. Weitere Informationen finden Sie in den Step FunctionsAPI.

Damit eine Ausführung erfolgreich abgeschlossen werden kann, wenn die vom Kunden verwaltete Schlüsselverschlüsselung verwendet wird, müssen die Ausführungsrolle kms:GenerateDataKey und die kms:Decrypt Berechtigungen für die von der Zustandsmaschine verwendeten AWS KMS Schlüssel erteilt werden.

Die folgende Tabelle zeigt die AWS KMS Berechtigungen, die Sie benötigen, um Step Functions State API Machine-Aufrufer bereitzustellen. Sie können die Berechtigungen in der Schlüsselrichtlinie oder IAM Richtlinie für die Rolle angeben.

APIsmithilfe des AWS KMS Schlüssels von State Machine Vom Anrufer erforderlich
CreateStateMachine km:DescribeKey, km: GenerateDataKey
UpdateStateMachine km:DescribeKey, km: GenerateDataKey
DescribeStateMachine kms:Decrypt
DescribeStateMachineForExecution kms:Decrypt
StartExecution --
StartSyncExecution kms:Decrypt
SendTaskSuccess --
SendTaskFailure --
StopExecution --
RedriveExecution --
DescribeExecution kms:Decrypt
GetExecutionHistory kms:Decrypt

Die folgende Tabelle zeigt die AWS KMS Berechtigungen, die Sie benötigen, um Step Functions APIFunctions-Aktivitätsaufrufer bereitzustellen. Sie können die Berechtigungen in der Schlüsselrichtlinie oder IAM Richtlinie für die Rolle angeben.

APIsmithilfe des AWS KMS Schlüssels von Activity Vom Anrufer erforderlich
CreateActivity km: DescribeKey
GetActivityTask kms:Decrypt
Wann erteile ich der Rolle „Anrufer“ oder „Ausführung“ Berechtigungen?

Wenn eine IAM Rolle oder ein Benutzer die Step Functions aufruftAPI, ruft der Step Functions API Functions-Dienst im Namen des Aufrufers AWS KMS auf. In diesem Fall müssen Sie dem API Anrufer die AWS KMS Erlaubnis erteilen. Wenn eine Ausführungsrolle AWS KMS direkt aufruft, müssen Sie der Ausführungsrolle AWS KMS Berechtigungen erteilen.

AWS CloudFormation Ressourcen für die Verschlüsselungskonfiguration

AWS CloudFormation Ressourcentypen für Step Functions können Zustandsmaschinen- und Aktivitätsressourcen mit Verschlüsselungskonfigurationen bereitstellen.

Standardmäßig bietet Step Functions eine transparente serverseitige Verschlüsselung. Beides AWS::StepFunctions::Activityund AWS::StepFunctions::StateMachineakzeptieren Sie eine optionale EncryptionConfiguration Eigenschaft, mit der ein vom Kunden verwalteter AWS KMS Schlüssel für die serverseitige Verschlüsselung konfiguriert werden kann.

Voraussetzung: Bevor Sie eine Zustandsmaschine mit vom Kunden verwalteten AWS KMS Schlüsseln erstellen können, muss Ihr Benutzer oder Ihre Rolle über AWS KMS Berechtigungen für DescribeKey und GenerateDataKey verfügen.

Updates für StateMachine erfordert Keine Unterbrechung. Aktualisierungen der Aktivitätsressourcen erfordern: Ersatz.

Verwenden Sie die folgende Syntax, um eine EncryptionConfigurationEigenschaft in Ihrer AWS CloudFormation Vorlage zu deklarieren:

JSON

{ "KmsKeyId" : String, "KmsDataKeyReusePeriodSeconds" : Integer, "Type" : String }

YAML

KmsKeyId: String KmsDataKeyReusePeriodSeconds: Integer Type: String

Eigenschaften

  • Typ — Verschlüsselungsoption für den Zustandsmaschine oder die Aktivität. Zulässige Werte: CUSTOMER_MANAGED_KMS_KEY | AWS_OWNED_KEY

  • KmsKeyId— Alias, AliasARN, Schlüssel-ID oder Schlüssel ARN des symmetrischen AWS KMS Verschlüsselungsschlüssels, der den Datenschlüssel verschlüsselt. Um einen AWS KMS Schlüssel in einem anderen AWS Konto anzugeben, muss der Kunde den Schlüssel ARN oder Alias verwenden. ARN Informationen kmsKeyId dazu finden Sie KeyIdin den AWS KMS Dokumenten.

  • KmsDataKeyReusePeriodSeconds- Maximale Dauer, für die Datenschlüssel wiederverwendet SFN werden. Wenn der Zeitraum abgelaufen ist, wird Step Functions aufgerufenGenerateDataKey. Diese Einstellung kann nur festgelegt werden, wenn Type auf stehtCUSTOMER_MANAGED_KMS_KEY. Der Wert kann zwischen 60 und 900 Sekunden liegen. Der Standardwert beträgt 300 Sekunden.

AWS CloudFormation Beispiele

Beispiel: StateMachine mit vom Kunden verwaltetem Schlüssel

AWSTemplateFormatVersion: '2010-09-09' Description: An example template for a Step Functions State Machine. Resources: MyStateMachine: Type: AWS::StepFunctions::StateMachine Properties: StateMachineName: HelloWorld-StateMachine Definition: StartAt: PassState States: PassState: Type: Pass End: true RoleArn: !Sub "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/example" EncryptionConfiguration: KmsKeyId: !Ref MyKmsKey KmsDataKeyReusePeriodSeconds: 100 Type: CUSTOMER_MANAGED_KMS_KEY MyKmsKey: Type: AWS::KMS::Key Properties: Description: Symmetric KMS key used for encryption/decryption

Beispiel: Aktivität mit vom Kunden verwaltetem Schlüssel

AWSTemplateFormatVersion: '2010-09-09' Description: An example template for a Step Functions Activity. Resources: Activity: Type: AWS::StepFunctions::Activity Properties: Name: ActivityWithKmsEncryption EncryptionConfiguration: KmsKeyId: !Ref MyKmsKey KmsDataKeyReusePeriodSeconds: 100 Type: CUSTOMER_MANAGED_KMS_KEY MyKmsKey: Type: AWS::KMS::Key Properties: Description: Symmetric KMS key used for encryption/decryption

Um die Verschlüsselung für eine Aktivität zu aktualisieren, muss eine neue Ressource erstellt werden

Die Aktivitätskonfiguration ist unveränderlich und die Ressourcennamen müssen eindeutig sein. Um vom Kunden verwaltete Schlüssel für die Verschlüsselung festzulegen, müssen Sie eine neue Aktivität erstellen. Wenn Sie versuchen, die Konfiguration in Ihrer CFN Vorlage für eine bestehende Aktivität zu ändern, erhalten Sie eine ActivityAlreadyExists Ausnahme.

Um Ihre Aktivität so zu aktualisieren, dass sie vom Kunden verwaltete Schlüssel enthält, geben Sie in Ihrer CFN Vorlage einen neuen Namen für die Aktivität ein. Im Folgenden finden Sie ein Beispiel, das eine neue Aktivität mit einer vom Kunden verwalteten Schlüsselkonfiguration erstellt:

Bestehende Aktivitätsdefinition

AWSTemplateFormatVersion: '2010-09-09' Description: An example template for a new Step Functions Activity. Resources: Activity: Type: AWS::StepFunctions::Activity Properties: Name: ActivityName EncryptionConfiguration: Type: AWS_OWNED_KEY

Neue Aktivitätsdefinition

AWSTemplateFormatVersion: '2010-09-09' Description: An example template for a Step Functions Activity. Resources: Activity: Type: AWS::StepFunctions::Activity Properties: Name: ActivityWithKmsEncryption EncryptionConfiguration: KmsKeyId: !Ref MyKmsKey KmsDataKeyReusePeriodSeconds: 100 Type: CUSTOMER_MANAGED_KMS_KEY MyKmsKey: Type: AWS::KMS::Key Properties: Description: Symmetric KMS key used for encryption/decryption

Überwachung der Verwendung Ihres Verschlüsselungsschlüssels

Wenn Sie einen vom AWS KMS Kunden verwalteten Schlüssel verwenden, um Ihre Step Functions-Ressourcen CloudTrail zu verschlüsseln, können Sie damit Anfragen verfolgen, an AWS KMS die Step Functions sendet.

Sie können den Verschlüsselungskontext auch in Prüfaufzeichnungen und Protokollen verwenden, um festzustellen, wie der vom Kunden verwaltete Schlüssel verwendet wird. Der Verschlüsselungskontext erscheint auch in Protokollen, die von AWS CloudTrailgeneriert wurden.

Die folgenden Beispiele sind CloudTrail Ereignisse fürDecrypt, und GenerateDataKey zur Überwachung von AWS KMS VorgängenDescribeKey, die von Step Functions aufgerufen werden, um auf Daten zuzugreifen, die mit Ihrem vom Kunden verwalteten Schlüssel verschlüsselt wurden:

Decrypt

Wenn Sie auf eine verschlüsselte Zustandsmaschine oder Aktivität zugreifen, ruft Step Functions den Decrypt Vorgang auf, um den gespeicherten verschlüsselten Datenschlüssel für den Zugriff auf die verschlüsselten Daten zu verwenden.

Das folgende Beispielereignis zeichnet den Vorgang Decrypt auf:

{ "eventVersion": "1.09", "userIdentity": { "type": "AssumedRole", "principalId": "111122223333:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "111122223333:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "userName": "Admin" }, "attributes": { "creationDate": "2024-07-05T21:06:27Z", "mfaAuthenticated": "false" } }, "invokedBy": "states.amazonaws.com" }, "eventTime": "2024-07-05T21:12:21Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "aa-example-1", "sourceIPAddress": "states.amazonaws.com", "userAgent": "states.amazonaws.com", "requestParameters": { "encryptionAlgorithm": "SYMMETRIC_DEFAULT", "keyId": "arn:aws:kms:aa-example-1:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "encryptionContext": { "aws:states:stateMachineArn": "arn:aws:states:aa-example-1:111122223333:stateMachine:example1" } }, "responseElements": null, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:aa-example-1:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }
DescribeKey

Step Functions überprüft anhand des DescribeKey Vorgangs, ob der vom AWS KMS Kunden verwaltete Schlüssel, der mit Ihrer State Machine oder Activity verknüpft ist, im Konto und in der Region vorhanden ist.

Das folgende Beispielereignis zeichnet den Vorgang DescribeKey auf:

{ "eventVersion": "1.09", "userIdentity": { "type": "AssumedRole", "principalId": "111122223333:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "111122223333:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "userName": "Admin" }, "attributes": { "creationDate": "2024-07-05T21:06:27Z", "mfaAuthenticated": "false" } }, "invokedBy": "states.amazonaws.com" }, "eventTime": "2024-07-05T21:12:21Z", "eventSource": "kms.amazonaws.com", "eventName": "DescribeKey", "awsRegion": "aa-example-1", "sourceIPAddress": "states.amazonaws.com", "userAgent": "states.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:aa-example-1:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" }, "responseElements": null, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:aa-example-1:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management", "sessionCredentialFromConsole": "true" }
GenerateDataKey

Wenn Sie einen vom AWS KMS Kunden verwalteten Schlüssel für Ihre Zustandsmaschine oder Aktivität aktivieren, sendet Step Functions eine GenerateDataKey Anfrage zum Abrufen eines Datenschlüssels für die verschlüsselten Zustandsmaschinen-Definitions- oder Ausführungsdaten.

Das folgende Beispielereignis zeichnet den Vorgang GenerateDataKey auf:

{ "eventVersion": "1.09", "userIdentity": { "type": "AssumedRole", "principalId": "111122223333:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "111122223333:Sampleuser01", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" }, "attributes": { "creationDate": "2024-07-05T21:06:27Z", "mfaAuthenticated": "false" } }, "invokedBy": "states.amazonaws.com" }, "eventTime": "2024-07-05T21:12:21Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "aa-example-1", "sourceIPAddress": "states.amazonaws.com", "userAgent": "states.amazonaws.com", "requestParameters": { "keySpec": "AES_256", "encryptionContext": { "aws:states:stateMachineArn": "arn:aws:states:aa-example-1:111122223333:stateMachine:example1" }, "keyId": "arn:aws:kms:aa-example-1:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" }, "responseElements": null, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:aa-example-1:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }

FAQs

Was passiert, wenn mein Schlüssel zum Löschen markiert ist oder in AWS KMS gelöscht wird?

Wenn der Schlüssel gelöscht oder zum Löschen markiert wird AWS KMS, schlagen alle zugehörigen laufenden Ausführungen fehl. Neue Ausführungen können erst gestartet werden, wenn Sie den mit dem Workflow verknüpften Schlüssel entfernen oder ändern. Nach dem Löschen eines AWS KMS Schlüssels bleiben alle verschlüsselten Daten, die mit der Workflow-Ausführung verknüpft sind, verschlüsselt und können nicht mehr entschlüsselt werden, sodass die Daten nicht wiederhergestellt werden können.

Was passiert, wenn ein AWS KMS Schlüssel in deaktiviert ist? AWS KMS

Wenn ein AWS KMS Schlüssel in deaktiviert ist AWS KMS, schlagen alle zugehörigen laufenden Ausführungen fehl. Neue Ausführungen können nicht gestartet werden. Sie können die mit diesem deaktivierten AWS KMS Schlüssel verschlüsselten Daten nicht mehr entschlüsseln, bis er wieder aktiviert ist.

Was passiert mit Ereignissen zur Änderung des Ausführungsstatus, an die gesendet wurde? EventBridge

Bei Workflows, die mit Ihrem vom Kunden verwalteten AWS KMS Schlüssel verschlüsselt wurden, werden Eingabe, Ausgabe, Fehler und Ursache bei der Änderung des Ausführungsstatus nicht berücksichtigt.

Weitere Informationen

Informationen zur Verschlüsselung inaktiver Daten finden Sie unter AWS Key Management Service Konzepte und bewährte Sicherheitsmethoden für AWS Key Management Service im AWS Key Management Service Entwicklerhandbuch.