Openflow Connector for Salesforce Bulk API: configurar o Snowflake

Nota

O conector está sujeito aos Termos do conector Snowflake.

Este tópico descreve as etapas para configurar o Snowflake para o Openflow Connector for Salesforce Bulk API.

Pré-requisitos

Antes de começar, certifique-se de ter concluído o seguinte:

Criar um par de chaves

Crie um par de chaves que será usado pelo usuário da conta de serviço no conector para interagir com o banco de dados.

Nota

Esta etapa será necessária apenas se você estiver implantando o conector no Openflow BYOC. Ela NOT é necessária para implantar o conector no Openflow SPCS.

  1. Gere uma chave privada. O exemplo abaixo mostra como gerar uma chave privada não criptografada.

    openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
    
    Copy

    O conteúdo do arquivo rsa_key.p8 terá a seguinte aparência:

    -----BEGIN PRIVATE KEY-----
    MIIE6T...
    -----END PRIVATE KEY-----
    
    Copy
  2. Gere a chave pública fazendo referência à chave privada.

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

    O conteúdo do arquivo rsa_key.pub terá a seguinte aparência:

    -----BEGIN PUBLIC KEY-----
    MIIBIjANBgkqh...
    -----END PUBLIC KEY-----
    
    Copy

    Copie o conteúdo desse arquivo (sem os cabeçalhos -----BEGIN PUBLIC KEY----- e -----END PUBLIC KEY-----) que será usado para criar o usuário na próxima seção.

Criar objetos e conceder privilégios

Crie uma conta de serviço, uma função, um banco de dados, um esquema e um warehouse para o conector e conceda as devidas permissões.

  1. Use uma função com privilégios ACCOUNTADMIN para definir a função:

    USE ROLE ACCOUNTADMIN;
    
    Copy
  2. Crie o banco de dados Snowflake de destino, se ele não existir:

    CREATE DATABASE IF NOT EXISTS <my_salesforce_db>;
    
    Copy
  3. Crie o esquema de destino no banco de dados, se ele não existir:

    CREATE SCHEMA IF NOT EXISTS <my_salesforce_db>.<my_salesforce_schema>;
    
    Copy
  4. Crie a função usada pelo conector Openflow:

    CREATE ROLE IF NOT EXISTS <Salesforce_connector_role_name>;
    
    Copy
  5. Conceda os privilégios à função para usar o banco de dados:

    GRANT USAGE ON DATABASE <my_salesforce_db> TO ROLE <Salesforce_connector_role_name>;
    GRANT USAGE ON SCHEMA <my_salesforce_db>.<my_salesforce_schema> TO ROLE <Salesforce_connector_role_name>;
    GRANT CREATE TABLE ON SCHEMA <my_salesforce_db>.<my_salesforce_schema> TO ROLE <Salesforce_connector_role_name>;
    
    Copy
  6. Crie um warehouse para o conector (ou use um existente) e conceda os privilégios de uso à função do conector:

    -- Create a warehouse (skip if you wish to use an existing warehouse)
    CREATE OR REPLACE WAREHOUSE MY_WAREHOUSE WITH
     WAREHOUSE_SIZE = 'SMALL'
     AUTO_SUSPEND = 300
     AUTO_RESUME = TRUE;
    
    GRANT USAGE, OPERATE ON WAREHOUSE MY_WAREHOUSE TO ROLE <Salesforce_connector_role_name>;
    
    Copy
  7. Crie o usuário do serviço e atribua a função e a chave pública:

    -- Create a service user that the connector will use to interact with Snowflake
    -- Set default role to <Salesforce_connector_role_name>
    -- Assign the public key generated with openssl in the previous step (only for BYOC)
    CREATE OR REPLACE USER <Salesforce_connector_user_name>
      TYPE = SERVICE
      DEFAULT_ROLE = <Salesforce_connector_role_name>
      RSA_PUBLIC_KEY = '<public_key_generated_by openssl_in_step_1>';
    
    -- Grant the role to the user
    GRANT ROLE <Salesforce_connector_role_name> TO USER <Salesforce_connector_user_name>;
    
    Copy

Criar uma regra de rede (somente implantação do Openflow Snowflake)

Se você estiver implantando o conector em um tempo de execução que está em uma implantação do Openflow Snowflake, deverá criar uma regra de rede e uma integração de acesso externo e defini-las no tempo de execução.

USE ROLE SECURITYADMIN;

CREATE NETWORK RULE MY_OPENFLOW_SALESFORCE_NETWORK_RULE
   TYPE = HOST_PORT
   MODE = EGRESS
   VALUE_LIST = ('<salesforce_instance_host>:443');

CREATE EXTERNAL ACCESS INTEGRATION MY_OPENFLOW_SALESFORCE_EAI
   ALLOWED_NETWORK_RULES = (MY_OPENFLOW_SALESFORCE_NETWORK_RULE)
   ENABLED = TRUE
   COMMENT = 'External Access Integration to connect to Salesforce';

GRANT USAGE ON INTEGRATION MY_OPENFLOW_SALESFORCE_EAI TO ROLE <openflow_role_name>;
Copy

Próximos passos

Configurar o conector no Openflow:

Openflow Connector for Salesforce Bulk API: Configuração do conector