本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
in AWS AppFabric 資料保護
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
。
我們強烈建議您絕對不要將客戶的電子郵件地址等機密或敏感資訊,放在標籤或自由格式的文字欄位中,例如名稱欄位。這包括當您使用 AppFabric 或使用主控台、API AWS CLI或 AWS SDKs的其他 AWS 服務 時。您在標籤或自由格式文字欄位中輸入的任何資料都可能用於計費或診斷日誌。如果您提供外部伺服器的 URL,我們強烈建議請勿在驗證您對該伺服器請求的 URL 中包含憑證資訊。
注意
如需適用於 AppFabric 之資料保護的詳細資訊,請參閱 AppFabric 中的資料處理。
靜態加密
AWS AppFabric 支援靜態加密,這是一種伺服器端加密功能,其中 AppFabric 會在應用程式套件保留到磁碟時透明地加密與應用程式套件相關的所有資料,並在您存取資料時解密這些資料。根據預設,AppFabric 會使用 AWS 擁有的金鑰 from AWS Key Management Service () 的 來加密您的資料AWS KMS。您也可以選擇使用自己的客戶受管金鑰來加密資料 AWS KMS。
當您刪除應用程式套件時,其所有中繼資料都會永久刪除。
傳輸中加密
設定應用程式套件時,您可以選擇 AWS 擁有的金鑰 或客戶受管金鑰。收集和標準化稽核日誌擷取的資料時,AppFabric 會將資料暫時存放在中繼 Amazon Simple Storage Service (Amazon S3) 儲存貯體中,並使用此金鑰對其進行加密。此中繼儲存貯體會在 30 天後使用儲存貯體生命週期政策刪除。
AppFabric 使用 TLS 1.2 保護傳輸中的所有資料,並使用 AWS Signature V4 簽署 的 AWS 服務 API 請求。
金鑰管理
AppFabric 支援使用 AWS 擁有的金鑰 或客戶受管金鑰加密資料。我們建議您使用客戶受管金鑰,因為它可讓您完全控制加密的資料。當您選擇客戶受管金鑰時,AppFabric 會將資源政策連接至客戶受管金鑰,以授予其存取客戶受管金鑰的權限。
客戶自管金鑰
若要建立客戶受管金鑰,請遵循《 AWS KMS 開發人員指南》中的建立對稱加密 KMS 金鑰的步驟。
金鑰政策
金鑰政策控制對客戶受管金鑰的存取。每個客戶受管金鑰都必須只有一個金鑰政策,其中包含決定誰可以使用金鑰及其使用方式的陳述式。在建立客戶受管金鑰時,可以指定金鑰政策。如需建立金鑰政策的相關資訊,請參閱《 AWS KMS 開發人員指南》中的建立金鑰政策。
若要搭配 AppFabric 使用客戶受管金鑰,建立 AppFabric 資源的 AWS Identity and Access Management (IAM) 使用者或角色必須具有使用客戶受管金鑰的許可。我們建議您建立僅與 AppFabric 搭配使用的金鑰,並將 AppFabric 使用者新增為金鑰的使用者。此方法會限制對資料的存取範圍。您的使用者所需的許可如下:
-
kms:DescribeKey -
kms:CreateGrant -
kms:GenerateDataKey -
kms:Decrypt
AWS KMS 主控台會引導您建立具有適當金鑰政策的金鑰。如需金鑰政策的詳細資訊,請參閱《 AWS KMS 開發人員指南》中的 中的金鑰政策 AWS KMS。
以下是允許 的範例金鑰政策:
-
金鑰的完整 AWS 帳戶根使用者 控制權。
-
允許使用者使用 AppFabric 搭配 AppFabric 使用您的客戶受管金鑰。
-
在 中設定應用程式套件的金鑰政策
us-east-1。
AppFabric 如何在 中使用授予 AWS KMS
AppFabric 需要授予才能使用客戶受管金鑰。如需詳細資訊,請參閱《 AWS KMS 開發人員指南》中的在 中授予 AWS KMS。
當您建立應用程式套件時,AppFabric 會透過傳送CreateGrant請求至 來代表您建立授予 AWS KMS。中的授權 AWS KMS 用於授予 AppFabric 存取客戶帳戶中的 AWS KMS 金鑰。AppFabric 要求授予 將客戶受管金鑰用於下列內部操作:
-
傳送
GenerateDataKey請求至 AWS KMS ,以產生由客戶受管金鑰加密的資料金鑰。 -
將
Decrypt請求傳送至 AWS KMS 以解密加密的資料金鑰,以便它們可用於加密您的資料,並在傳輸中解密應用程式存取字符。 -
傳送
Encrypt請求至 AWS KMS ,以加密傳輸中的應用程式存取字符。
以下是授予的範例。
{ "KeyId": "arn:aws:kms:us-east-1:111122223333:key/ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "GrantId": "0ab0ac0d0b000f00ea00cc0a0e00fc00bce000c000f0000000c0bc0a0000aaafSAMPLE", "Name": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "CreationDate": "2022-10-11T20:35:39+00:00", "GranteePrincipal": "appfabric.us-east-1.amazonaws.com", "RetiringPrincipal": "appfabric.us-east-1.amazonaws.com", "IssuingAccount": "arn:aws:iam::111122223333:root", "Operations": [ "Decrypt", "Encrypt", "GenerateDataKey" ], "Constraints": { "EncryptionContextSubset": { "appBundleArn": "arn:aws:fabric:us-east-1:111122223333:appbundle/ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE" } } },
當您刪除應用程式套件時,AppFabric 會淘汰客戶受管金鑰的授予。
監控 AppFabric 的加密金鑰
當您搭配 AppFabric 使用 AWS KMS 客戶受管金鑰時,您可以使用 AWS CloudTrail 日誌來追蹤 AppFabric 傳送的請求 AWS KMS。
以下是 AppFabric CreateGrant用於客戶受管金鑰時所記錄的 CloudTrail 事件範例。
{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIGDTESTANDEXAMPLE:SampleUser", "arn": "arn:aws:sts::111122223333:assumed-role/AssumedRole/SampleUser", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAIGDTESTANDEXAMPLE", "arn": "arn:aws:iam::111122223333:role/AssumedRole", "accountId": "111122223333", "userName": "SampleUser" }, "webIdFederationData": {}, "attributes": { "creationDate": "2023-04-28T14:01:33Z", "mfaAuthenticated": "false" } } }, "eventTime": "2023-04-28T14:05:48Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-east-1", "sourceIPAddress": "appfabric.amazonaws.com", "userAgent": "appfabric.amazonaws.com", "requestParameters": { "granteePrincipal": "appfabric.us-east-1.amazonaws.com", "constraints": { "encryptionContextSubset": { "appBundleArn": "arn:aws:appfabric:us-east-1:111122223333:appbundle/ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE" } }, "keyId": "arn:aws:kms:us-east-1:111122223333:key/EXAMPLEID", "retiringPrincipal": "appfabric.us-east-1.amazonaws.com", "operations": [ "Encrypt", "Decrypt", "GenerateDataKey" ] }, "responseElements": { "grantId": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "keyId": "arn:aws:kms:us-east-1:111122223333:key/KEY_ID" }, "additionalEventData": { "grantId": "0ab0ac0d0b000f00ea00cc0a0e00fc00bce000c000f0000000c0bc0a0000aaafSAMPLE" }, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": false, "resources": [ { "accountId": "AWS Internal", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:111122223333:key/key_ID" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "sharedEventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventCategory": "Management", "tlsDetails": { "tlsVersion": "TLSv1.3", "cipherSuite": "TLS_AES_256_GCM_SHA384", "clientProvidedHostHeader": "kms.us-east-1.amazonaws.com" } }