Esternalizzazione di informazioni sensibili utilizzando i provider di configurazione - Amazon Managed Streaming per Apache Kafka

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esternalizzazione di informazioni sensibili utilizzando i provider di configurazione

Questo esempio mostra come esternalizzare le informazioni sensibili per Amazon MSK Connect utilizzando un provider di configurazione open source. Un provider di configurazione consente di specificare variabili anziché testo non crittografato in una configurazione di connettore o di worker e i worker in esecuzione nel connettore risolvono queste variabili in fase di runtime. Ciò impedisce che le credenziali e altri segreti vengano archiviati in testo non crittografato. Il provider di configurazione nell'esempio supporta il recupero dei parametri di configurazione da AWS Secrets Manager, Amazon S3 e Systems Manager (SSM). Nel passaggio 2, viene illustrato come configurare l'archiviazione e il recupero di informazioni sensibili per il servizio che desideri configurare.

Passaggio 1: creazione di un plug-in personalizzato e caricamento dello stesso su S3

Per creare un plugin personalizzato, crea un file zip che contenga il connettore ed esegui i seguenti comandi sul msk-config-provider tuo computer locale.

Creazione di un plug-in personalizzato utilizzando una finestra di terminale e Debezium come connettore

Usa la AWS CLI per eseguire comandi come superutente con credenziali che ti consentono di accedere al tuo bucket S3. AWS Per informazioni sull'installazione e la configurazione della AWS CLI, consulta Guida introduttiva alla AWS CLI nella Guida per l'utente.AWS Command Line Interface Per informazioni sull'uso della AWS CLI con Amazon S3, consulta Using Amazon S3 with the AWS CLI nella Guida per l'utente.AWS Command Line Interface

  1. In una finestra del terminale, crea una cartella denominata custom-plugin nel tuo spazio di lavoro tramite il seguente comando.

    mkdir custom-plugin && cd custom-plugin
  2. Scarica l'ultima versione stabile del plug-in per il connettore MySQL dal sito di Debezium tramite il seguente comando.

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

    Estrai il file gzip scaricato nella cartella custom-plugin tramite il seguente comando.

    tar xzf debezium-connector-mysql-2.2.0.Final-plugin.tar.gz
  3. Scarica il file zip del provider di configurazione MSK tramite il seguente comando.

    wget https://github.com/aws-samples/msk-config-providers/releases/download/r0.1.0/msk-config-providers-0.1.0-with-dependencies.zip

    Estrai il file zip scaricato nella cartella custom-plugin tramite il seguente comando.

    unzip msk-config-providers-0.1.0-with-dependencies.zip
  4. Comprimi il contenuto del provider di configurazione MSK del passaggio precedente e del connettore personalizzato in un unico file denominato custom-plugin.zip.

    zip -r ../custom-plugin.zip *
  5. Carica il file su S3 per utilizzarlo come riferimento in seguito.

    aws s3 cp ../custom-plugin.zip s3:<S3_URI_BUCKET_LOCATION>
  6. Sulla console Amazon MSK, nella sezione MSK Connect, scegli Plug-in personalizzato, quindi scegli Crea plug-in personalizzato e sfoglia il bucket S3 s3:<S3_URI_BUCKET_LOCATION> per selezionare il file ZIP del plug-in personalizzato che hai appena caricato.

    Amazon S3 bucket interface showing a single custom-plugin.zip file in the debezium folder.
  7. Inserisci debezium-custom-plugin come nome del plug-in. Facoltativamente, inserisci una descrizione e scegli Crea plug-in personalizzato.

    Amazon S3 bucket interface showing a single custom-plugin.zip file in the debezium folder.

Passaggio 2: configurazione dei parametri e delle autorizzazioni per diversi provider

È possibile configurare i valori dei parametri in questi tre servizi:

  • Secrets Manager

  • Systems Manager Parameter Store

  • S3 - Simple Storage Service

Seleziona una delle schede seguenti per ottenere istruzioni sulla configurazione dei parametri e delle autorizzazioni pertinenti per tale servizio.

Configure in Secrets Manager
Configurazione dei valori dei parametri in Secrets Manager
  1. Apri la console Secrets Manager.

  2. Crea un nuovo segreto per archiviare le credenziali o i segreti. Per istruzioni, consulta Creare un AWS Secrets Manager segreto nella Guida per l'utente. AWS Secrets Manager

  3. Copia l'ARN del segreto.

  4. Aggiungi le autorizzazioni di Secrets Manager dalla seguente policy di esempio al tuo ruolo di esecuzione del servizio. Sostituisci <arn:aws:secretsmanager:us-east- 1:123456789000:secret: -1234> con l'ARN del tuo segreto. MySecret

  5. Aggiungi le istruzioni per la configurazione del worker e il connettore.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetResourcePolicy", "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:ListSecretVersionIds" ], "Resource": [ "<arn:aws:secretsmanager:us-east-1:123456789000:secret:MySecret-1234>" ] } ] }
  6. Per utilizzare il provider di configurazione Secrets Manager, copia le seguenti righe di codice nella casella di testo della configurazione del worker nel passaggio 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
  7. Per il provider di configurazione Secrets Manager, copia le seguenti righe di codice nella configurazione del connettore nel passaggio 4.

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

È possibile utilizzare il passaggio precedente anche con altri provider di configurazione.

Configure in Systems Manager Parameter Store
Configurazione dei valori dei parametri in Archivio dei parametri Systems Manager
  1. Aprire la console Systems Manager.

  2. Nel riquadro di navigazione, selezionare Parameter Store (Archivio parametri).

  3. Crea un nuovo parametro da archiviare in Systems Manager. Per istruzioni, vedere Create a Systems Manager (console) nella Guida per l' AWS Systems Manager utente.

  4. Copia l'ARN del parametro.

  5. Aggiungi le autorizzazioni di Systems Manager dalla seguente policy di esempio al tuo ruolo di esecuzione del servizio. Sostituisci <arn:aws:ssm:us-east- MyParameterName 1:123456789000:parameter/ > con l'ARN del tuo parametro.

    { "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" } ] }
  6. Per utilizzare il provider di configurazione Archivio dei parametri, copia le seguenti righe di codice nella casella di testo della configurazione del worker nel passaggio 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
  7. Per il provider di configurazione Archivio dei parametri, copia le seguenti righe di codice nella configurazione del connettore nel passaggio 5.

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

    È possibile utilizzare i due passaggi precedenti anche con altri provider di configurazione.

Configure in Amazon S3
Configurazione di oggetti/file in Amazon S3
  1. Apri la console Amazon S3.

  2. Carica l'oggetto in un bucket S3. Per istruzioni, consulta la pagina Uploading objects.

  3. Copia l'ARN dell'oggetto.

  4. Aggiungi le autorizzazioni di Amazon S3 Object Read dalla seguente policy di esempio al tuo ruolo di esecuzione del servizio. Sostituisci <arn:aws:s3:::MY_S3_BUCKET/path/to/custom-plugin.zip> con l'ARN dell'oggetto.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "s3:GetObject", "Resource": "<arn:aws:s3:::MY_S3_BUCKET/path/to/custom-plugin.zip>" } ] }
  5. Per utilizzare il provider di configurazione Amazon S3, copia le seguenti righe di codice nella casella di testo della configurazione del worker nel passaggio 3:

    # define name of config provider: config.providers = s3import # provide implementation classes for S3: config.providers.s3import.class = com.amazonaws.kafka.config.providers.S3ImportConfigProvider
  6. Per il provider di configurazione Amazon S3, copia le seguenti righe di codice nella configurazione del connettore nel passaggio 4.

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

    È possibile utilizzare i due passaggi precedenti anche con altri provider di configurazione.

Passaggio 3: creazione di una configurazione del worker personalizzata con informazioni sul proprio provider di configurazione

  1. Seleziona Configurazioni dei worker nella sezione Amazon MSK Connect.

  2. Seleziona Crea configurazione del worker.

  3. Inserisci SourceDebeziumCustomConfig nella casella di testo Nome della configurazione del worker. La descrizione è facoltativa.

  4. Copia il codice di configurazione pertinente in base ai provider desiderati e incollalo nella casella di testo Configurazione del worker.

  5. Questo è un esempio di configurazione del worker per tutti e tre i provider:

    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
  6. Fai clic su Crea configurazione del worker.

Passaggio 4: creazione del connettore

  1. Crea un nuovo connettore seguendo le istruzioni riportate nella sezione Creazione di un nuovo connettore.

  2. Scegli il file custom-plugin.zip che hai caricato nel tuo bucket S3 in Passaggio 1: creazione di un plug-in personalizzato e caricamento dello stesso su S3 come origine del plug-in personalizzato.

  3. Copia il codice di configurazione pertinente in base ai provider desiderati e incollalo nel campo Configurazione del cluster.

  4. Questo è un esempio della configurazione dei connettori per tutti e tre i provider:

    #Example implementation for parameter store variable schema.history.internal.kafka.bootstrap.servers=${ssm::MSKBootstrapServerAddress} #Example implementation for secrets manager variable database.hostname=${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}
  5. Seleziona Usa una configurazione personalizzata e scegli dal menu a discesa Worker Configuration SourceDebeziumCustomConfig.

  6. Segui i passaggi rimanenti indicati nelle istruzioni nella sezione Creazione di un connettore.

Considerazioni

Considera quanto segue durante l'utilizzo del provider di configurazione MSK con Amazon MSK Connect:

  • Quando utilizzi i provider di configurazione, assegna le autorizzazioni appropriate al ruolo di esecuzione del servizio IAM.

  • Definisci i provider di configurazione nelle configurazioni dei worker e la rispettiva implementazione nella configurazione del connettore.

  • Se un plug-in non definisce i valori di configurazione sensibili come segreti, tali valori possono apparire nei log dei connettori. Kafka Connect tratta i valori di configurazione non definiti allo stesso modo di qualsiasi altro valore non crittografato. Per ulteriori informazioni, consulta Impedire la visualizzazione di segreti nei log dei connettori.

  • Per impostazione predefinita, spesso MSK Connect riavvia un connettore se questo utilizza un provider di configurazione. Per disattivare questo comportamento di riavvio, è possibile impostare il valore di config.action.reload su none nella configurazione del connettore.