DynamoDB 靜態加密使用須知 - Amazon DynamoDB

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

DynamoDB 靜態加密使用須知

在您使用 Amazon DynamoDB 中靜態加密時請考量以下項目。

所有資料表資料都會加密

已對所有 DynamoDB 資料表資料啟用伺服器端靜態加密,且無法停用。您無法僅加密資料表中的項目子集。

只有持久性儲存媒體上的資料是靜態 (靜止) 時,靜態加密才會加密資料。如果對傳輸中資料或使用中資料有資料安全性的疑慮,您可能需要進行額外的措施:

  • 傳輸中的資料:DynamoDB 中的所有資料都是在傳輸中加密的。根據預設,與 DynamoDB 之間的通訊會使用 HTTPS 協定,其使用 Secure Sockets Layer (SSL)/Transport Layer Security (TLS) 加密保護網路流量。

  • 使用中資料:在將資料傳送至 DynamoDB 前使用用戶端加密來保護資料。如需詳細資訊,請參閱《Amazon DynamoDB Encryption Client 開發人員指南》中的用戶端與伺服器端加密

您可以將串流與加密的資料表搭配著使用。DynamoDB Streams 一律會以資料表層級加密金鑰加密。如需詳細資訊,請參閱 DynamoDB Streams 的變更資料擷取

DynamoDB 的備份會受到加密,且從備份恢復的資料表也已啟用加密。您可以使用 AWS 擁有的金鑰 AWS 受管金鑰、或客戶管理的金鑰來加密備份資料。如需詳細資訊,請參閱 使用 DynamoDB 的隨需備份與還原

本機次要索引和全域次要索引會使用與基礎資料表相同的金鑰加密。

加密類型

注意

Global Table 版本 2017 不支援客戶受管金鑰。如果要在 DynamoDB Global Table 中使用客戶受管金鑰,則需要將資料表升級為 Global Table 版本 2019,然後將其啟用。

在上 AWS Management Console,加密類型是KMS當您使用 AWS 受管金鑰 或客戶管理金鑰來加密資料時。使用 AWS 擁有的金鑰時,加密類型為 DEFAULT。在 Amazon DynamoDB API 中,加密類型是KMS當您使用 AWS 受管金鑰 或客戶受管金鑰時。在缺少加密類型的情況下,會使用 AWS 擁有的金鑰來加密資料。您可以隨時在 AWS 擁有的金鑰 AWS 受管金鑰、和客戶管理的金鑰之間切換。您可以使用主控台、 AWS Command Line Interface (AWS CLI) 或 Amazon DynamoDB API 來切換加密金鑰。

請注意,使用客戶受管金鑰時有下列限制:

  • 您無法搭配 DynamoDB Accelerator (DAX) 叢集使用客戶受管金鑰。如需詳細資訊,請參閱 DAX 靜態加密

  • 您可以使用客戶受管金鑰來加密使用交易的資料表。不過,為了確保交易傳播的持久性,服務會暫時儲存交易請求的副本,並使用 AWS 擁有的金鑰進行加密。資料表和次要索引中已遞交的資料一律會使用客戶受管金鑰進行靜態加密。

  • 您可以使用客戶受管金鑰來加密使用 Contributor Insights 的資料表。不過,傳輸目標的 Amazon CloudWatch 資料會使用 AWS 擁有的金鑰.

  • 當您轉換為新的客戶管理金鑰時,請務必將原始金鑰保持啟用狀態,直到程序完成為止。 AWS 在使用新密鑰加密數據之前,仍然需要原始密鑰來解密數據。當表格的 SSEDescription 狀態為已啟用且顯示新客戶受管金鑰MasterKeyArn 的 KMS 時,此程序將會完成。此時可以停用或排程刪除原始金鑰。

  • 顯示新的客戶受管金鑰後,資料表和任何新的隨需備份都會使用新的金鑰加密。

  • 任何現有的隨需備份都會使用建立備份時使用的客戶受管金鑰進行加密。您將需要相同的金鑰來還原這些備份。您可以使用 DescribeBackup API 來檢視備份的 SSEDescription,以識別每個備份建立期間的金鑰。

  • 如果您停用客戶受管金鑰或排定其刪除的時間,所有在 DynamoDB Streams 中的資料仍有 24 小時的生命週期。任何未擷取的活動資料如果超過 24 小時,則符合裁剪的資格。

  • 如果您停用客戶受管金鑰或排定其刪除的時間,存留時間 (TTL) 刪除就會持續 30 分鐘。這些 TTL 刪除會持續發出至 DynamoDB Streams,並符合標準裁剪/保留間隔。

    如需更多詳細資訊,請參閱啟用金鑰刪除金鑰。

使用 KMS 金鑰和資料金鑰

DynamoDB 靜態加密功能使用 AWS KMS key 和資料金鑰階層來保護您的表格資料。當 DynamoDB 串流、全域資料表和備份寫入到持久性媒體時,DynamoDB 會使用相同的金鑰階層來保護 DynamoDB 串流、全域資料表和備份。

我們建議您先規劃加密策略,再於 DynamoDB 中使用資料表。如果您將敏感或機密資料儲存在 DynamoDB,請考慮在計劃中加入用戶端加密。如此一來,您就能盡量靠近資料來源進行加密,並確保資料在整個生命週期受到保護。如需詳細資訊,請參閱 DynamoDB 加密客戶端文件。

AWS KMS key

靜態加密會保護 AWS KMS key下的 DynamoDB 資料表。根據預設,DynamoDB 會使用 AWS 擁有的金鑰,這是一種在 DynamoDB 服務帳戶中建立和管理的多租用戶加密金鑰。但是,您可以使用客戶受管金鑰或 AWS 帳戶中 DynamoDB (aws/dynamodb) 加密您的 DynamoDB 資料表。您可以為每個資料表選取不同的 KMS 金鑰。您為資料表選取的 KMS 金鑰也會用來加密其本機和全域次要索引、串流和備份。

建立或更新資料表時,您可以選取資料表的 KMS 金鑰。您可以隨時在 DynamoDB 主控台中或使用作業變更資料表的 KMS 金鑰。UpdateTable切換金鑰的程序是無縫的,且不需要停機時間或降低服務效能。

重要

DynamoDB 僅支援對稱 KMS 金鑰。您無法使用非對稱 KMS 金鑰來加密您的 DynamoDB 資料表。

使用客戶受管金鑰來取得下列功能:

AWS 受管金鑰 如果您需要下列任一功能,請使用:

不過, AWS 擁有的金鑰 這是免費的,且其使用不會計入AWS KMS 資源或要求配額。客戶受管金鑰 AWS 受管金鑰 會向這些 KMS 金鑰收取每個 API 呼叫和 AWS KMS 配額的費用。

資料表金鑰

DynamoDB 對資料表使用 KMS 金鑰來為資料表產生和加密唯一的資料金鑰,稱為資料表金鑰。資料表金鑰會在加密資料表的生命週期內持續存在。

資料表金鑰用作金鑰加密金鑰。DynamoDB 使用此資料表金鑰來保護用於加密資料表資料的資料加密金鑰。DynamoDB 會為資料表中的每個基礎結構產生唯一的資料加密金鑰,但多個資料表項目可能受到相同的資料加密金鑰保護。

使用靜態加密來加密 DynamoDB 資料表

當您第一次存取加密的資料表時,DynamoDB 會傳送要求 AWS KMS 給使用 KMS 金鑰來解密資料表金鑰。然後,它使用純文字資料表金鑰來解密資料加密金鑰,並使用純文字資料加密金鑰來解密資料表資料。

DynamoDB 會在其外儲存和使用表格金鑰和資料加密金鑰。 AWS KMS它使用進階加密標準 (AES) 加密和 256 位元加密金鑰來保護所有金鑰。然後,它會將加密金鑰與加密資料一起存放,以便這些資料可用來隨需解密資料表。

如果您變更了資料表的 KMS 金鑰,DynamoDB 便會產生新的資料表金鑰。然後,使用新的資料表金鑰來重新加密資料加密金鑰。

資料表金鑰快取

AWS KMS 為了避免呼叫每個 DynamoDB 作業,DynamoDB 會快取記憶體中每個呼叫者的純文字表格鍵。如果 DynamoDB 在閒置五分鐘後收到快取表格金鑰的請求,則會傳送新 AWS KMS 要求以解密資料表金鑰。此呼叫將擷取自上次解密資料表金鑰請求以來,對 AWS KMS 或 AWS Identity and Access Management (IAM) 中 KMS 金鑰存取政策所做的任何變更。

授權使用您的 KMS 金鑰

如果您使用客戶受管金鑰 或帳戶中的 AWS 受管金鑰 保護您的 DynamoDB 資料表,該 KMS 金鑰的政策必須允許 DynamoDB 代您使用該金鑰。 AWS 受管金鑰 針對 DynamoDB 的授權內容包含其金鑰原則,並授與委派使用權限的權限。

您可以完全控制客戶受管金鑰的政策和授予,因為 AWS 受管金鑰 在您的帳戶中,您可以檢視其政策和授予。但是,因為它是由管理的 AWS,因此您無法變更原則。

DynamoDB 不需要其他授權即可使用預設值AWS 擁有的金鑰來保護您的. AWS 帳戶

金鑰政策 AWS 受管金鑰

當 DynamoDB 在密碼編譯操作中使用適用於 DynamoDB (aws/dynamodb) 的 AWS 受管金鑰 時,它是代表正在存取 DynamoDB 資源的使用者進行這項操作。上的金鑰原則可 AWS 受管金鑰 讓帳戶中的所有使用者有權使 AWS 受管金鑰 用指定的作業。但是,只有在 DynamoDB 代表使用者提出請求時才會授予許可。金鑰原則中的ViaService 條件不允許任何使用者使用, AWS 受管金鑰 除非要求源自 DynamoDB 服務。

此金鑰原則與所有政策一樣 AWS 受管金鑰,由建立 AWS。您不能改變它,但可以隨時檢視它。如需詳細資訊,請參閱檢視金鑰政策

金鑰政策中的政策陳述式具有下列效果:

  • 當請求來自 DynamoDB 代表他們時,允許帳戶中的使用者在密碼編譯作業中使用 DynamoDB。 AWS 受管金鑰 此政策也允許使用者為 KMS 金鑰建立授予

  • 允許帳戶中授權的 IAM 身分檢視 DynamoDB AWS 受管金鑰 的屬性,並撤銷允許 DynamoDB 使用 KMS 金鑰的授予。DynamoDB 使用授予進行持續的維護操作。

  • 允許 DynamoDB 執行唯讀作業,以便在您的帳戶中尋找 AWS 受管金鑰 適用於 DynamoDB 的項目。

{ "Version" : "2012-10-17", "Id" : "auto-dynamodb-1", "Statement" : [ { "Sid" : "Allow access through Amazon DynamoDB for all principals in the account that are authorized to use Amazon DynamoDB", "Effect" : "Allow", "Principal" : { "AWS" : "*" }, "Action" : [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource" : "*", "Condition" : { "StringEquals" : { "kms:CallerAccount" : "111122223333", "kms:ViaService" : "dynamodb.us-west-2.amazonaws.com" } } }, { "Sid" : "Allow direct access to key metadata to the account", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : [ "kms:Describe*", "kms:Get*", "kms:List*", "kms:RevokeGrant" ], "Resource" : "*" }, { "Sid" : "Allow DynamoDB Service with service principal name dynamodb.amazonaws.com to describe the key directly", "Effect" : "Allow", "Principal" : { "Service" : "dynamodb.amazonaws.com" }, "Action" : [ "kms:Describe*", "kms:Get*", "kms:List*" ], "Resource" : "*" } ] }

客戶受管金鑰的金鑰政策

當您選取客戶受管金鑰來保護 DynamoDB 資料表時,DynamoDB 會取得許可,代替進行選取的委託人使用 KMS 金鑰。該委託人 (使用者或角色) 必須在 KMS 金鑰上擁有 DynamoDB 需要的許可。您可以在金鑰政策IAM 政策授予中提供這些許可。

至少,DynamoDB 在客戶受管金鑰上需要具備下列許可:

例如,以下範例金鑰政策只會提供必要許可。政策具有下列效果:

  • 允許 DynamoDB 在密碼編譯操作中使用 KMS 金鑰並建立授予,但只有在其代替具備使用 DynamoDB 許可帳戶中的委託人時才能進行。如果政策陳述式中指定的委託人沒有使用 DynamoDB 的許可,呼叫便會失敗,即使呼叫是來自 DynamoDB 服務也一樣。

  • kms: ViaService 條件金鑰只有在要求來自 DynamoDB 代表政策陳述式中列出的主體時,才允許使用權限。這些委託人無法直接呼叫這些操作。請注意,kms:ViaService 值 (dynamodb.*.amazonaws.com) 在區域位置中有星號 (*)。DynamoDB 需要獨立於任何特定權限, AWS 區域 因此可以進行跨區域呼叫以支援 DynamoDB 全域表。

  • 給予 KMS 金鑰管理員 (可取得 db-team 角色的使用者) 對 KMS 金鑰的唯讀存取權以及撤銷授予的許可,包括 DynamoDB 需要用來保護資料表的授予

在使用範例金鑰原則之前,請先以您的實際主參與者取代範例主參與者。 AWS 帳戶

{ "Id": "key-policy-dynamodb", "Version":"2012-10-17", "Statement": [ { "Sid" : "Allow access through Amazon DynamoDB for all principals in the account that are authorized to use Amazon DynamoDB", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/db-lead"}, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService" : "dynamodb.*.amazonaws.com" } } }, { "Sid": "Allow administrators to view the KMS key and revoke grants", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/db-team" }, "Action": [ "kms:Describe*", "kms:Get*", "kms:List*", "kms:RevokeGrant" ], "Resource": "*" } ] }

使用授予來授權 DynamoDB

除了金鑰政策外,DynamoDB 會使用授予在客戶受管金鑰或 AWS 受管金鑰 for DynamoDB (aws/dynamodb) 上設定許可。若要檢視您帳戶中 KMS 金鑰的授權,請使用此ListGrants作業。DynamoDB 不需要授予或任何其他許可,即可使用 AWS 擁有的金鑰 來保護您的資料表。

DynamoDB 在執行背景系統維護和持續資料保護任務時使用授予許可。它還使用授與來產生資料表金鑰

每個授與都專屬於一個資料表。如果帳戶包含使用相同 KMS 金鑰加密的多個資料表,則每個資料表有每一種類型的授予。授權受 DynamoDB 加密內容的限制,其中包括資料表名稱和 AWS 帳戶 ID,並且包含淘汰授權 (如果不再需要) 的權限。

如要建立授予,DynamoDB 必須擁有代替建立加密資料表使用者呼叫 CreateGrant 的許可。對於 AWS 受管金鑰,DynamoDB 會從金鑰原則取得kms:CreateGrant權限,只有CreateGrant在 DynamoDB 代表授權使用者提出要求時,才允許帳戶使用者呼叫 KMS 金鑰。

金鑰政策也會允許帳戶撤銷 KMS 金鑰上的授予。不過,如果您撤銷作用中加密資料表的授予,DynamoDB 將無法保護和維護資料表。

DynamoDB 加密內容

加密內容是一組金鑰/值對,其中包含任意非私密資料。當您在加密資料的要求中包含加密內容時, AWS KMS 密碼編譯會將加密內容繫結至加密的資料。若要解密資料,您必須傳遞相同的加密內容。

DynamoDB 會在所有密 AWS KMS 碼編譯作業中使用相同的加密內容。如果使用客戶受管金鑰AWS 受管金鑰 來保護您的 DynamoDB 資料表,您可以使用加密內容來識別在稽核記錄和日誌中使用 KMS 金鑰的情況。它也會以純文字顯示在日誌中,例如AWS CloudTrailAmazon CloudWatch 日誌。

加密內容也可以用作政策和授予中的授權條件。DynamoDB 使用加密內容來限制允許存取客戶管理金鑰或您帳戶和區 AWS 受管金鑰 域的權。

在其請求中 AWS KMS,DynamoDB 會使用具有兩個金鑰值配對的加密內容。

"encryptionContextSubset": { "aws:dynamodb:tableName": "Books" "aws:dynamodb:subscriberId": "111122223333" }
  • 資料表 – 第一個鍵值對會識別 DynamoDB 正在加密的資料表。金鑰為 aws:dynamodb:tableName。值是資料表的名稱。

    "aws:dynamodb:tableName": "<table-name>"

    例如:

    "aws:dynamodb:tableName": "Books"
  • 帳戶 – 第二個鍵值對會識別 AWS 帳戶。金鑰為 aws:dynamodb:subscriberId。值是帳戶 ID。

    "aws:dynamodb:subscriberId": "<account-id>"

    例如:

    "aws:dynamodb:subscriberId": "111122223333"

監控動 DynamoDB 的互動與 AWS KMS

如果您使用客戶受管金鑰AWS 受管金鑰保護 DynamoDB 表,則可以使用 AWS CloudTrail 記錄來追蹤 DynamoDB 代表您傳送的請求。 AWS KMS

本節將討論 GenerateDataKeyDecryptCreateGrant 請求。此外,DynamoDB 會使用DescribeKey作業來判斷您選取的 KMS 金鑰是否存在於帳戶和區域中。當您刪除資料表時,它也會使用RetireGrant作業移除授權。

GenerateData關鍵

當您在資料表上啟用靜態加密時,DynamoDB 會建立唯一的資料表金鑰。它會傳送金GenerateData鑰要求 AWS KMS ,以指定資料表的 KMS 金鑰。

記錄 GenerateDataKey 操作的事件類似於以下範例事件。使用者是 DynamoDB 服務帳戶。參數包括秘密 KMS 金鑰的 Amazon 資源名稱 (ARN)、需要 256 位元金鑰的金鑰規範,以及識別資料表和 AWS 帳戶的加密內容

{ "eventVersion": "1.05", "userIdentity": { "type": "AWSService", "invokedBy": "dynamodb.amazonaws.com" }, "eventTime": "2018-02-14T00:15:17Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-west-2", "sourceIPAddress": "dynamodb.amazonaws.com", "userAgent": "dynamodb.amazonaws.com", "requestParameters": { "encryptionContext": { "aws:dynamodb:tableName": "Services", "aws:dynamodb:subscriberId": "111122223333" }, "keySpec": "AES_256", "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }, "responseElements": null, "requestID": "229386c1-111c-11e8-9e21-c11ed5a52190", "eventID": "e3c436e9-ebca-494e-9457-8123a1f5e979", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333", "sharedEventID": "bf915fa6-6ceb-4659-8912-e36b69846aad" }
解密

當您存取加密的 DynamoDB 資料表時,DynamoDB 需要解密資料表金鑰以便解密階層下方的金鑰。然後解密資料表中的資料。解密資料表金鑰。DynamoDB 會將解密請求傳送到指 AWS KMS 定資料表的 KMS 金鑰。

記錄 Decrypt 操作的事件類似於以下範例事件。使用者是您存取資料表的使用 AWS 帳戶 者中的主參與者。這些參數包括加密資料表金鑰 (做為密文 Blob),以及識別資料表和. AWS 帳戶 AWS KMS 從加密文字衍生出 KMS 金鑰的識別碼。

{ "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIGDTESTANDEXAMPLE:user01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-02-14T16:42:15Z" }, "sessionIssuer": { "type": "Role", "principalId": "AROAIGDT3HGFQZX4RY6RU", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" } }, "invokedBy": "dynamodb.amazonaws.com" }, "eventTime": "2018-02-14T16:42:39Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-west-2", "sourceIPAddress": "dynamodb.amazonaws.com", "userAgent": "dynamodb.amazonaws.com", "requestParameters": { "encryptionContext": { "aws:dynamodb:tableName": "Books", "aws:dynamodb:subscriberId": "111122223333" } }, "responseElements": null, "requestID": "11cab293-11a6-11e8-8386-13160d3e5db5", "eventID": "b7d16574-e887-4b5b-a064-bf92f8ec9ad3", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" }
CreateGrant

當您使用客戶受管金鑰AWS 受管金鑰 保護您的 DynamoDB 資料表時,DynamoDB 會使用授權,以允許服務執行持續資料保護和維護及耐用性任務。AWS 擁有的金鑰 上不需要這些授予。

DynamoDB 建立的授予專屬於特定資料表。CreateGrant請求中的主參與者是建立表格的使用者。

記錄 CreateGrant 操作的事件類似於以下範例事件。參數包括資料表的 KMS 金鑰的 Amazon 資源名稱 (ARN)、承授者委託人和淘汰委託人 (DynamoDB 服務),以及授予涵蓋的操作。它還包含一個限制,要求所有加密操作使用指定的加密內容

{ "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIGDTESTANDEXAMPLE:user01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-02-14T00:12:02Z" }, "sessionIssuer": { "type": "Role", "principalId": "AROAIGDTESTANDEXAMPLE", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" } }, "invokedBy": "dynamodb.amazonaws.com" }, "eventTime": "2018-02-14T00:15:15Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-west-2", "sourceIPAddress": "dynamodb.amazonaws.com", "userAgent": "dynamodb.amazonaws.com", "requestParameters": { "keyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "retiringPrincipal": "dynamodb.us-west-2.amazonaws.com", "constraints": { "encryptionContextSubset": { "aws:dynamodb:tableName": "Books", "aws:dynamodb:subscriberId": "111122223333" } }, "granteePrincipal": "dynamodb.us-west-2.amazonaws.com", "operations": [ "DescribeKey", "GenerateDataKey", "Decrypt", "Encrypt", "ReEncryptFrom", "ReEncryptTo", "RetireGrant" ] }, "responseElements": { "grantId": "5c5cd4a3d68e65e77795f5ccc2516dff057308172b0cd107c85b5215c6e48bde" }, "requestID": "2192b82a-111c-11e8-a528-f398979205d8", "eventID": "a03d65c3-9fee-4111-9816-8bf96b73df01", "readOnly": false, "resources": [ { "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" }