本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
中的資料保護 AWS HealthOmics
AWS 共同責任模型
基於資料保護目的,我們建議您保護 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 的敏感資料。
-
如果您在 AWS 透過命令列界面或 API 存取 時需要 FIPS 140-3 驗證的密碼編譯模組,請使用 FIPS 端點。如需有關 FIPS 和 FIPS 端點的更多相關資訊,請參閱聯邦資訊處理標準 (FIPS) 140-3
。
我們強烈建議您絕對不要將客戶的電子郵件地址等機密或敏感資訊,放在標籤或自由格式的文字欄位中,例如名稱欄位。這包括當您使用 AWS HealthOmics 或使用 AWS 服務 主控台、API AWS CLI或其他 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。
當您 AWS Lake Formation 搭配 HealthOmics Analytics 使用 時,與 Lake Formation 相關聯的任何解密許可也會授予輸入和輸出 Amazon S3 儲存貯體。如需有關 如何 AWS Lake Formation 管理許可的詳細資訊,請參閱 AWS Lake Formation 文件
HealthOmics Analytics 授予 Lake Formation kms:Decrypt 讀取 Amazon S3 儲存貯體中加密資料的許可。只要您有透過 Lake Formation 查詢資料的許可,您就可以讀取加密的資料。對資料的存取是透過 Lake Formation 中的資料存取控制來控制,而不是透過 KMS 金鑰政策。若要進一步了解,請參閱 Lake Formation 文件中的AWS 整合式 AWS 服務請求
AWS 擁有的金鑰
根據預設,HealthOmics 會使用 AWS 擁有的金鑰 自動加密靜態資料,因為此資料可能包含敏感資訊,例如個人身分識別資訊 (PII) 或受保護醫療資訊 (PHI)。 AWS 擁有的金鑰 不會存放在您的帳戶中。它們是 AWS 擁有和管理用於多個 AWS 帳戶的 KMS 金鑰集合的一部分。
AWS 服務可以使用 AWS 擁有的金鑰 來保護您的資料。您無法檢視、管理或存取 AWS 擁有的金鑰,或稽核其使用方式。不過,您不需要執行任何工作或變更任何程式來保護加密資料的金鑰。
您不需要支付每月費用或使用費 AWS 擁有的金鑰,也不會計入您帳戶的 AWS KMS 配額。如需詳細資訊,請參閱AWS 受管金鑰
客戶受管金鑰
HealthOmics 支援使用您建立、擁有和管理的對稱客戶受管金鑰,以透過現有 AWS 擁有的加密新增第二層加密。您可以完全控制此層加密,因此能執行以下任務:
-
建立和維護金鑰政策、IAM 政策和授予
-
輪換金鑰密碼編譯資料
-
啟用和停用金鑰政策
-
新增標籤
-
建立金鑰別名
-
安排金鑰供刪除
您也可以使用 CloudTrail 來追蹤 HealthOmics AWS KMS 代表您傳送到 的請求。需支付額外費用 AWS KMS 。如需詳細資訊,請參閱客戶受管金鑰
建立客戶受管金鑰
您可以使用 AWS 管理主控台或 AWS KMS APIs 來建立對稱客戶受管金鑰。
請遵循 AWS Key Management Service 開發人員指南中建立對稱客戶受管金鑰
金鑰政策會控制客戶受管金鑰的存取權限。每個客戶受管金鑰都必須只有一個金鑰政策,其中包含決定誰可以使用金鑰及其使用方式的陳述式。當您建立客戶受管金鑰時,您可以指定金鑰政策。如需詳細資訊,請參閱《AWS Key Management Service 開發人員指南》中的管理對客戶受管金鑰的存取
若要搭配 HealthOmics Analytics 資源使用客戶受管金鑰,呼叫委託人需要在金鑰政策中執行 kms:CreateGrant
對於 HealthOmics 分析,呼叫委託人必須允許下列 API 操作:
-
kms:CreateGrant 將授予新增至特定客戶受管金鑰,允許存取 HealthOmics Analytics 中的授予操作。
-
kms:DescribeKey 提供驗證金鑰所需的客戶受管金鑰詳細資訊。這是所有 操作的必要項目。
-
kms:GenerateDataKey 提供存取權,以加密所有寫入操作的靜態資源。此外,此動作提供客戶受管金鑰詳細資訊,服務可用來驗證發起人是否具有使用該金鑰的存取權。
-
kms:Decrypt 可讓您存取加密資源的讀取或搜尋操作。
若要搭配 HealthOmics 儲存資源使用客戶受管金鑰,必須在金鑰政策中允許 HealthOmics 服務主體和呼叫主體。這可讓服務驗證發起人是否有權存取 金鑰,並使用 服務主體來使用客戶受管金鑰執行儲存體管理。對於 HealthOmics 儲存,服務主體的金鑰政策必須允許下列 API 操作:
-
kms:DescribeKey 提供驗證金鑰所需的客戶受管金鑰詳細資訊。這是所有 操作的必要項目。
-
kms:GenerateDataKey 提供存取權,以加密所有寫入操作的靜態資源。此外,此動作提供客戶受管金鑰詳細資訊,服務可用來驗證發起人是否具有使用該金鑰的存取權。
-
kms:Decrypt 可讓您存取加密資源的讀取或搜尋操作。
下列範例顯示政策陳述式,允許服務主體建立並使用客戶受管金鑰加密的 HealthOmics 序列或參考存放區,並與之互動:
下列範例顯示為資料存放區建立許可以從 Amazon S3 儲存貯體解密資料的政策。
使用客戶受管金鑰所需的 IAM 許可
建立資源時,例如使用客戶受管金鑰進行 AWS KMS 加密的資料存放區,金鑰政策和 IAM 使用者或角色的 IAM 政策都有必要的許可。
您可以使用 kms:ViaService 條件金鑰
如需金鑰政策的詳細資訊,請參閱《AWS Key Management Service 開發人員指南》中的啟用 IAM 政策
Analytics API 許可
對於 HealthOmics 分析,建立存放區的 IAM 使用者或角色必須具有 kms:CreateGrant、 kms:GenerateDataKey、 kms:Decrypt 和 kms:DescribeKey 許可,以及必要的 HealthOmics 許可。
儲存 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:Decrypt
和 ,kms:GenerateDataKey
才能建立、上傳和完成分段上傳。 - StartReadSetExportJob
-
若要啟動資料匯出任務,IAM 發起人必須具有儲存體上 KMS 金鑰的
kms:Decrypt
許可,才能從接收物件的 Amazon S3 儲存貯體匯出 和kms:GenerateDataKey
和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 需要授予
不建議撤銷或淘汰 HealthOmics 分析代表您建立的授予。如果您撤銷或淘汰授予 HealthOmics 許可以使用您帳戶中的 AWS KMS 金鑰的授予,HealthOmics 無法存取此資料、加密推送到資料存放區的新資源,或在提取時解密這些資源。
當您撤銷或淘汰 HealthOmics 的授予時,變更會立即發生。若要撤銷存取權,建議您刪除資料存放區,而不是撤銷授予。當您刪除資料存放區時,HealthOmics 會代表您淘汰授予。
監控 AWS HealthOmics 的加密金鑰
您可以使用 CloudTrail 來追蹤在使用客戶受管金鑰時代表您 AWS HealthOmics 傳送給 AWS KMS 的請求。CloudTrail 日誌中的日誌項目會在 userAgent 欄位中顯示 HealthOmics.amazonAWS.com,以清楚區分 HealthOmics 提出的請求。
下列範例是 CreateGrant、GenerateDataKey、Decrypt 和 DescribeKey 的 CloudTrail 事件,用於監控 HealthOmics 呼叫 AWS KMS 的操作,以存取客戶受管金鑰加密的資料。
以下也說明如何使用 CreateGrant 來允許 HealthOmics 分析存取客戶提供的 KMS 金鑰,讓 HealthOmics 能夠使用該 KMS 金鑰來加密所有靜態客戶資料。
您不需要建立自己的授予。HealthOmics 透過傳送 CreateGrant 請求至 AWS KMS 來代表您建立授予。中的授予 AWS KMS 用於授予 HealthOmics 存取客戶帳戶中 AWS KMS 金鑰的權限。
{ "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 HealthOmics 使用 TLS 1.2+ 透過公有端點和後端服務加密傳輸中的資料。