Amazon Managed Service for Apache Flink(Amazon MSF)는 이전에 Amazon Kinesis Data Analytics for Apache Flink로 알려져 있었습니다.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon Managed Service for Apache Flink의 키 관리
Amazon MSF에서는 데이터를 암호화하기 위해 AWS 관리형 키 또는 사용자가 직접 관리하는 고객 관리형 키(CMK)를 사용할 수 있습니다. AWS Key Management Service(AWS KMS)의 CMKs는 사용자가 직접 생성, 소유 및 관리하는 암호화 키입니다.
이 페이지의 내용
Amazon EMR의 투명한 암호화
기본적으로 Amazon MSF는 AWS 소유 키(AOKs)를 사용하여 임시(실행 중인 애플리케이션 스토리지) 및 내구성 있는(내구성 있는 애플리케이션 스토리지) 스토리지의 데이터를 암호화합니다. 따라서 Flink 체크포인트 또는 스냅샷의 대상이 되는 모든 데이터는 기본적으로 암호화됩니다. AOK는 Amazon MSF의 기본 암호화 방식이며 추가 설정이 필요하지 않습니다. Amazon MSF는 전송 중 데이터를 암호화하기 위해 기본적으로 TLS 및 HTTP+SSL을 사용하며 추가 설정 또는 구성이 필요하지 않습니다.
Amazon MSF의 고객 관리형 키
Amazon MSF에서 CMK는 사용자가 AWS KMS에서 직접 생성하고 소유하며 관리하는 키로 애플리케이션 데이터를 암호화할 수 있는 기능입니다.
이 섹션의 내용
CMK로 암호화되는 항목은 무엇인가요?
Amazon MSF 애플리케이션에서 Flink 체크포인트 또는 스냅샷의 대상이 되는 데이터는 애플리케이션에 대해 사용자가 정의한 CMK로 암호화됩니다. 따라서 CMK는 실행 중 애플리케이션 스토리지 또는 내구성 애플리케이션 스토리지에 저장된 데이터를 암호화합니다. 다음 섹션에서는 Amazon MSF 애플리케이션에서 CMK를 설정하는 절차를 설명합니다.
키 교체 정책
Amazon MSF는 CMK의 키 교체 정책을 관리하지 않습니다. 키 교체는 사용자가 직접 책임져야 합니다. 이는 CMK를 사용자가 생성하고 유지 관리하기 때문입니다. Amazon MSF에서 CMK와 함께 키 교체 정책을 사용하는 방법에 관한 자세한 내용은 키 교체 정책 섹션을 참조하세요.
CMK로 암호화되지 않는 항목은 무엇인가요?
소스 및 싱크
데이터 소스 및 싱크의 암호화는 Amazon MSF에서 관리되지 않습니다. 소스나 싱크 구성 또는 애플리케이션 커넥터 구성에 의해 관리됩니다.
암호화의 소급 적용
Amazon MSF의 CMK는 기존의 과거 스냅샷에 CMK를 소급 적용하는 기능을 지원하지 않습니다.
로그 암호화
현재 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:SourceArn 및 aws:SourceAccount가 제공됩니다.
암호화된 실행 중 애플리케이션 스토리지를 프로비저닝하기 위해 권한 부여를 생성할 때, Amazon MSF CMK는 제약 조건 유형 EncryptionContextSubset을 사용하는 권한 부여 생성하여 "kms:GrantOperations": "Decrypt"를 통해 Decrypt 작업만 허용되도록 보장합니다.
키 교체 정책
Amazon MSF는 CMK의 키 교체 정책을 관리하지 않습니다. CMK를 사용자가 생성하고 유지 관리하기 때문에 키 교체는 사용자 책임입니다.
KMS에서 CMK의 새로운 암호화 자료를 생성하기 위해 자동 또는 수동 키 교체를 사용할 수 있습니다. 키를 교체하는 방법에 관한 자세한 내용은 AWS Key Management Service 개발자 안내서의 AWS KMS keys 교체를 참조하세요.
Amazon MSF에서 CMK 키를 교체할 때는 연산자(API 호출자)가 이전 키와 새 키 모두에 대한 권한을 가지고 있어야 합니다.
참고
애플리케이션이 CMK 사용으로 구성된 이후에도 AOK로 암호화된 스냅샷에서 시작할 수 있습니다. 또한 이전 CMK로 암호화된 스냅샷에서 시작할 수도 있습니다. 스냅샷에서 애플리케이션을 시작하려면 연산자(API 호출자)가 이전 키와 새 키 모두에 대한 권한을 가지고 있어야 합니다.
Amazon MSF에서는 CMK 암호화를 사용하는 애플리케이션을 중지했다가 다시 시작할 것을 권장합니다. 이렇게 하면 새 교체 마스터 키가 실행 중 애플리케이션 스토리지와 내구성 애플리케이션 스토리지의 모든 데이터에 적용됩니다. 애플리케이션을 중지하고 다시 시작하지 않으면 새 키 구성 요소는 내구성 애플리케이션 스토리지에만 적용됩니다. 실행 중 애플리케이션 스토리지는 계속 이전 키 재료로 암호화됩니다.
CMK에 사용되는 AWS KMS keyARN을 변경하는 경우 Amazon MSF에서 UpdateApplication을 사용해야 합니다. 이렇게 하면 UpdateApplication 작업의 일부로 Flink 애플리케이션이 다시 시작되면서 CMK 변경 사항이 적용됩니다.
참고
별칭 또는 별칭 ARN을 제공하면 Amazon MSF는 해당 별칭을 키 ARN으로 확인하고 애플리케이션에 대해 구성된 키로 해당 키 ARN을 저장합니다.
최소 권한 키 정책 문
키 정책 문에 관한 자세한 내용은 KMS 키 정책 생성 및 애플리케이션 수명 주기 연산자(API 호출자) 권한 섹션을 참조하세요.
AWS CloudTrail로그 항목 예
Amazon MSF가에서 CMKs 사용하는 경우 AWS KMS는 모든 AWS KMSAPI 호출 및 관련 세부 정보를 AWS CloudTrail자동으로 기록합니다. 이러한 로그에는 AWS 서비스요청, KMS 키 ARN, 수행된 API 작업, 암호화된 데이터를 제외한 타임스탬프와 같은 정보가 포함됩니다. 이러한 로그는 어떤 서비스가 언제 키에 액세스했는지를 보여주므로 규정 준수, 보안 모니터링, 문제 해결을 위한 필수 감사 추적 기능을 제공합니다.
예제 1:Amazon MSF에서 수임된 역할을 사용하여 API 호출 AWS KMS해독
다음 CloudTrail 로그는 Amazon MSF가 CMK에 대해 테스트용 kms:Decrypt 작업을 수행하는 것을 보여줍니다. 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 로그는 Amazon MSF가 CMK에 대해 테스트용 kms:Decrypt 작업을 수행하는 것을 보여줍니다. Amazon MSF는 역할을 수임하는 대신 directAWSservice-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" }