將硬式編碼的密碼移至 AWS Secrets Manager - AWS Secrets Manager

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

將硬式編碼的密碼移至 AWS Secrets Manager

如果您的程式碼中有純文字機密,我們建議您輪換它們並將它們儲存在機密管理員中。將機密移動到機密管理員可解決機密顯示問題,讓任何看到程式碼的人無法看見,因為再下一步,您的程式碼就能直接從機密管理員擷取機密。輪換機密將撤消目前已寫死機密,使其不再有效。

如需資料庫憑證機密,請參閱 將硬式編碼的資料庫認證移至 AWS Secrets Manager

在開始之前,您需要決定需要存取該機密的人。我們建議您使用兩個IAM角色來管理密碼的權限:

  • 管理組織中機密的角色。如需相關資訊,請參閱 Secrets Manager 管理員許可。您將使用此角色建立並輪換機密。

  • 可以在執行階段使用密碼的角色,例如在本教學課程中,您使用 RoleToRetrieveSecretAtRuntime。 你的代碼假定這個角色來檢索密碼。在本教學中,您僅授予該角色擷取一個機密值的權限,並透過使用機密的資源策略授予權限。如需其他替代方案,請參閱 後續步驟

步驟 1:建立機密

第一步是將現有的已寫死機密複製到機密管理員中。如果密碼與 AWS 資源,將其存儲在與資源相同的區域中。否則,請將其儲存在針對您使用案例延遲最低的區域中。

若要建立機密 (控制台)
  1. 開啟 Secrets Manager 主控台,位於https://console.aws.amazon.com/secretsmanager/

  2. 選擇儲存新機密

  3. Choose secret type (選擇秘密類型) 頁面上,執行下列動作:

    1. 針對 Secret type (機密類型),選擇 Other type of secret (其他機密類型)。

    2. 將您的機密輸入為 Key/value pairs (金鑰/值對) 或 Plaintext (純文字)。一些範例:

      API key

      輸入為鍵/值對:

      ClientID : my_client_id

      ClientSecret : wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

      OAuth token

      輸入為純文本:

      AKIAI44QH8DHBEXAMPLE

      Digital certificate

      輸入為純文本:

      -----BEGIN CERTIFICATE----- EXAMPLE -----END CERTIFICATE-----
      Private key

      輸入為純文本:

      –--- BEGIN PRIVATE KEY ---- EXAMPLE ––-- END PRIVATE KEY –---
    3. 對於加密金鑰,請選擇 aws/秘密管理員以使用 AWS 受管金鑰 對於 Secrets Manager。使用此金鑰無需任何成本。您還可以使用自己的客戶管理密鑰,例如從另一個密鑰訪問密鑰 AWS 帳戶。 如需有關使用客戶管理金鑰的成本資訊,請參閱定價

    4. 選擇 Next (下一步)

  4. Choose secret type (選擇秘密類型) 頁面上,執行下列動作:

    1. 輸入描述性的 Secret name (機密名稱) 和 Description (描述)。

    2. Resource permissions (資源許可) 中,選擇 Edit permissions (編輯許可)。粘貼以下策略,這允許 RoleToRetrieveSecretAtRuntime 以擷取密碼,然後選擇 [儲存]。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountId:role/RoleToRetrieveSecretAtRuntime" }, "Action": "secretsmanager:GetSecretValue", "Resource": "*" } ] }
    3. 請選擇頁面最下方的 Next (下一頁)。

  5. Configure rotation (設定輪換) 頁面上,保持輪換關閉。選擇 Next (下一步)

  6. Review (檢閱) 頁面上,檢閱機密詳細資訊,然後選擇 Store (存放)。

步驟 2:更新您的程式碼

您的程式碼必須IAM扮演角色 RoleToRetrieveSecretAtRuntime 以便能夠檢索秘密。如需詳細資訊,請參閱切換至IAM角色 (AWS API).

接下來,您可以使用機密管理員提供的範本程式碼更新您的程式碼,以便從機密管理員中擷取機密。

若要尋找範本程式碼
  1. 開啟 Secrets Manager 主控台,位於https://console.aws.amazon.com/secretsmanager/

  2. Secrets (機密) 頁面中,選擇機密。

  3. 向下捲動至 Sample code (範本程式碼)。選擇您的程式設計語言,然後複製程式碼片段。

在您的應用程式中,刪除已寫死機密並貼上程式碼片段。根據您的程式碼語言,您可能需要向程式碼片段中的函數或方法新增調用。

測試您的應用程式是否按預期運作,並使用機密代替已寫死機密。

步驟 3:更新機密

最後一個步驟是撤消並更新已寫死機密。請參閱機密的來源以尋找撤消和更新機密的指示。例如,您可能需要停用目前機密並產生新機密。

使用新值更新機密
  1. 開啟 Secrets Manager 主控台,位於https://console.aws.amazon.com/secretsmanager/

  2. 選擇 Secrets (機密),然後選擇該機密。

  3. Secret details (機密詳細資訊) 頁面,向下捲動並選擇 Retrieve secret value (擷取機密值),然後選擇 Edit (編輯)。

  4. 更新機密,然後選擇 Save (儲存)。

接下來,測試您的應用程式在新機密下是否能按預期運作。

後續步驟

從程式碼中刪除已寫死機密後,接下來需要思考一些構想: