

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

# Systems Manager Parameter Store を使用して機密データを指定する
<a name="specifying-sensitive-data-parameters"></a>

を使用すると AWS Batch、機密データを Parameter Store パラメータに保存し、コンテナ定義で参照することで、コンテナに機密データ AWS Systems Manager を挿入できます。

**Topics**
+ [Systems Manager Parameter Store を使用した機密データの指定に関する考慮事項](#secrets--parameterstore-considerations)
+ [AWS Batch シークレットに必要な IAM アクセス許可](#secrets-iam-parameters)
+ [環境変数として機密データを挿入する](#secrets-envvar-parameters)
+ [ログ設定に機密データを挿入する](#secrets-logconfig-parameters)
+ [Parameter Store AWS Systems Manager パラメータを作成する](#secrets-create-parameter)

## Systems Manager Parameter Store を使用した機密データの指定に関する考慮事項
<a name="secrets--parameterstore-considerations"></a>

Systems Manager パラメータストアのパラメータを使用してコンテナの機密データを指定する場合は、以下を考慮する必要があります。
+ この機能では、コンテナインスタンスに、バージョン 1.23.0 以降のコンテナエージェントが必要です。ただし、最新のコンテナエージェントバージョンを使用することをお勧めします。エージェントのバージョンの確認と最新バージョンへの更新の詳細については、*Amazon Elastic Container Service デベロッパーガイド*の[Amazon ECS コンテナエージェントの更新](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html)を参照してください。
+ 機密データは、コンテナが最初に開始されたときにジョブのコンテナに挿入されます。シークレットまたは Parameter Store パラメータが後で更新またはローテーションされたときに、コンテナは更新された値を自動的に受け取りません。更新されたシークレットを使用して新しいジョブを強制的に起動するには、新しいジョブを起動する必要があります。

## AWS Batch シークレットに必要な IAM アクセス許可
<a name="secrets-iam-parameters"></a>

この機能を使用するには、実行ロールを持っていて、ジョブ定義でそのロールを参照する必要があります。これにより、Amazon ECS コンテナエージェントは必要な AWS Systems Manager リソースをプルできます。詳細については、「[AWS Batch IAM 実行ロール](execution-IAM-role.md)」を参照してください。

作成した Parameter Store AWS Systems Manager パラメータへのアクセスを許可するには、以下のアクセス許可をインラインポリシーとして実行ロールに手動で追加します。詳細については、*IAM ユーザーガイド*の[IAM ポリシーの追加と削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)を参照してください。
+ `ssm:GetParameters`— Systems Managerパラメータストアのパラメータをタスク定義で参照する場合は必須です。
+ `secretsmanager:GetSecretValue` — Secrets Manager シークレットを直接参照するか、Systems Manager パラメータストアのパラメータがタスク定義で Secrets Manager シークレットを参照している場合は必須です。
+ `kms:Decrypt` – シークレットでカスタムの KMS キーを使用し、デフォルトのキーを使用しない場合にのみ必須です。そのカスタムキーの ARN はリソースとして追加されている必要があります。

次の例のインラインポリシーでは必須許可を追加しています。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameters",
                "secretsmanager:GetSecretValue",
                "kms:Decrypt"
            ],
            "Resource": [
                "arn:aws:ssm:us-east-2:999999999999:parameter/<parameter_name>",
                "arn:aws:secretsmanager:us-east-2:999999999999:secret:<secret_name>",
                "arn:aws:kms:us-east-2:999999999999:key/<key_id>"
            ]
        }
    ]
}
```

------

## 環境変数として機密データを挿入する
<a name="secrets-envvar-parameters"></a>

コンテナの定義内で、コンテナに設定する環境変数の名前と、コンテナに渡す機密データが含まれている Systems Manager パラメータストアのパラメータの ARN 全体を使用して `secrets` を指定できます。

以下に示すのは、Systems Manager パラメータストアのパラメータを参照するときの形式を示すタスク定義のスニペットです。起動するタスクと同じリージョンに、Systems Manager パラメータストアのパラメータが存在する場合は、パラメータの完全な ARN または名前のどちらも使用できます。パラメータが別のリージョンに存在する場合は、完全な ARN を指定する必要があります。

```
{
  "containerProperties": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name"
    }]
  }]
}
```

## ログ設定に機密データを挿入する
<a name="secrets-logconfig-parameters"></a>

コンテナの定義内で `logConfiguration` を指定するときに、コンテナに設定するログドライバーオプションの名前と、コンテナに渡す機密データが含まれている Systems Manager パラメータストアのパラメータの ARN 全体を使用して `secretOptions` を指定できます。

**重要**  
起動するタスクと同じリージョンに、Systems Manager パラメータストアのパラメータが存在する場合は、パラメータの完全な ARN または名前のどちらも使用できます。パラメータが別のリージョンに存在する場合は、完全な ARN を指定する必要があります。

以下に示すのは、Systems Manager パラメータストアのパラメータを参照するときの形式を示すタスク定義のスニペットです。

```
{
  "containerProperties": [{
    "logConfiguration": [{
      "logDriver": "fluentd",
      "options": {
        "tag": "fluentd demo"
      },
      "secretOptions": [{
        "name": "fluentd-address",
        "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name"
      }]
    }]
  }]
}
```

## Parameter Store AWS Systems Manager パラメータを作成する
<a name="secrets-create-parameter"></a>

 AWS Systems Manager コンソールを使用して、機密データの Systems Manager パラメータストアパラメータを作成できます。詳細については、*AWS Systems Manager ユーザーガイド*の[コマンドでパラメータを作成して使用する (コンソール)](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-console.html)を参照してください。

**パラメータストアのパラメータを作成するには**

1. [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/) で AWS Systems Manager コンソールを開きます。

1. ナビゲーションペインで **パラメータストア**、**パラメータの作成** の順に選択します。

1. **名前** に、階層とパラメータ名を入力します。例えば、`test/database_password` と入力します。

1. **Description]** (説明) に説明を入力します (省略可能)。

1. **Type]** (タイプ) として、**String]**、**StringList]**、**SecureString]** のいずれかを選択します。
**注記**  
**SecureString]** を選択すると、**KMS Key ID]** フィールドが表示されます。KMS キー ID、KMS キー ARN、エイリアス名、またはエイリアス ARN が指定されていない場合、システムは `alias/aws/ssm` を使用します。これは、Systems Manager 用のデフォルトの KMS キーです。このキーを使用しない場合は、カスタムキーを選択します。詳細については、*AWS Systems Manager ユーザーガイド*の[Secure String パラメータを使用する](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-about.html)を参照してください。
コンソールで `key-id` パラメータにカスタム KMS キーエイリアス名またはエイリアス ARN のいずれかを指定して Secure String パラメータを作成する場合は、そのエイリアスの前にプレフィックス `alias/` を指定する必要があります。ARN の例を次に示します。  

     ```
     arn:aws:kms:us-east-2:123456789012:alias/MyAliasName
     ```
エイリアス名の例を次に示します。  

     ```
     alias/MyAliasName
     ```

1. **Value]** (値) に値を入力します。例えば、`MyFirstParameter` です。**SecureString]** を選択している場合、入力した値は必ずマスクされます。

1. **パラメータの作成** を選択します。