本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將硬式編碼的密碼移至 AWS Secrets Manager
如果您的程式碼中有純文字機密,我們建議您輪換它們並將它們儲存在機密管理員中。將機密移動到機密管理員可解決機密顯示問題,讓任何看到程式碼的人無法看見,因為再下一步,您的程式碼就能直接從機密管理員擷取機密。輪換機密將撤消目前已寫死機密,使其不再有效。
如需資料庫憑證機密,請參閱 將硬式編碼的資料庫認證移至 AWS Secrets Manager。
在開始之前,您需要決定需要存取該機密的人。我們建議您使用兩個IAM角色來管理密碼的權限:
-
管理組織中機密的角色。如需相關資訊,請參閱 Secrets Manager 管理員許可。您將使用此角色建立並輪換機密。
-
可以在執行階段使用密碼的角色,例如在本教學課程中,您使用
RoleToRetrieveSecretAtRuntime
。 你的代碼假定這個角色來檢索密碼。在本教學中,您僅授予該角色擷取一個機密值的權限,並透過使用機密的資源策略授予權限。如需其他替代方案,請參閱 後續步驟。
步驟 1:建立機密
第一步是將現有的已寫死機密複製到機密管理員中。如果密碼與 AWS 資源,將其存儲在與資源相同的區域中。否則,請將其儲存在針對您使用案例延遲最低的區域中。
若要建立機密 (控制台)
開啟 Secrets Manager 主控台,位於https://console.aws.amazon.com/secretsmanager/
。 -
選擇儲存新機密。
-
在 Choose secret type (選擇秘密類型) 頁面上,執行下列動作:
-
針對 Secret type (機密類型),選擇 Other type of secret (其他機密類型)。
-
將您的機密輸入為 Key/value pairs (金鑰/值對) 或 Plaintext (純文字)。一些範例:
-
對於加密金鑰,請選擇 aws/秘密管理員以使用 AWS 受管金鑰 對於 Secrets Manager。使用此金鑰無需任何成本。您還可以使用自己的客戶管理密鑰,例如從另一個密鑰訪問密鑰 AWS 帳戶。 如需有關使用客戶管理金鑰的成本資訊,請參閱定價。
-
選擇 Next (下一步)。
-
-
在 Choose secret type (選擇秘密類型) 頁面上,執行下列動作:
-
輸入描述性的 Secret name (機密名稱) 和 Description (描述)。
-
在 Resource permissions (資源許可) 中,選擇 Edit permissions (編輯許可)。粘貼以下策略,這允許
RoleToRetrieveSecretAtRuntime
以擷取密碼,然後選擇 [儲存]。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
AccountId
:role/
" }, "Action": "secretsmanager:GetSecretValue", "Resource": "*" } ] }RoleToRetrieveSecretAtRuntime
-
請選擇頁面最下方的 Next (下一頁)。
-
-
在 Configure rotation (設定輪換) 頁面上,保持輪換關閉。選擇 Next (下一步)。
-
在 Review (檢閱) 頁面上,檢閱機密詳細資訊,然後選擇 Store (存放)。
步驟 2:更新您的程式碼
您的程式碼必須IAM扮演角色 RoleToRetrieveSecretAtRuntime
以便能夠檢索秘密。如需詳細資訊,請參閱切換至IAM角色 (AWS API).
接下來,您可以使用機密管理員提供的範本程式碼更新您的程式碼,以便從機密管理員中擷取機密。
若要尋找範本程式碼
開啟 Secrets Manager 主控台,位於https://console.aws.amazon.com/secretsmanager/
。 -
在 Secrets (機密) 頁面中,選擇機密。
-
向下捲動至 Sample code (範本程式碼)。選擇您的程式設計語言,然後複製程式碼片段。
在您的應用程式中,刪除已寫死機密並貼上程式碼片段。根據您的程式碼語言,您可能需要向程式碼片段中的函數或方法新增調用。
測試您的應用程式是否按預期運作,並使用機密代替已寫死機密。
步驟 3:更新機密
最後一個步驟是撤消並更新已寫死機密。請參閱機密的來源以尋找撤消和更新機密的指示。例如,您可能需要停用目前機密並產生新機密。
使用新值更新機密
開啟 Secrets Manager 主控台,位於https://console.aws.amazon.com/secretsmanager/
。 -
選擇 Secrets (機密),然後選擇該機密。
-
在 Secret details (機密詳細資訊) 頁面,向下捲動並選擇 Retrieve secret value (擷取機密值),然後選擇 Edit (編輯)。
-
更新機密,然後選擇 Save (儲存)。
接下來,測試您的應用程式在新機密下是否能按預期運作。
後續步驟
從程式碼中刪除已寫死機密後,接下來需要思考一些構想:
-
若要在 Java 和 Python 應用程式中尋找硬式編碼的秘密,我們建議您使用 Amazon CodeGuru 審核者。
-
您可以透過快取機密來提高效能並降低成本。如需詳細資訊,請參閱從中獲取秘密 AWS Secrets Manager。
-
如須從多個區域存取的機密,請考慮複製您的機密以改善延遲。如需詳細資訊,請參閱跨區域複寫 AWS Secrets Manager 密碼。
-
在本教程中,您授予
RoleToRetrieveSecretAtRuntime
只有檢索密碼值的權限。若要向角色授予更多許可 (例如獲取有關機密的中繼資料或檢視機密清單),請參閱 權限原則範例 AWS Secrets Manager。 -
在本教學課程中,您授予的權限
RoleToRetrieveSecretAtRuntime
通過使用秘密的資源策略。如需授予權限的其他方式,請參閱 將許可政策連接至身分。