翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
の 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 所有の暗号化に 2 番目の暗号化レイヤーを追加します。この暗号化レイヤーはユーザーが完全に制御できるため、次のようなタスクを実行できます。
-
キーポリシー、IAM ポリシー、許可の確立と維持
-
キー暗号化マテリアルのローテーション
-
キーポリシーの有効化と無効化
-
タグの追加
-
キーエイリアスの作成
-
削除のためのキースケジューリング
CloudTrail を使用して、HealthLake が AWS KMS ユーザーに代わって に送信するリクエストを追跡することもできます。 AWS KMS 追加料金が適用されます。詳細については、「カスタマー所有のキー」を参照してください。
カスタマーマネージドキーを作成する
AWS マネジメントコンソールまたは AWS KMS APIs を使用して、対称カスタマーマネージドキーを作成できます。
AWS Key Management Service デベロッパーガイドの「対称カスタマーマネージドキーの作成」の手順に従います。
キーポリシーは、カスタマーマネージドキーへのアクセスを制御します。すべてのカスタマーマネージドキーには、キーポリシーが 1 つだけ必要です。このポリシーには、そのキーを使用できるユーザーとその使用方法を決定するステートメントが含まれています。キーポリシーは、カスタマーマネージドキーの作成時に指定できます。詳細については、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 の許可は、顧客アカウントの KMS キーへのアクセスを HealthLake に許可するために使用されます。
HealthLake がユーザーに代わって作成する許可は、取り消したり廃止したりしないでください。アカウントで AWS KMS キーを使用するアクセス許可を HealthLake に付与する許可を取り消しまたは廃止すると、HealthLake はこのデータにアクセスしたり、データストアにプッシュされた新しい FHIR リソースを暗号化したり、プル時に復号したりすることはできません。HealthLake の許可を取り消すか廃止すると、変更はすぐに行われます。アクセス権を取り消すには、許可を取り消すのではなく、データストアを削除する必要があります。データストアが削除されると、HealthLake はユーザーに代わって許可を廃止します。
HealthLake の暗号化キーのモニタリング
CloudTrail を使用して、カスタマーマネージド KMS キーを使用するときに HealthLake が AWS KMS ユーザーに代わって に送信するリクエストを追跡できます。CloudTrail ログのログエントリには、healthlake.amazonaws.com が userAgent フィールドに表示され、HealthLake によって行われたリクエストを明確に区別できます。
次の例は、カスタマーマネージドキーによって暗号化されたデータにアクセスするために HealthLake によって呼び出される AWS KMS オペレーションをモニタリングするための CreateGrant、GenerateDataKey、Decrypt、および DescribeKey の CloudTrail イベントです。
以下は、CreateGrant を使用して HealthLake が顧客提供の KMS キーにアクセスすることを許可し、HealthLake がその KMS キーを使用して保管中のすべての顧客データを暗号化できるようにする方法を示しています。
ユーザーは自分で許可を作成する必要はありません。HealthLake は、CreateGrant リクエストを AWS KMS に送信することで、ユーザーに代わって許可を作成します。の許可 AWS KMS は、顧客アカウントの AWS KMS キーへのアクセスを HealthLake に許可するために使用されます。
{ "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 ドキュメントのセキュリティのベストプラクティスの詳細については、「」を参照してください。