在 Amazon 中使用客戶受管金鑰 QLDB - Amazon Quantum Ledger 資料庫 (Amazon QLDB)

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 Amazon 中使用客戶受管金鑰 QLDB

您可以使用 AWS Management Console、 AWS Command Line Interface (AWS CLI) 或 QLDBAPI, AWS KMS key 為 Amazon 中的新分類帳和現有分類帳指定 QLDB。下列主題說明如何管理和監控 中客戶受管金鑰的使用QLDB。

必要條件

您必須先在 QLDB AWS Key Management Service () 中建立金鑰,才能使用客戶受管金鑰來保護分類帳AWS KMS。您也必須指定金鑰政策,QLDB允許 AWS KMS key 代表您建立授予。

建立客戶受管金鑰

若要建立客戶受管金鑰,請遵循 AWS Key Management Service 開發人員指南 中的建立對稱加密KMS金鑰中的步驟。QLDB 不支援非對稱金鑰

設定金鑰政策

金鑰政策是控制 中客戶受管金鑰存取的主要方式 AWS KMS。每個客戶受管金鑰必須只有一個金鑰政策。金鑰政策文件中的陳述式會決定誰擁有使用金鑰的許可,以及他們可以如何使用該KMS金鑰。如需詳細資訊,請參閱在 中使用金鑰政策 AWS KMS

您可以在建立客戶受管金鑰時指定金鑰政策。若要變更現有客戶受管金鑰的金鑰政策,請參閱變更金鑰政策

若要允許 QLDB使用您的客戶受管金鑰,金鑰政策必須包含下列 AWS KMS 動作的許可:

  • kms:CreateGrant – 將授予新增至客戶受管金鑰。准許控制對指定KMS金鑰的存取。

    當您使用指定的客戶受管金鑰建立或更新分類帳時, 會QLDB建立授予,以允許存取其所需的授予操作。授予操作包括下列項目:

  • kms:DescribeKey – 傳回客戶受管金鑰的詳細資訊。QLDB 會使用此資訊來驗證金鑰。

金鑰政策範例

以下是您可以用於 的關鍵政策範例QLDB。此政策允許獲授權QLDB從 帳戶使用的主體111122223333呼叫 資源 上的 DescribeKeyCreateGrant操作arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

若要使用此政策,請取代 us-east-1, 1111222233331234abcd-12ab-34cd-56ef-1234567890ab 在 範例中使用您自己的資訊。

{ "Version": "2012-10-17", "Statement": [ { "Sid" : "Allow access to principals authorized to use Amazon QLDB", "Effect" : "Allow", "Principal" : { "AWS" : "*" }, "Action" : [ "kms:DescribeKey", "kms:CreateGrant" ], "Resource" : "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Condition" : { "StringEquals" : { "kms:ViaService" : "qldb.us-east-1.amazonaws.com", "kms:CallerAccount" : "111122223333" } } } ] }

AWS KMS key 為新分類帳指定

當您使用QLDB主控台或 建立新分類帳時,請依照下列步驟指定KMS金鑰 AWS CLI。

您可以使用 ID、別名或 Amazon Resource Name () 來指定客戶受管金鑰ARN。若要進一步了解,請參閱 AWS Key Management Service 開發人員指南 中的金鑰識別碼 (KeyId)

注意

不支援跨區域金鑰。指定的KMS金鑰必須與 分類帳位於相同的 AWS 區域 中。

  1. 登入 AWS Management Console,然後在 https://console.aws.amazon.com/qldb 開啟 Amazon QLDB主控台。

  2. 選擇建立分類帳

  3. 建立分類帳頁面上,執行下列動作:

    • 分類帳資訊 – 輸入目前 AWS 帳戶 和 區域中所有分類帳中唯一的分類帳名稱

    • 許可模式 – 選擇要指派給分類帳的許可模式:

      • 允許全部

      • 標準建議

    • 靜態加密資料 – 選擇要用於靜態加密的KMS金鑰類型:

      • 使用 AWS 擁有KMS的金鑰 – AWS 代表您使用 擁有和管理的KMS金鑰。這是預設選項,不需要額外的設定。

      • 選擇不同的 AWS KMS 金鑰 – 在建立、擁有和管理的帳戶中使用對稱加密KMS金鑰。

        若要使用 AWS KMS 主控台建立新金鑰,請選擇建立 AWS KMS 金鑰 。如需詳細資訊,請參閱 AWS Key Management Service 開發人員指南 中的建立對稱加密KMS金鑰

        若要使用現有KMS金鑰,請從下拉式清單中選擇金鑰,或指定KMS金鑰 ARN。

  4. 當設定如您想要的,請選擇建立分類帳

    當QLDB分類帳的狀態變為作用中 時,您可以存取分類帳。這可能需要幾分鐘的時間。

使用 AWS CLI 在 中使用QLDB預設 AWS 擁有的金鑰 或客戶受管金鑰建立分類帳。

範例 – 建立具有預設值的分類帳 AWS 擁有的金鑰
aws qldb create-ledger --name my-example-ledger --permissions-mode STANDARD
範例 – 使用客戶受管金鑰建立分類帳
aws qldb create-ledger \ --name my-example-ledger \ --permissions-mode STANDARD \ --kms-key arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

更新現有分類帳 AWS KMS key 的

您也可以使用QLDB主控台或 AWS CLI ,隨時將現有分類帳的KMS金鑰更新為 AWS 擁有的金鑰 或客戶受管金鑰。

注意

Amazon AWS KMS keys 已於 2021 年 7 月 22 日QLDB推出對客戶受管的支援。根據 AWS 擁有的金鑰 預設,在啟動之前建立的任何分類帳都會受到保護,但目前不符合使用客戶受管金鑰進行靜態加密的資格。

您可以在QLDB主控台上檢視分類帳的建立時間。

中的金鑰變更QLDB是非同步的。處理金鑰變更時,可完全存取分類帳,而不會有任何效能影響。更新金鑰所需的時間會因分類帳大小而異。

您可以使用 ID、別名或 Amazon Resource Name () 來指定客戶受管金鑰ARN。若要進一步了解,請參閱 AWS Key Management Service 開發人員指南 中的金鑰識別碼 (KeyId)

注意

不支援跨區域金鑰。指定的KMS金鑰必須與 分類帳位於相同的 AWS 區域 中。

  1. 登入 AWS Management Console,然後在 https://console.aws.amazon.com/qldb 開啟 Amazon QLDB主控台。

  2. 在導覽窗格中,選擇 Ledgers

  3. 在分類帳清單中,選取您要更新的分類帳,然後選擇編輯分類帳

  4. 編輯分類帳頁面上,選擇要用於靜態加密的KMS金鑰類型:

    • 使用 AWS 擁有KMS的金鑰 – AWS 代表您使用 擁有和管理的KMS金鑰。這是預設選項,不需要額外的設定。

    • 選擇不同的 AWS KMS 金鑰 – 在建立、擁有和管理的帳戶中使用對稱加密KMS金鑰。

      若要使用 AWS KMS 主控台建立新金鑰,請選擇建立 AWS KMS 金鑰 。如需詳細資訊,請參閱 AWS Key Management Service 開發人員指南 中的建立對稱加密KMS金鑰

      若要使用現有KMS金鑰,請從下拉式清單中選擇金鑰,或指定KMS金鑰 ARN。

  5. 選擇確認變更

使用 AWS CLI 以QLDB預設 AWS 擁有的金鑰 或客戶受管金鑰更新 中的現有分類帳。

範例 – 使用預設值更新分類帳 AWS 擁有的金鑰
aws qldb update-ledger --name my-example-ledger --kms-key AWS_OWNED_KMS_KEY
範例 – 使用客戶受管金鑰更新分類帳
aws qldb update-ledger \ --name my-example-ledger \ --kms-key arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

監控您的 AWS KMS keys

如果您使用客戶受管金鑰來保護 Amazon QLDB 分類帳,您可以使用 AWS CloudTrailAmazon CloudWatch Logs 來追蹤 AWS KMS 代表您QLDB傳送至 的請求。如需詳細資訊,請參閱 AWS Key Management Service 開發人員指南 中的監控 AWS KMS keys

下列範例是操作 CreateGrantGenerateDataKeyEncryptDecrypt和 的 CloudTrail 日誌項目DescribeKey

CreateGrant

當您指定客戶受管金鑰來保護您的分類帳時, AWS KMS 會代表您QLDB傳送CreateGrant請求至 ,以允許存取您的KMS金鑰。此外,當您刪除分類帳時, QLDB會使用 RetireGrant操作來移除授予。

QLDB 建立的授予是分類帳特有的。CreateGrant 請求中的主體是建立資料表的使用者。

記錄 CreateGrant 操作的事件類似於以下範例事件。這些參數包括客戶受管金鑰的 Amazon Resource Name (ARN)、承授者主體和淘汰主體 (QLDB服務),以及授予涵蓋的操作。

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AKIAIOSFODNN7EXAMPLE:sample-user", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/sample-user", "accountId": "111122223333", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" }, "webIdFederationData": {}, "attributes": { "mfaAuthenticated": "false", "creationDate": "2021-06-04T21:37:11Z" } }, "invokedBy": "qldb.amazonaws.com" }, "eventTime": "2021-06-04T21:40:00Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-west-2", "sourceIPAddress": "qldb.amazonaws.com", "userAgent": "qldb.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "granteePrincipal": "qldb.us-west-2.amazonaws.com", "operations": [ "DescribeKey", "GenerateDataKey", "Decrypt", "Encrypt" ], "retiringPrincipal": "qldb.us-west-2.amazonaws.com" }, "responseElements": { "grantId": "b3c83f999187ccc0979ef2ff86a1572237b6bba309c0ebce098c34761f86038a" }, "requestID": "e99188d7-3b82-424e-b63e-e086d848ed60", "eventID": "88dc7ba5-4952-4d36-9ca8-9ab5d9598bab", "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, "eventCategory": "Management", "recipientAccountId": "111122223333" }
GenerateDataKey

當您指定客戶受管金鑰來保護您的分類帳時, 會QLDB建立唯一的資料金鑰。它將GenerateDataKey請求傳送至 AWS KMS ,指定分類帳的客戶受管金鑰。

記錄 GenerateDataKey 操作的事件類似於以下範例事件。使用者是QLDB服務帳戶。這些參數包括客戶受管金鑰ARN的 、需要 32 位元組長度的資料金鑰規格符,以及識別內部金鑰階層節點的加密內容。

{ "eventVersion": "1.08", "userIdentity": { "type": "AWSService", "invokedBy": "qldb.amazonaws.com" }, "eventTime": "2021-06-04T21:40:01Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-west-2", "sourceIPAddress": "qldb.amazonaws.com", "userAgent": "qldb.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "numberOfBytes": 32, "encryptionContext": { "key-hierarchy-node-id": "LY4HWMnkeZWKYi6MlitVJC", "key-hierarchy-node-version": "1" } }, "responseElements": null, "requestID": "786977c9-e77c-467a-bff5-9ad5124a4462", "eventID": "b3f082cb-3e75-454e-bf0a-64be13075436", "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, "eventCategory": "Management", "recipientAccountId": "111122223333", "sharedEventID": "26688de5-0b1c-43d3-bc4f-a18029b08446" }
解密

當您存取分類帳時, 會QLDB呼叫 Decrypt操作來解密分類帳的儲存資料金鑰,以便其存取分類帳中的加密資料。

記錄 Decrypt 操作的事件類似於以下範例事件。使用者是QLDB服務帳戶。參數包括客戶受管金鑰ARN的 ,以及識別內部金鑰階層節點的加密內容。

{ "eventVersion": "1.08", "userIdentity": { "type": "AWSService", "invokedBy": "qldb.amazonaws.com" }, "eventTime": "2021-06-04T21:40:56Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-west-2", "sourceIPAddress": "qldb.amazonaws.com", "userAgent": "qldb.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "encryptionAlgorithm": "SYMMETRIC_DEFAULT", "encryptionContext": { "key-hierarchy-node-id": "LY4HWMnkeZWKYi6MlitVJC", "key-hierarchy-node-version": "1" } }, "responseElements": null, "requestID": "28f2dd18-3cc1-4fe2-82f7-5154f4933ebf", "eventID": "603ad5d4-4744-4505-9c21-bd4a6cbd4b20", "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, "eventCategory": "Management", "recipientAccountId": "111122223333", "sharedEventID": "7b6ce3e3-a764-42ec-8f90-5418c97ec411" }
加密

QLDB 會呼叫 Encrypt操作,以使用客戶受管金鑰將純文字加密為加密文字。

記錄 Encrypt 操作的事件類似於以下範例事件。使用者是QLDB服務帳戶。參數包括客戶受管金鑰ARN的 ,以及指定分類帳內部唯一 ID 的加密內容。

{ "eventVersion": "1.08", "userIdentity": { "type": "AWSService", "invokedBy": "qldb.amazonaws.com" }, "eventTime": "2021-06-04T21:40:01Z", "eventSource": "kms.amazonaws.com", "eventName": "Encrypt", "awsRegion": "us-west-2", "sourceIPAddress": "qldb.amazonaws.com", "userAgent": "qldb.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "encryptionContext": { "LedgerId": "F6qRNziJLUXA4Vy2ZUv8YY" }, "encryptionAlgorithm": "SYMMETRIC_DEFAULT" }, "responseElements": null, "requestID": "b2daca7d-4606-4302-a2d7-5b3c8d30c64d", "eventID": "b8aace05-2e37-4fed-ae6f-a45a1c6098df", "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, "eventCategory": "Management", "recipientAccountId": "111122223333", "sharedEventID": "ce420ab0-288e-4b4f-aee8-541e18a28aa5" }
DescribeKey

QLDB 會呼叫 DescribeKey操作,以判斷您指定的KMS金鑰是否存在於 AWS 帳戶 和 區域中。

記錄 DescribeKey 操作的事件類似於以下範例事件。主體是 中 AWS 帳戶 指定KMS金鑰的使用者。參數包括客戶受管金鑰ARN的 。

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "AKIAIOSFODNN7EXAMPLE:sample-user", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/sample-user", "accountId": "111122223333", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" }, "webIdFederationData": {}, "attributes": { "mfaAuthenticated": "false", "creationDate": "2021-06-04T21:37:11Z" } }, "invokedBy": "qldb.amazonaws.com" }, "eventTime": "2021-06-04T21:40:00Z", "eventSource": "kms.amazonaws.com", "eventName": "DescribeKey", "awsRegion": "us-west-2", "sourceIPAddress": "qldb.amazonaws.com", "userAgent": "qldb.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, "responseElements": null, "requestID": "a30586af-c783-4d25-8fda-33152c816c36", "eventID": "7a9caf07-2b27-44ab-afe4-b259533ebb88", "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, "eventCategory": "Management", "recipientAccountId": "111122223333" }