데이터 카탈로그 암호화 - AWS Glue

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

데이터 카탈로그 암호화

AWS Glue Data Catalog암호화는 민감한 데이터에 대한 보안을 강화합니다. AWS GlueAWS Key Management Service(AWS KMS) 와 통합하여 데이터 카탈로그에 저장된 메타데이터를 암호화합니다. AWS Glue콘솔 또는 를 사용하여 데이터 카탈로그의 리소스에 대한 암호화 설정을 활성화하거나 비활성화할 수 있습니다. AWS CLI

데이터 카탈로그의 암호화를 활성화하면 새로 만드는 모든 개체가 암호화됩니다. 암호화를 비활성화하면 새로 만든 개체는 암호화되지 않지만 기존의 암호화된 개체는 암호화된 상태로 유지됩니다.

AWS관리형 암호화 키 또는 고객 관리 암호화 키를 사용하여 전체 데이터 카탈로그를 암호화할 수 있습니다. 키 유형 및 상태에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서의 AWS Key Management Service개념을 참조하십시오.

AWS 관리형 키

AWS관리 키는 통합된 AWS 서비스에서 사용자를 대신하여 생성, 관리 및 사용되는 계정의 KMS 키입니다. AWS KMS 계정에서 AWS 관리되는 키를 보고, 키 정책을 보고, AWS CloudTrail 로그에서 키 사용을 감사할 수 있습니다. 하지만 이러한 키를 관리하거나 권한을 변경할 수는 없습니다.

저장 중 암호화는 메타데이터를 암호화하는 데 AWS KMS 사용되는 AWS 관리 키 관리 기능과 자동으로 통합됩니다. AWS Glue 메타데이터 암호화를 활성화할 때 AWS 관리 키가 없는 경우 에서 AWS KMS 자동으로 새 키를 생성합니다.

자세한 내용은 AWS 관리형 키를 참조하세요.

고객 관리형 키

고객 관리형 키는 사용자가 생성, 소유 및 관리하는 AWS 계정의 KMS 키입니다. 이러한 KMS 키를 완전히 제어할 수 있습니다. 다음을 할 수 있습니다.

  • 주요 정책, IAM 정책, 보조금 수립 및 유지

  • 활성화 및 비활성화

  • 해당 암호화 자료를 회전시키세요.

  • 태그 추가

  • 이들을 가리키는 별칭을 만드세요.

  • 삭제 일정 잡기

고객 관리 키의 권한 관리에 대한 자세한 내용은 고객 관리 키를 참조하십시오.

중요

AWS Glue대칭형 고객 관리 키만 지원합니다. KMS 키 목록에는 대칭 키만 표시됩니다. 그러나 Choose a KMS key ARN(KMS 키 ARN 선택)을 선택하면 콘솔에서 모든 키 유형에 대해 ARN을 입력할 수 있습니다. 대칭 키에 대한 ARN만 입력해야 합니다.

대칭 고객 관리 키를 만들려면 개발자 가이드의 대칭 고객 관리 키 생성 단계를 따르세요. AWS Key Management Service

데이터 카탈로그 유휴 암호화를 활성화하면 KMS 키를 사용하여 다음과 같은 리소스 유형이 암호화됩니다.

  • 데이터베이스 수

  • 파티션

  • 테이블 버전

  • 열 통계값

  • 사용자 정의 함수

  • 데이터 카탈로그 보기

AWS Glue 암호화 컨텍스트

암호화 컨텍스트는 데이터에 대한 추가 컨텍스트 정보를 포함하는 키-값 페어의 선택적 집합입니다. AWS KMS는 암호화 컨텍스트를 인증된 암호화를 지원하기 위한 추가 인증 데이터로 사용합니다. 데이터 암호화 요청에 암호화 컨텍스트를 포함하는 경우, AWS KMS은(는) 암호화된 데이터에 암호화 컨텍스트를 바인딩합니다. 데이터를 해독하려면 요청에 동일한 암호화 컨텍스트를 포함해야 합니다. AWS Glue모든 AWS KMS 암호화 작업에서 동일한 암호화 컨텍스트를 사용합니다. 여기서 키는 glue_catalog_id 이고 값은 입니다. catalogId

"encryptionContext": { "glue_catalog_id": "111122223333" }

AWS관리 키 또는 대칭형 고객 관리 키를 사용하여 데이터 카탈로그를 암호화하는 경우 감사 레코드 및 로그의 암호화 컨텍스트를 사용하여 키가 사용되는 방식을 식별할 수도 있습니다. 암호화 컨텍스트는 AWS CloudTrail 또는 Amazon CloudWatch 로그에서 생성된 로그에도 나타납니다.

암호화 활성화

AWS Glue콘솔의 데이터 카탈로그 설정에서 또는 를 사용하여 AWS Glue Data Catalog 객체에 대한 암호화를 활성화할 수 AWS CLI 있습니다.

Console
콘솔을 사용하여 암호화 활성화
  1. AWS Management Console에 로그인하여 https://console.aws.amazon.com/glue/에서 AWS Glue 콘솔을 엽니다.

  2. 탐색 창에서 데이터 카탈로그를 선택합니다.

  3. 데이터 카탈로그 설정 페이지에서 메타데이터 암호화 확인란을 선택하고 AWS KMS 키를 선택합니다.

    암호화를 활성화할 때 고객 관리 키를 지정하지 않으면 암호화 설정에 AWS 관리형 KMS 키가 사용됩니다.

  4. (선택 사항) 고객 관리 키를 사용하여 데이터 카탈로그를 암호화하는 경우 데이터 카탈로그는 리소스를 암호화하고 해독하기 위해 IAM 역할을 등록하는 옵션을 제공합니다. 사용자를 대신하여 위임할 수 있는 AWS Glue 권한을 IAM 역할에 부여해야 합니다. 여기에는 데이터 암호화 및 복호화 AWS KMS 권한이 포함됩니다.

    데이터 카탈로그에서 새 리소스를 생성할 때는 데이터를 암호화하기 AWS Glue 위해 제공된 IAM 역할을 맡습니다. 마찬가지로 소비자가 리소스에 액세스하면 데이터를 복호화하는 IAM AWS Glue 역할을 맡습니다. 필요한 권한으로 IAM 역할을 등록하면 호출 주체는 더 이상 키에 액세스하고 데이터를 해독할 권한이 필요하지 않습니다.

    중요

    고객 관리 키를 사용하여 Data Catalog 리소스를 암호화하는 경우에만 IAM 역할에 KMS 작업을 위임할 수 있습니다. KMS 역할 위임 기능은 현재 데이터 카탈로그 리소스를 암호화하는 데 AWS 관리 키를 사용하는 것을 지원하지 않습니다.

    주의

    IAM 역할을 활성화하여 KMS 작업을 위임하면 이전에 관리 키로 암호화된 데이터 카탈로그 리소스에 더 이상 액세스할 수 없습니다. AWS

    1. 사용자 대신 데이터를 암호화하고 해독하는 역할을 맡을 AWS Glue 수 있는 IAM 역할을 활성화하려면 IAM 역할에 KMS 작업 위임 옵션을 선택합니다.

    2. 다음으로 IAM 역할을 선택합니다.

      IAM 역할을 생성하려면 AWS Glue의 IAM 역할 생성을 참조하십시오.

      데이터 카탈로그에 AWS Glue 액세스하는 것으로 간주되는 IAM 역할에는 데이터 카탈로그의 메타데이터를 암호화하고 해독할 수 있는 권한이 있어야 합니다. IAM 역할을 생성하고 다음 인라인 정책을 연결할 수 있습니다.

      • 다음 정책을 추가하여 데이터 카탈로그의 암호화 및 암호 해독 AWS KMS 권한을 포함하십시오.

        { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:<region>:<account-id>:key/<key-id>" } ] }
      • 그런 다음 AWS Glue 서비스가 IAM 역할을 맡을 역할에 다음 신뢰 정책을 추가합니다.

        { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
      • 그런 다음 IAM 역할에 iam:PassRole 권한을 추가합니다.

        { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::<account-id>:role/<encryption-role-name>" ] } ] }

    암호화를 활성화할 때 수임할 IAM 역할을 지정하지 않은 경우 데이터 카탈로그에 AWS Glue 액세스하는 보안 주체는 다음 API 작업을 수행할 권한이 있어야 합니다.

    • kms:Decrypt

    • kms:Encrypt

    • kms:GenerateDataKey

AWS CLI
SDK 또는 AWS CLI을 사용하여 암호화 활성화
  • PutDataCatalogEncryptionSettings API 작업을 사용합니다. 키가 지정되지 않은 경우 고객 계정의 AWS 관리형 암호화 키를 AWS Glue 사용하여 데이터 카탈로그를 암호화합니다.

    aws glue put-data-catalog-encryption-settings \ --data-catalog-encryption-settings '{ "EncryptionAtRest": { "CatalogEncryptionMode": "SSE-KMS-WITH-SERVICE-ROLE", "SseAwsKmsKeyId": "arn:aws:kms:<region>:<account-id>:key/<key-id>", "CatalogEncryptionServiceRole":"arn:aws:iam::<account-id>:role/<encryption-role-name>" } }'

암호화를 활성화하면 데이터 카탈로그 개체에 만드는 모든 개체가 암호화됩니다. 이 설정을 지우면 데이터 카탈로그에서 만든 개체가 더 이상 암호화되지 않습니다. 필요한 KMS 권한으로 데이터 카탈로그의 기존 암호화된 개체에 계속 액세스할 수 있습니다.

중요

AWS KMS 키는 데이터 카탈로그에 함께 암호화된 객체의 AWS KMS 키 스토어에서 계속 사용할 수 있어야 합니다. 키를 제거하면 객체의 암호를 해독할 수 없습니다. 일부 시나리오에서는 데이터 카탈로그 메타데이터에 대한 액세스를 방지하기 위에 이것이 필요할 수 있습니다.

KMS 키 모니터링 대상 AWS Glue

KMS 키를 데이터 카탈로그 리소스와 함께 사용하는 경우 AWS CloudTrail 또는 Amazon CloudWatch 로그를 사용하여 로 AWS Glue 보내는 요청을 추적할 수 있습니다. AWS KMS AWS CloudTrailKMS 키로 암호화된 데이터에 액세스하기 위해 AWS Glue 호출하는 KMS 작업을 모니터링하고 기록합니다.

다음 예는 DecryptGenerateDataKey 작업에 대한 AWS CloudTrail 이벤트입니다.

Decrypt
{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AROAXPHTESTANDEXAMPLE:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAXPHTESTANDEXAMPLE", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" }, "webIdFederationData": {}, "attributes": { "creationDate": "2024-01-10T14:33:56Z", "mfaAuthenticated": "false" } }, "invokedBy": "glue.amazonaws.com" }, "eventTime": "2024-01-10T15:18:11Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "eu-west-2", "sourceIPAddress": "glue.amazonaws.com", "userAgent": "glue.amazonaws.com", "requestParameters": { "encryptionContext": { "glue_catalog_id": "111122223333" }, "encryptionAlgorithm": "SYMMETRIC_DEFAULT" }, "responseElements": null, "requestID": "43b019aa-34b8-4798-9b98-ee968b2d63df", "eventID": "d7614763-d3fe-4f84-a1e1-3ca4d2a5bbd5", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:<region>:111122223333:key/<key-id>" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management", "sessionCredentialFromConsole": "true" }
GenerateDataKey
{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AROAXPHTESTANDEXAMPLE:V_00_GLUE_KMS_GENERATE_DATA_KEY_111122223333", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/V_00_GLUE_KMS_GENERATE_DATA_KEY_111122223333", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAXPHTESTANDEXAMPLE", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "AKIAIOSFODNN7EXAMPLE", "userName": "Admin" }, "webIdFederationData": {}, "attributes": { "creationDate": "2024-01-05T21:15:47Z", "mfaAuthenticated": "false" } }, "invokedBy": "glue.amazonaws.com" }, "eventTime": "2024-01-05T21:15:47Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "eu-west-2", "sourceIPAddress": "glue.amazonaws.com", "userAgent": "glue.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:eu-west-2:AKIAIOSFODNN7EXAMPLE:key/AKIAIOSFODNN7EXAMPLE", "encryptionContext": { "glue_catalog_id": "111122223333" }, "keySpec": "AES_256" }, "responseElements": null, "requestID": "64d1783a-4b62-44ba-b0ab-388b50188070", "eventID": "1c73689b-2ef2-443b-aed7-8c126585ca5e", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:eu-west-2:111122223333:key/AKIAIOSFODNN7EXAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }