Amazon Managed Service for Apache Flink でのキー管理 - Managed Service for Apache Flink

Amazon Managed Service for Apache Flink (Amazon MSF) は、以前は Amazon Kinesis Data Analytics for Apache Flink と呼ばれていました。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon Managed Service for Apache Flink でのキー管理

Amazon MSF では、 AWS マネージドキー または独自のカスタマーマネージドキー (CMKs) を使用してデータを暗号化できます。 AWS Key Management Service (AWS KMS) CMKs は、自分で作成、所有、管理する暗号化キーです。

デフォルトでは、Amazon MSF は AWS 所有のキー (AOKs) を使用して、エフェメラル (実行中のアプリケーションストレージ) および耐久性のある (耐久性のあるアプリケーションストレージ) ストレージでデータを暗号化します。つまり、Flink チェックポイントまたはスナップショットの対象となるすべてのデータは、デフォルトで暗号化されます。AOKsは Amazon MSF のデフォルトの暗号化方法であり、追加のセットアップは必要ありません。転送中のデータを暗号化するために、Amazon MSF はデフォルトで TLS と HTTP+SSL を使用し、追加のセットアップや設定は必要ありません。

Amazon MSF では、CMK は、ユーザーが作成、所有、管理するキーを使用してアプリケーションのデータを暗号化できる機能です AWS KMS。

CMKsは何ですか?

Amazon MSF アプリケーションでは、Flink チェックポイントまたはスナップショットの対象となるデータは、そのアプリケーション用に定義した CMK で暗号化されます。その結果、CMK は実行中のアプリケーションストレージまたは耐久性のあるアプリケーションストレージに保存されているデータを暗号化します。以下のセクションでは、Amazon MSF アプリケーションの CMKs を設定する手順について説明します。

キーローテーションポリシー

Amazon MSF は、CMKs のキーローテーションポリシーを管理しません。独自のキーローテーションはお客様の責任となります。これは、CMKs を作成して維持するためです。Amazon MSF で CMK でキーローテーションポリシーを使用する方法については、「」を参照してくださいキーローテーションポリシー

CMKs で暗号化されていないものは何ですか?

ソースとシンク

データソースとシンクの暗号化は Amazon MSF によって管理されません。これは、ソースまたはシンクの設定またはアプリケーションコネクタの設定によって管理されます。

暗号化の遡及適用

Amazon MSF の CMK は、既存の履歴スナップショットに CMKs を遡及的に適用するサポートを提供しません。

ログ暗号化

現在、Amazon MSF は、アプリケーションコード jar によって生成されたログの KMS CMK を使用したログ暗号化をサポートしていません。ログに CMK 暗号化が必要なデータが含まれていないことを確認する必要があります。

転送中のデータの暗号化

CMK を使用して転送中のデータを暗号化することはできません。デフォルトでは、Amazon MSF は TLS または HTTP と SSL を使用して転送中のすべてのデータを暗号化します。

サポートされる KMS キータイプ

Amazon MSF の CMK は対称キーをサポートしています。

KMS キーのアクセス許可

Amazon MSF の CMK には、次の KMS アクションを実行するためのアクセス許可が必要です。これらのアクセス許可は、アクセスの検証、CMK で暗号化された実行中のアプリケーションストレージの作成、CMK で暗号化されたアプリケーションの状態を耐久性のあるアプリケーションストレージに保存するために必要です。

  • kms:DescribeKey

    KMS キーエイリアスをキー ARN に解決するアクセス許可を付与します。

  • kms:Decrypt

    永続的なアプリケーション状態にアクセスし、実行中のアプリケーションストレージをプロビジョニングするアクセス許可を付与します。

  • kms:GenerateDataKey

    耐久性のあるアプリケーション状態を保存するアクセス許可を付与します。

  • kms:GenerateDataKeyWithoutPlaintext

    実行中のアプリケーションストレージをプロビジョニングするアクセス許可を付与します。

  • kms:CreateGrant

    実行中のアプリケーションストレージにアクセスするアクセス許可を付与します。

KMS 暗号化コンテキストと制約

Amazon MSF の CMK は、暗号化されたデータ、つまり を読み書きするためのキーにアクセスするときに暗号化コンテキストを提供しますkms:EncryptionContext:aws:kinesisanalytics:arn。暗号化コンテキストに加えて、ソースコンテキスト aws:SourceArnaws:SourceAccount は、耐久性のあるアプリケーションストレージの読み取りまたは書き込み時に提供されます。

暗号化された実行中のアプリケーションストレージをプロビジョニングする許可を作成すると、Amazon MSF CMK は制約タイプ EncryptionContextSubset で許可を作成し、 を介して Decrypt オペレーションのみが許可されるようにします"kms:GrantOperations": "Decrypt"

キーローテーションポリシー

Amazon MSF は、CMKs のキーローテーションポリシーを管理しません。CMKs を作成および維持するので、ユーザーは独自のキーローテーションに責任を負います。

KMS では、自動キーローテーションまたは手動キーローテーションを使用して、CMKs の新しい暗号化マテリアルを作成します。キーをローテーションする方法については、 AWS Key Management Service デベロッパーガイド「ローテーション AWS KMS keys」を参照してください。

Amazon MSF で CMKs のキーをローテーションするときは、オペレータ (API 発信者) に以前のキーと新しいキーの両方に対するアクセス許可があることを確認する必要があります。

注記

アプリケーションは、CMK を使用するように設定された後に AOK で暗号化されたスナップショットから開始できます。アプリケーションは、古い CMK で暗号化されたスナップショットから開始することもできます。スナップショットからアプリケーションを開始するには、オペレータ (API 発信者) に古いキーと新しいキーの両方に対するアクセス許可が必要です。

Amazon MSF では、CMK 暗号化を使用してアプリケーションを停止および再起動することをお勧めします。これにより、実行中のアプリケーションストレージと耐久性のあるアプリケーションストレージのすべてのデータに新しいローテーションマスターキーが適用されます。アプリケーションを停止して再起動しない場合、新しいキーマテリアルは耐久性のあるアプリケーションストレージにのみ適用されます。実行中のアプリケーションストレージは、以前のローテーションキーマテリアルを使用して暗号化され続けます。

CMK に使用される AWS KMS key ARN を変更する場合は、Amazon MSF で UpdateApplication を使用する必要があります。これにより、CMK の変更UpdateApplicationの適用の一環として Flink アプリケーションが再起動されます。

注記

エイリアスまたはエイリアス ARN を指定すると、Amazon MSF はエイリアスをキー ARN に解決し、キー ARN をアプリケーションの設定済みキーとして保存します。

最小特権キーポリシーステートメント

キーポリシーステートメントの詳細については、KMS キーポリシーを作成する「」および「」を参照してくださいアプリケーションライフサイクルオペレーター (API 発信者) のアクセス許可

AWS CloudTrail ログエントリの例

Amazon MSF が で CMKs を使用する場合 AWS KMS、 はすべての AWS KMS API コールと関連する詳細 AWS CloudTrail を自動的にログに記録します。これらのログには、リクエスト AWS のサービス の作成、KMS キー ARN、実行された API アクション、暗号化されたデータを除くタイムスタンプなどの情報が含まれます。これらのログは、どのサービスがいつキーにアクセスしたかを示すことで、コンプライアンス、セキュリティモニタリング、トラブルシューティングに不可欠な監査証跡を提供します。

例 1: Amazon MSF で引き受けたロールを使用して API コールを AWS KMS 復号する

次の CloudTrail ログは、CMK でテスト kms:Decrypt オペレーションを実行する Amazon MSF を示しています。Amazon MSF は、CreateApplication API の使用中に Operatorロールを使用してこのリクエストを行います。次のログには、ターゲット KMS キー ARN、関連する Amazon MSF アプリケーション (MyCmkApplication)、オペレーションのタイムスタンプなど、重要な詳細が含まれています。

{ "eventVersion": "1.11", "userIdentity": { "type": "AssumedRole", "principalId": "REDACTED", "arn": "arn:aws:sts::123456789012:assumed-role/Operator/CmkTestingSession", "accountId": "123456789012", "accessKeyId": "REDACTED", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "REDACTED", "arn": "arn:aws:iam::123456789012:role/Operator", "accountId": "123456789012", "userName": "Operator" }, "attributes": { "creationDate": "2025-08-07T13:29:28Z", "mfaAuthenticated": "false" } }, "invokedBy": "kinesisanalytics.amazonaws.com" }, "eventTime": "2025-08-07T13:45:45Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-east-1", "sourceIPAddress": "kinesisanalytics.amazonaws.com", "userAgent": "kinesisanalytics.amazonaws.com", "errorCode": "DryRunOperationException", "errorMessage": "The request would have succeeded, but the DryRun option is set.", "requestParameters": { "encryptionContext": { "aws:kinesisanalytics:arn": "arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication" }, "keyId": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab", "encryptionAlgorithm": "SYMMETRIC_DEFAULT", "dryRun": true }, "responseElements": null, "additionalEventData": { "keyMaterialId": "REDACTED" }, "requestID": "56764d19-1eb1-48f1-8044-594aa7dd05c4", "eventID": "1371b402-f1dc-4c47-8f3a-1004e4803c5a", "readOnly": true, "resources": [ { "accountId": "123456789012", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "123456789012", "eventCategory": "Management" }
例 2: 直接サービス認証を使用した Amazon MSF での API コールの AWS KMS 復号

次の CloudTrail ログは、CMK でテスト kms:Decrypt オペレーションを実行する Amazon MSF を示しています。Amazon MSF は、ロールを引き受ける代わりに AWS service-to-service直接認証を通じてこのリクエストを行います。次のログには、ターゲット KMS キー ARN、関連付けられた Amazon MSF アプリケーション (MyCmkApplication)、 オペレーションの共有イベント ID など、重要な詳細が含まれています。

{ "eventVersion": "1.11", "userIdentity": { "type": "AWSService", "invokedBy": "kinesisanalytics.amazonaws.com" }, "eventTime": "2025-08-07T13:45:45Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-east-1", "sourceIPAddress": "kinesisanalytics.amazonaws.com", "userAgent": "kinesisanalytics.amazonaws.com", "errorCode": "DryRunOperationException", "errorMessage": "The request would have succeeded, but the DryRun option is set.", "requestParameters": { "encryptionAlgorithm": "SYMMETRIC_DEFAULT", "keyId": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab", "encryptionContext": { "aws:kinesisanalytics:arn": "arn:aws:kinesisanalytics:us-east-1:123456789012:application/MyCmkApplication" }, "dryRun": true }, "responseElements": null, "additionalEventData": { "keyMaterialId": "REDACTED" }, "requestID": "5fe45ada-7519-4608-be2f-5a9b8ddd62b2", "eventID": "6206b08f-ce04-3011-9ec2-55951d357b2c", "readOnly": true, "resources": [ { "accountId": "123456789012", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "Application-account-ID", "sharedEventID": "acbe4a39-ced9-4f53-9f3c-21ef7e89dc37", "eventCategory": "Management" }