

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

# Amazon Managed Service for Apache Flink のキー管理
<a name="key-management-flink"></a>

Amazon MSF では、[AWS マネージドキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html) または独自の [カスタマーマネージドキー (CMK)](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-mgn-key) のいずれかを使用してデータを暗号化できます。 AWS Key Management Service (AWS KMS) CMKs は、自分で作成、所有、管理する暗号化キーです。

**Topics**
+ [Amazon MSF の透過的暗号化](#transparent-encryption-flink)
+ [Amazon MSF のカスタマーマネージドキー](#cmk-flink)
+ [Amazon MSF でカスタマーマネージドキーを使用](use-cmk-flink.md)
+ [を使用した CMK の管理 AWS マネジメントコンソール](manage-cmk-console.md)
+ [API を使用した CMK の管理](manage-cmk-api.md)

## Amazon MSF の透過的暗号化
<a name="transparent-encryption-flink"></a>

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

## Amazon MSF のカスタマーマネージドキー
<a name="cmk-flink"></a>

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

**Topics**
+ [CMK で暗号化されるものは?](#what-is-encrypted-cmk)
+ [CMK で暗号化されないものは?](#what-is-not-encrypted-cmk)
+ [サポートされる KMS キータイプ](#supported-kms-key-types)
+ [KMS キーのアクセス許可](#kms-key-permissions)
+ [KMS 暗号化コンテキストと制約](#kms-encryption-context-constraints)
+ [キーローテーションポリシー](#kms-key-rotation-policy)
+ [最小特権キーポリシーステートメント](#kms-least-privilege-policy-examples)
+ [AWS CloudTrail ログエントリの例](#kms-cloudtrail-log-entries)

### CMK で暗号化されるものは?
<a name="what-is-encrypted-cmk"></a>

Amazon MSF アプリケーションでは、Flink チェックポイントまたはスナップショットの対象となるデータは、そのアプリケーション用に定義した CMK によって暗号化されます。その結果、CMK は実行中のアプリケーションストレージまたは永続的なアプリケーションストレージのいずれかに保存されているデータを暗号化します。[次のセクション](manage-cmk-api.md)では、Amazon MSF アプリケーション用の CMK をセットアップする手順について説明します。

**キーローテーションポリシー**  
Amazon MSF は、CMK のキーローテーションポリシーを管理しません。キーローテーションはお客様の責任で行ってください。お客様が CMK を作成して維持するためです。Amazon MSF で CMK にキーローテーションポリシーを使用する方法の詳細については、「[キーローテーションポリシー](#kms-key-rotation-policy)」を参照してください。

### CMK で暗号化されないものは?
<a name="what-is-not-encrypted-cmk"></a>

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

**暗号化の遡及的な適用**  
Amazon MSF の CMK には、既存の履歴スナップショットに CMK を遡及的に適用するサポートはありません。

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

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

### サポートされる KMS キータイプ
<a name="supported-kms-key-types"></a>

Amazon MSF の CMK は[対称キー](https://docs.aws.amazon.com/kms/latest/developerguide/symm-asymm-choose-key-spec.html#symmetric-cmks)をサポートしています。

### KMS キーのアクセス許可
<a name="kms-key-permissions"></a>

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

**[kms:DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)**  
KMS キーエイリアスをキー ARN に解決するアクセス許可を付与します。
+ 

**[kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)**  
永続的なアプリケーション状態にアクセスし、実行中のアプリケーションストレージをプロビジョニングするアクセス許可を付与します。
+ 

**[kms:GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)**  
永続的なアプリケーションの状態を保存するアクセス許可を付与します。
+ 

**[kms:GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)**  
実行中のアプリケーションストレージをプロビジョニングするアクセス許可を付与します。
+ 

**[kms:CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)**  
実行中のアプリケーションストレージにアクセスするアクセス許可を付与します。

### KMS 暗号化コンテキストと制約
<a name="kms-encryption-context-constraints"></a>

暗号化されたデータ (つまり、`kms:EncryptionContext:aws:kinesisanalytics:arn`) を読み書きするためのキーにアクセスするとき、Amazon MSF の CMK は暗号化コンテキストを提供します。暗号化コンテキストに加えて、ソースコンテキスト [aws:SourceArn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) および [aws:SourceAccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) は、永続的なアプリケーションストレージを読み書きするときに提供されます。

暗号化された実行中のアプリケーションストレージをプロビジョニングする許可を作成すると、Amazon MSF CMK は制約タイプの [EncryptionContextSubset](https://docs.aws.amazon.com/kms/latest/developerguide/create-grant-overview.html#grant-constraints) で許可を作成し、`"kms:GrantOperations": "Decrypt"` を介して [暗号化](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) オペレーションのみが許可されます。

### キーローテーションポリシー
<a name="kms-key-rotation-policy"></a>

Amazon MSF は、CMK のキーローテーションポリシーを管理しません。お客様が CMK を作成および管理するため、キーローテーションはご自身の責任です。

KMS では、自動または手動キーローテーションのいずれかを使用して、CMK の新しい暗号化マテリアルを作成します。キーをローテーションする方法の詳細については、「*AWS Key Management Service デベロッパーガイド*」の「[Rotate AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html)」を参照してください。

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

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

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

CMK に使用される AWS KMS key ARN を変更する場合は、Amazon MSF で [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html) を使用する必要があります。CMK の変更を適用する `UpdateApplication` の一部として Flink アプリケーションが再起動されます。

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

### 最小特権キーポリシーステートメント
<a name="kms-least-privilege-policy-examples"></a>

キーポリシーステートメントの詳細については、「[KMS キーポリシーを作成する](manage-cmk-api.md#create-cmk-kms-key-policy)」および「[アプリケーションライフサイクルオペレータ (API 発信者) のアクセス許可](manage-cmk-api.md#create-cmk-kms-api-caller-permissions)」を参照してください。

### AWS CloudTrail ログエントリの例
<a name="kms-cloudtrail-log-entries"></a>

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

**例 1: Amazon MSF で引き受けたロールを使用して API コールを AWS KMS 復号する**  
次の CloudTrail ログでは、CMK でテスト [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) オペレーションを実行する Amazon MSF が示されます。Amazon MSF は [CreateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_CreateApplication.html) 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](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) オペレーションを実行する 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"
}
```