Protegendo as credenciais de conexão do Azure Data Factory com Salesforce através do Azure KeyVault

Sidney Cirqueira
7 min readOct 17, 2019

--

by: Rayssa Ribeiro Dias

Estamos vivendo em tempos de LGPD e pensando em cenários que um engenheiro de dados precisa receber informações de diversas fontes de dados sem esquecer da segurança das credenciais de acesso, criei esse post de um case onde necessitamos ingerir dados de um CRM que está na infraestrutura da Salesforce através do Azure Data Factory, utilizando credenciais protegidas via Azure Key Vault.

O intuito é simplesmente demonstrar o passo a passo das configurações iniciais para proteger as credenciais de conexão com auxilio do Key Vault.

Breve descrição dos recursos utilizados:

  • Data Factory: Serviço de orquestração gerenciado na cloud da Microsoft, construído para realizar extração, transformação e carga (ETL) e/ou extração, carga e transformação (ELT) de projetos complexos de integração de dados.
  • Salesforce: Plataforma de relacionamento projetada para auxiliar a vender, prestar serviços de manutenção, comercializar, analisar e conectar com seus clientes de negócio.
  • Key Vault: Cofre de senhas centralizado para aplicativos no Azure que permite controlar a distribuição das credenciais, seu maior benefício é reduzir as chances de vazamento acidental das chaves das aplicações.
  • Linked Service: Link entre o armazenamento de dados de origem/destino e o Data Factory.
  • Managed Identity Application Id: É uma aplicação registrada para o Azure Active Directory que representa o serviço do data factory. Tem como benefício o armazenamento de credenciais no key vault e diversos conectores para outros serviços do Azure. Este recurso será criado automaticamente quando o data factory for provisionado via portal ou powershell.

Pré-requisitos

Você irá precisar de uma conta no Microsoft Azure, um serviço do Data Factory e do Azure Key Vault provisionado e as credenciais de acesso ao Salesforce para configuração do ambiente.

Sumário

  1. Adicionar credenciais de acesso no Key Vault
  2. Configurar Azure Key Vault Linked Service
  3. Configurar Salesforce Linked Service
  4. Configurar permissonamento Managed Identity Application Id
  5. Ajustar configuração Salesforce Linked Service
  6. Criar dataset e conectar a infraestrutura do Salesforce

Step 1 — Adicionando credenciais de acesso ao Key Vault

Para copiar dados de origem ou destino do salesforce através do data factory é preciso utilizar um conector especifico com as seguintes propriedades para configuração no linked service:

  • environmentUrl
  • username
  • password
  • securityToken.

Nesse exemplo iremos adicionar ao key vault apenas o password e o securityToken.

Na blade do key vault clique nas configurações de Secrets para gerar 2 novas chaves, uma para password e outra para securityToken.

Informe um nome de sua preferência e no campo value insira o seu password de acesso ao salesforce, no step 3 você precisará desse nome para criação do linked service, em seguida clique em Create.

Faça o mesmo do exemplo anterior para criar o securityToken e clique em Create.

Credenciais devidamente configuradas conforme imagem abaixo.

Step 2 — Configurando Azure Key Vault Linked Service

Para utilizar a credenciais armazenadas no key vault dentro do data factory, primeiramente você precisará criar um linked service referenciando o seu key vault criado para armazenamento das chaves.

Na tela do data factory clique em connections para adicionar um novo linked service, em data store informe o nome [key vault], selecione o item e clique em continue.

Na próxima aba, informe o nome desejado para esse linked service, selecione a subscription, informe o nome do seu serviço do key vault já criado, clique em test connection para validar a conexão e depois em Create.

Após a criação do linked service é preciso publicar as alterações para o data factory, observe que no item 2 da imagem abaixo é possível configurar um repositório no Git ou um repo no Azure DevOps para versionamento de código, em breve irei escrever um post sobre essa integração do data factory com o Azure DevOps para construção de pipelines (CI/CD) e compartilhar por aqui.
Em seguida clique em Publish e aguarde a confirmação.

Agora que já temos a conexão com o key vault criada já podemos configurar o linked service com o salesforce.

Step 3 — Configurando Salesforce Linked Service

Na aba Linked Services, clique em +New, digite o nome [salesforce], selecione e clique em continuar.

Crie um nome para o novo linked service, informe o nome de usuário para acesso ao salesforce, modifique a autenticação para Azure Key Vault, selecione o linked service do key vault que foi criado no step 2, informe o nome criado para referenciar o password e a secretkey no key vault conforme configuramos no step 1. Por ultimo teste e conexão e aguarde uma mensagem de erro como resposta.

Observe abaixo a mensagem de falha na conexão após efetuar o teste de conectividade. Esse erro ocorre devido a falta de permissão do data factory managed application id para recuperar as credenciais do Key Vault.

Step 4 — Conceder permissionamento do Data Factory Managed Identity Application ID ao Azure Key Vault

Para localizar essa informação, acesse o serviço do data factory, clique em Properties e copie o código do managed identity aplication id para liberar o permissionamento de acesso.

Localize o serviço do key vault que estão armazenadas suas credenciais, clique em Access policies e depois clique em +Add Access Policy.

Selecione o template para Key & Secret Management, informe o tipo de permissionamento “Get, tanto para key permissions, quanto para secret permissions, possibilitando o serviço do data factory retornar as chaves e segredos armazenados no key vault, depois clique em Select principal e cole o código do managed identity aplication id obtido anteriormente nas propriedades do data factory, clique em Select e Add para adicionar o item listado.

Na próxima aba salve as configurações para continuar com o processo de criação do salesforce linked service.

Step 5— Retornar a configuração do Salesforce Linked Service

Após a inclusão do permissionamento, retorne a tela do data factory e basta clicar em test connection, aguardar a validação e depois clique em Create para criar o salesforce linked service.
Obs: Caso ocorra um erro de conexão diferente do listado no step 3, cancele a criação do linked service e faça novamente as configurações de criação do linked service informando os mesmos dados.

Publique as alterações realizadas clicando em Publish e conforme podemos visualizar na tela abaixo já temos 2 linked services necessários para acesso ao ambiente do salesforce.

Steps 6 — Criar dataset para validar acesso ao Salesforce

Após as configurações realizadas no step anterior, basicamente você precisa criar seu conjunto de dados e realizar a ingestão das informações diretamente do ambiente salesforce.
Em Factory Resources do data factory, na aba Datasets clique em “…” (actions) e depois em New dataset.

Na próxima aba informe o nome [salesforce] para o tipo de armazenamento de dados, selecione o item e clique em continuar, conforme imagem abaixo:

Na aba de conexões selecione o linked service criado para o salesforce, clique em test connection para validar a conexão, depois informe o tipo de objeto que deseja para retornar os dados do ambiente salesforce.
Não esqueça de Publicar as modificações da criação do novo dataset.

Clique em preview para retornar os dados diretamente do Salesforce e aguarde as listagem conforme imagem abaixo.

Com os acesso direto ao salesforce para ingestão das informações na origem, você já pode dar continuarde ao seu pipeline completo de dados no Azure Data Factory.

Espero que tenha auxiliado no entendimento de como proteger as credenciais de acesso utilizando o Azure Key Vault.

No próximo post falarei sobre a utilização do Azure DevOps para versionamento de código, integração e entrega continua do Azure Data Factory.

Nos vemos nos próximos posts!!!

Para saber mais sobre o universo de engenharia de dados no Microsoft Azure, acesse o post abaixo onde compartilho algumas dicas de como estudar e se certificar nessa área.
https://medium.com/@sidneyocirqueira/como-se-tornar-um-microsoft-certified-azure-data-engineer-associate-eacc2d9969f5?source=friends_link&sk=19067e9cb28213b8076c04dbebe926ae

#microsoft #azure #dataengineer #datafactory #salesforce #keyvalt

Referências:

Documentação Datafactory: https://docs.microsoft.com/en-us/azure/data-factory/

Documentação Key Vault: https://docs.microsoft.com/en-us/azure/key-vault/

Armazenando credencial no Key Vault: https://docs.microsoft.com/en-us/azure/data-factory/store-credentials-in-key-vault

--

--

Sidney Cirqueira

Support Engineer - Azure Synapse at @Microsoft Azure Data & AI | MCT Certified.