

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# の設定 AWS Secrets Manager
<a name="configure-asm"></a>

AWS Secrets Manager は、アプリケーション、サービス、IT リソースにアクセスするために必要なシークレットを保護するのに役立ちます。このサービスは、OAuth トークンを含むデータベース認証情報、API キー、およびその他のシークレットを安全に保存、管理、暗号化、ローテーションし、Amazon Relational Database Service (Amazon RDS)、Amazon Redshift、Amazon DocumentDB とのネイティブ統合を提供します。ユーザーとアプリケーションは Secrets Manager APIs呼び出してシークレットを取得します。これにより、機密情報をプレーンテキストでハードコードする必要がなくなります。Secrets Manager にはきめ細かなアクセスコントロール許可が含まれており AWS クラウド、シークレットのローテーションを監査するための一元的な場所を提供します。

## .NET Framework アプリケーションで Secrets Manager を使用するための前提条件
<a name="configure-asm-prereq"></a>
+ アクティブな AWS アカウント
+ [Microsoft Visual Studio](https://visualstudio.microsoft.com/downloads/)、インストール済み
+ AWS Command Line Interface (AWS CLI) バージョン 2、 にアクセスするようにインストールおよび設定 ( AWS アカウント [手順](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)を参照)
+ AWS Toolkit for Visual Studio、設定済み ([手順](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/setup.html)を参照)
+ Secrets Manager コンソールまたは を使用して作成および取得されるシークレット AWS CLI ([手順](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets.html)を参照)

## 例
<a name="configure-asm-example"></a>

ASP.NET Core ウェブ API (.NET 6) で Secrets Manager からシークレットにアクセスするには:

1.  ASP.NET Core ウェブ API に次の NuGet パッケージを追加します。

   ```
   AWSSDK.SecretsManager.Caching
   ```

1. `Program.cs` ファイルで、次の変更を行います。
   + `Amazon.SecretsManager` 名前空間 (1) を追加します。

     ```
     using Amazon.SecretsManager;
     ```
   + サービス (2) を登録します。

     ```
     builder.Services.AddScoped<IAmazonSecretsManager>(x =>
           new AmazonSecretsManagerClient(RegionEndpoint.EUWest2)
        );
     ```  
![\[Secrets Manager にアクセスするための Program.cs ファイルの変更\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/modernization-net-applications-security/images/asm-program-cs.png)

1. Secrets Manager からシークレットを取得するには、コントローラークラスファイル ( など`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* はアカウント ID を指します。  
![\[Secrets Manager からシークレットを取得するためのコントローラークラスファイルの変更\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/modernization-net-applications-security/images/asm-controller-class.png)
**注記**  
`secretName` は、シークレットの名前または Amazon リソースネーム (ARN) を指します。シークレットが作成されると、この値は Secrets Manager コンソールから取得できます。を`secretName`動的に呼び出すか、環境変数から呼び出す必要があります。本番環境では、この値をハードコードしないでください。