本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
配置 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六):
-
將下列 NuGet 套件新增至ASP。 NET核心網絡API。
AWSSDK.SecretsManager.Caching
-
在
Program.cs
檔案中,進行下列變更。-
添加
Amazon.SecretsManager
命名空間 (1)。using Amazon.SecretsManager;
-
註冊服務 (2)。
builder.Services.AddScoped<IAmazonSecretsManager>(x => new AmazonSecretsManagerClient(RegionEndpoint.EUWest2) );
-
-
若要從 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
動態調用或從環境變量調用。請勿在生產環境中對此值進行硬式編碼。 -