本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon VPC Lattice 中的資料保護
AWS 共同責任模型
傳輸中加密
VPC Lattice 是完全受管的服務,由控制平面和資料平面組成。每個平面在服務中都有不同的用途。控制平面提供用於建立、讀取/描述、更新、刪除和列出 (CRUDL) 資源APIs (例如 CreateService
和 UpdateService
)。與 VPC Lattice 控制平面的通訊受到 TLS 的傳輸中保護。資料平面是 VPC Lattice 調用 API,可提供服務之間的互連。當您使用 HTTPS 或 TLS 時,TLS 會加密與 VPC Lattice 資料平面的通訊。密碼套件和通訊協定版本使用 VPC Lattice 提供的預設值,且無法設定。如需詳細資訊,請參閱VPC Lattice 服務的 HTTPS 接聽程式。
靜態加密
根據預設,靜態資料的加密有助於降低保護敏感資料所需的操作開銷和複雜性。同時,其可讓您建置符合嚴格加密合規性和法規要求的安全應用程式。
使用 Amazon S3 受管金鑰 (SSE-S3) 的伺服器端加密
使用伺服器端加密搭配 Amazon S3 受管金鑰 (SSE-S3) 時,每個物件都會使用唯一金鑰來加密。作為額外的保護,我們使用我們定期輪換的根金鑰來加密金鑰本身。Amazon S3 伺服器端加密使用目前最強大的其中一種區塊加密法 (256 位元進階加密標準 (AES-256) GCM),加密您的資料。對於在 AES-GCM 之前加密的物件,仍支援以 AES-CBC 解密這些物件。如需詳細資訊,請參閱搭配使用伺服器端加密與 Amazon S3-managed加密金鑰 (SSE-S3)。
如果您使用 Amazon S3-managed加密金鑰 (SSE-S3) 為 S3 儲存貯體啟用伺服器端加密以進行 VPC Lattice 存取日誌,我們會在每個存取日誌檔案存放在 S3 儲存貯體之前自動加密。如需詳細資訊,請參閱《Amazon CloudWatch 使用者指南》中的傳送至 Amazon S3 的日誌。 Amazon CloudWatch
伺服器端加密與存放在 AWS KMS (SSE-KMS) 中的 AWS KMS 金鑰
具有 AWS KMS 金鑰的伺服器端加密 (SSE-KMS) 類似於 SSE-S3,但使用此服務有額外的優點和費用。 AWS KMS 金鑰有單獨的許可,可針對 Amazon S3 中的物件提供額外保護,防止未經授權的存取。SSE-KMS 也為您提供稽核追蹤,顯示您的 AWS KMS 金鑰何時被使用以及由誰使用。如需詳細資訊,請參閱搭配 AWS Key Management Service (SSE-KMS) 使用伺服器端加密。
加密和解密憑證的私有金鑰
您的 ACM 憑證和私有金鑰會使用具有別名 aws/acm 的 AWS 受管 KMS 金鑰進行加密。您可以在 AWS KMS 主控台的 AWS 受管金鑰下,檢視具有此別名的金鑰 ID。
VPC Lattice 不會直接存取您的 ACM 資源。它使用 AWS TLS Connection Manager 來保護和存取憑證的私有金鑰。當您使用 ACM 憑證建立 VPC Lattice 服務時,VPC Lattice 會將您的憑證與 AWS TLS Connection Manager 建立關聯。方法是 AWS KMS 針對 AWS 具有字首 aws/acm 的受管金鑰在 中建立授予。授權是一種政策工具,允許 TLS Connection Manager 使用密碼編譯操作中的 KMS 金鑰。授權可讓承授者主體 (TLS Connection Manager) 呼叫 KMS 金鑰上指定的授予操作,以解密憑證的私有金鑰。TLS Connection Manager 接著會使用憑證和解密的 (純文字) 私有金鑰,與 VPC Lattice 服務的用戶端建立安全連線 (SSL/TLS 工作階段)。當憑證與 VPC Lattice 服務取消關聯時,授權即會淘汰。
如果您想要移除對 KMS 金鑰的存取權,建議您使用 或 中的 AWS Management Console update-service
命令,從服務取代或刪除憑證 AWS CLI。
VPC Lattice 的加密內容
加密內容是一組選用的金鑰值對,其中包含有關私有金鑰可能用於哪些用途的內容資訊。 會將加密內容 AWS KMS 合併為加密資料,並將它用作額外的已驗證資料,以支援已驗證的加密。
當您的 TLS 金鑰與 VPC Lattice 和 TLS Connection Manager 搭配使用時,您的 VPC Lattice 服務名稱會包含在用來加密靜態金鑰的加密內容中。您可以透過檢視 CloudTrail 日誌中的加密內容,如下一節所示,或查看 ACM 主控台中的關聯資源索引標籤,來驗證憑證和私有金鑰所使用的 VPC Lattice 服務。
若要解密資料,則必須在請求中包含相同的加密內容。VPC Lattice 在所有 AWS KMS 密碼編譯操作中使用相同的加密內容,其中金鑰為 ,aws:vpc-lattice:arn
而值為 VPC Lattice 服務的 Amazon Resource Name (ARN)。
下列範例展示操作輸出中的加密內容,例如 CreateGrant
。
"encryptionContextEquals": {
"aws:acm:arn": "arn:aws:acm:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
"aws:vpc-lattice:arn": "arn:aws:vpc-lattice:us-west-2:111122223333:service/svc-0b23c1234567890ab"
}
監控 VPC Lattice 的加密金鑰
當您搭配 VPC Lattice 服務使用 AWS 受管金鑰時,您可以使用 AWS CloudTrail 來追蹤 VPC Lattice 傳送的請求 AWS KMS。
CreateGrant
當您將 ACM 憑證新增至 VPC Lattice 服務時,系統會代表您傳送CreateGrant
請求,讓 TLS Connection Manager 能夠解密與您的 ACM 憑證相關聯的私有金鑰
您可以在 CloudTrail、事件歷史記錄、CreateGrant 中將CreateGrant
操作檢視為事件。
以下是 CreateGrant
CloudTrail 操作事件歷史記錄中的範例事件記錄。
{
"eventVersion": "1.08",
"userIdentity": {
"type": "IAMUser",
"principalId": "EX_PRINCIPAL_ID",
"arn": "arn:aws:iam::111122223333:user/Alice",
"accountId": "111122223333",
"accessKeyId": "EXAMPLE_KEY_ID",
"sessionContext": {
"sessionIssuer": {
"type": "IAMUser",
"principalId": "EX_PRINCIPAL_ID",
"arn": "arn:aws:iam::111122223333:user/Alice",
"accountId": "111122223333",
"userName": "Alice"
},
"webIdFederationData": {},
"attributes": {
"creationDate": "2023-02-06T23:30:50Z",
"mfaAuthenticated": "false"
}
},
"invokedBy": "acm.amazonaws.com"
},
"eventTime": "2023-02-07T00:07:18Z",
"eventSource": "kms.amazonaws.com",
"eventName": "CreateGrant",
"awsRegion": "us-west-2",
"sourceIPAddress": "acm.amazonaws.com",
"userAgent": "acm.amazonaws.com",
"requestParameters": {
"granteePrincipal": "tlsconnectionmanager.amazonaws.com",
"keyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
"operations": [
"Decrypt"
],
"constraints": {
"encryptionContextEquals": {
"aws:acm:arn": "arn:aws:acm:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
"aws:vpc-lattice:arn": "arn:aws:vpc-lattice:us-west-2:111122223333:service/svc-0b23c1234567890ab"
}
},
"retiringPrincipal": "acm.us-west-2.amazonaws.com"
},
"responseElements": {
"grantId": "f020fe75197b93991dc8491d6f19dd3cebb24ee62277a05914386724f3d48758",
"keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
},
"requestID": "ba178361-8ab6-4bdd-9aa2-0d1a44b2974a",
"eventID": "8d449963-1120-4d0c-9479-f76de11ce609",
"readOnly": false,
"resources": [
{
"accountId": "111122223333",
"type": "AWS::KMS::Key",
"ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
}
],
"eventType": "AwsApiCall",
"managementEvent": true,
"recipientAccountId": "111122223333",
"eventCategory": "Management"
}
在上述CreateGrant
範例中,承授者主體是 TLS Connection Manager,加密內容具有 VPC Lattice 服務 ARN。
ListGrants
您可以使用 KMS 金鑰 ID 和帳戶 ID 來呼叫 ListGrants
API。這可讓您取得指定 KMS 金鑰的所有授予清單。如需詳細資訊,請參閱 ListGrants。
在 中使用下列ListGrants
命令 AWS CLI ,以查看所有授予的詳細資訊。
aws kms list-grants —key-id
your-kms-key-id
下列為範例輸出。
{
"Grants": [
{
"Operations": [
"Decrypt"
],
"KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
"Name": "IssuedThroughACM",
"RetiringPrincipal": "acm.us-west-2.amazonaws.com",
"GranteePrincipal": "tlsconnectionmanager.amazonaws.com",
"GrantId": "f020fe75197b93991dc8491d6f19dd3cebb24ee62277a05914386724f3d48758",
"IssuingAccount": "arn:aws:iam::111122223333:root",
"CreationDate": "2023-02-06T23:30:50Z",
"Constraints": {
"encryptionContextEquals": {
"aws:acm:arn": "arn:aws:acm:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
"aws:vpc-lattice:arn": "arn:aws:vpc-lattice:us-west-2:111122223333:service/svc-0b23c1234567890ab"
}
}
}
]
}
在上述ListGrants
範例中,承授者主體是 TLS Connection Manager,而加密內容具有 VPC Lattice 服務 ARN。
解密
VPC Lattice 使用 TLS Connection Manager 呼叫 Decrypt
操作來解密您的私有金鑰,以便在 VPC Lattice 服務中提供 TLS 連線。您可以在 CloudTrail 事件歷史記錄 Decrypt 中將Decrypt
操作檢視為事件。
以下是 Decrypt
CloudTrail 操作事件歷史記錄中的範例事件記錄。
{
"eventVersion": "1.08",
"userIdentity": {
"type": "AWSService",
"invokedBy": "tlsconnectionmanager.amazonaws.com"
},
"eventTime": "2023-02-07T00:07:23Z",
"eventSource": "kms.amazonaws.com",
"eventName": "Decrypt",
"awsRegion": "us-west-2",
"sourceIPAddress": "tlsconnectionmanager.amazonaws.com",
"userAgent": "tlsconnectionmanager.amazonaws.com",
"requestParameters": {
"encryptionContext": {
"aws:acm:arn": "arn:aws:acm:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
"aws:vpc-lattice:arn": "arn:aws:vpc-lattice:us-west-2:111122223333:service/svc-0b23c1234567890ab"
},
"encryptionAlgorithm": "SYMMETRIC_DEFAULT"
},
"responseElements": null,
"requestID": "12345126-30d5-4b28-98b9-9153da559963",
"eventID": "abcde202-ba1a-467c-b4ba-f729d45ae521",
"readOnly": true,
"resources": [
{
"accountId": "111122223333",
"type": "AWS::KMS::Key",
"ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
}
],
"eventType": "AwsApiCall",
"managementEvent": true,
"recipientAccountId": "111122223333",
"sharedEventID": "abcde202-ba1a-467c-b4ba-f729d45ae521",
"eventCategory": "Management"
}