Amazon에서 고객 관리형 키 사용 QLDB - Amazon Quantum 원장 데이터베이스(Amazon QLDB)

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon에서 고객 관리형 키 사용 QLDB

AWS Management Console, AWS Command Line Interface (AWS CLI) 또는 를 사용하여 Amazon 의 새 원장 및 기존 원장에 AWS KMS key 대한 를 QLDB API 지정할 수 있습니다QLDB. 다음 주제에서는 에서 고객 관리형 키 사용을 관리하고 모니터링하는 방법을 설명합니다QLDB.

사전 조건

고객 관리형 키로 QLDB 원장을 보호하려면 먼저 AWS Key Management Service ()에서 키를 생성해야 합니다AWS KMS. 또한 가 AWS KMS key 사용자를 대신하여 권한 부여QLDB를 생성할 수 있도록 허용하는 키 정책을 지정해야 합니다.

고객 관리형 키 생성

고객 관리형 키를 생성하려면 AWS Key Management Service 개발자 안내서대칭 암호화 KMS 키 생성의 단계를 따르세요. QLDB 는 비대칭 키 를 지원하지 않습니다.

키 정책 설정

키 정책은 에서 고객 관리형 키에 대한 액세스를 제어하는 주요 방법입니다 AWS KMS. 모든 고객 관리형 키에는 정확히 하나의 키 정책이 있어야 합니다. 키 정책 문서의 문에 따라 KMS 키를 사용할 수 있는 권한이 있는 사람과 키 사용 방법이 결정됩니다. 자세한 내용은 의 키 정책 사용을 AWS KMS 참조하세요.

고객 관리형 키를 생성할 때 키 정책을 지정할 수 있습니다. 기존 고객 관리형 키의 키 정책을 변경하려면 키 정책 변경을 참조하세요.

QLDB 가 고객 관리형 키를 사용하도록 허용하려면 키 정책에 다음 AWS KMS 작업에 대한 권한이 포함되어야 합니다.

예제 키 정책

다음은 에 사용할 수 있는 주요 정책 예제입니다QLDB. 이 정책은 계정QLDB에서 를 사용하여 리소스 에서 DescribeKeyCreateGrant 작업을 호출111122223333할 권한이 있는 보안 주체를 허용합니다arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab.

이 정책을 사용하려면 를 바꿉니다.us-east-1, 111122223333, 및 1234abcd-12ab-34cd-56ef-1234567890ab 자신의 정보가 포함된 예제.

{ "Version": "2012-10-17", "Statement": [ { "Sid" : "Allow access to principals authorized to use Amazon QLDB", "Effect" : "Allow", "Principal" : { "AWS" : "*" }, "Action" : [ "kms:DescribeKey", "kms:CreateGrant" ], "Resource" : "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Condition" : { "StringEquals" : { "kms:ViaService" : "qldb.us-east-1.amazonaws.com", "kms:CallerAccount" : "111122223333" } } } ] }

새 원장에 AWS KMS key 지정하기

QLDB 콘솔 또는 를 사용하여 새 원장을 생성할 때 KMS 키를 지정하는 방법은 다음과 같습니다 AWS CLI.

ID, 별칭 또는 Amazon 리소스 이름()을 사용하여 고객 관리형 키를 지정할 수 있습니다ARN. 자세한 내용은 AWS Key Management Service 개발자 안내서키 식별자(KeyId)를 참조하세요.

참고

교차 리전 키는 지원되지 않습니다. 지정된 KMS 키는 원장 AWS 리전 과 동일해야 합니다.

  1. 에 로그인 AWS Management Console하고 https://console.aws.amazon.com/qldb 에서 Amazon QLDB 콘솔을 엽니다.

  2. 원장 생성을 선택합니다.

  3. 원장 생성 페이지에서 다음을 수행합니다.

    • 원장 정보 - 현재 AWS 계정 및 리전의 모든 원장 중에서 고유한 원장 이름을 입력합니다.

    • 권한 모드 - 원장에 할당할 권한 모드를 선택합니다.

      • 모두 허용

      • 표준(권장)

    • 저장 데이터 암호화 - 저장 데이터 암호화에 사용할 KMS 키 유형을 선택합니다.

      • AWS 소유 KMS 키 사용 - AWS 사용자를 대신하여 가 소유하고 관리하는 KMS 키를 사용합니다. 이는 기본 옵션이며 추가 설정이 필요하지 않습니다.

      • 다른 AWS KMS 키 선택 - 생성, 소유 및 관리하는 계정에서 대칭 암호화 KMS 키를 사용합니다.

        AWS KMS 콘솔을 사용하여 새 키를 생성하려면 AWS KMS 키 생성을 선택합니다. 자세한 내용은 AWS Key Management Service 개발자 안내서대칭 암호화 KMS 키 생성을 참조하세요.

        기존 KMS 키를 사용하려면 드롭다운 목록에서 하나를 선택하거나 KMS 키 를 지정합니다ARN.

  4. 원하는 대로 설정되었으면 원장 생성을 선택합니다.

    원장의 상태가 활성 상태가 되면 QLDB 원장에 액세스할 수 있습니다. 몇 분 정도 걸릴 수 있습니다.

AWS CLI 를 사용하여 기본 키 AWS 소유 키 또는 고객 관리형 키를 QLDB 사용하여 에서 원장을 생성합니다.

예 - 기본 AWS 소유 키를 사용하여 원장 생성
aws qldb create-ledger --name my-example-ledger --permissions-mode STANDARD
예 - 고객 관리형 키를 사용하여 원장 생성
aws qldb create-ledger \ --name my-example-ledger \ --permissions-mode STANDARD \ --kms-key arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

기존 원장의 AWS KMS key 업데이트

QLDB 콘솔 또는 를 사용하여 언제든지 기존 원장의 KMS 키를 AWS 소유 키 또는 고객 관리형 키로 AWS CLI 업데이트할 수도 있습니다.

참고

Amazon은 2021년 7월 22 AWS KMS keys 일에 고객 관리형 지원을 QLDB 시작했습니다. 시작 전에 생성된 모든 원장은 AWS 소유 키 기본적으로 로 보호되지만 현재 고객 관리형 키를 사용하여 저장 시 암호화할 수 없습니다.

QLDB 콘솔에서 원장의 생성 시간을 볼 수 있습니다.

의 주요 변경 사항은 비동기식QLDB입니다. 키 변경이 처리되는 동안 성능에 영향을 주지 않고 원장에 완전히 액세스할 수 있습니다. 키를 업데이트하는 데 걸리는 시간은 원장 크기에 따라 다릅니다

ID, 별칭 또는 Amazon 리소스 이름()을 사용하여 고객 관리형 키를 지정할 수 있습니다ARN. 자세한 내용은 AWS Key Management Service 개발자 안내서키 식별자(KeyId)를 참조하세요.

참고

교차 리전 키는 지원되지 않습니다. 지정된 KMS 키는 원장 AWS 리전 과 동일해야 합니다.

  1. 에 로그인 AWS Management Console하고 https://console.aws.amazon.com/qldb 에서 Amazon QLDB 콘솔을 엽니다.

  2. 탐색 창에서 원장을 선택합니다.

  3. 원장 목록에서 갱신하려는 원장을 선택한 다음 원장 편집을 선택합니다.

  4. 원장 편집 페이지에서 저장 시 암호화에 사용할 KMS 키 유형을 선택합니다.

    • AWS 소유 KMS 키 사용 - AWS 사용자를 대신하여 에서 소유 및 관리하는 KMS 키를 사용합니다. 이는 기본 옵션이며 추가 설정이 필요하지 않습니다.

    • 다른 AWS KMS 키 선택 - 생성, 소유 및 관리하는 계정에서 대칭 암호화 KMS 키를 사용합니다.

      AWS KMS 콘솔을 사용하여 새 키를 생성하려면 AWS KMS 키 생성을 선택합니다. 자세한 내용은 AWS Key Management Service 개발자 안내서대칭 암호화 KMS 키 생성을 참조하세요.

      기존 KMS 키를 사용하려면 드롭다운 목록에서 하나를 선택하거나 KMS 키 를 지정합니다ARN.

  5. 변경 확인을 선택합니다.

AWS CLI 를 사용하여 기본 AWS 소유 키 또는 고객 관리형 키QLDB로 의 기존 원장을 업데이트합니다.

예 - 기본 AWS 소유 키를 사용하여 원장 업데이트
aws qldb update-ledger --name my-example-ledger --kms-key AWS_OWNED_KMS_KEY
예 - 고객 관리형 키를 사용하여 원장 업데이트
aws qldb update-ledger \ --name my-example-ledger \ --kms-key arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

AWS KMS keys모니터링

고객 관리형 키를 사용하여 Amazon QLDB 원장을 보호하는 경우 AWS CloudTrail 또는 Amazon CloudWatch Logs를 사용하여 AWS KMS 가 사용자를 대신하여 에 QLDB 보내는 요청을 추적할 수 있습니다. 자세한 내용을 알아보려면 AWS Key Management Service 개발자 안내서AWS KMS keys모니터링를 참조하세요.

다음 예제는 작업 CreateGrant, , GenerateDataKey, 및 Decrypt에 대한 CloudTrail 로그 항목Encrypt입니다DescribeKey.

CreateGrant

원장을 보호하기 위해 고객 관리형 키를 지정하면 는 AWS KMS 사용자를 대신하여 에 KMS 키에 대한 액세스를 허용하는 CreateGrant 요청을 QLDB 보냅니다. 또한 QLDB는 원장을 삭제할 때 RetireGrant 작업을 사용하여 권한 부여를 제거합니다.

에서 QLDB 생성하는 권한 부여는 원장에 따라 다릅니다. CreateGrant 요청에 있는 보안 주체는 테이블을 생성한 사용자입니다.

CreateGrant 작업을 기록하는 이벤트는 다음 예시 이벤트와 유사합니다. 파라미터에는 고객 관리형 키의 Amazon 리소스 이름(ARN), 권한 부여자 보안 주체 및 사용 중지 보안 주체(QLDB서비스), 권한 부여가 다루는 작업이 포함됩니다.

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AKIAIOSFODNN7EXAMPLE:sample-user", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/sample-user", "accountId": "111122223333", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" }, "webIdFederationData": {}, "attributes": { "mfaAuthenticated": "false", "creationDate": "2021-06-04T21:37:11Z" } }, "invokedBy": "qldb.amazonaws.com" }, "eventTime": "2021-06-04T21:40:00Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-west-2", "sourceIPAddress": "qldb.amazonaws.com", "userAgent": "qldb.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "granteePrincipal": "qldb.us-west-2.amazonaws.com", "operations": [ "DescribeKey", "GenerateDataKey", "Decrypt", "Encrypt" ], "retiringPrincipal": "qldb.us-west-2.amazonaws.com" }, "responseElements": { "grantId": "b3c83f999187ccc0979ef2ff86a1572237b6bba309c0ebce098c34761f86038a" }, "requestID": "e99188d7-3b82-424e-b63e-e086d848ed60", "eventID": "88dc7ba5-4952-4d36-9ca8-9ab5d9598bab", "readOnly": false, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "111122223333" }
GenerateDataKey

원장을 보호하기 위해 고객 관리형 키를 지정하면 에서 고유한 데이터 키를 QLDB 생성합니다. 원장의 고객 관리형 키를 AWS KMS 지정하는 GenerateDataKey 요청을 에 보냅니다.

GenerateDataKey 작업을 기록하는 이벤트는 다음 예시 이벤트와 유사합니다. 사용자는 QLDB 서비스 계정입니다. 파라미터에는 고객 관리형 키ARN의 , 32바이트 길이가 필요한 데이터 키 지정자, 내부 키 계층구조 노드를 식별하는 암호화 컨텍스트가 포함됩니다.

{ "eventVersion": "1.08", "userIdentity": { "type": "AWSService", "invokedBy": "qldb.amazonaws.com" }, "eventTime": "2021-06-04T21:40:01Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-west-2", "sourceIPAddress": "qldb.amazonaws.com", "userAgent": "qldb.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "numberOfBytes": 32, "encryptionContext": { "key-hierarchy-node-id": "LY4HWMnkeZWKYi6MlitVJC", "key-hierarchy-node-version": "1" } }, "responseElements": null, "requestID": "786977c9-e77c-467a-bff5-9ad5124a4462", "eventID": "b3f082cb-3e75-454e-bf0a-64be13075436", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "111122223333", "sharedEventID": "26688de5-0b1c-43d3-bc4f-a18029b08446" }
Decrypt

원장에 액세스할 때 는 Decrypt 작업을 QLDB 호출하여 원장의 암호화된 데이터에 액세스할 수 있도록 원장의 저장된 데이터 키를 복호화합니다.

Decrypt 작업을 기록하는 이벤트는 다음 예시 이벤트와 유사합니다. 사용자는 QLDB 서비스 계정입니다. 파라미터에는 고객 관리형 키ARN의 와 내부 키 계층구조 노드를 식별하는 암호화 컨텍스트가 포함됩니다.

{ "eventVersion": "1.08", "userIdentity": { "type": "AWSService", "invokedBy": "qldb.amazonaws.com" }, "eventTime": "2021-06-04T21:40:56Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-west-2", "sourceIPAddress": "qldb.amazonaws.com", "userAgent": "qldb.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "encryptionAlgorithm": "SYMMETRIC_DEFAULT", "encryptionContext": { "key-hierarchy-node-id": "LY4HWMnkeZWKYi6MlitVJC", "key-hierarchy-node-version": "1" } }, "responseElements": null, "requestID": "28f2dd18-3cc1-4fe2-82f7-5154f4933ebf", "eventID": "603ad5d4-4744-4505-9c21-bd4a6cbd4b20", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "111122223333", "sharedEventID": "7b6ce3e3-a764-42ec-8f90-5418c97ec411" }
암호화

QLDB 는 고객 관리형 키를 사용하여 일반 텍스트를 암호화하기 위해 Encrypt 작업을 호출합니다.

Encrypt 작업을 기록하는 이벤트는 다음 예시 이벤트와 유사합니다. 사용자는 QLDB 서비스 계정입니다. 파라미터에는 고객 관리형 키ARN의 와 원장의 내부 고유 ID를 지정하는 암호화 컨텍스트가 포함됩니다.

{ "eventVersion": "1.08", "userIdentity": { "type": "AWSService", "invokedBy": "qldb.amazonaws.com" }, "eventTime": "2021-06-04T21:40:01Z", "eventSource": "kms.amazonaws.com", "eventName": "Encrypt", "awsRegion": "us-west-2", "sourceIPAddress": "qldb.amazonaws.com", "userAgent": "qldb.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "encryptionContext": { "LedgerId": "F6qRNziJLUXA4Vy2ZUv8YY" }, "encryptionAlgorithm": "SYMMETRIC_DEFAULT" }, "responseElements": null, "requestID": "b2daca7d-4606-4302-a2d7-5b3c8d30c64d", "eventID": "b8aace05-2e37-4fed-ae6f-a45a1c6098df", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "111122223333", "sharedEventID": "ce420ab0-288e-4b4f-aee8-541e18a28aa5" }
DescribeKey

QLDB 는 DescribeKey 작업을 호출하여 지정한 KMS 키가 및 리전에 AWS 계정 있는지 확인합니다.

DescribeKey 작업을 기록하는 이벤트는 다음 예시 이벤트와 유사합니다. 보안 주체는 KMS 키를 AWS 계정 지정한 의 사용자입니다. 파라미터에는 고객 관리형 키ARN의 가 포함됩니다.

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AKIAIOSFODNN7EXAMPLE:sample-user", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/sample-user", "accountId": "111122223333", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" }, "webIdFederationData": {}, "attributes": { "mfaAuthenticated": "false", "creationDate": "2021-06-04T21:37:11Z" } }, "invokedBy": "qldb.amazonaws.com" }, "eventTime": "2021-06-04T21:40:00Z", "eventSource": "kms.amazonaws.com", "eventName": "DescribeKey", "awsRegion": "us-west-2", "sourceIPAddress": "qldb.amazonaws.com", "userAgent": "qldb.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, "responseElements": null, "requestID": "a30586af-c783-4d25-8fda-33152c816c36", "eventID": "7a9caf07-2b27-44ab-afe4-b259533ebb88", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ], "eventType": "AwsApiCall", "managementEvent": true, "eventCategory": "Management", "recipientAccountId": "111122223333" }