

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Tutorial: Externalizar informações confidenciais usando provedores de configuração
<a name="msk-connect-config-provider"></a>

Este exemplo mostra como externalizar informações confidenciais para o Amazon MSK Connect usando um provedor de configuração de código aberto. Um provedor de configuração permite que você especifique variáveis, em vez de texto simples, em uma configuração de conector ou de operador, e os operadores em execução em seu conector resolvem essas variáveis em runtime. Isso evita que credenciais e outros segredos sejam armazenados em texto simples. O provedor de configuração no exemplo suporta a recuperação de parâmetros de configuração do AWS Secrets Manager, Amazon S3 e Systems Manager (SSM). Na [Etapa 2](#msk-connect-config-providers), você verá como configurar o armazenamento e a recuperação de informações confidenciais para o serviço que deseja configurar.

## Considerações
<a name="msk-connect-config-providers-considerations"></a>

Considere o seguinte ao usar o provedor de configuração do MSK com o Amazon MSK Connect:
+ Atribua as permissões adequadas ao usar os provedores de configuração para o perfil de execução de serviços do IAM.
+ Defina os provedores de configuração nas configurações de trabalho e sua implementação na configuração do conector.
+ Valores confidenciais de configuração podem aparecer nos registros do conector se um plug-in não definir esses valores como secretos. O Kafka Connect trata valores de configuração indefinidos da mesma forma que qualquer outro valor de texto simples. Para saber mais, consulte [Como evitar que segredos apareçam nos logs do conector](msk-connect-logging.md#msk-connect-logging-secrets).
+ Por padrão, o MSK Connect reinicia frequentemente um conector quando o conector usa um provedor de configuração. Para desativar esse comportamento de reinicialização, você pode definir o valor `config.action.reload` como `none` na configuração do conector.

## Criar um plug-in personalizado e fazer o upload para o S3
<a name="msk-connect-config-providers-create-custom-plugin"></a>

 Para criar um plug-in personalizado, crie um arquivo zip que contenha o conector e o msk-config-provider executando os seguintes comandos em sua máquina local.

**Para criar um plug-in personalizado usando uma janela de terminal e o Debezium como conector**

Use a AWS CLI para executar comandos como superusuário com credenciais que permitem acessar seu bucket do S3. AWS *Para obter informações sobre como instalar e configurar a AWS CLI, consulte [Introdução à AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) no Guia do usuário.AWS Command Line Interface * *Para obter informações sobre o uso da AWS CLI com o Amazon S3, consulte Usando o [Amazon S3 com a AWS CLI no Guia do usuário](https://docs.aws.amazon.com/cli/latest/userguide/cli-services-s3.html).AWS Command Line Interface *

1. Em uma janela de terminal, crie uma pasta nomeada `custom-plugin` no seu espaço de trabalho usando o comando a seguir.

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

1. Baixe a versão estável mais recente do **plug-in MySQL Connector** no site do [Debezium](https://debezium.io/releases/) usando o comando a seguir.

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

   Extraia o arquivo gzip baixado na pasta `custom-plugin` usando o comando a seguir.

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

1. Baixe o [arquivo zip do provedor de configuração do MSK](https://github.com/aws-samples/msk-config-providers/releases/download/r0.4.0/msk-config-providers-0.4.0-with-dependencies.zip) usando o comando a seguir.

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

   Extraia o arquivo zip baixado na `custom-plugin` pasta usando o comando a seguir.

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

1. Compacte o conteúdo do provedor de configuração do MSK da etapa acima e do conector personalizado em um só arquivo chamado `custom-plugin.zip`.

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

1. Faça upload do arquivo para o S3 para referência posterior.

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

1. No console do Amazon MSK, na seção **MSK Connect**, escolha **Custom Plugin**, depois escolha **Create custom plugin** e navegue pelo bucket **s3: < {{S3\_URI\_BUCKET\_LOCATION}} > S3** para selecionar o arquivo ZIP do plug-in personalizado que você acabou de enviar.  
![Bucket do S3 mostrando a pasta debezium contendo o arquivo custom-plugin.zip com tamanho e metadados.](http://docs.aws.amazon.com/pt_br/msk/latest/developerguide/images/s3-object-browser.png)

1. Insira **debezium-custom-plugin** para o nome do plug-in. Opcionalmente, insira uma descrição e escolha **Criar um plug-in personalizado**.  
![Bucket do S3 mostrando a pasta debezium com o arquivo custom-plugin.zip, 55,2 MB, modificado em 15 de maio de 2023.](http://docs.aws.amazon.com/pt_br/msk/latest/developerguide/images/create-custom-plugin.png)

## Configurar parâmetros e permissões para diferentes provedores
<a name="msk-connect-config-providers"></a>

Você pode configurar valores de parâmetros nestes três serviços:
+ Secrets Manager 
+ Systems Manager Parameter Store
+ S3: Simple Storage Service

Escolha uma das guias abaixo para obter instruções sobre como configurar parâmetros e permissões relevantes para esse serviço.

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

**Para configurar valores de parâmetros no Secrets Manager**

1. Abra o [console do Secrets Manager](https://console.aws.amazon.com/secretsmanager/).

1. Crie um novo segredo para armazenar suas credenciais ou segredos. Para obter instruções, consulte [Criar um AWS Secrets Manager segredo](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) no *Guia AWS Secrets Manager do usuário*.

1. Copie o ARN do seu segredo.

1. Adicione as permissões do Secrets Manager do exemplo de política a seguir ao seu [perfil de execução de serviço](https://docs.aws.amazon.com/msk/latest/developerguide/msk-connect-service-execution-role.html). Substitua o ARN do exemplo, `arn:aws:secretsmanager:{{us-east-1}}:{{123456789012}}:secret:{{MySecret-1234}}`, pelo ARN do seu segredo.

1. Adicione a configuração do operador e as instruções do conector.  
****  

   ```
   {
           "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. Para usar o provedor de configuração do Secrets Manager, copie as seguintes linhas de código na caixa de texto de configuração do operador na Etapa 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. Para o provedor de configuração do Secrets Manager, copie as seguintes linhas de código na configuração do conector na Etapa 4.

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

Você também pode usar a etapa acima com mais provedores de configuração.

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

**Para configurar valores de parâmetros no Systems Manager Parameter Store**

1. Abra o [console do Systems Manager](https://console.aws.amazon.com/systems-manager/).

1. No painel de navegação, selecione **Repositório de parâmetros**.

1. Crie um novo parâmetro para armazenar no Systems Manager. Para obter instruções, consulte [Criar um parâmetro do Systems Manager (console)](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-create-console.html) no Guia AWS Systems Manager do usuário.

1. Copie o ARN do seu parâmetro.

1. Adicione as permissões do Systems Manager do exemplo de política a seguir ao seu [perfil de execução de serviço](https://docs.aws.amazon.com/msk/latest/developerguide/msk-connect-service-execution-role.html). {{<arn:aws:ssm:us-east-1:123456789000:parameter/MyParameterName>}}Substitua pelo ARN do seu parâmetro.  
****  

   ```
   {
           "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. Para usar o provedor de configuração do Parameter Store, copie as seguintes linhas de código na caixa de texto de configuração do operador na Etapa 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. Para o provedor de configuração do Parameter Store, copie as seguintes linhas de código na configuração do conector na Etapa 5.

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

   Você também pode agrupar as duas etapas acima com mais provedores de configuração.

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

**Para configurar objects/files no Amazon S3**

1. Abra o [console Amazon S3](https://console.aws.amazon.com/s3/).

1. Carregue um objeto para um bucket no S3. Para obter instruções, consulte [Carregar objetos](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html).

1. Copie o ARN do seu objeto.

1. Adicione as permissões de leitura de objeto do Amazon S3 do exemplo de política a seguir ao seu [perfil de execução de serviço](https://docs.aws.amazon.com/msk/latest/developerguide/msk-connect-service-execution-role.html). Substitua o ARN do exemplo, `arn:aws:s3:::{{<MY_S3_BUCKET/path/to/custom-plugin.zip>}}`, pelo ARN do seu objeto.  
****  

   ```
   {
       "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. Para usar o provedor de configuração do Amazon S3, copie as seguintes linhas de código na caixa de texto de configuração do operador na Etapa 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. Para o provedor de configuração do Amazon S3, copie as seguintes linhas de código na configuração do conector na Etapa 4.

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

   Você também pode agrupar as duas etapas acima com mais provedores de configuração.

------

## Criar uma configuração personalizada de operador com informações sobre seu provedor de configuração
<a name="msk-connect-config-providers-create-custom-config"></a>

1. Selecione as **Configurações do operador** na seção **Amazon MSK Connect**.

1. Selecione **Criar configuração de operador**.

1. Digite `SourceDebeziumCustomConfig` na caixa de texto Nome da configuração do operador. A descrição é opcional.

1. Copie o código de configuração relevante com base nos provedores desejados e cole-o na caixa de texto de **Configuração do operador**.

1. Este é um exemplo da configuração de operador para todos os três provedores:

   ```
   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. Clique em Criar configuração de operador.

## Criar o conector
<a name="msk-connect-config-providers-create-connector"></a>

1. Crie um novo conector usando as instruções em [Criar um novo conector](https://docs.aws.amazon.com/msk/latest/developerguide/mkc-create-connector.html).

1. Escolha o arquivo `custom-plugin.zip` que você enviou para o bucket do S3 em [Criar um plug-in personalizado e fazer o upload para o S3](#msk-connect-config-providers-create-custom-plugin) como origem do plug-in personalizado.

1. Copie o código de configuração relevante com base nos provedores desejados e cole-o no campo Configuração do conector.

1. Este é um exemplo da configuração do conector para todos os três provedores:

   ```
   #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. Selecione **Usar uma configuração personalizada** e escolha **SourceDebeziumCustomConfig**no menu suspenso **Configuração do trabalhador**.

1. Siga as etapas restantes das instruções em [Criar conector](https://docs.aws.amazon.com/msk/latest/developerguide/mkc-create-connector.html).