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는 역할을 수임하는 대신 direct 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" }