配置 AWS Secrets Manager - AWS 規定指引

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

配置 AWS Secrets Manager

AWS Secrets Manager 協助您保護存取應用程式、服務和 IT 資源所需的機密。此服務可安全地存放、管理、加密和輪換資料庫登入資料、API金鑰和其他機密 (包括OAuth權杖),並提供與 Amazon Relational Database Service 服務 (AmazonRDS)、Amazon Redshift 和 Amazon DocumentDB 的原生整合。使用者和應用程式透過呼叫 Secrets Manager 來擷取密碼APIs,這樣就不需要以明文形式對敏感資訊進行硬式編碼。Secrets Manager 包含精細的存取控制權限 AWS 雲端,並提供集中式位置來稽核內部部署和第三方環境中的密碼輪替。

搭配使用 Secrets Manager 的先決條件。 NET框架應用

  • 一個活躍的 AWS 帳戶

  • Microsoft 視覺工作室,已安裝

  • AWS Command Line Interface (AWS CLI)版本 2,已安裝並配置為訪問您的 AWS 帳戶 (請參閱說明

  • AWS Toolkit for Visual Studio,已設定 (請參閱說明)

  • 透過使用 Secrets 管理員主控台或建立和擷取的密碼 AWS CLI (請參閱指示)

範例

若要存取 Secrets Manager 中的ASP. NET核心網頁 API (. NET六):

  1. 將下列 NuGet 套件新增至ASP。 NET核心網絡API。

    AWSSDK.SecretsManager.Caching
  2. Program.cs檔案中,進行下列變更。

    • 添加Amazon.SecretsManager命名空間 (1)。

      using Amazon.SecretsManager;
    • 註冊服務 (2)。

      builder.Services.AddScoped<IAmazonSecretsManager>(x => new AmazonSecretsManagerClient(RegionEndpoint.EUWest2) );
    用於存取 Secrets Manager 的 Program.cs 檔案的變更
  3. 若要從 Secrets 管理員擷取密碼,請對控制器類別檔案進行下列變更 (例如ValuesController.cs)。

    • 添加構造函數(1)。

      private readonly IAmazonSecretsManager _secretsManager; public SecretsController(IAmazonSecretsManager secretsManager) { _secretsManager = secretsManager; }
    • 實作GetSecret方法 (2)。

      string secretName = "arn:aws:secretsmanager:eu-west-2:111122223333:secret:dev/myapp/tenant-gSj6qd"; GetSecretValueRequest request = new GetSecretValueRequest(); request.SecretId = secretName; request.VersionStage = "AWSCURRENT"; Task<GetSecretValueResponse> response = _secretsManager.GetSecretValueAsync(request); return Ok(new { Secret = response.Result.SecretString });

      其中 111122223333 指的是帳戶識別碼。

    變更控制器類別檔案以從機密管理員擷取密碼
    注意

    secretName指的是秘密的名稱或 Amazon 資源名稱(ARN)。建立密碼之後,即可從 Secrets Manager 主控台擷取此值。您應該secretName動態調用或從環境變量調用。請勿在生產環境中對此值進行硬式編碼。