Amazon Managed Service for Apache Flink (Amazon MSF) war zuvor als Amazon Kinesis Data Analytics for Apache Flink bekannt.
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.
CMK verwalten mit APIs
In diesem Thema wird beschrieben, wie Sie Ihr KMS CMKs mithilfe von Amazon MSF APIs erstellen und aktualisieren. Um die in diesem Thema beschriebenen Verfahren ausführen zu können, benötigen Sie die Berechtigung, den KMS-Schlüssel und die Amazon MSF-Anwendung zu verwalten. Die Verfahren in diesem Thema verwenden eine permissive Schlüsselrichtlinie, die nur zu Demonstrations- und Testzwecken dient. Es wird nicht empfohlen, eine solche Richtlinie für zulässige Schlüssel für Produktionsworkloads zu verwenden. In realen Szenarien für Produktionsworkloads sind Rollen, Berechtigungen und Workflows isoliert.
Auf dieser Seite
KMS-Schlüssel erstellen und zuweisen
Bevor Sie beginnen, erstellen Sie einen KMS-Schlüssel. Informationen zum Erstellen eines KMS-Schlüssels finden Sie unter Erstellen eines KMS-Schlüssels im AWS Key Management Service Entwicklerhandbuch.
In diesem Abschnitt
Erstellen Sie eine KMS-Schlüsselrichtlinie
Um CMK in Amazon MSF zu verwenden, müssen Sie Ihrer wichtigsten Richtlinie die folgenden Service Principals hinzufügen: und. kinesisanalytics.amazonaws.com
infrastructure.kinesisanalytics.amazonaws.com
Amazon MSF verwendet diese Service Principals für die Validierung und den Zugriff auf Ressourcen. Wenn Sie diese Service Principals nicht angeben, lehnt Amazon MSF die Anfrage ab.
Die folgende KMS-Schlüsselrichtlinie ermöglicht es Amazon MSF, ein CMK für die Anwendung zu verwenden,. MyCmkApplication
Diese Richtlinie gewährt sowohl der Operator
Rolle als auch den Amazon MSF-Serviceprinzipalen die erforderlichen Berechtigungen kinesisanalytics.amazonaws.com
und infrastructure.kinesisanalytics.amazonaws.com
ermöglicht die Ausführung der folgenden Vorgänge:
-
Beschreiben Sie das CMK
-
Verschlüsseln Sie die Anwendungsdaten
-
Entschlüsseln Sie die Anwendungsdaten
-
Erstellen Sie Zuschüsse für den Schlüssel
Im folgenden Beispiel werden IAM-Rollen verwendet. Sie können die Schlüsselrichtlinie für den KMS-Schlüssel anhand des folgenden Beispiels als Vorlage erstellen. Achten Sie jedoch darauf, dass Sie Folgendes tun:
-
arn:aws:iam::
Durch die123456789012
:role/OperatorOperator
Rolle ersetzen. Sie müssen dieOperator
Rolle oder den Benutzer erstellen, bevor Sie die Schlüsselrichtlinie erstellen. Wenn Sie dies nicht tun, schlägt Ihre Anfrage fehl. -
arn:aws:kinesisanalytics:us-east-1:
Ersetzen Sie es durch den ARN Ihrer Anwendung.123456789012
:application/MyCmkApplication
-
kinesisanalytics.
Ersetzen Sie es durch einen Servicewert für die entsprechende Region.us-east-1
.amazonaws.com -
123456789012
Ersetzen Sie es durch die IDKey-Richtlinie Ihres Kontos für CMK. -
Fügen Sie zusätzliche Richtlinienanweisungen hinzu, damit Schlüsseladministratoren den KMS-Schlüssel verwalten können. Wenn Sie dies nicht tun, wird der Zugriff auf die Verwaltung des Schlüssels verloren gehen.
Die folgenden grundlegenden Grundsatzerklärungen sind umfangreich, da sie explizit sein sollen und die Bedingungen aufzeigen, die für jede Aktion erforderlich sind.
{ "Version": "2012-10-17", "Id": "MyMsfCmkApplicationKeyPolicy", "Statement": [ { "Sid": "AllowOperatorToDescribeKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:role/Operator
" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "kinesisanalytics.us-east-1
.amazonaws.com" } } }, { "Sid": "AllowOperatorToConfigureAppToUseKeyForApplicationState", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012
:role/Operator
" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:kinesisanalytics:arn": "arn:aws:kinesisanalytics:us-east-1
:123456789012
:application/MyCmkApplication
", "kms:ViaService": "kinesisanalytics.us-east-1
.amazonaws.com" } } }, { "Sid": "AllowOperatorToConfigureAppToCreateGrantForRunningState", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012
:role/Operator
" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:kinesisanalytics:arn": "arn:aws:kinesisanalytics:us-east-1
:123456789012
:application/MyCmkApplication
", "kms:ViaService": "kinesisanalytics.us-east-1
.amazonaws.com", "kms:GrantConstraintType": "EncryptionContextSubset" }, "ForAllValues:StringEquals": { "kms:GrantOperations": "Decrypt" } } }, { "Sid": "AllowMSFServiceToDescribeKey", "Effect": "Allow", "Principal": { "Service": [ "kinesisanalytics.amazonaws.com", "infrastructure.kinesisanalytics.amazonaws.com" ] }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:kinesisanalytics:us-east-1
:123456789012
:application/MyCmkApplication
", "aws:SourceAccount": "123456789012
" } } }, { "Sid": "AllowMSFServiceToGenerateDataKeyForDurableState", "Effect": "Allow", "Principal": { "Service": "kinesisanalytics.amazonaws.com" }, "Action": [ "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:kinesisanalytics:us-east-1
:123456789012
:application/MyCmkApplication
", "kms:EncryptionContext:aws:kinesisanalytics:arn": "arn:aws:kinesisanalytics:us-east-1
:123456789012
:application/MyCmkApplication
", "aws:SourceAccount": "123456789012
" } } }, { "Sid": "AllowMSFServiceToDecryptForDurableState", "Effect": "Allow", "Principal": { "Service": "kinesisanalytics.amazonaws.com" }, "Action": [ "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:kinesisanalytics:arn": "arn:aws:kinesisanalytics:us-east-1
:123456789012
:application/MyCmkApplication
" } } }, { "Sid": "AllowMSFServiceToUseKeyForRunningState", "Effect": "Allow", "Principal": { "Service": [ "infrastructure.kinesisanalytics.amazonaws.com" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKeyWithoutPlaintext" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:kinesisanalytics:arn": "arn:aws:kinesisanalytics:us-east-1
:123456789012
:application/MyCmkApplication
" } } }, { "Sid": "AllowMSFServiceToCreateGrantForRunningState", "Effect": "Allow", "Principal": { "Service": [ "infrastructure.kinesisanalytics.amazonaws.com" ] }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:kinesisanalytics:arn": "arn:aws:kinesisanalytics:us-east-1
:123456789012
:application/MyCmkApplication
", "kms:GrantConstraintType": "EncryptionContextSubset" }, "ForAllValues:StringEquals": { "kms:GrantOperations": "Decrypt" } } } ] }
Berechtigungen für den Application Lifecycle Operator (API-Aufrufer)
Die folgende IAM-Richtlinie stellt sicher, dass der Anwendungslebenszyklus-Operator über die erforderlichen Berechtigungen verfügt, um der Anwendung einen KMS-Schlüssel zuzuweisen. MyCmkApplication
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowMSFAPICalls", "Effect": "Allow", "Action": "kinesisanalytics:*", "Resource": "*" }, { "Sid": "AllowPassingServiceExecutionRole", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::
123456789012
:role/MyCmkApplicationRole
" }, { "Sid": "AllowDescribeKey", "Effect": "Allow", "Action": [ "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-east-1
:123456789012
:key/1234abcd-12ab-34cd-56ef-1234567890ab
", "Condition": { "StringEquals": { "kms:ViaService": "kinesisanalytics.us-east-1
.amazonaws.com" } } }, { "Sid": "AllowMyCmkApplicationKeyOperationsForDurableState", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-east-1
:123456789012
:key/1234abcd-12ab-34cd-56ef-1234567890ab
", "Condition": { "StringEquals": { "kms:ViaService": "kinesisanalytics.us-east-1
.amazonaws.com", "kms:EncryptionContext:aws:kinesisanalytics:arn": "arn:aws:kinesisanalytics:us-east-1
:123456789012
:application/MyCmkApplication
" } } }, { "Sid": "AllowMyCmkApplicationKeyOperationsForRunningState", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKeyWithoutPlaintext" ], "Resource": "arn:aws:kms:us-east-1
:123456789012
:key/1234abcd-12ab-34cd-56ef-1234567890ab
", "Condition": { "StringEquals": { "kms:ViaService": "kinesisanalytics.us-east-1
.amazonaws.com", "kms:EncryptionContext:aws:kinesisanalytics:arn": "arn:aws:kinesisanalytics:us-east-1
:123456789012
:application/MyCmkApplication
" } } }, { "Sid": "AllowMyCmkApplicationCreateGrantForRunningState", "Effect": "Allow", "Action": "kms:CreateGrant", "Resource": "arn:aws:kms:us-east-1
:123456789012
:key/1234abcd-12ab-34cd-56ef-1234567890ab
", "Condition": { "ForAllValues:StringEquals": { "kms:GrantOperations": "Decrypt" }, "StringEquals": { "kms:ViaService": "kinesisanalytics.us-east-1
.amazonaws.com", "kms:EncryptionContext:aws:kinesisanalytics:arn": "arn:aws:kinesisanalytics:us-east-1
:123456789012
:application/MyCmkApplication
", "kms:GrantConstraintType": "EncryptionContextSubset" } } } ] }
Aktualisieren Sie eine bestehende Anwendung, um CMK zu verwenden
In Amazon MSF können Sie eine CMK-Richtlinie auf eine bestehende Anwendung anwenden, die AWS-eigene Schlüssel () AOKs verwendet.
Standardmäßig verschlüsselt Amazon MSF all Ihre Daten in kurzlebigen (laufenden Anwendungsspeicher) und dauerhaften (dauerhaften Anwendungsspeicher) Speichern. AOKs Das bedeutet, dass alle Daten, die einem Flink-Checkpoint oder Snapshot unterliegen, standardmäßig verschlüsselt werden. AOKs Wenn Sie das AOK durch ein CMK ersetzen, werden neue Checkpoints und Snapshots mit CMK verschlüsselt. Historische Schnappschüsse bleiben jedoch mit der AOK verschlüsselt.
Um eine bestehende Anwendung für die Verwendung von CMK zu aktualisieren
-
Erstellen Sie eine JSON-Datei mit der folgenden Konfiguration.
Stellen Sie sicher, dass Sie den Wert von durch
CurrentApplicationVersionId
die aktuelle Versionsnummer der Anwendung ersetzen. Sie können die aktuelle Versionsnummer Ihrer Anwendung mithilfe von abrufen DescribeApplication.Denken Sie bei dieser JSON-Konfiguration daran, die
sample
Werte durch die tatsächlichen Werte zu ersetzen.{ "ApplicationName": "
MyCmkApplication
", "CurrentApplicationVersionId":1
, "ApplicationConfigurationUpdate": { "ApplicationEncryptionConfigurationUpdate": { "KeyTypeUpdate": "CUSTOMER_MANAGED_KEY", "KeyIdUpdate": "arn:aws:kms:us-east-1:
" } } }123456789012
:key/1234abcd-12ab-34cd-56ef-1234567890ab
-
Speichern Sie diese Datei. Speichern Sie sie beispielsweise mit dem Namen
enable-cmk.json
. -
Führen Sie den AWS CLI Befehl update-application wie im folgenden Beispiel gezeigt aus. Geben Sie in diesem Befehl die JSON-Konfigurationsdatei, die Sie in den vorherigen Schritten erstellt haben, als Dateiargument an.
aws kinesisanalyticsv2 update-application \ --cli-input-json file://
enable-cmk.json
Die vorherige Konfiguration wird nur akzeptiert, um die Anwendung für die Verwendung von CMK zu aktualisieren, wenn die folgenden Bedingungen erfüllt sind:
-
Der API-Aufrufer verfügt über eine Richtlinienanweisung, die den Zugriff auf den Schlüssel ermöglicht.
-
Die Schlüsselrichtlinie enthält eine Richtlinienerklärung, die dem API-Aufrufer den Zugriff auf den Schlüssel ermöglicht.
-
Die Schlüsselrichtlinie enthält eine Richtlinienerklärung, die dem Amazon MSF-Service Principal beispielsweise
kinesisanalytics.amazonaws.com
Zugriff auf den Schlüssel gewährt.
Kehren Sie von CMK zurück zu AWS-eigener Schlüssel
Um von CMK zu einem AOK zurückzukehren
-
Erstellen Sie eine JSON-Datei mit der folgenden Konfiguration.
Denken Sie bei dieser JSON-Konfiguration daran, die
sample
Werte durch die tatsächlichen Werte zu ersetzen.{ "ApplicationName": "
MyCmkApplication
", "CurrentApplicationVersionId":1
, "ApplicationConfigurationUpdate": { "ApplicationEncryptionConfigurationUpdate": { "KeyTypeUpdate": "AWS_OWNED_KEY" } } } -
Speichern Sie diese Datei. Speichern Sie sie beispielsweise mit dem Namen
disable-cmk.json
. -
Führen Sie den AWS CLI Befehl update-application wie im folgenden Beispiel gezeigt aus. Geben Sie in diesem Befehl die JSON-Konfigurationsdatei, die Sie in den vorherigen Schritten erstellt haben, als Dateiargument an.
aws kinesisanalyticsv2 update-application \ --cli-input-json file://
disable-cmk.json