如果您使用的密鑰類型不支持基于密鑰版本的自動輪轉(zhuǎn),您可以基于使用場景,直接輪轉(zhuǎn)使用的用戶主密鑰(CMK),通過人工的方式實(shí)現(xiàn)密鑰輪轉(zhuǎn)。由于這種方式建立在CMK之上,對于支持和不支持自動輪轉(zhuǎn)的CMK而言,都可以作為特殊場景下的替代技術(shù)方案。
應(yīng)用自定義加密場景
- 在將身份證號、信用卡號、家庭地址等敏感信息寫入數(shù)據(jù)庫之前進(jìn)行加密。
- 在上傳數(shù)據(jù)到OSS之前,進(jìn)行客戶端加密。
- 對包含敏感信息的應(yīng)用配置文件、SSL私鑰證書等服務(wù)配置文件進(jìn)行加密。
- 初始設(shè)置
- 管理員創(chuàng)建CMK,假定ID為CMK-A。
- 管理員為上述CMK-A綁定別名alias/MyAppKey。
- 應(yīng)用加密模塊調(diào)用Encrypt接口時(shí),在KeyId參數(shù)傳入別名alias/MyAppKey:KMS發(fā)現(xiàn)alias/MyAppKey綁定了ID為CMK-A的主密鑰,因此使用CMK-A執(zhí)行加密。
- 應(yīng)用解密模塊調(diào)用Decrypt接口時(shí),不傳入KeyId參數(shù),KMS使用實(shí)際用于加密數(shù)據(jù)的CMK執(zhí)行解密。
- 人工輪轉(zhuǎn)密鑰
- 管理員創(chuàng)建新的CMK,假定ID為CMK-B。
- 管理員調(diào)用UpdateAlias,將別名alias/MyAppKey綁定到CMK-B。
- 應(yīng)用加密模塊調(diào)用Encrypt接口時(shí),在KeyId參數(shù)傳入別名alias/MyAppKey:KMS發(fā)現(xiàn)alias/MyAppKey綁定了ID為CMK-B的主密鑰,因此使用CMK-B執(zhí)行加密。
- 應(yīng)用解密模塊調(diào)用Decrypt接口時(shí),不傳入KeyId參數(shù),KMS使用實(shí)際用于加密數(shù)據(jù)的CMK執(zhí)行解密。
云產(chǎn)品服務(wù)端加密場景
- KMS側(cè)配置自動輪轉(zhuǎn)策略對云產(chǎn)品服務(wù)端加密產(chǎn)生效果
這種情形通常是因?yàn)樵飘a(chǎn)品配置指定CMK加密之后,會持續(xù)性調(diào)用KMS的GenerateDataKey產(chǎn)生新的數(shù)據(jù)密鑰,因此KMS產(chǎn)生新的主版本后,云產(chǎn)品會使用到新的主版本來加密新產(chǎn)生的數(shù)據(jù)密鑰。這類云產(chǎn)品包括OSS等。對于這類情況,如果您希望具備自動輪轉(zhuǎn)密鑰的能力,則不能使用服務(wù)密鑰,也不能使用自帶密鑰(您導(dǎo)入到KMS的外部密鑰),因?yàn)樗鼈儾⒉恢С置荑€自動輪轉(zhuǎn)。
- KMS側(cè)配置自動輪轉(zhuǎn)策略對云產(chǎn)品服務(wù)端加密不產(chǎn)生效果
這種情形通常是因?yàn)樵飘a(chǎn)品配置指定CMK加密之后,只會對特定資源調(diào)用一次KMS的加密API,因此KMS即便輪轉(zhuǎn)CMK產(chǎn)生新的密鑰版本,云產(chǎn)品也無法使用。例如ECS對云盤的加密,只會一次性調(diào)用KMS的GenerateDataKey產(chǎn)生數(shù)據(jù)密鑰用于卷加密,后續(xù)不會再對整個(gè)磁盤的卷加密密鑰(Volume Encryption Key)進(jìn)行更新。
如果您在第一種情形中使用了自帶密鑰或者希望對數(shù)據(jù)密鑰也進(jìn)行變更輪轉(zhuǎn),或者應(yīng)用場景屬于第二種情形,則可以通過變更配置、拷貝數(shù)據(jù)等方式達(dá)成密鑰輪轉(zhuǎn)的目的。這類解決方案依賴于云產(chǎn)品的特定功能,詳情請參見相關(guān)云產(chǎn)品文檔。