View a markdown version of this page

CMK mithilfe von APIs verwalten - Managed Service für Apache Flink

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 mithilfe von APIs verwalten

In diesem Thema wird beschrieben, wie Sie Ihre KMS-CMKs mithilfe von Amazon MSF-APIs erstellen und aktualisieren. Um die in diesem Thema beschriebenen Verfahren befolgen 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 Richtlinie für zulässige Schlüssel, die nur zu Demonstrations- und Testzwecken dient. Wir raten davon ab, eine derart freizügige Schlüsselrichtlinie für Produktions-Workloads 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 im AWS Key Management Service Entwicklerhandbuch unter Erstellen eines KMS-Schlüssels.

Erstellen Sie eine KMS-Schlüsselrichtlinie

Um CMK in Amazon MSF zu verwenden, müssen Sie Ihrer Schlüsselrichtlinie die folgenden Serviceprinzipale hinzufügen: und. kinesisanalytics.amazonaws.com infrastructure.kinesisanalytics.amazonaws.com Amazon MSF verwendet diese Service-Principals für die Validierung und den Ressourcenzugriff. Wenn Sie diese Service-Principals nicht angeben, lehnt Amazon MSF die Anfrage ab.

Die folgende KMS-Schlüsselrichtlinie ermöglicht es Amazon MSF, einen CMK für die Anwendung zu verwenden. MyCmkApplication Diese Richtlinie gewährt sowohl der Operator Rolle als auch den Amazon MSF-Serviceprinzipalen die erforderlichen Berechtigungeninfrastructure.kinesisanalytics.amazonaws.com, kinesisanalytics.amazonaws.com um die folgenden Operationen auszuführen:

  • Beschreiben Sie das CMK

  • Verschlüsseln Sie die Anwendungsdaten

  • Entschlüsseln Sie die Anwendungsdaten

  • Gewähren 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, Folgendes zu tun:

  • arn:aws:iam::123456789012:role/OperatorErsetzen Sie durch die Operator Rolle. Sie müssen die Operator Rolle oder den Benutzer erstellen, bevor Sie die Schlüsselrichtlinie erstellen. Wenn Sie dies nicht tun, wird Ihre Anfrage fehlschlagen.

  • arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplicationErsetzen Sie es durch den ARN Ihrer Anwendung.

  • kinesisanalytics.us-east-1.amazonaws.com.rproxy.goskope.comErsetzen Sie ihn durch einen Servicewert für die entsprechende Region.

  • 123456789012Ersetzen Sie die IDKey-Richtlinie für CMK durch Ihre Konto-IDKey-Richtlinie.

  • Fügen Sie zusätzliche Richtlinienbestimmungen hinzu, damit wichtige Administratoren den KMS-Schlüssel verwalten können. Andernfalls wird der Zugriff auf die Verwaltung des Schlüssels verloren.

Die folgenden wichtigen Grundsatzerklärungen sind umfangreich, da sie explizit formuliert sind 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 Anwendungslebenszyklusoperator (API-Aufrufer)

Die folgende IAM-Richtlinie stellt sicher, dass der Anwendungslebenszyklusoperator über die erforderlichen Berechtigungen verfügt, um der Anwendung einen KMS-Schlüssel zuzuweisen. MyCmkApplication

JSON
{ "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 vorhandene Anwendung, um CMK zu verwenden

In Amazon MSF können Sie eine CMK-Richtlinie auf eine vorhandene Anwendung anwenden, die AWS-eigene Schlüssel (AOKs) verwendet.

Standardmäßig verwendet Amazon MSF AOKs, um all Ihre Daten in kurzlebigen (laufenden Anwendungsspeicher) und dauerhaften (dauerhaften Anwendungsspeicher) Speichern zu verschlüsseln. Das bedeutet, dass alle Daten, die einem Flink-Prüfpunkt oder -Snapshot unterliegen, standardmäßig mit AOKs verschlüsselt werden. Wenn Sie das AOK durch ein CMK ersetzen, werden neue Checkpoints und Snapshots mit CMK verschlüsselt. Historische Snapshots bleiben jedoch mit der AOK verschlüsselt.

Um eine vorhandene 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 abrufen, indem Sie DescribeApplication.

    Denken Sie in 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 aus, wie im folgenden Beispiel gezeigt. 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 hat 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 beispielsweise dem Amazon MSF-Serviceprinzipal den kinesisanalytics.amazonaws.com Zugriff auf den Schlüssel ermöglicht.

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 in 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 aus, wie im folgenden Beispiel gezeigt. 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