Snowflake High Performance connector for Kafka: Install and configure

This topic describes the steps to install and configure the Snowflake High Performance connector for Kafka.

Instalando o conector Kafka

O conector Kafka é fornecido como um arquivo JAR (executável Java).

O Snowflake fornece duas versões do conector:

As instruções neste tópico especificam quais passos se aplicam somente a uma das versões do conector.

Pré-requisitos de instalação

  • The Kafka connector supports the following package versions:

    Pacote

    Snowflake Kafka Connector Version

    Suporte de pacote (testado pelo Snowflake)

    Apache Kafka

    2.0.0 (ou posterior)

    Apache Kafka 2.8.2, 3.7.2

    Confluent

    2.0.0 (ou posterior)

    Confluent 6.2.15, 7.8.2

  • O conector Kafka foi criado para ser usado com a API Kafka Connect 3.9.0. As versões mais recentes da API Kafka Connect não foram testadas. As versões anteriores a 3.9.0 são compatíveis com o conector. Para obter mais informações, consulte Compatibilidade do Kafka.

  • Quando você tiver o conector Kafka e os arquivos jar do driver JDBC em seu ambiente, certifique-se de que a versão do JDBC corresponda à versão do snowflake-jdbc especificada no arquivo pom.xml da versão pretendida do conector Kafka. Você pode acessar sua versão preferida do conector Kafka, por exemplo, v4.0.0-rc4. Depois procure o arquivo pom.xml para descobrir a versão de snowflake-jdbc.

  • Se você usa o formato Avro para ingerir dados:

  • Configure o Kafka com o tempo desejado de retenção de dados e/ou limite de armazenamento.

  • Install and configure the Kafka Connect cluster.

    Cada nó de cluster Kafka Connect deve incluir RAM suficiente para o conector Kafka. A quantidade mínima recomendada é 5 MB por partição Kafka. Isto é além da RAM necessária para qualquer outro trabalho que o Kafka Connect está realizando.

  • Recomendamos utilizar as mesmas versões no Kafka Broker e no Kafka Connect Runtime.

  • Recomendamos executar sua instância do Kafka Connect na mesma região de provedor de nuvem que sua conta Snowflake. Isto não é estritamente necessário, mas normalmente melhora o rendimento.

Para obter uma lista dos sistemas operacionais compatíveis com os clientes Snowflake, consulte Suporte ao sistema operacional.

Installing the connector

Esta seção fornece instruções para instalar e configurar o conector Kafka para Confluent. A tabela a seguir descreve as versões compatíveis e as informações sobre os candidatos a pré-lançamento e lançamento.

Série de lançamento

Status

Notas

4.x.x

Versão preliminar pública

Acesso antecipado. Suporte a Snowpipe Streaming High Performance Architecture https://docs.snowflake.com/en/user-guide/snowpipe-streaming/snowpipe-streaming-high-performance-overview. Atualmente, a migração das versões 3.x e 2.x deve ser feita manualmente. Ela não pode ser usada como substituta para versões anteriores. Ela tem um conjunto de recursos diferente das versões 3.x, 2.x, 1.x

3.x.x

Com suporte oficial

Sem suporte a Snowpipe Streaming High Performance Architecture https://docs.snowflake.com/en/user-guide/snowpipe-streaming/snowpipe-streaming-high-performance-overview.

2.x.x

Com suporte oficial

Atualização recomendada. Sem suporte a Snowpipe Streaming High Performance Architecture https://docs.snowflake.com/en/user-guide/snowpipe-streaming/snowpipe-streaming-high-performance-overview.

1.x.x

Sem suporte

Não utilize esta série de lançamento.

Installing the connector for Confluent

Download the Kafka connector files

Baixe o arquivo JAR do conector Kafka de um dos seguintes locais:

Hub Confluent:

https://www.confluent.io/hub/

O pacote inclui todas as dependências necessárias para usar uma chave privada criptografada ou não criptografada para autenticação do par de chaves. Para obter mais informações, consulte Uso da autenticação de par de chaves e rotação de chaves mais adiante neste tópico.

Repositório central Maven:

https://mvnrepository.com/artifact/com.snowflake

Ao usar esta versão, você precisa baixar as bibliotecas de criptografia Bouncy Castle (arquivos JAR):

Baixe estes arquivos para a mesma pasta local que o arquivo JAR do conector Kafka.

O código fonte para o conector está disponível em https://github.com/snowflakedb/snowflake-kafka-connector.

Install the Kafka connector

Instale o conector Kafka usando as instruções fornecidas para a instalação de outros conectores:

Instalação do conector para o Apache Kafka de código aberto

Esta seção fornece instruções para instalar e configurar o conector Kafka para o Apache Kafka de código aberto.

Install Apache Kafka

  1. Baixe o pacote Kafka do site oficial do Kafka.

  2. Em uma janela do terminal, mude para o diretório onde você baixou o arquivo do pacote.

  3. Execute o seguinte comando para descompactar o arquivo kafka_<versão_scala>-<versão_kafka>.tgz:

    tar xzvf kafka_<scala_version>-<kafka_version>.tgz
    
    Copy

Instale o JDK

Instale e configure o Java Development Kit (JDK) versão 11 ou superior. O Snowflake é testado com o Standard Edition (SE) do JDK. A Enterprise Edition (EE) deve ser compatível, mas não foi testada.

Se você já instalou o JDK, pode pular esta seção.

  1. Baixe o JDK do site de JDK da Oracle.

  2. Instale ou descompacte o JDK.

  3. Seguindo as instruções para seu sistema operacional, defina a variável de ambiente JAVA_HOME para apontar para o diretório que contém o JDK.

Download the Kafka connector JAR files

  1. Baixe o arquivo JAR do conector Kafka do Repositório central Maven:

    https://mvnrepository.com/artifact/com.snowflake

  2. Baixe os arquivos jar da biblioteca de criptografia Bouncy Castle:

  3. Se seus dados do Kafka são transmitidos no formato Apache Avro, baixe o arquivo JAR (1.11.4) do Avro:

O código fonte para o conector está disponível em https://github.com/snowflakedb/snowflake-kafka-connector.

Install the Kafka connector

Copie os arquivos JAR que você baixou em Instalação do conector para o Apache Kafka de código aberto para a pasta <kafka_dir>/libs.

Configuring the Kafka connector

Quando implantado no modo autônomo, o conector é configurado criando um arquivo que especifica os parâmetros, como credenciais de login do Snowflake, nomes de tópicos, nomes de tabelas do Snowflake etc. Quando implantado no modo distribuído, o conector é configurado chamando o ponto de extremidade da API REST do cluster do Kafka Connect.

Importante

The Kafka Connect framework broadcasts the configuration settings for the Kafka connector from the master node to worker nodes. Configuration settings include sensitive information, specifically, the Snowflake username and private key. Make sure to secure the communication channel between Kafka Connect nodes. For more information, see the documentation for your Apache Kafka software.

Each configuration specifies the topics and corresponding tables for one database and one schema in that database. Note that a connector can ingest messages from any number of topics, but the corresponding tables must all be stored in a single database and schema.

Esta seção fornece instruções tanto para o modo distribuído como para o modo autônomo.

Para descrições dos campos de configuração, consulte Propriedades de configuração do conector.

Importante

Como o arquivo de configuração normalmente contém informações relacionadas à segurança, tais como a chave privada, defina privilégios de leitura/gravação adequadamente no arquivo para limitar o acesso.

In addition, consider storing the configuration file in a secure external location or a key management service. For more information, see Externalizing Secrets (in this topic).

Modo distribuído

Crie o arquivo de configuração do Kafka, por exemplo, <path>/<config_file>.json. Preencha o arquivo com todas as informações de configuração do conector. O arquivo deve estar no formato JSON.

Sample configuration file

{
  "name":"XYZCompanySensorData",
  "config":{
      "connector.class": "com.snowflake.kafka.connector.SnowflakeStreamingSinkConnector",
      "tasks.max": "1",
      "snowflake.topic2table.map": "topic1:table_1,topic2:table_2",
      "snowflake.url.name": "myorganization-myaccount.snowflakecomputing.com:443",
      "snowflake.warehouse.name": "WH",
      "snowflake.private.key": "-----BEGIN PRIVATE KEY-----\n .... \n-----END PRIVATE KEY-----\n",
      "snowflake.schema.name": "MY_SCHEMA",
      "snowflake.database.name": "MY_DATABASE",
      "snowflake.role.name": "MY_ROLE",
      "snowflake.user.name": "MY_USER",
      "value.converter": "org.apache.kafka.connect.json.JsonConverter",
      "key.converter": "org.apache.kafka.connect.storage.StringConverter",
      "errors.log.enable": "true",
      "topics": "topic1,topic2",
      "value.converter.schemas.enable": "false",
      "errors.tolerance": "none"
      }
}
Copy

Modo autônomo

Crie um arquivo de configuração, por exemplo, <kafka_dir>/config/SF_connect.properties. Preencha o arquivo com todas as informações de configuração do conector.

Sample configuration file

connector.class=com.snowflake.kafka.connector.SnowflakeStreamingSinkConnector
tasks.max=1
snowflake.topic2table.map=topic1:table_1,topic2:table_2
snowflake.url.name=myorganization-myaccount.snowflakecomputing.com:443
snowflake.warehouse.name=WH
snowflake.private.key=-----BEGIN PRIVATE KEY-----\n .... \n-----END PRIVATE KEY-----\n
snowflake.schema.name=MY_SCHEMA
snowflake.database.name=MY_DATABASE
snowflake.role.name=MY_ROLE
snowflake.user.name=MY_USER
value.converter=org.apache.kafka.connect.json.JsonConverter
key.converter=org.apache.kafka.connect.storage.StringConverter
errors.log.enable=true
topics=topic1,topic2
name=XYZCompanySensorData
value.converter.schemas.enable=false
errors.tolerance=none
Copy

Considerações sobre cache para testes e prototipagem

O conector armazena em cache as verificações de pesquisa de tabela e canal para melhorar o desempenho durante os rebalanceamentos de partição. No entanto, durante testes e prototipagem, esse comportamento de cache pode fazer com que o conector não detecte imediatamente tabelas ou canais criados de forma manual.

Problema: quando você cria manualmente uma tabela ou canal enquanto o conector está em execução, o conector pode continuar usando os resultados da verificação de existência armazenados em cache (o que pode indicar que o objeto não existe) por até 5 minutos por padrão. Isso pode levar a erros ou comportamentos inesperados durante o teste.

Recomendação para testes: para evitar problemas relacionados ao cache durante testes e prototipagem, configure ambos os parâmetros de expiração do cache com o valor mínimo de 1 milissegundo ou desabilite o cache:

snowflake.cache.table.exists.expire.ms=1
snowflake.cache.pipe.exists.expire.ms=1
Copy

Essa configuração garante que o conector execute novas verificações de existência em cada rebalanceamento de partição, permitindo que você veja imediatamente os efeitos das tabelas e dos canais criados de forma manual.

Importante

Essas configurações mínimas de cache são recomendadas apenas para teste e prototipagem. Em ambientes de produção, use os valores de expiração de cache padrão (5 minutos ou mais) para minimizar as consultas de metadados no Snowflake e melhorar o desempenho do rebalanceamento, especialmente ao manipular muitas partições.

Propriedades de configuração do conector

Propriedades obrigatórias

name

Nome do aplicativo. Isto deve ser único em todos os conectores Kafka utilizados pelo cliente. Este nome deve ser um identificador válido do Snowflake, sem aspas. Para obter mais informações sobre identificadores válidos, consulte Requisitos para identificadores.

connector.class

com.snowflake.kafka.connector.SnowflakeStreamingSinkConnector

topics

Lista de tópicos separados por vírgula. Por padrão, o Snowflake considera que o nome da tabela é o mesmo que o nome do tópico. Se o nome da tabela não for o mesmo que o nome do tópico, então use o parâmetro opcional topic2table.map (abaixo) para especificar o mapeamento do nome do tópico para o nome da tabela. Este nome de tabela deve ser um identificador válido do Snowflake, sem aspas. Para obter mais informações sobre nomes válidos de tabelas, consulte Requisitos para identificadores.

Nota

Ou topics ou topics.regex é necessário; não ambos.

topics.regex

Esta é uma expressão regular (“regex”) que especifica os tópicos que contêm as mensagens a serem carregadas nas tabelas do Snowflake. O conector carrega dados de qualquer nome de tópico que coincida com a expressão regex. A expressão regex deve seguir as regras para expressões regulares Java (isto é, ser compatível com java.util.regex.Pattern). O arquivo de configuração deve conter ou topics ou topics.regex, não ambos.

snowflake.url.name

O URL para acessar sua conta Snowflake. Este URL deve incluir seu identificador da conta. Observe que o protocolo (https://) e o número da porta são opcionais.

snowflake.user.name

Nome de login do usuário para a conta Snowflake.

snowflake.role.name

O nome da função que o conector usará para inserir dados na tabela.

snowflake.private.key

A chave privada para autenticar o usuário. Inclua apenas a chave, não o cabeçalho ou rodapé. Se a chave estiver dividida em várias linhas, remova as quebras de linha. Você pode fornecer uma chave não criptografada, ou pode fornecer uma chave criptografada e fornecer o parâmetro snowflake.private.key.passphrase para permitir que o Snowflake descriptografe a chave. Use este parâmetro se e somente se o valor do parâmetro snowflake.private.key estiver criptografado. Ele descriptografa chaves privadas que foram criptografadas de acordo com as instruções em Autenticação de pares de chaves e rotação de pares de chaves.

Nota

Consulte também snowflake.private.key.passphrase em Propriedades opcionais.

snowflake.database.name

O nome do banco de dados que contém a tabela onde inserir as linhas.

snowflake.schema.name

O nome do esquema que contém a tabela onde inserir as linhas.

header.converter

Obrigatório somente se os registros forem formatados em Avro e incluírem um cabeçalho. O valor é "org.apache.kafka.connect.storage.StringConverter".

key.converter

Este é o conversor de chave do registro Kafka (por exemplo, "org.apache.kafka.connect.storage.StringConverter"). Não é usado pelo conector Kafka, mas é exigido pela plataforma Kafka Connect.

Consulte Limitações do conector Kafka para as limitações atuais.

value.converter

O conector é compatível com os conversores padrão da comunidade Kafka. Escolha o conversor apropriado com base em seu formato de dados:

  • Para registros JSON: "org.apache.kafka.connect.json.JsonConverter"

  • Para registros Avro com Schema Registry: "io.confluent.connect.avro.AvroConverter"

Consulte Limitações do conector Kafka para as limitações atuais.

Propriedades opcionais

snowflake.private.key.passphrase

Se o valor desse parâmetro não estiver vazio, o conector usará essa frase para tentar descriptografar a chave privada.

tasks.max

Número de tarefas, geralmente o mesmo que o número de núcleos de CPU dos nós de trabalhadores no cluster Kafka Connect. Para obter o melhor desempenho, a Snowflake recomenda definir o número de tarefas igual ao número total de partições Kafka, mas não excedendo o número de núcleos da CPU. Um alto número de tarefas pode resultar em maior consumo de memória e redistribuições frequentes.

snowflake.topic2table.map

Este parâmetro opcional permite que um usuário especifique quais tópicos devem ser mapeados para quais tabelas. Cada tópico e seu nome de tabela devem ser separados por dois pontos (ver exemplo abaixo). Este nome de tabela deve ser um identificador válido do Snowflake, sem aspas. Para obter mais informações sobre nomes válidos de tabelas, consulte Requisitos para identificadores. A configuração do tópico permite o uso de expressões regulares para definir tópicos, assim como o uso de topics.regex. As expressões regulares não podem ser ambíguas — qualquer tópico correspondente deve corresponder apenas a uma única tabela de destino.

Exemplo:

topics="topic1,topic2,topic5,topic6"
snowflake.topic2table.map="topic1:low_range,topic2:low_range,topic5:high_range,topic6:high_range"
Copy

poderia ser escrito como:

topics.regex="topic[0-9]"
snowflake.topic2table.map="topic[0-4]:low_range,topic[5-9]:high_range"
Copy
value.converter.schema.registry.url

Se o formato for Avro e você estiver usando um Schema Registry Service, deve ser o URL do Schema Registry Service. Caso contrário, este campo deve estar vazio.

value.converter.break.on.schema.registry.error

Se carregar dados Avro do Schema Registry Service, esta propriedade determina se o conector Kafka deve parar de consumir registros se encontrar um erro ao buscar a identificação do esquema. O valor padrão é false. Defina o valor como true para permitir este comportamento.

jvm.proxy.host

Para permitir que o conector do Kafka para Snowflake possa acessar o Snowflake através de um servidor proxy, defina este parâmetro para especificar o host desse servidor proxy.

jvm.proxy.port

Para permitir que o conector do Kafka para Snowflake possa acessar o Snowflake através de um servidor proxy, defina este parâmetro para especificar a porta desse servidor proxy.

snowflake.streaming.max.client.lag

Specifies how often the connector flushes the data to Snowflake, in seconds.

Valores:
  • Mínimo: 1 segundo

  • Máximo: 600 segundos

Padrão:

1 segundo

jvm.proxy.username

Nome de usuário que se autentica com o servidor proxy.

jvm.proxy.password

Senha para o nome de usuário que se autentica com o servidor proxy.

snowflake.jdbc.map

Exemplo: "snowflake.jdbc.map": "networkTimeout:20,tracing:WARNING"

Propriedades JDBC adicionais (consulte Referência dos parâmetros de conexão do driver JDBC) não são validadas. Essas propriedades adicionais não são validadas e não devem substituir nem ser usadas em vez de propriedades necessárias, como: jvm.proxy.xxx, snowflake.user.name, snowflake.private.key, snowflake.schema.name etc.

Especificar qualquer uma das seguintes combinações:
  • Propriedade tracing junto com variável JDBC_TRACE env

  • Propriedade database junto com snowflake.database.name

Resultará em um comportamento ambíguo, e o comportamento será determinado pelo Driver JDBC.

value.converter.basic.auth.credentials.source

Se você estiver usando o formato de dados Avro e precisar de acesso seguro ao registro do esquema Kafka, defina este parâmetro com a cadeia de caracteres “USER_INFO“, e defina o parâmetro value.converter.basic.auth.user.info descrito abaixo. Caso contrário, omita este parâmetro.

value.converter.basic.auth.user.info

Se você estiver usando o formato de dados Avro e precisar de acesso seguro ao registro do esquema Kafka, defina este parâmetro com a cadeia de caracteres “<ID_usuário>:<senha>” e defina o parâmetro value.converter.basic.auth.credentials.source descrito acima. Caso contrário, omita este parâmetro.

snowflake.metadata.createtime

Se o valor for definido como FALSE, o valor da propriedade CreateTime será omitido dos metadados na coluna RECORD_METADATA. O valor padrão é TRUE.

snowflake.metadata.topic

Se o valor for definido como FALSE, o valor da propriedade topic será omitido dos metadados na coluna RECORD_METADATA. O valor padrão é TRUE.

snowflake.metadata.offset.and.partition

Se o valor for definido como FALSE, os valores de propriedade Offset e Partition são omitidos dos metadados na coluna RECORD_METADATA. O valor padrão é TRUE.

snowflake.metadata.all

Se o valor for definido como FALSE, os metadados na coluna RECORD_METADATA estarão completamente vazios. O valor padrão é TRUE.

transforms

Especifique para ignorar os registros de marca de exclusão encontrados pelo conector Kafka e não carregá-los na tabela de destino. Um registro de marca de exclusão é definido como um registro onde todo o campo de valor é nulo.

Ajuste o valor da propriedade para "tombstoneHandlerExample".

Nota

Use esta propriedade somente com os conversores da comunidade Kafka (ou seja, valor da propriedade value.converter) (por exemplo, org.apache.kafka.connect.json.JsonConverter ou org.apache.kafka.connect.json.AvroConverter). Para gerenciar o manuseio de registros de marcas de exclusão com os conversores do Snowflake, use a propriedade behavior.on.null.values em seu lugar.

transforms.tombstoneHandlerExample.type

Necessário ao definir a propriedade transforms.

Defina o valor da propriedade como "io.confluent.connect.transforms.TombstoneHandler"

behavior.on.null.values

Especifique como o conector Kafka deve lidar com os registros de marca de exclusão. Um registro de marca de exclusão é definido como um registro onde todo o campo de valor é nulo. Para Snowpipe, esta propriedade é compatível com a versão 1.5.5 do conector Kafka e posterior. Para Snowpipe Streaming, essa propriedade é compatível com o conector Kafka versão 2.1.0 e posterior.

Esta propriedade suporta os seguintes valores:

DEFAULT

Quando o conector Kafka encontra um registro de marca de exclusão, insere uma cadeia de caracteres JSON vazia na coluna de conteúdo.

IGNORE

O conector Kafka ignora registros de marca de exclusão e não insere linhas para estes registros.

O valor padrão é DEFAULT.

Nota

A ingestão de registros Tombstone varia de acordo com os métodos de ingestão:

  • Para Snowpipe, o conector Kafka usa apenas conversores Snowflake. Para gerenciar o manuseio de registros de marcas de exclusão com os conversores da comunidade Kafka, use as propriedades transform e transforms.tombstoneHandlerExample.type.

  • Para Snowpipe Streaming, o conector Kafka usa apenas conversores de comunidade.

Os registros enviados aos brokers do Kafka não devem ser NULL porque esses registros serão eliminados pelo conector Kafka, resultando em offsets ausentes. Os offsets ausentes destruirão o conector Kafka em casos de uso específicos. É recomendável usar registros de marca de exclusão em vez de registros NULL.

Uso da autenticação de par de chaves e rotação de chaves

O conector Kafka depende da autenticação de par de chaves, e não da autenticação de nome de usuário e senha. Este método de autenticação requer um par de chaves RSA de 2048 bits (mínimo). Gere o par de chaves pública-privada usando OpenSSL. A chave pública é atribuída ao usuário do Snowflake definido no arquivo de configuração.

Depois de concluir as tarefas de autenticação do par de chaves nesta página e as tarefas para rotação do par de chaves, avalie a recomendação em Externalização de segredos, mais adiante neste tópico.

Para configurar o par de chaves pública/privada:

  1. A partir da linha de comando em uma janela terminal, gere uma chave privada.

    Você pode gerar tanto uma versão criptografada quanto uma versão não criptografada da chave privada.

    Nota

    O conector Kafka suporta algoritmos de criptografia que são validados para atender aos requisitos do Federal Information Processing Standard (140-2) (ou seja, FIPS 140-2). Para obter mais informações, consulte FIPS 140-2.

    Para gerar uma versão não criptografada, use o seguinte comando:

    $ openssl genrsa -out rsa_key.pem 2048
    
    Copy

    Para gerar uma versão criptografada, use o seguinte comando:

    $ openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 <algorithm> -inform PEM -out rsa_key.p8
    
    Copy

    Onde o <algoritmo> é um algoritmo de criptografia compatível com FIPS 140-2.

    Por exemplo, para especificar AES 256 como o algoritmo de criptografia:

    $ openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 aes256 -inform PEM -out rsa_key.p8
    
    Copy

    Se você gerar uma versão criptografada da chave privada, registre a senha. Mais tarde, você especificará a senha na propriedade snowflake.private.key.passphrase no arquivo de configuração do Kafka.

    Exemplo de chave privada PEM

    -----BEGIN ENCRYPTED PRIVATE KEY-----
    MIIE6TAbBgkqhkiG9w0BBQMwDgQILYPyCppzOwECAggABIIEyLiGSpeeGSe3xHP1
    wHLjfCYycUPennlX2bd8yX8xOxGSGfvB+99+PmSlex0FmY9ov1J8H1H9Y3lMWXbL
    ...
    -----END ENCRYPTED PRIVATE KEY-----
    
    Copy
  2. A partir da linha de comando, gere a chave pública, referenciando a chave privada:

    Supondo que a chave privada esteja criptografada e contida no arquivo chamado rsa_key.p8, use o seguinte comando:

    $ openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
    
    Copy

    Exemplo de chave pública PEM

    -----BEGIN PUBLIC KEY-----
    MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy+Fw2qv4Roud3l6tjPH4
    zxybHjmZ5rhtCz9jppCV8UTWvEXxa88IGRIHbJ/PwKW/mR8LXdfI7l/9vCMXX4mk
    ...
    -----END PUBLIC KEY-----
    
    Copy
  3. Copie os arquivos de chaves públicas e privadas em um diretório local para armazenamento. Anote o caminho para os arquivos. A chave privada é armazenada usando o formato PKCS#8 (Public Key Cryptography Standards) e é criptografada usando a frase secreta especificada na etapa anterior; entretanto, o arquivo ainda deve ser protegido contra acesso não autorizado usando o mecanismo de permissão de arquivo fornecido por seu sistema operacional. É responsabilidade dos usuários proteger o arquivo quando ele não está em uso.

  4. Faça login no Snowflake. Atribua a chave pública ao usuário do Snowflake usando ALTER USER.

    For example:

    ALTER USER jsmith SET RSA_PUBLIC_KEY='MIIBIjANBgkqh...';
    
    Copy

    Nota

    • Somente administradores de segurança (isto é, usuários com a função SECURITYADMIN ou superior) podem alterar um usuário.

    • Exclua o cabeçalho e o rodapé da chave pública na instrução SQL.

    Verifique a impressão digital da chave pública do usuário usando DESCRIBE USER:

    DESC USER jsmith;
    +-------------------------------+-----------------------------------------------------+---------+-------------------------------------------------------------------------------+
    | property                      | value                                               | default | description                                                                   |
    |-------------------------------+-----------------------------------------------------+---------+-------------------------------------------------------------------------------|
    | NAME                          | JSMITH                                              | null    | Name                                                                          |
    ...
    ...
    | RSA_PUBLIC_KEY_FP             | SHA256:nvnONUsfiuycCLMXIEWG4eTp4FjhVUZQUQbNpbSHXiA= | null    | Fingerprint of user's RSA public key.                                         |
    | RSA_PUBLIC_KEY_2_FP           | null                                                | null    | Fingerprint of user's second RSA public key.                                  |
    +-------------------------------+-----------------------------------------------------+---------+-------------------------------------------------------------------------------+
    
    Copy

    Nota

    A propriedade RSA_PUBLIC_KEY_2_FP está descrita em Configuração da rotação do par de chaves.

  5. Copie e cole a chave privada inteira no campo snowflake.private.key no arquivo de configuração. Salve o arquivo.

Externalização de segredos

O Snowflake recomenda a externalização de segredos como a chave privada e seu armazenamento em forma criptografada ou em um serviço de gerenciamento de chaves como o AWS Key Management Service (KMS), Microsoft Azure Key Vault ou HashiCorp Vault. Isto pode ser feito usando uma implementação ConfigProvider em seu cluster Kafka Connect.

Para obter mais informações, consulte a descrição do Confluent deste serviço.

Starting the connector

Inicie o Kafka usando as instruções fornecidas na documentação de terceiros para Confluent ou Apache Kafka. Você pode iniciar o conector Kafka tanto no modo distribuído quanto no modo autônomo. As instruções para cada um deles são mostradas abaixo:

Modo distribuído

Em uma janela terminal, execute o seguinte comando:

curl -X POST -H "Content-Type: application/json" --data @<path>/<config_file>.json http://localhost:8083/connectors
Copy

Modo autônomo

Em uma janela terminal, execute o seguinte comando:

<kafka_dir>/bin/connect-standalone.sh <kafka_dir>/<path>/connect-standalone.properties <kafka_dir>/config/SF_connect.properties
Copy

Nota

Uma instalação padrão de Apache Kafka ou Confluent Kafka já deve incluir o arquivo connect-standalone.properties.

Próximos passos

Teste o conector.