CMK verwalten mit APIs - Managed Service für Apache Flink

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.

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.

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::123456789012:role/OperatorDurch die Operator Rolle ersetzen. Sie müssen die Operator 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:123456789012:application/MyCmkApplicationErsetzen Sie es durch den ARN Ihrer Anwendung.

  • kinesisanalytics.us-east-1.amazonaws.comErsetzen Sie es durch einen Servicewert für die entsprechende Region.

  • 123456789012Ersetzen 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
  1. 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" } } }
  2. Speichern Sie diese Datei. Speichern Sie sie beispielsweise mit dem Namenenable-cmk.json.

  3. 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
  1. 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" } } }
  2. Speichern Sie diese Datei. Speichern Sie sie beispielsweise mit dem Namendisable-cmk.json.

  3. 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