加密內容 - AWS Key Management Service

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

加密內容

注意

您無法在具有非對稱KMS金鑰HMACKMS金鑰 的密碼編譯操作中指定加密內容。非對稱演算法和MAC演算法不支援加密內容。

具有對稱加密KMS金鑰的所有 AWS KMS 密碼編譯操作都接受加密內容 ,這是一組選用的非秘密金鑰值對,其中可能包含有關資料的其他內容資訊。您可以在 中的Encrypt操作中插入加密內容 AWS KMS ,以增強解密呼叫的授權 AWS KMS API和可稽核性。 AWS KMS 會使用加密內容作為其他驗證資料 (AAD),以支援驗證加密。加密內容以密碼編譯方式綁定到加密文字,因此需要相同的加密內容才能解密資料。

加密內容不是秘密,也不被加密。它會以純文字出現在 AWS CloudTrail Logs 中,因此您可以使用它來識別和分類密碼編譯操作。您的加密內容不應包含敏感資訊。建議在您的加密內容中描述要加密或解密的資料。例如,當您加密檔案時,您可以使用檔案路徑的一部分作為加密內容。

"encryptionContext": { "department": "10103.0" }

例如,當加密使用 Amazon Elastic Block Store (AmazonEBS) CreateSnapshot操作建立的磁碟區和快照時,Amazon EBS會使用磁碟區 ID 作為加密內容值。

"encryptionContext": { "aws:ebs:id": "vol-abcde12345abc1234" }

您也可以使用加密內容來精簡或限制帳戶中對 AWS KMS keys 的存取。您可以使用加密內容做為授與中的限制,以及做為政策陳述式中的條件

若要了解如何使用加密內容來保護加密資料的完整性,請參閱 AWS 安全部落格上的文章如何使用 AWS Key Management Service 和 來保護加密資料的完整性 EncryptionContext

更多有關加密內容的資訊。

加密內容規則

AWS KMS 針對加密內容金鑰和值強制執行下列規則。

  • 加密內容對中的金鑰和值必須是簡單的常值字串。如果您使用不同的類型,例如整數或浮點數, AWS KMS 會將它解譯為字串。

  • 加密內容中的金鑰和值可以包含 Unicode 字元。如果加密內容包含金鑰政策中不允許的字元IAM,您將無法在政策條件金鑰中指定加密內容,例如 kms:EncryptionContext:context-keykms:EncryptionContextKeys。如需有關金鑰政策文件規則的詳細資訊,請參閱金鑰政策格式。如需IAM政策文件規則的詳細資訊,請參閱 IAM 使用者指南 中的IAM名稱需求

政策中的加密內容

加密內容主要用於驗證完整性和真確性。但您也可以使用加密內容來控制對金鑰政策和IAM政策 AWS KMS keys 中對稱加密的存取。

kms:EncryptionContext:kms:EncryptionContextKeys 條件索引鍵僅在請求包含特定加密內容索引鍵或索引鍵值對時允許 (或拒絕) 許可。

例如,下列金鑰政策陳述式允許RoleForExampleApp角色在Decrypt操作中使用 KMS 金鑰。它使用 kms:EncryptionContext:context-key 條件金鑰,只在請求中的加密內容包含 AppName:ExampleApp 加密內容對時,才允許此許可。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" } } }

如需這些加密內容條件金鑰的詳細資訊,請參閱 的條件索引鍵 AWS KMS

授與中的加密內容

當您建立授予 時,您可以包含授予限制,以建立授予許可的條件。 AWS KMS 支援兩個授予限制,EncryptionContextEquals以及 EncryptionContextSubset,兩者都涉及密碼編譯操作請求中的加密內容。當您使用這些授予限制條件時,只有在密碼編譯操作請求中的加密內容滿足授予限制條件的需求時,授予中的許可才會生效。

例如,您可以將EncryptionContextEquals授予限制新增至允許GenerateDataKey操作的授予。藉由此限制條件,只有在請求中的加密內容與授予限制條件中的加密內容大小寫全部相符時,授予才會允許操作。

$ aws kms create-grant \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:user/exampleUser \ --retiring-principal arn:aws:iam::111122223333:role/adminRole \ --operations GenerateDataKey \ --constraints EncryptionContextEquals={Purpose=Test}

來自承授者委託人的類似下列請求應當滿足 EncryptionContextEquals 限制條件。

$ aws kms generate-data-key \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --key-spec AES_256 \ --encryption-context Purpose=Test

如需授予限制條件的詳細資訊,請參閱 使用授予限制條件。如需授予的詳細資訊,請參閱 在 中授予 AWS KMS

記錄加密內容

AWS KMS 使用 AWS CloudTrail 來記錄加密內容,以便您可以判斷已存取的KMS金鑰和資料。日誌項目確切顯示哪些KMS金鑰用於加密或解密日誌項目中加密內容所參考的特定資料。

重要

由於加密內容會被記錄,因此不能包含敏感資訊。

儲存加密內容

如要簡化在您呼叫 DecryptReEncrypt 操作時的任何加密內容使用,您可以將加密內容與加密的資料存放在一起。我們建議您只存放足夠的加密內容,以協助您在需要用它來加密或解密時建立完整的加密內容。

例如,如果加密內容是完整路徑檔案,只需將部分路徑與加密的檔案內容一起存放。接著,當您需要完整的加密內容,請從存放的片段中重新建構。如果有人擅自竄改檔案,例如重新命名或移到不同的位置,加密內容值會變更,解密請求會失敗。