Amazon Managed Service for Apache Flink (Amazon MSF) は、以前は Amazon Kinesis Data Analytics for Apache Flink と呼ばれていました。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
API を使用した CMK の管理
このトピックでは、Amazon MSF API を使用して KMS CMK を作成および更新する方法について説明します。このトピックで記述されている手順に従うには、KMS キーおよび Amazon MSF アプリケーションを管理するアクセス許可が必要です。このトピックの手順ではデモンストレーションおよびテストのみを目的として、許可されたキーポリシーを使用します。このような許可されたキーポリシーを本番ワークロードに使用することはお勧めしません。本番ワークロードにおける実際のシナリオでは、ロール、アクセス許可、ワークフローは分離されます。
KMS キーを作成して割り当てる
開始する前に、KMS キーを作成してください。KMS キーの作成の詳細については、「AWS Key Management Service デベロッパーガイド」の「Create a KMS key」を参照してください。
KMS キーポリシーを作成する
Amazon MSF で CMK を使用するには、キーポリシーに kinesisanalytics.amazonaws.com および infrastructure.kinesisanalytics.amazonaws.com のサービスプリンシパルを追加する必要があります。Amazon MSF は、検証およびリソースアクセスにこれらのサービスプリンシパルを使用します。これらのサービスプリンシパルを含めない場合、Amazon MSF によってリクエストが拒否されます。
次の KMS キーポリシーにより、Amazon MSF はアプリケーションの MyCmkApplication に CMK を使用できます。このポリシーでは次の操作を実行するため、Operator ロールおよび Amazon MSF サービスプリンシパルの両方に kinesisanalytics.amazonaws.com および infrastructure.kinesisanalytics.amazonaws.com という必要なアクセス許可が付与されます。
-
CMK を説明する
-
アプリケーションデータを暗号化する
-
アプリケーションデータを復号する
-
キーに対する許可を作成する
次の例では、IAM ロールが使用されます。次の例をテンプレートとして使用して KMS キーのキーポリシーを作成できますが、必ず次の操作を行ってください。
-
arn:aws:iam::を123456789012:role/OperatorOperatorロールに置き換えます。キーポリシーを作成する前に、Operatorロールまたはユーザーを作成する必要があります。これを行わないと、リクエストが失敗します。 -
arn:aws:kinesisanalytics:us-east-1:をアプリケーションの ARN に置き換えます。123456789012:application/MyCmkApplication -
kinesisanalytics.を対応するリージョンのサービス値に置き換えます。us-east-1.amazonaws.com -
123456789012を CMK のアカウント idKey ポリシーに置き換えます。 -
キー管理者が KMS キーを管理できるように、他のポリシーステートメントを追加します。これを行わないと、キーを管理するためのアクセスが失われます。
次のキーポリシーステートメントは明示的で各アクションに必要な条件を示すことを意図しているため、大規模になります。
{ "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" } } } ] }
アプリケーションライフサイクルオペレータ (API 発信者) のアクセス許可
次の IAM ポリシーでは、アプリケーションライフサイクルオペレータがアプリケーションの MyCmkApplication に KMS キーを割り当てるために必要なアクセス許可を持っていることを保証します。
CMK を使用するように既存のアプリケーションを更新する
Amazon MSF では、 AWS 所有のキー(AOKs) を使用する既存のアプリケーションに CMK ポリシーを適用できます。
デフォルトでは、Amazon MSF は AOK を使用してエフェメラル (実行中のアプリケーションストレージ) ストレージと永続的な (永続的なアプリケーションストレージ) ストレージでデータを暗号化します。つまり、Flink チェックポイントまたはスナップショットの対象となるすべてのデータは、デフォルトで AOK を使用して暗号化されます。AOK を CMK に置き換えると、新しいチェックポイントおよびスナップショットは CMK で暗号化されます。ただし、履歴スナップショットは AOK で暗号化されたままになります。
CMK を使用するように既存のアプリケーションを更新する方法
-
次の設定で JSON ファイルを作成します。
必ず
CurrentApplicationVersionIdの値をアプリケーションの現在のバージョン番号に置き換えてください。DescribeApplication を使用して、アプリケーションの現在のバージョン番号を取得できます。この JSON 設定では、必ず
サンプル値を実際の値に置き換えてください。{ "ApplicationName": "MyCmkApplication", "CurrentApplicationVersionId":1, "ApplicationConfigurationUpdate": { "ApplicationEncryptionConfigurationUpdate": { "KeyTypeUpdate": "CUSTOMER_MANAGED_KEY", "KeyIdUpdate": "arn:aws:kms:us-east-1:" } } }123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab -
このファイルを保存します。例えば、「
enable-cmk.json」という名前で保存します。 -
次の例に示すように、update-applicationAWS CLI コマンドを実行します。このコマンドでは、以前のステップでファイル引数として作成した JSON 設定ファイルを指定します。
aws kinesisanalyticsv2 update-application \ --cli-input-json file://enable-cmk.json
上記の設定がアプリケーションの更新に認められ、CMK を使用できるようになるのは、次の条件が満たされている場合に限ります。
-
API 発信者には、キーへのアクセスを許可するポリシーステートメントがあります。
-
キーポリシーには、API 発信者にキーへのアクセスを許可するポリシーステートメントがあります。
-
キーポリシーには、Amazon MSF サービスプリンシパルを許可するポリシーステートメントがあります (キーへの
kinesisanalytics.amazonaws.comアクセスなど)。
CMK から に戻すAWS 所有のキー
CMK から AOK に戻す方法
-
次の設定で JSON ファイルを作成します。
この JSON 設定では、必ず
サンプル値を実際の値に置き換えてください。{ "ApplicationName": "MyCmkApplication", "CurrentApplicationVersionId":1, "ApplicationConfigurationUpdate": { "ApplicationEncryptionConfigurationUpdate": { "KeyTypeUpdate": "AWS_OWNED_KEY" } } } -
このファイルを保存します。例えば、「
disable-cmk.json」という名前で保存します。 -
次の例に示すように、update-applicationAWS CLI コマンドを実行します。このコマンドでは、以前のステップでファイル引数として作成した JSON 設定ファイルを指定します。
aws kinesisanalyticsv2 update-application \ --cli-input-json file://disable-cmk.json