에 대한 REST 시 암호화 AWS HealthLake - AWS HealthLake

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

에 대한 REST 시 암호화 AWS HealthLake

HealthLake는 서비스 소유 AWS Key Management Service(AWS KMS) 키를 사용하여 저장 시 민감한 고객 데이터를 보호하기 위해 기본적으로 암호화를 제공합니다. 고객 관리형 KMS 키도 지원되며 데이터 스토어에서 파일을 가져오고 내보내는 데 필요합니다. 고객 관리형 KMS 키에 대한 자세한 내용은 Amazon Key Management Service를 참조하세요. 고객은 데이터 스토어를 생성할 때 AWS 소유 KMS 키 또는 고객 관리형 KMS 키를 선택할 수 있습니다. 데이터 스토어가 생성된 후에는 암호화 구성을 변경할 수 없습니다. 데이터 스토어가 AWS 소유 KMS 키를 사용하는 경우 AWS_OWNED_KMS_KEY로 표시되며 저장 시 암호화에 사용되는 특정 키가 표시되지 않습니다.

AWS 소유 KMS 키

HealthLake는 기본적으로 이러한 키를 사용하여 개인 식별 또는 개인 건강 정보(PHI) 저장 데이터와 같은 잠재적으로 민감한 정보를 자동으로 암호화합니다. AWS 소유 KMS 키는 계정에 저장되지 않습니다. 여러 AWS 계정에서 사용하기 위해 AWS가 소유하고 관리하는 KMS 키 모음의 일부입니다. AWS 서비스는 AWS 소유 KMS 키를 사용하여 데이터를 보호할 수 있습니다. AWS 소유 KMS 키를 확인, 관리, 사용하거나 사용을 감사할 수 없습니다. 하지만 사용자는 데이터를 암호화하는 키를 보호하기 위해 어떤 작업을 수행하거나 어떤 프로그램을 변경할 필요가 없습니다.

AWS 소유 KMS 키를 사용하는 경우 월별 요금 또는 사용 요금이 부과되지 않으며 계정에 대한 AWS KMS 할당량에 포함되지 않습니다. 자세한 내용은 AWS 소유 키를 참조하세요.

고객 관리형 KMS 키

HealthLake는 사용자가 생성, 소유 및 관리하는 대칭 고객 관리형 KMS 키를 사용하여 기존 AWS 소유 암호화에 두 번째 암호화 계층을 추가할 수 있도록 지원합니다. 사용자가 이 암호화 계층을 완전히 제어할 수 있으므로 다음과 같은 작업을 수행할 수 있습니다.

  • 키 정책, IAM 정책 및 권한 부여 설정 및 유지 관리

  • 키 암호화 자료 교체

  • 키 정책 활성화 및 비활성화

  • 태그 추가

  • 키 별칭 만들기

  • 삭제를 위한 스케줄 키

CloudTrail을 사용하여 HealthLake가 사용자를 대신하여에 보내는 요청을 추적할 수도 AWS KMS 있습니다. 추가 AWS KMS 요금이 적용됩니다. 자세한 내용은 고객 소유 키를 참조하세요.

고객 관리형 키 생성

AWS Management Console 또는 AWS KMS APIs.

AWS Key Management Service 개발자 안내서의 대칭 고객 관리형 키 생성 단계를 따릅니다.

키 정책에서는 고객 관리형 키에 대한 액세스를 제어합니다. 모든 고객 관리형 키에는 키를 사용할 수 있는 사람과 키를 사용하는 방법을 결정하는 문장이 포함된 정확히 하나의 키 정책이 있어야 합니다. 고객 관리형 키를 만들 때 키 정책을 지정할 수 있습니다. 자세한 내용은 AWS Key Management Service 개발자 안내서의 고객 관리형 키에 대한 액세스 관리를 참조하세요.

HealthLake 리소스와 함께 고객 관리형 키를 사용하려면 키 정책에서 kms:CreateGrant 작업을 허용해야 합니다. 이렇게 하면 지정된 KMS 키에 대한 액세스를 제어하는 고객 관리형 키에 권한 부여가 추가되어 HealthLake에서 요구하는 kms:grant 작업에 대한 액세스 권한이 사용자에게 부여됩니다. 자세한 내용은 권한 부여 사용을 참조하세요.

HealthLake 리소스와 함께 고객 관리형 KMS 키를 사용하려면 키 정책에서 다음 API 작업을 허용해야 합니다.

  • kms:CreateGrant는 권한 부여 작업에 대한 액세스를 허용하는 특정 고객 관리형 KMS 키에 권한 부여를 추가합니다.

  • kms:DescribeKey는 키를 검증하는 데 필요한 고객 관리형 키 세부 정보를 제공합니다. 이것은 모든 작업에 필요합니다.

  • kms:GenerateDataKey는 모든 쓰기 작업에 대해 저장 리소스를 암호화할 수 있는 액세스를 제공합니다.

  • kms:Decrypt는 암호화된 리소스에 대한 읽기 또는 검색 작업에 대한 액세스를 제공합니다.

다음은 사용자가 해당 키로 암호화된 데이터 스토어를 생성하고 상호 작용할 수 AWS HealthLake 있도록 허용하는 정책 설명 예제입니다.

"Statement": [ { "Sid": "Allow access to create data stores and do CRUD/search in AWS HealthLake", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:HealthLakeFullAccessRole" }, "Action": [ "kms:DescribeKey", "kms:CreateGrant", "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "healthlake.amazonaws.com", "kms:CallerAccount": "111122223333" } } } ]

고객 관리형 KMS 키를 사용할 때 필요한 IAM 권한

고객 관리형 KMS 키를 사용하여 AWS KMS 암호화가 활성화된 데이터 스토어를 생성하는 경우 HealthLake 데이터 스토어를 생성하는 사용자 또는 역할에 대한 키 정책 및 IAM 정책 모두에 필요한 권한이 있습니다.

kms:ViaService 조건 키를 사용하여 KMS 키 사용을 HealthLake에서 시작된 요청으로만 제한할 수 있습니다.

키 정책에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서의 IAM 정책 활성화를 참조하세요.

리포지토리를 생성하는 IAM 사용자, IAM 역할 또는 AWS 계정에는 kms:CreateGrant,kms:GenerateDataKey 및 kms:DescribeKey 권한과 필요한 HealthLake 권한이 있어야 합니다.

HealthLake가 AWS KMS에서 권한 부여를 사용하는 방법

HealthLake에서 고객 관리형 KMS 키를 사용하려면 권한 부여가 필요합니다. 고객 관리형 KMS 키로 암호화된 데이터 스토어를 생성하면 HealthLake는 CreateGrant 요청을 AWS KMS에 전송하여 사용자를 대신하여 권한을 생성합니다. AWS KMS의 권한 부여는 HealthLake에 고객 계정의 KMS 키에 대한 액세스 권한을 부여하는 데 사용됩니다.

HealthLake가 사용자를 대신하여 생성하는 권한 부여는 취소되거나 사용 중지되어서는 안 됩니다. 계정에서 AWS KMS 키를 사용할 수 있는 권한을 HealthLake에 부여하는 권한 부여를 취소하거나 사용 중지하면 HealthLake는이 데이터에 액세스하거나, 데이터 스토어에 푸시된 새 FHIR 리소스를 암호화하거나, 풀링될 때 복호화할 수 없습니다. HealthLake에 대한 권한 부여를 취소하거나 사용 중지하면 변경 사항이 즉시 적용됩니다. 액세스 권한을 취소하려면 권한 부여를 취소하는 대신 데이터 스토어를 삭제해야 합니다. 데이터 스토어가 삭제되면 HealthLake는 사용자를 대신하여 권한 부여를 사용 중지합니다.

HealthLake에 대한 암호화 키 모니터링

CloudTrail을 사용하여 고객 관리형 KMS 키를 사용할 때 HealthLake가 사용자를 대신하여 AWS KMS 에 보내는 요청을 추적할 수 있습니다. CloudTrail 로그의 로그 항목은 userAgent 필드에 healthlake.amazonaws.com 표시하여 HealthLake의 요청을 명확하게 구분합니다.

다음 예제는 고객 관리형 키로 암호화된 데이터에 액세스하기 위해 HealthLake에서 호출한 AWS KMS 작업을 모니터링하기 위한 CreateGrant, GenerateDataKey, Decrypt 및 DescribeKey에 대한 CloudTrail 이벤트입니다.

다음은 CreateGrant를 사용하여 HealthLake가 고객 제공 KMS 키에 액세스하여 HealthLake가 해당 KMS 키를 사용하여 저장된 모든 고객 데이터를 암호화하도록 허용하는 방법을 보여줍니다.

사용자가 자신의 권한 부여를 만들 필요는 없습니다. HealthLake는 AWS KMS에 CreateGrant 요청을 전송하여 사용자를 대신하여 권한 부여를 생성합니다. 의 권한 부여 AWS KMS 는 HealthLake에 고객 계정의 AWS KMS 키에 대한 액세스 권한을 부여하는 데 사용됩니다.

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "EXAMPLEROLE:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Sampleuser01, "accountId": "111122223333", "accessKeyId": "EXAMPLEKEYID", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "EXAMPLEROLE", "arn": "arn:aws:iam::111122223333:role/Sampleuser01", "accountId": "111122223333", "userName": "Sampleuser01" }, "webIdFederationData": {}, "attributes": { "creationDate": "2021-06-30T19:33:37Z", "mfaAuthenticated": "false" } }, "invokedBy": "healthlake.amazonaws.com" }, "eventTime": "2021-06-30T20:31:15Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-east-1", "sourceIPAddress": "healthlake.amazonaws.com", "userAgent": "healthlake.amazonaws.com", "requestParameters": { "operations": [ "CreateGrant", "Decrypt", "DescribeKey", "Encrypt", "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "ReEncryptFrom", "ReEncryptTo", "RetireGrant" ], "granteePrincipal": "healthlake.us-east-1.amazonaws.com", "keyId": "arn:aws:kms:us-east-1:111122223333:key/EXAMPLE_KEY_ARN", "retiringPrincipal": "healthlake.us-east-1.amazonaws.com" }, "responseElements": { "grantId": "EXAMPLE_ID_01" }, "requestID": "EXAMPLE_ID_02", "eventID": "EXAMPLE_ID_03", "readOnly": false, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:111122223333:key/EXAMPLE_KEY_ARN" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }

다음 예제에서는 GenerateDataKey를 사용하여 사용자가 데이터를 저장하기 전에 암호화하는 데 필요한 권한을 갖도록 하는 방법을 보여줍니다.

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "EXAMPLEUSER", "arn": "arn:aws:sts::111122223333:assumed-role/Sampleuser01", "accountId": "111122223333", "accessKeyId": "EXAMPLEKEYID", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "EXAMPLEROLE", "arn": "arn:aws:iam::111122223333:role/Sampleuser01", "accountId": "111122223333", "userName": "Sampleuser01" }, "webIdFederationData": {}, "attributes": { "creationDate": "2021-06-30T21:17:06Z", "mfaAuthenticated": "false" } }, "invokedBy": "healthlake.amazonaws.com" }, "eventTime": "2021-06-30T21:17:37Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-east-1", "sourceIPAddress": "healthlake.amazonaws.com", "userAgent": "healthlake.amazonaws.com", "requestParameters": { "keySpec": "AES_256", "keyId": "arn:aws:kms:us-east-1:111122223333:key/EXAMPLE_KEY_ARN" }, "responseElements": null, "requestID": "EXAMPLE_ID_01", "eventID": "EXAMPLE_ID_02", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:111122223333:key/EXAMPLE_KEY_ARN" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }

다음 예제에서는 HealthLake가 Decrypt 작업을 호출하여 저장된 암호화된 데이터 키를 사용하여 암호화된 데이터에 액세스하는 방법을 보여줍니다.

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "EXAMPLEUSER", "arn": "arn:aws:sts::111122223333:assumed-role/Sampleuser01", "accountId": "111122223333", "accessKeyId": "EXAMPLEKEYID", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "EXAMPLEROLE", "arn": "arn:aws:iam::111122223333:role/Sampleuser01", "accountId": "111122223333", "userName": "Sampleuser01" }, "webIdFederationData": {}, "attributes": { "creationDate": "2021-06-30T21:17:06Z", "mfaAuthenticated": "false" } }, "invokedBy": "healthlake.amazonaws.com" }, "eventTime": "2021-06-30T21:21:59Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-east-1", "sourceIPAddress": "healthlake.amazonaws.com", "userAgent": "healthlake.amazonaws.com", "requestParameters": { "encryptionAlgorithm": "SYMMETRIC_DEFAULT", "keyId": "arn:aws:kms:us-east-1:111122223333:key/EXAMPLE_KEY_ARN" }, "responseElements": null, "requestID": "EXAMPLE_ID_01", "eventID": "EXAMPLE_ID_02", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:111122223333:key/EXAMPLE_KEY_ARN" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }

다음 예제에서는 HealthLake가 DescribeKey 작업을 사용하여 AWS KMS 고객 소유 AWS KMS 키가 사용 가능한 상태인지 확인하고 작동하지 않는 경우 사용자가 문제를 해결할 수 있도록 지원하는 방법을 보여줍니다.

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "EXAMPLEUSER", "arn": "arn:aws:sts::111122223333:assumed-role/Sampleuser01", "accountId": "111122223333", "accessKeyId": "EXAMPLEKEYID", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "EXAMPLEROLE", "arn": "arn:aws:iam::111122223333:role/Sampleuser01", "accountId": "111122223333", "userName": "Sampleuser01" }, "webIdFederationData": {}, "attributes": { "creationDate": "2021-07-01T18:36:14Z", "mfaAuthenticated": "false" } }, "invokedBy": "healthlake.amazonaws.com" }, "eventTime": "2021-07-01T18:36:36Z", "eventSource": "kms.amazonaws.com", "eventName": "DescribeKey", "awsRegion": "us-east-1", "sourceIPAddress": "healthlake.amazonaws.com", "userAgent": "healthlake.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:us-east-1:111122223333:key/EXAMPLE_KEY_ARN" }, "responseElements": null, "requestID": "EXAMPLE_ID_01", "eventID": "EXAMPLE_ID_02", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:111122223333:key/EXAMPLE_KEY_ARN" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }

자세히 알아보기

다음 리소스는 저장 데이터 암호화에 대한 자세한 정보를 제공합니다.

AWS Key Management Service 기본 개념에 대한 자세한 내용은 AWS KMS 설명서를 참조하세요.

AWS KMS 설명서의 보안 모범 사례에 대한 자세한 내용을 참조하세요.