でのデータ保護 AWS HealthOmics - AWS HealthOmics

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

でのデータ保護 AWS HealthOmics

責任 AWS 共有モデル、AWS HealthOmics でのデータ保護に適用されます。このモデルで説明されているように、 AWS はすべての を実行するグローバルインフラストラクチャを保護する責任があります AWS クラウド。ユーザーは、このインフラストラクチャでホストされるコンテンツに対する管理を維持する責任があります。また、使用する「 AWS のサービス 」のセキュリティ設定と管理タスクもユーザーの責任となります。データプライバシーの詳細については、データプライバシーに関するよくある質問を参照してください。欧州でのデータ保護の詳細については、AWS セキュリティブログに投稿された AWS 責任共有モデルおよび GDPR のブログ記事を参照してください。

データ保護の目的で、認証情報を保護し AWS アカウント 、 AWS IAM Identity Center または AWS Identity and Access Management (IAM) を使用して個々のユーザーを設定することをお勧めします。この方法により、それぞれのジョブを遂行するために必要な権限のみが各ユーザーに付与されます。また、次の方法でデータを保護することもお勧めします:

  • 各アカウントで多要素認証 (MFA) を使用します。

  • SSL/TLS を使用して AWS リソースと通信します。TLS 1.2 が必須で、TLS 1.3 をお勧めします。

  • で API とユーザーアクティビティのログ記録を設定します AWS CloudTrail。CloudTrail 証跡を使用して AWS アクティビティをキャプチャする方法については、「 AWS CloudTrail ユーザーガイド」のCloudTrail 証跡の使用」を参照してください。

  • AWS 暗号化ソリューションと、 内のすべてのデフォルトのセキュリティコントロールを使用します AWS のサービス。

  • Amazon Macie などの高度な管理されたセキュリティサービスを使用します。これらは、Amazon S3 に保存されている機密データの検出と保護を支援します。

  • コマンドラインインターフェイスまたは API AWS を介して にアクセスするときに FIPS 140-3 検証済み暗号化モジュールが必要な場合は、FIPS エンドポイントを使用します。利用可能な FIPS エンドポイントの詳細については、「連邦情報処理規格 (FIPS) 140-3」を参照してください。

お客様の E メールアドレスなどの極秘または機密情報を、タグ、または [名前] フィールドなどの自由形式のテキストフィールドに含めないことを強くお勧めします。これは、コンソール、API、または SDK を使用して AWS HealthOmics AWS CLIまたは他の AWS のサービス を使用する場合も同様です。 AWS SDKs タグ、または名前に使用される自由記述のテキストフィールドに入力したデータは、請求または診断ログに使用される場合があります。外部サーバーに URL を提供する場合、そのサーバーへのリクエストを検証できるように、認証情報を URL に含めないことを強くお勧めします。

保管中の暗号化

保管中の機密データを保護するために、 はサービス所有の AWS Key Management Service (AWS KMS) キーを使用してデフォルトで暗号化 AWS HealthOmics を提供します。カスタマーマネージドキーもサポートされています。カスタマーマネージドキーの詳細については、「Amazon Key Management Service」を参照してください。

すべての HealthOmics データストア (ストレージと分析) は、カスタマーマネージドキーの使用をサポートしています。データストアの作成後に暗号化設定を変更することはできません。データストアが を使用している場合 AWS 所有のキー、AWS_OWNED_KMS_KEY と表示され、保管時の暗号化に使用される特定のキーは表示されません。

HealthOmics ワークフローの場合、カスタマーマネージドキーは一時ファイルシステムではサポートされていません。ただし、すべてのデータは保管時に XTS-AES-256 ブロック暗号暗号化アルゴリズムを使用して自動的に暗号化され、ファイルシステムが暗号化されます。ワークフロー実行を開始するために使用される IAM ユーザーとロールは、ワークフロー入出力バケットに使用される AWS KMS キーにもアクセスできる必要があります。ワークフローでは許可は使用されず、 AWS KMS 暗号化は Amazon S3 バケットの入力と出力に制限されます。ワークフロー APIs の両方に使用される IAM ロールには、使用される AWS KMS キーと、入出力 Amazon S3 バケットへのアクセス権も必要です。IAM ロールとアクセス許可を使用して、アクセスまたは AWS KMS ポリシーを制御できます。詳細については、「 の認証とアクセスコントロール AWS KMS」を参照してください。

HealthOmics Analytics AWS Lake Formation で を使用すると、Lake Formation に関連付けられた復号アクセス許可も入力および出力 Amazon S3 バケットに付与されます。がアクセス許可 AWS Lake Formation を管理する方法の詳細については、 AWS Lake Formation ドキュメントを参照してください。

HealthOmics Analytics は、Amazon S3 バケット内の暗号化されたデータを読み取るアクセス許可を Lake Formation kms:Decrypt に付与します。 Amazon S3 Lake Formation を介してデータをクエリするアクセス許可がある限り、暗号化されたデータを読み取ることができます。データへのアクセスは、KMS キーポリシーではなく、Lake Formation のデータアクセスコントロールによって制御されます。詳細については、Lake Formation ドキュメントのAWS 「Integrated AWS service requests」を参照してください。

AWS 所有のキー

デフォルトでは、HealthOmics は AWS 所有のキー を使用して保管中のデータを自動的に暗号化します。このデータには、個人を特定できる情報 (PII) や保護対象医療情報 (PHI) などの機密情報が含まれる可能性があるためです。 AWS 所有のキー aren はアカウントに保存されません。これらは、複数の AWS アカウントで使用するために AWS が所有および管理する KMS キーのコレクションの一部です。

AWS のサービスでは、 AWS 所有のキー を使用してデータを保護できます。を表示、管理、アクセスしたり AWS 所有のキー、それらの使用を監査したりすることはできません。ただし、データを暗号化するキーを保護するための作業やプログラムを操作したり変更したりする必要はありません。

の使用に対して月額料金や使用料金は請求されず AWS 所有のキー、アカウントの AWS KMS クォータにはカウントされません。詳細については、「AWS マネージドキー」を参照してください。

カスタマーマネージドキー

HealthOmics は、作成、所有、管理する対称カスタマーマネージドキーを使用して、既存の AWS 所有の暗号化に 2 番目の暗号化レイヤーを追加します。この暗号化レイヤーはユーザーが完全に制御できるため、次のようなタスクを実行できます。

  • キーポリシー、IAM ポリシー、許可の確立と維持

  • キー暗号化マテリアルのローテーション

  • キーポリシーの有効化と無効化

  • タグの追加

  • キーエイリアスの作成

  • 削除のためのキースケジューリング

CloudTrail を使用して、HealthOmics が AWS KMS ユーザーに代わって に送信するリクエストを追跡することもできます。別途 AWS KMS 料金がかかります。詳細については、「カスタマーマネージドキー」を参照してください。

カスタマーマネージドキーの作成

AWS マネジメントコンソールまたは AWS KMS APIs を使用して、対称カスタマーマネージドキーを作成できます。

AWS Key Management Service デベロッパーガイドの「対称カスタマーマネージドキーの作成」の手順に従います。

キーポリシーは、カスタマーマネージドキーへのアクセスを制御します。すべてのカスタマーマネージドキーには、キーポリシーが 1 つだけ必要です。このポリシーには、そのキーを使用できるユーザーとその使用方法を決定するステートメントが含まれています。カスタマーマネージドキーを作成するときに、キーポリシーを指定できます。詳細については、AWS Key Management Service デベロッパーガイドの「カスタマーマネージドキーへのアクセスの管理」を参照してください。

HealthOmics Analytics リソースでカスタマーマネージドキーを使用するには、呼び出し元のプリンシパルがキーポリシーで kms:CreateGrant オペレーションを必要とします。これにより、システムは FAS トークンを使用して、指定された KMS キーへのアクセスを制御するカスタマーマネージドキーへの許可を作成できます。このキーは、HealthOmics が必要とする kms:grant オペレーションへのアクセス権をユーザーに付与します。 HealthOmics 詳細については、「許可の使用」を参照してください。

HealthOmics 分析では、呼び出し元のプリンシパルに次の API オペレーションを許可する必要があります。

  • kms:CreateGrant は、特定のカスタマーマネージドキーに権限を追加し、HealthOmics Analytics の権限オペレーションへのアクセスを許可します。

  • kms:DescribeKey は、キーの検証に必要なカスタマーマネージドキーの詳細を提供します。これはすべてのオペレーションに必要です。

  • kms:GenerateDataKey は、すべての書き込みオペレーションで保管中のリソースを暗号化するためのアクセスを提供します。また、このアクションは、呼び出し元がキーを使用するためのアクセス権を持っていることをサービスが検証するために使用できるカスタマーマネージドキーの詳細を提供します。

  • kms:Decrypt は、暗号化されたリソースの読み取りまたは検索オペレーションへのアクセスを提供します。

HealthOmics ストレージリソースでカスタマーマネージドキーを使用するには、HealthOmics サービスプリンシパルと呼び出し元プリンシパルをキーポリシーで許可する必要があります。これにより、呼び出し元がキーにアクセスできることをサービスで検証し、サービスプリンシパルを使用してカスタマーマネージドキーを使用してストア管理を実行できます。HealthOmics ストレージの場合、サービスプリンシパルのキーポリシーは、次の API オペレーションを許可する必要があります。

  • kms:DescribeKey は、キーの検証に必要なカスタマーマネージドキーの詳細を提供します。これはすべてのオペレーションに必要です。

  • kms:GenerateDataKey は、すべての書き込みオペレーションで保管中のリソースを暗号化するためのアクセスを提供します。また、このアクションは、呼び出し元がキーを使用するためのアクセス権を持っていることをサービスが検証するために使用できるカスタマーマネージドキーの詳細を提供します。

  • kms:Decrypt は、暗号化されたリソースの読み取りまたは検索オペレーションへのアクセスを提供します。

次の例は、サービスプリンシパルがカスタマーマネージドキーを使用して暗号化された HealthOmics シーケンスまたはリファレンスストアを作成して操作できるようにするポリシーステートメントを示しています。

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "omics.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*" } ] }

次の例は、Amazon S3 バケットからデータを復号するためのデータストアのアクセス許可を作成するポリシーを示しています。

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "omics:GetReference", "omics:GetReferenceMetadata" ], "Resource": [ "arn:AWS:omics:{{region}}:{{accountId}}:referenceStore/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:AWS:s3:::[[s3path]]/*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "arn:AWS:kms:{{region}}:{111122223333}:key/{{key_id}}" ], "Condition": { "StringEquals": { "kms:ViaService": [ "s3.{{region}}.amazonAWS.com" ] } } } ] }

カスタマーマネージドキーを使用するために必要な IAM アクセス許可

カスタマーマネージドキーを使用して AWS KMS 暗号化されたデータストアなどのリソースを作成する場合、IAM ユーザーまたはロールのキーポリシーと IAM ポリシーの両方に必要なアクセス許可があります。

kms:ViaService 条件キーを使用して、KMS キーの使用を HealthOmics からのリクエストのみに制限できます。

キーポリシーの詳細については、AWS Key Management Service デベロッパーガイドの「IAM ポリシーの有効化」を参照してください。

Analytics API のアクセス許可

HealthOmics 分析の場合、ストアを作成する IAM ユーザーまたはロールには、kms:CreateGrant、kms:GenerateDataKey、kms:Decrypt、および kms:DescribeKey アクセス許可と、必要な HealthOmics アクセス許可が必要です。

Storage API のアクセス許可

HealthOmics ストレージ APIs、次の API オペレーションを呼び出す IAM ユーザーまたはロールには、リストされたアクセス許可が必要です。

CreateReferenceStore、CreateSequenceStore

ストアを作成するには、IAM 発信者がアクセスkms:DescribeKey許可と必要な HealthOmics アクセス許可を持っている必要があります。HealthOmics サービスプリンシパルは を呼び出しkms:GenerateDataKeyWithoutPlaintextて、データのロードとアクセスのアクセス検証チェックを実行します。

StartReadSetImportJob、StartReferenceImportJob

データインポートジョブを開始するには、IAM 呼び出し元がインポートするストアの KMS キーに対する kms:Decryptおよび kms:GenerateDataKey アクセス許可と、インポートするオブジェクトを含む Amazon S3 バケットに対する kms:Decrypt アクセス許可を持っている必要があります。さらに、呼び出しに渡されるロールには、インポートするオブジェクトを含む Amazon S3 バケットに対するkms:Decryptアクセス許可が必要です。IAM 呼び出し元には、ジョブにロールを渡すアクセス許可も必要です。

CreateMultipartReadSetUpload、UploadReadSetPart、CompleteMultipartReadSetUpload

マルチパートアップロードを完了するには、IAM 発信者がマルチパートアップロードを作成、アップロード、完了kms:Decryptkms:GenerateDataKeyするための と が必要です。

StartReadSetExportJob

データエクスポートジョブを開始するには、IAM 呼び出し元に、ストアの KMS キーが からエクスポートされるkms:Decryptアクセス許可kms:GenerateDataKeyと、オブジェクトを受信する Amazon S3 バケットに対するkms:Decryptアクセス許可が必要です。さらに、呼び出しに渡されるロールには、オブジェクトを受信する Amazon S3 バケットに対するkms:Decryptアクセス許可が必要です。IAM 呼び出し元には、ジョブにロールを渡すアクセス許可も必要です。

StartReadsetActivationJob

読み取りセットのアクティベーションジョブを開始するには、IAM 呼び出し元にオブジェクトに対する kms:Decryptおよび アクセスkms:GenerateDataKey許可が必要です。

GetReference、GetReadSet

ストアからオブジェクトを読み取るには、IAM 呼び出し元にオブジェクトに対するkms:Decryptアクセス許可が必要です。

読み取りセット S3 GetObject

Amazon S3 GetObject API を使用してストアからオブジェクトを読み取るには、IAM 呼び出し元にオブジェクトに対するkms:Decryptアクセス許可が必要です。カスタマーマネージドキーと AWS 所有のキー 設定の両方にこのアクセス許可を設定します。

HealthOmics が AWS KMS で許可を使用する方法

HealthOmics Analytics には、カスタマーマネージド KMS キーを使用するための許可が必要です。グラントは HealthOmics ワークフローでは必須ではなく、使用されません。HealthOmics Storage は、サービスプリンシパルから直接カスタマーマネージドキーを使用するため、グラントを使用しないでください。カスタマーマネージドキーで暗号化された分析ストアを作成すると、HealthOmics 分析は CreateGrant リクエストを AWS KMS に送信して、ユーザーに代わって許可を作成します。AWS KMS の許可は、顧客アカウントの KMS キーへのアクセス権を HealthOmics に付与するために使用されます。

HealthOmics 分析がユーザーに代わって作成する許可を取り消したり廃止したりすることはお勧めしません。アカウントで AWS KMS キーを使用するアクセス許可を HealthOmics に付与する許可を取り消しまたは廃止すると、HealthOmics はこのデータにアクセスしたり、データストアにプッシュされた新しいリソースを暗号化したり、プル時に復号したりすることはできません。

HealthOmics の許可を取り消すか廃止すると、変更はすぐに行われます。アクセス権を取り消すには、許可を取り消すのではなく、データストアを削除することをお勧めします。データストアを削除すると、HealthOmics はユーザーに代わって許可を廃止します。

AWS HealthOmics の暗号化キーのモニタリング

CloudTrail を使用して、カスタマーマネージドキーを使用するときに が AWS KMS ユーザーに代わって AWS HealthOmics に送信するリクエストを追跡できます。CloudTrail ログのログエントリは、HealthOmics によって行われたリクエストを明確に区別するために、userAgent フィールドに HealthOmics.amazonAWS.com を表示します。 userAgent HealthOmics

次の例は、カスタマーマネージドキーによって暗号化されたデータにアクセスするために HealthOmics によって呼び出される AWS KMS オペレーションをモニタリングするための CreateGrant、GenerateDataKey、Decrypt、および DescribeKey の CloudTrail イベントです。

次に、CreateGrant を使用して HealthOmics 分析が顧客提供の KMS キーにアクセスできるようにする方法も示し、HealthOmics がその KMS キーを使用して保管中のすべての顧客データを暗号化できるようにします。

独自の権限を作成する必要はありません。HealthOmics は、CreateGrant リクエストを AWS KMS に送信することで、ユーザーに代わって許可を作成します。の許可 AWS KMS は、顧客アカウントの AWS KMS キーへのアクセスを HealthOmics に許可するために使用されます。

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "xx:test", "arn": "arn:AWS:sts::555555555555:assumed-role/user-admin/test", "accountId": "xx", "accessKeyId": "xxx", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "xxxx", "arn": "arn:AWS:iam::555555555555:role/user-admin", "accountId": "555555555555", "userName": "user-admin" }, "webIdFederationData": {}, "attributes": { "creationDate": "2022-11-11T01:36:17Z", "mfaAuthenticated": "false" } }, "invokedBy": "apigateway.amazonAWS.com" }, "eventTime": "2022-11-11T02:34:41Z", "eventSource": "kms.amazonAWS.com", "eventName": "CreateGrant", "AWSRegion": "us-west-2", "sourceIPAddress": "apigateway.amazonAWS.com", "userAgent": "apigateway.amazonAWS.com", "requestParameters": { "granteePrincipal": "AWS Internal", "keyId": "arn:AWS:kms:us-west-2:555555555555:key/a6e87d77-cc3e-4a98-a354-e4c275d775ef", "operations": [ "CreateGrant", "RetireGrant", "Decrypt", "GenerateDataKey" ] }, "responseElements": { "grantId": "4869b81e0e1db234342842af9f5531d692a76edaff03e94f4645d493f4620ed7", "keyId": "arn:AWS:kms:us-west-2:245126421963:key/xx-cc3e-4a98-a354-e4c275d775ef" }, "requestID": "d31d23d6-b6ce-41b3-bbca-6e0757f7c59a", "eventID": "3a746636-20ef-426b-861f-e77efc56e23c", "readOnly": false, "resources": [ { "accountId": "245126421963", "type": "AWS::KMS::Key", "ARN": "arn:AWS:kms:us-west-2:245126421963:key/xx-cc3e-4a98-a354-e4c275d775ef" } ], "eventType": "AWSApiCall", "managementEvent": true, "recipientAccountId": "245126421963", "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": "omics.amazonAWS.com" }, "eventTime": "2021-06-30T21:17:37Z", "eventSource": "kms.amazonAWS.com", "eventName": "GenerateDataKey", "AWSRegion": "us-east-1", "sourceIPAddress": "omics.amazonAWS.com", "userAgent": "omics.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" }

詳細はこちら

以下のリソースは、保管時のデータの暗号化に関する詳細情報を提供します。

AWS Key Management Service の基本概念の詳細については、 AWS KMS ドキュメントを参照してください。

AWS KMS ドキュメントのセキュリティのベストプラクティスの詳細については、「」を参照してください。

転送中の暗号化

AWS HealthOmics は TLS 1.2 以降を使用して、パブリックエンドポイントおよびバックエンドサービスを介して転送中のデータを暗号化します。