

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

# チュートリアル: 設定プロバイダーを用いた機密情報の外部化
<a name="msk-connect-config-provider"></a>

この例は、オープンソースの設定プロバイダーを使用して Amazon MSK Connect の機密情報を外部化する方法を示しています。設定プロバイダーを使用すると、コネクタまたはワーカー設定でプレーンテキストの代わりに変数を指定でき、コネクタで実行されているワーカーは実行時にこれらの変数を解決します。これにより、認証情報やその他のシークレットがプレーンテキストで保存されるのを防ぐことができます。この例の設定プロバイダーは、 AWS Secrets Manager、Amazon S3、Systems Manager (SSM) からの設定パラメータの取得をサポートしています。[ステップ 2](#msk-connect-config-providers) では、設定するサービスの機密情報の保存と取得をセットアップする方法を確認できます。

## 考慮事項
<a name="msk-connect-config-providers-considerations"></a>

Amazon MSK Connect で MSK 設定プロバイダーを使用する際には、次の点を考慮してください。
+ 設定プロバイダーを使用するときは、IAM サービス実行ロールに適切なアクセス許可を割り当てます。
+ ワーカー設定で設定プロバイダーを定義し、コネクタ設定でその実装を定義します。
+ プラグインで機密設定値をシークレットとして定義していない場合、機密設定値がコネクタログに表示される可能性があります。Kafka Connect は、未定義の設定値を他のプレーンテキスト値と同じように扱います。詳細については[シークレットがコネクタログに表示されないようにする](msk-connect-logging.md#msk-connect-logging-secrets)を参照してください。
+ デフォルトでは、コネクタが設定プロバイダーを使用するときに、MSK Connect はコネクタを頻繁に再起動します。この再起動動作を無効にするには、コネクタ設定で `config.action.reload` の値を `none` に設定します。

## カスタムプラグインを作成して S3 にアップロードする
<a name="msk-connect-config-providers-create-custom-plugin"></a>

 カスタムプラグインを作成するには、ローカルマシンで以下のコマンドを実行して、コネクタと msk-config-provider を含む zip ファイルを作成します。

**ターミナルウィンドウと Debezium をコネクタとして使用してカスタムプラグインを作成するには**

CLI を使用して、 AWS S3 AWS バケットへのアクセスを許可する認証情報を持つスーパーユーザーとしてコマンドを実行します。CLI のインストールとセットアップの詳細については、 AWS [「 ユーザーガイド」の「 CLI AWS の開始方法](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)」を参照してください。 *AWS Command Line Interface *Amazon S3 で AWS CLI を使用する方法については、 *AWS Command Line Interface ユーザーガイド*の「 [CLI での Amazon S3 AWS の使用](https://docs.aws.amazon.com/cli/latest/userguide/cli-services-s3.html)」を参照してください。

1. ターミナルウィンドウで、以下のコマンドを使用して `custom-plugin` という名前のフォルダをワークスペースに作成します。

   ```
   mkdir custom-plugin && cd custom-plugin
   ```

1. 次のコマンドを使用して、[Debezium サイト](https://debezium.io/releases/)から **MySQL コネクタプラグイン**の最新の安定版リリースをダウンロードします。

   ```
   wget https://repo1.maven.org/maven2/io/debezium/debezium-connectormysql/
   2.2.0.Final/debezium-connector-mysql-2.2.0.Final-plugin.tar.gz
   ```

   次のコマンドを使用して、ダウンロードした gzip ファイルを `custom-plugin` フォルダに解凍します。

   ```
   tar xzf debezium-connector-mysql-2.2.0.Final-plugin.tar.gz
   ```

1. 次のコマンドを使用して、[MSK 設定プロバイダーの zip ファイル](https://github.com/aws-samples/msk-config-providers/releases/download/r0.4.0/msk-config-providers-0.4.0-with-dependencies.zip)をダウンロードします。

   ```
   wget https://github.com/aws-samples/msk-config-providers/releases/download/r0.4.0/msk-config-providers-0.4.0-with-dependencies.zip
   ```

   次のコマンドを使用して、ダウンロードした zip ファイルを `custom-plugin` フォルダに解凍します。

   ```
   unzip msk-config-providers-0.4.0-with-dependencies.zip
   ```

1. 上記のステップで取得した MSK 設定プロバイダーとカスタムコネクタの内容を、`custom-plugin.zip` という名前を付けた単一のファイルに圧縮します。

   ```
   zip -r ../custom-plugin.zip * 
   ```

1. このファイルを後で参照できるように S3 にアップロードします。

   ```
   aws s3 cp ../custom-plugin.zip s3:<{{S3_URI_BUCKET_LOCATION}}>
   ```

1. Amazon MSK コンソールの **[MSK Connect]** セクションから **[カスタムプラグイン]** を選択し、次に **[カスタムプラグインの作成]** を選択して **s3:<{{S3\_URI\_BUCKET\_LOCATION}}>** S3 バケットを参照し、アップロードしたカスタムプラグインの ZIP ファイルを選択します。  
![サイズとメタデータを含む custom-plugin.zip ファイルを含む debezium フォルダを示す S3 バケット。](http://docs.aws.amazon.com/ja_jp/msk/latest/developerguide/images/s3-object-browser.png)

1. プラグイン名には **debezium-custom-plugin** と入力します。オプションで説明を入力し、**[カスタムプラグインの作成]** を選択します。  
![custom-plugin.zip ファイル、55.2 MB、202S3 年 5 月 15 日変更の debezium フォルダを示す S3 バケット。](http://docs.aws.amazon.com/ja_jp/msk/latest/developerguide/images/create-custom-plugin.png)

## さまざまなプロバイダーのパラメータとアクセス許可を設定する
<a name="msk-connect-config-providers"></a>

次の 3 つのサービスでパラメータ値を設定できます。
+ Secrets Manager
+ Systems Manager Parameter Store
+ S3 - Simple Storage Service

以下のタブのいずれかを選択すると、そのサービスのパラメータ設定および関連するアクセス許可の設定方法が表示されます。

------
#### [ Configure in Secrets Manager ]

**Secrets Manager でパラメータ値を設定するには**

1. [Secrets Manager コンソール](https://console.aws.amazon.com/secretsmanager/)を開きます。

1. 認証情報またはシークレットを保存する新しいシークレットを作成します。手順については、「 *AWS Secrets Manager ユーザーガイド*[」の「 AWS Secrets Manager シークレット](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)の作成」を参照してください。

1. シークレットの ARN をコピーします。

1. 以下のサンプルポリシーの Secrets Manager のアクセス許可を[サービス実行ロール](https://docs.aws.amazon.com/msk/latest/developerguide/msk-connect-service-execution-role.html)に追加します。サンプル ARN である `arn:aws:secretsmanager:{{us-east-1}}:{{123456789012}}:secret:{{MySecret-1234}}` をシークレットの ARN に置き換えてください。

1. ワーカー設定とコネクタの指示を追加します。  
****  

   ```
   {
           "Version":"2012-10-17",		 	 	 
           "Statement": [
               {
                   "Effect": "Allow",
                   "Action": [
                       "secretsmanager:GetResourcePolicy",
                       "secretsmanager:GetSecretValue",
                       "secretsmanager:DescribeSecret",
                       "secretsmanager:ListSecretVersionIds"
                   ],
                   "Resource": [
                   "arn:aws:secretsmanager:{{us-east-1}}:{{123456789012}}:secret:{{MySecret-1234}}"
                   ]
               }
           ]
       }
   ```

1. Secrets Manager 設定プロバイダーを使用するには、ステップ 3 のワーカー設定テキストボックスに次のコード行をコピーします。

   ```
   # define name of config provider:
   
   config.providers = secretsmanager
   
   # provide implementation classes for secrets manager:
   
   config.providers.secretsmanager.class = com.amazonaws.kafka.config.providers.SecretsManagerConfigProvider
   
   # configure a config provider (if it needs additional initialization), for example you can provide a region where the secrets or parameters are located:
   
   config.providers.secretsmanager.param.region = us-east-1
   ```

1. Secrets Manager 設定プロバイダーで、ステップ 4 のコネクタ設定にある次のコード行をコピーします。

   ```
   #Example implementation for secrets manager variable
   database.user=${secretsmanager:MSKAuroraDBCredentials:username}
   database.password=${secretsmanager:MSKAuroraDBCredentials:password}
   ```

上記のステップは、他の設定プロバイダーでも使用できます。

------
#### [ Configure in Systems Manager Parameter Store ]

**Systems Manager のパラメータストアでパラメータ値を設定するには**

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

1. ナビゲーションペインで、**[パラメータストア]** を選択します。

1. Systems Manager に保存する新しいパラメータを作成します。手順については、「 AWS Systems Manager ユーザーガイド[」の「Systems Manager パラメータの作成 (コンソール)](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-create-console.html)」を参照してください。

1. パラメータの ARN をコピーします。

1. 以下のサンプルポリシーの Secrets Manager のアクセス許可を[サービス実行ロール](https://docs.aws.amazon.com/msk/latest/developerguide/msk-connect-service-execution-role.html)に追加します。{{<arn:aws:ssm:us-east-1:123456789000:parameter/MyParameterName>}} をパラメータの ARN で置き換えます。  
****  

   ```
   {
           "Version":"2012-10-17",		 	 	 
           "Statement": [
               {
                   "Sid": "VisualEditor0",
                   "Effect": "Allow",
                   "Action": [
                       "ssm:GetParameterHistory",
                       "ssm:GetParametersByPath",
                       "ssm:GetParameters",
                       "ssm:GetParameter"
                   ],
                   "Resource": "{{arn:aws:ssm:us-east-1:123456789000:parameter/MyParameterName}}"
               }
           ]
       }
   ```

1. パラメータストア設定プロバイダーを使用するには、ステップ 3 のワーカー設定テキストボックスに次のコード行をコピーします。

   ```
   # define name of config provider:
   
   config.providers = ssm
   
   # provide implementation classes for parameter store:
   
   config.providers.ssm.class = com.amazonaws.kafka.config.providers.SsmParamStoreConfigProvider
   
   # configure a config provider (if it needs additional initialization), for example you can provide a region where the secrets or parameters are located:
   
   config.providers.ssm.param.region = us-east-1
   ```

1. パラメータストア設定プロバイダーで、ステップ 5 のコネクタ設定にある次のコード行をコピーします。

   ```
   #Example implementation for parameter store variable
   schema.history.internal.kafka.bootstrap.servers=${{{ssm::MSKBootstrapServerAddress}}}
   ```

   上記の 2 つのステップを他の設定プロバイダーにバンドルすることもできます。

------
#### [ Configure in Amazon S3 ]

**Amazon S3 のオブジェクト/ファイルを設定するには**

1. [Amazon S3 コンソール](https://console.aws.amazon.com/s3/)を開きます。

1. オブジェクトを S3 のバケットにアップロードします。手順については、「[オブジェクトのアップロード](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)」を参照してください。

1. オブジェクトの ARN をコピーします。

1. 以下のサンプルポリシーの Amazon S3 オブジェクト読み取りアクセス許可を[サービス実行ロール](https://docs.aws.amazon.com/msk/latest/developerguide/msk-connect-service-execution-role.html)に追加します。サンプル ARN である `arn:aws:s3:::{{<MY_S3_BUCKET/path/to/custom-plugin.zip>}}` をシークレットの ARN に置き換えてください。  
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
               {
                   "Sid": "VisualEditor0",
                   "Effect": "Allow",
                   "Action": "s3:GetObject",
                   "Resource": "arn:aws:s3:::{{<MY_S3_BUCKET/path/to/custom-plugin.zip>}}"
               }
           ]
       }
   ```

1. Amazon S3 設定プロバイダーを使用するには、ステップ 3 のワーカー設定テキストボックスに次のコード行をコピーします。

   ```
   # define name of config provider:
   
   config.providers = s3import
   # provide implementation classes for S3:
   
   config.providers.s3import.class = com.amazonaws.kafka.config.providers.S3ImportConfigProvider
   ```

1. Amazon S3 設定プロバイダーで、次のコード行をステップ 4 のコネクタ設定にコピーします。

   ```
   #Example implementation for S3 object
   
   database.ssl.truststore.location = ${s3import:us-west-2:my_cert_bucket/path/to/trustore_unique_filename.jks}
   ```

   上記の 2 つのステップを他の設定プロバイダーにバンドルすることもできます。

------

## 設定プロバイダーに関する情報を使用してカスタムワーカー設定を作成します。
<a name="msk-connect-config-providers-create-custom-config"></a>

1. **[Amazon MSK Connect]** セクションで **[ワーカー設定]** を選択します。

1. **[ワーカー設定の作成]** を選択します。

1. [ワーカー設定名] テキストボックスに `SourceDebeziumCustomConfig` を入力します。説明はオプションです。

1. 必要なプロバイダーに基づいて関連する設定コードをコピーし、**[ワーカー設定]** テキストボックスに貼り付けます。

1. 3 つのプロバイダーすべてのワーカー設定の例を以下に示します。

   ```
   key.converter=org.apache.kafka.connect.storage.StringConverter
   key.converter.schemas.enable=false
   value.converter=org.apache.kafka.connect.json.JsonConverter
   value.converter.schemas.enable=false
   offset.storage.topic=offsets_my_debezium_source_connector
   
   # define names of config providers:
   
   config.providers=secretsmanager,ssm,s3import
   
   # provide implementation classes for each provider:
   
   config.providers.secretsmanager.class    = com.amazonaws.kafka.config.providers.SecretsManagerConfigProvider
   config.providers.ssm.class               = com.amazonaws.kafka.config.providers.SsmParamStoreConfigProvider
   config.providers.s3import.class          = com.amazonaws.kafka.config.providers.S3ImportConfigProvider
   
   # configure a config provider (if it needs additional initialization), for example you can provide a region where the secrets or parameters are located:
   
   
   config.providers.secretsmanager.param.region = us-east-1
   config.providers.ssm.param.region = us-east-1
   ```

1. [ワーカー設定の作成] をクリックします。

## コネクタを作成する
<a name="msk-connect-config-providers-create-connector"></a>

1. 「[Create a new connector](https://docs.aws.amazon.com/msk/latest/developerguide/mkc-create-connector.html)」の手順に従って新しいコネクタを作成します。

1. [カスタムプラグインを作成して S3 にアップロードする](#msk-connect-config-providers-create-custom-plugin) で S3 バケットにアップロードした `custom-plugin.zip` ファイルをカスタムプラグインのソースとして選択します。

1. 必要なプロバイダーに基づいて関連する設定コードをコピーし、[コネクタの設定] フィールドに貼り付けます。

1. 3 つのプロバイダーすべてのコネクタ設定の例を以下に示します。

   ```
   #Example implementation for parameter store variable
   schema.history.internal.kafka.bootstrap.servers=${{{ssm::MSKBootstrapServerAddress}}}
   
   #Example implementation for secrets manager variable
   database.user=${secretsmanager:MSKAuroraDBCredentials:username}
   database.password=${secretsmanager:MSKAuroraDBCredentials:password}
   
   #Example implementation for Amazon S3 file/object
   database.ssl.truststore.location = ${s3import:us-west-2:my_cert_bucket/path/to/trustore_unique_filename.jks}
   ```

1. **[ワーカー設定]** ドロップダウンから **[カスタム設定を使用]** を選択し、**[SourceDebeziumCustomConfig]** を選択します。

1. 「[Create connector](https://docs.aws.amazon.com/msk/latest/developerguide/mkc-create-connector.html)」の残りの手順に従います。