本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
如何遷移和部署AWS Encryption SDK
從移轉時AWS Encryption SDK1.7 版。x至 2.0 版。x或更高版本,您必須安全地轉換為使用主要承諾。否則,您的應用程序將遇到無法解密的密文。如果您使用AWS KMS主金鑰提供者時,您必須更新為以嚴格模式或探索模式建立主金鑰提供者的新建構函式。
注意
本主題是為從舊版移轉的使用者而設計AWS Encryption SDK至 2.0 版。x或更高版本。如果您是新手AWS Encryption SDK,您可以使用預設設定立即開始使用最新的可用版本。
為了避免無法解密您需要閱讀的密文的嚴重情況,我們建議您在多個不同階段進行遷移和部署。在開始下一個階段之前,請確認每個階段都已完成並完全部署。這對於具有多個主機的分佈式應用程序尤為重要。
階段 1:將您的應用程式更新至最新的 1.x版
更新至最新的 1.x適用於您編程語言的版本。在啟動階段 2 之前,請仔細測試、部署您的變更,並確認更新已傳播到所有目的地主機。
重要
確認您最新的 1.x版本 1.7 版。x或更高版本AWS Encryption SDK。
最新的 1.x的版本AWS Encryption SDK與舊版的向後相容AWS Encryption SDK並向前兼容 2.0 版本。x和更新版本。它們包括 2.0 版中存在的新功能。x,但包含針對此遷移設計的安全預設值。它們允許您升級您的AWS KMS主要金鑰提供者 (如有必要),並使用演算法套件完全部署,這些演算法套件可以透過金鑰承諾解密文字。
-
取代已停用的元素,包括舊版的建構函式AWS KMS主金鑰提供者。在 中蟒蛇
,請務必開啟棄用警告。在最新的 1 中棄用的代碼元素。x版本從 2.0 版本中刪除。x和更新版本。 -
明確設定您的承諾政策
ForbidEncryptAllowDecrypt
。雖然這是最新 1 中唯一有效的值。x版本,當您使用此版本中引入的 API 時,需要此設定。當您遷移到 2.0 版時,它可以防止您的應用程式拒絕在沒有金鑰承諾的情況下加密的加密文字。x和更新版本。如需詳細資訊,請參閱 設定您的承諾政策。 -
如果您使用AWS KMS主金鑰提供者,您必須將舊版主金鑰提供者更新為支援的主金鑰提供者嚴格模式和搜尋模式。此更新是必需的適用於 JAVA 的 AWS Encryption SDK、適用於 Python 的 AWS Encryption SDK,以及AWS加密 CLI。如果您在探索模式下使用主要金鑰提供者,建議您實作探索篩選器,以限制特定金鑰的包裝金鑰AWS 帳戶。此更新是可選的,但它是最佳實務我們推薦。如需詳細資訊,請參閱 更新 AWS KMS 主金鑰提供者。
-
如果您使用AWS KMS探索鑰匙圈,我們建議您加入探索篩選器,將解密中使用的包裝金鑰限制為特定金鑰AWS 帳戶。此更新是可選的,但它是最佳實務我們推薦。如需詳細資訊,請參閱 正在更新AWS KMS鑰匙圈。
階段 2:將您的應用程式更新至最新版本
部署最新的 1 之後。x版本成功到所有主機,您可以升級到 2.0 版本。x和更新版本。2.0 版x包括所有早期版本的重大變更AWS Encryption SDK。不過,如果您進行階段 1 中建議的程式碼變更,您可以避免在移轉至最新版本時發生錯誤。
在您更新至最新版本之前,請確認您的承諾產品原則已一致設定為ForbidEncryptAllowDecrypt
。然後,根據您的數據配置,您可以按照自己的步調遷移到RequireEncryptAllowDecrypt
然後到默認設置,RequireEncryptRequireDecrypt
。我們建議使用一系列轉換步驟,如下列模式。
-
開頭為您的承諾政策設定為
ForbidEncryptAllowDecrypt
。所以此AWS Encryption SDK可以使用密鑰承諾解密消息,但尚未使用密鑰承諾進行加密。 -
當您就緒後,將您的承諾政策更新至
RequireEncryptAllowDecrypt
。所以此AWS Encryption SDK開始加密您的資料主要承諾。它可以在有和沒有密鑰承諾的情況下解密密文。在更新承諾政策之前
RequireEncryptAllowDecrypt
,確認您最新的 1。xversion 會部署到所有主機,包括解密您產生的加密文字的任何應用程式的主機。的版本AWS Encryption SDK1.7 版之前的版本。x無法解密使用金鑰承諾加密的郵件。這也是將指標新增至應用程式的好時機,以測量您是否仍在處理密文,而不需要關鍵承諾。這可協助您判斷何時可以安全地將承諾用量原則設定更新為
RequireEncryptRequireDecrypt
。對於某些應用程式 (例如那些在 Amazon SQS 佇列中加密訊息的應用程式),這可能表示等待時間足夠長,以致所有在舊版本下加密的加密文字都已重新加密或刪除。對於其他應用程式 (例如加密的 S3 物件),您可能需要下載、重新加密和重新上傳所有物件。 -
如果您確定沒有任何未使用金鑰承諾的加密郵件,您可以將承諾用戶原則更新至
RequireEncryptRequireDecrypt
。此值可確保您的資料永遠透過金鑰承諾加密和解密。此設定為預設值,因此您不需要明確設定,但我們建議您這麼做。一個明確的設置將援助除錯以及如果您的應用程式在沒有金鑰承諾的情況下遇到加密文字加密時可能需要的任何潛在回復。