本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 中授予 AWS KMS
授予是一種政策工具,允許AWS 委託人 AWS 或服務委託人在密碼編譯操作中使用 KMS 金鑰。它也可以讓其檢視 KMS 金鑰 (DescribeKey),並建立和管理授予。當授權存取 KMS 金鑰時,會考慮與金鑰政策和 IAM 政策一起授予。授予通常用於臨時許可,因為您可以建立授予、使用其許可並刪除授予,而無需變更金鑰政策或 IAM 政策。
與 整合的 AWS 服務通常會使用授權 AWS KMS 來加密靜態資料。服務會代表帳戶中的使用者建立授予、使用其許可,並在其任務完成後立即淘汰授予。如需 AWS 服務使用授權方式的詳細資訊,請參閱服務使用者指南或開發人員指南中的靜態加密主題。
授予是非常靈活和有用的存取控制機制。當您建立 KMS 金鑰的授予時,只要授予中的所有指定條件都滿足,授予就會允許承授者主體呼叫 KMS 金鑰上指定的授予操作。
-
每個授予只允許存取一個 KMS 金鑰。您可以在不同的 AWS 帳戶中為 KMS 金鑰建立授予。
-
授予可以允許存取 KMS 金鑰,但不能拒絕存取。
-
每個授予都有一個承授者,可以是承授者委託人 (IAM AWS 身分) 或承授者服務委託人 AWS (服務委託人)。您必須指定
GranteePrincipal或GranteeServicePrincipal,但不能同時指定兩者。 -
授予只能允許授予操作。授予操作必須由授予中的 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 金鑰、在密碼編譯操作中使用 KMS 金鑰,以及建立和淘汰授予。如需詳細資訊,請參閱授予操作。您也可以使用授予限制條件以限制授予中的許可。
-
主體可以從金鑰政策或 IAM 政策取得建立授予的許可。針對 KMS 金鑰的任何授與操作,透過政策取得
kms:CreateGrant許可的主體均可建立授與。這些主體不需擁有他們對金鑰授與的許可。當允許政策中的kms:CreateGrant許可時,您可以使用政策條件來限制此許可。 -
主體也可以從授予取得建立授予的許可。這些委託人只能委派他們獲得授予的許可,即使他們擁有政策的其他許可。如需詳細資訊,請參閱授與 CreateGrant 許可。
授予概念
若要有效地使用授予,您需要了解 AWS KMS 使用的條款和概念。
- 授予限制條件
-
限制授予中許可的條件。 AWS KMS 支援兩種類型的授予限制:
-
加密內容限制 — 根據密碼編譯操作請求中包含的加密內容來限制許可。此限制僅適用於對稱加密 KMS 金鑰。
-
SourceArn 限制條件 — 限制對代表特定 AWS 資源提出的請求授予許可。這會有效地將aws:SourceArn全域條件索引鍵放入授予中。此限制條件適用於所有類型的 KMS 金鑰。
如需詳細資訊,請參閱使用授予限制條件。
-
- 授予 ID
-
用於 KMS 金鑰的授予唯一識別符。您可以使用授予 ID,與金鑰識別符一起,以識別 RetireGrant 或 RevokeGrant 請求。
- 授予操作
-
您可以在授予中允許的 AWS KMS 操作。如果您指定其他操作,則 CreateGrant 請求會失敗,
ValidationError為例外狀況。這些也是接受授予字符的操作。如需有關這些許可的詳細資訊,請參閱 AWS KMS 許可。這些授予操作實際上代表使用操作的許可。因此,對於
ReEncrypt操作,您可以指定ReEncryptFrom、ReEncryptTo,或兩者的ReEncrypt*。授予操作包括:
-
密碼編譯操作
-
其他操作
您允許的授予作業必須由授予中的 KMS 金鑰支援。若您指定不支援的操作,則 CreateGrant 請求會失敗,
ValidationError為例外狀況。例如,對稱加密 KMS 金鑰的授予不允許 Sign、Verify、GenerateMac或VerifyMac操作。非對稱 KMS 金鑰的授予不允許任何產生資料金鑰或資料金鑰對的操作。 -
- 授予字符
-
AWS KMS API 遵循最終一致性模型。當您建立授權時,在該變更適用於整個 AWS KMS之前,可能會有短暫延遲。變更傳播到整個系統通常需要不到幾秒鐘的時間,但在某些情況下可能需要幾分鐘。如果您在整個系統中完全傳播授權之前嘗試使用授權,則可能會收到拒絕存取錯誤。授予字符可讓您參考授予並立即使用授予許可。
授予字符是唯一的,非秘密的,可變長度的,base64 編碼的字串,代表授予。您可以使用授予字符來識別任何授予操作中的授予。但是,由於字符值是雜湊摘要,因此它不會顯示有關授予的任何詳細資訊。
授權字符設計為只能在整個 AWS KMS中完全傳播授權之後才能使用。在此之後,承授者主體可以使用授予中的許可,而不提供授予字符或任何其他授予的證據。您可以隨時使用授予字符,但一旦授予最終一致, AWS KMS 會使用授予來確定許可,而不是授予字符。
例如,下列命令會呼叫 GenerateDataKey 操作。它使用授予字符來表示授予呼叫者 (承授者主體) 許可來呼叫指定 KMS 金鑰上的
GenerateDataKey。$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 $tokenCreateGrant是傳回授予字符的唯一操作。您無法從任何其他 AWS KMS 操作或從 CreateGrant 操作的 CloudTrail 日誌事件取得授予字符。ListGrants 和 ListRetirableGrants 操作會傳回授予 ID,但不是授予字符。如需詳細資訊,請參閱使用授予字符。
- 承授者主體
-
取得授予中指定許可的 AWS 委託人 (IAM 身分)。
承授者委託人可以是任何 AWS 委託人,包括 AWS 帳戶 (根)、IAM 使用者、IAM 角色、聯合角色或使用者,或擔任角色的使用者。承授者主體可以在與 KMS 金鑰相同的帳戶中,也可以在不同的帳戶中。不過,承授者主體不能是服務主體、IAM 群組,或 AWS 組織。
若要指定承授者委託人,請使用 CreateGrant 請求中的
GranteePrincipal參數。注意
IAM 最佳實務不建議使用具有長期憑證的 IAM 使用者。盡可能使用提供臨時憑證的 IAM 角色。如需詳細資訊,請參閱《IAM 使用者指南》中的 IAM 中的安全性最佳實務。
- 承授者服務主體
-
取得授予中指定許可的 AWS 服務主體。若要指定承授者服務委託人,請使用 CreateGrant 請求中的
GranteeServicePrincipal參數。當您使用 建立授予時
GranteeServicePrincipal,您還必須包含 SourceArn grant constraint。SourceArn限制條件可確保服務主體只有在代表指定的 AWS 資源提出請求時,才能使用 KMS 金鑰。當您指定 時
GranteeServicePrincipal,也必須指定 RetiringPrincipal或 RetiringServicePrincipal。
注意
您必須指定 GranteePrincipal 或 GranteeServicePrincipal,但不能同時指定兩者。
- 淘汰授予
-
終止授予。當您完成使用許可時,就會淘汰授予。
撤銷和淘汰授予都會刪除授予。但是,由授予中指定的主體完成淘汰動作。撤銷通常是由金鑰管理員完成。如需詳細資訊,請參閱淘汰和撤銷授予。
- 淘汰主體
-
可以淘汰授予的主體。您可以在授予中指定淘汰的主體,但不是必需的。淘汰委託人可以是任何 AWS 委託人,包括 AWS 帳戶 IAM 使用者、IAM 角色、聯合身分使用者和擔任的角色使用者。淘汰的主體可以在與 KMS 金鑰相同的帳戶中,也可以在不同的帳戶中。
若要指定淘汰委託人,請使用 CreateGrant 請求中的
RetiringPrincipal參數。注意
IAM 最佳實務不建議使用具有長期憑證的 IAM 使用者。盡可能使用提供臨時憑證的 IAM 角色。如需詳細資訊,請參閱《IAM 使用者指南》中的 IAM 中的安全性最佳實務。
- 淘汰服務主體
-
有權淘汰授予的 AWS 服務主體。若要指定淘汰的服務主體,請使用 CreateGrant 請求中的
RetiringServicePrincipal參數。
注意
您可以指定 RetiringPrincipal 或 RetiringServicePrincipal,但不能同時指定兩者。
如需誰可以淘汰授予的詳細資訊,請參閱 淘汰和撤銷授予。
- 撤銷 (授予)
-
終止授予。您撤銷授予,以主動拒絕授予允許的許可。
撤銷和淘汰授予都會刪除授予。但是,由授予中指定的主體完成淘汰動作。撤銷通常是由金鑰管理員完成。如需詳細資訊,請參閱淘汰和撤銷授予。
- 最終一致性 (用於授予)
-
AWS KMS API 遵循最終一致性
模型。當您建立、淘汰或撤銷授權時,在該變更適用於整個 AWS KMS之前,可能會有短暫延遲。變更傳播到整個系統通常需要不到幾秒鐘的時間,但在某些情況下可能需要幾分鐘。 如果遇到非預期的錯誤,您可能會發現這個短暫的延遲。例如,如果您在全部已知授予之前嘗試管理新的授予或使用新授予中的許可 AWS KMS,您可能會收到存取遭拒錯誤。如果您淘汰或撤銷授予,承授者主體可能仍然可以在短期內使用其許可,直到授予完全刪除為止。典型的策略是重試請求,而 AWS SDKs 包含自動退避和重試邏輯。
AWS KMS 具有可減輕此短暫延遲的功能。
-
若要立即使用新授予中的許可,請使用授予字符。您可以使用授予字符來引用任何授予操作中的授予。如需說明,請參閱使用授予字符。
-
CreateGrant 操作具有
Name參數,可防止重試操作建立重複授予。
注意
授予許可會取代授予的有效性,直到服務中的所有端點都更新為新的授予狀態為止。在大多數情況下,最終一致性將在五分鐘內達成。
如需詳細資訊,請參閱《AWS KMS 最終一致性》。
-