在 中授予 AWS KMS - AWS Key Management Service

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

在 中授予 AWS KMS

授予是允許AWS 主體在密碼編譯操作中使用KMS金鑰的政策工具。它也可以讓他們檢視KMS金鑰 (DescribeKey) 並建立和管理授予。授權存取KMS金鑰時,會考慮授予以及金鑰政策和IAM政策 。授予通常用於臨時許可,因為您可以建立、使用其許可,以及刪除它,而無需變更您的金鑰政策IAM。

與 整合的 AWS 服務通常使用 授予 AWS KMS 來加密靜態資料。服務會代表帳戶中的使用者建立授予、使用其許可,並在其任務完成後立即淘汰授予。如需 AWS 服務使用授予方式的詳細資訊,請參閱服務使用者指南或開發人員指南中的靜態加密主題。

授予是非常靈活和有用的存取控制機制。當您為KMS金鑰建立授予時,只要符合授予中指定的所有條件,授予會允許承授者主體在KMS金鑰上呼叫指定的授予操作。

  • 每個授予允許只存取一個KMS金鑰。您可以在不同的 中為KMS金鑰建立授予 AWS 帳戶。

  • 授予可以允許存取KMS金鑰,但不能拒絕存取。

  • 每個授予都有一個承授者主體。承授者主體可以在 AWS 帳戶 與KMS金鑰相同的 或不同帳戶中代表一或多個身分。

  • 授予只能允許授予操作。授予操作必須由授予中的 KMS 金鑰支援。如果您指定不支援的操作,則CreateGrant請求會失敗,但有ValidationError例外狀況。

  • 承授者主體可以使用授予授予授予的許可,而無需指定授予,就像許可來自金鑰政策一樣IAM。不過,由於 AWS KMS API遵循最終一致性模型,當您建立、淘汰或撤銷授予時,在 變更在整個 中可用之前,可能會有短暫的延遲 AWS KMS。若要立即使用授予中的許可,請使用授予字符

  • 授權主體可以刪除授予 (對其進行淘汰撤銷)。刪除授予會消除授予允許的所有許可。您不需要弄清楚要新增或移除哪些政策,即可復原授予。

  • AWS KMS 會限制每個KMS金鑰的授予數量。如需詳細資訊,請參閱 每個KMS金鑰的授與數:50,000

建立授予和給予他人建立授予的許可時,請小心謹慎。建立授予的許可具有安全性影響,就像允許 kms:PutKeyPolicy設定政策的許可一樣。

  • 具有為KMS金鑰 (kms:CreateGrant) 建立授予的許可使用者可以使用授予來允許使用者和角色使用KMS金鑰,包括 AWS 服務。這些主體可以是您本身的身分, AWS 帳戶 也可以是不同帳戶或組織中的身分。

  • 授予只能允許操作的子集 AWS KMS 。您可以使用授予來允許主體檢視KMS金鑰、在密碼編譯操作中使用,以及建立和淘汰授予。如需詳細資訊,請參閱授予操作。您也可以使用授予限制條件來限制授予對稱加密金鑰中的許可。

  • 主體可以從金鑰政策或IAM政策取得建立授予的許可。從政策取得kms:CreateGrant許可的主體可以為KMS金鑰上的任何授予操作建立授予。這些主體不需擁有他們對金鑰授與的許可。當允許政策中的 kms:CreateGrant 許可時,您可以使用政策條件來限制此許可。

  • 主體也可以從授予取得建立授予的許可。這些委託人只能委派他們獲得授予的許可,即使他們擁有政策的其他許可。如需詳細資訊,請參閱 授予 CreateGrant 許可

授予概念

若要有效地使用授予,您需要了解 AWS KMS 使用的條款和概念。

授予限制條件

限制授予中許可的條件。目前, AWS KMS 支援根據密碼編譯操作請求中的加密內容來授予限制。如需詳細資訊,請參閱 使用授予限制條件

授予 ID

KMS 金鑰授予的唯一識別符。您可以使用授予 ID 以及金鑰識別符 來識別 RetireGrantRevokeGrant請求中的授予。

授予操作

您可以在授予中允許 AWS KMS 的操作。如果您指定其他操作,則CreateGrant請求會失敗,但有ValidationError例外狀況。這些也是接受授予字符的操作。如需有關這些許可的詳細資訊,請參閱 AWS KMS 許可

這些授予操作實際上代表使用操作的許可。因此,對於 ReEncrypt 操作,您可以指定 ReEncryptFromReEncryptTo,或兩者的 ReEncrypt*

授予操作包括:

您允許的授予操作必須由授予中的 KMS 金鑰支援。如果您指定不支援的操作,則CreateGrant請求會失敗,但有ValidationError例外狀況。例如,對稱加密KMS金鑰的授予不允許簽署 驗證 GenerateMacVerifyMac操作。非對稱KMS金鑰的授予不允許產生資料金鑰或資料金鑰對的任何操作。

授予字符

AWS KMS API 遵循最終一致性模型。當您建立授權時,在該變更適用於整個 AWS KMS之前,可能會有短暫延遲。變更傳播到整個系統通常需要不到幾秒鐘的時間,但在某些情況下可能需要幾分鐘。如果您在整個系統中完全傳播授權之前嘗試使用授權,則可能會收到拒絕存取錯誤。授予字符可讓您參考授予並立即使用授予許可。

授予字符是唯一的,非秘密的,可變長度的,base64 編碼的字串,代表授予。您可以使用授予字符來識別任何授予操作中的授予。但是,由於字符值是雜湊摘要,因此它不會顯示有關授予的任何詳細資訊。

授權字符設計為只能在整個 AWS KMS中完全傳播授權之後才能使用。在此之後,承授者主體可以使用授予中的許可,而不提供授予字符或任何其他授予的證據。您可以隨時使用授予權杖,但一旦授予最終一致, AWS KMS 會使用授予來決定許可,而不是授予權杖。

例如,下列命令會呼叫 GenerateDataKey操作。它使用授予權杖來表示授予呼叫者 (承授者主體) 許可以GenerateDataKey呼叫指定KMS金鑰的授予。

$ aws kms generate-data-key \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --key-spec AES_256 \ --grant-token $token

您也可以使用授予字符來識別管理授予之操作中的授予。例如,淘汰委託人可以在對RetireGrant操作的呼叫中使用授予權杖。

$ aws kms retire-grant \ --grant-token $token

CreateGrant 是傳回授予字符的唯一操作。您無法從任何其他 AWS KMS 操作或從 CreateGrant 該操作的CloudTrail 日誌事件取得授予權杖。ListGrantsListRetirableGrants操作會傳回授予 ID ,但不會傳回授予權杖。

如需詳細資訊,請參閱 使用授予字符

承授者主體

取得授予中所指定許可的身分。每個授予都有一個承授者主體,但承授者主體可以代表多個身分。

承授者主體可以是任何 AWS 主體,包括 AWS 帳戶 (根)、IAM使用者 IAM角色 聯合角色 或使用者 或擔任角色的使用者。承授者主體可以位於與KMS金鑰相同的 帳戶或不同的 帳戶。不過,承授者主體不能是服務主體 IAM群組 AWS 組織

注意

IAM 最佳實務會阻止使用具有長期憑證IAM的使用者。盡可能使用提供臨時憑證IAM的角色。如需詳細資訊,請參閱 IAM 使用者指南 中的安全最佳實務IAM

淘汰授予

終止授予。當您完成使用許可時,就會淘汰授予。

撤銷和淘汰授予都會刪除授予。但是,由授予中指定的主體完成淘汰動作。撤銷通常是由金鑰管理員完成。如需詳細資訊,請參閱 淘汰和撤銷授予

淘汰主體

可以淘汰授予的主體。您可以在授予中指定淘汰的主體,但不是必需的。淘汰主體可以是任何 AWS 主體,包括 AWS 帳戶、IAM使用者、IAM角色、聯合身分使用者和擔任角色的使用者。淘汰主體可以位於與KMS金鑰相同的 帳戶或不同的 帳戶。

注意

IAM 最佳實務會阻止使用具有長期憑證IAM的使用者。盡可能使用提供臨時憑證IAM的角色。如需詳細資訊,請參閱 IAM 使用者指南 中的安全最佳實務IAM

除了授予中指定的淘汰委託人之外,授予也可以由建立授予 AWS 帳戶 的 淘汰。承授者主體可以淘汰授予 (如果授予允許 RetireGrant 操作)。此外, AWS 帳戶 或 AWS 帳戶 是淘汰主體的 ,可以將淘汰授予給相同 中IAM主體的許可委派給該主體 AWS 帳戶。如需詳細資訊,請參閱 淘汰和撤銷授予

撤銷 (授予)

終止授予。您撤銷授予,以主動拒絕授予允許的許可。

撤銷和淘汰授予都會刪除授予。但是,由授予中指定的主體完成淘汰動作。撤銷通常是由金鑰管理員完成。如需詳細資訊,請參閱 淘汰和撤銷授予

最終一致性 (用於授予)

AWS KMS API 遵循最終一致性模型。當您建立、淘汰或撤銷授權時,在該變更適用於整個 AWS KMS之前,可能會有短暫延遲。變更傳播到整個系統通常需要不到幾秒鐘的時間,但在某些情況下可能需要幾分鐘。

如果遇到非預期的錯誤,您可能會發現這個短暫的延遲。例如,如果您嘗試在 整個 中知道授予之前管理新的授予或使用新授予中的許可 AWS KMS,您可能會收到存取遭拒的錯誤。如果您淘汰或撤銷授予,承授者主體可能仍然可以在短期內使用其許可,直到授予完全刪除為止。典型的策略是重試請求,有些 AWS SDKs包含自動退避和重試邏輯。

AWS KMS 具有可減輕此短暫延遲的功能。

  • 若要立即使用新授予中的許可,請使用授予字符。您可以使用授予字符來引用任何授予操作中的授予。如需說明,請參閱 使用授予字符

  • CreateGrant 操作具有一個Name參數,可防止重試操作建立重複授予。

注意

授予許可會取代授予的有效性,直到服務中的所有端點都更新為新的授予狀態為止。在大多數情況下,最終一致性將在五分鐘內達成。

如需詳細資訊,請參閱《AWS KMS 最終一致性》。