Copiar Dados do SharePoint com Azure Data Factory
- Michel Souza Santana
- 22 de out.
- 6 min de leitura

Quando falamos em fontes de dados em um ambiente corporativo, é quase impossível não esbarrar no Microsoft SharePoint. Seja para listas de controle, planilhas de Excel que o time de Finanças atualiza, ou arquivos CSV gerados por algum processo departamental, o SharePoint funciona muitas vezes como um "data mart" semi-estruturado.
Como engenheiros de dados, nosso trabalho é trazer esses dados para o nosso ambiente de processamento (seja um Data Lake, um Data Warehouse ou um Lakehouse) de forma confiável e automatizada. E a ferramenta de escolha no ecossistema Azure para essa orquestração é, sem dúvida, o Azure Data Factory (ADF).
A questão é: como conectar o ADF ao SharePoint Online de forma segura?
Diferente de um banco de dados SQL, onde simplesmente usamos um usuário e senha, o SharePoint Online exige um fluxo de autenticação mais moderno e seguro, baseado em OAuth2 e no Azure Active Directory (Azure AD).
No começo, admito que a configuração de permissões entre o Azure AD, o SharePoint e o Data Factory pode parecer um labirinto. Mas, na prática, é um processo bem estruturado que, uma vez entendido, se torna padrão para muitas integrações no Azure.
Neste artigo, vou quebrar exatamente esse processo em 5 passos práticos, o mesmo que uso nos meus projetos, para que você possa configurar seu pipeline de ingestão do SharePoint hoje mesmo.
O Desafio: Autenticação via Service Principal
Para que o ADF acesse o SharePoint "sozinho" (sem a intervenção de um usuário), precisamos criar uma identidade de aplicativo, conhecida como Service Principal (ou Conta de Serviço). Vamos configurar essa identidade, dar a ela permissão de leitura no SharePoint e, em seguida, usar o ADF para se autenticar em nome dela.
Vamos ao passo a passo.
Passo 1: Registrar um Aplicativo no Azure Active Directory (Azure AD)
Tudo começa criando a "identidade" do nosso processo no Azure AD.
Vá até o portal do Azure e procure por Azure Active Directory.
Copie o Tenant ID, vamos precisar dele também.

No menu à esquerda, selecione App registrations (Registros de aplicativo) e clique em + New registration.

Dê um nome claro, algo como svc_adf_sharepoint_reader, e mantenha as outras opções padrão.
Após o registro, o Azure nos mostrará a tela de overview do aplicativo. Anote imediatamente estes dois valores, pois vamos precisar deles:
Application (client) ID (O "login" do nosso app)
Directory (tenant) ID (O ID da nossa organização no Azure)

Agora, precisamos criar a "senha" para esse aplicativo.
No menu do aplicativo, vá em Certificates & secrets.
Clique em + New client secret e dê uma descrição (ex: pipeline_key).

Importante: Assim que você criar o segredo, copie o Value (o valor do segredo) imediatamente. Ele só será exibido esta única vez. A minha recomendação é salvar esse valor diretamente no Azure Key Vault para máxima segurança.

Passo 2: Conceder Permissão ao Aplicativo no Site do SharePoint
Agora vem o "pulo do gato". Não adianta só criar o App no Azure AD; precisamos avisar ao site específico do SharePoint que esse aplicativo tem permissão para acessá-lo.
Essa configuração não é feita no portal do Azure, mas sim em uma página de administração "escondida" do próprio SharePoint.
Acesse o site do SharePoint que contém os dados que você quer ler.
Modifique a URL do site para acessar a página de concessão de permissões. A URL deve ficar assim: https://[seusite].sharepoint.com/_layouts/15/appinv.aspx (Substitua [seusite] pelo nome do seu tenant e site).

Na página que abrir, cole o Application (client) ID (que copiamos no Passo 1) no campo App Id e clique em Lookup. Isso deve preencher os campos ao lado. Depois preencha o App Domain e o Redirect URL com os valores padrão:
App Domain: localhost.com
Redirect URL: https://www.localhost.com

No grande campo de texto Permission Request XML, vamos definir o que esse app pode fazer. Para permitir que ele leia arquivos e listas, cole o seguinte XML:
<AppPermissionRequests AllowAppOnlyPolicy="true"> <AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="Read" /> </AppPermissionRequests>
AllowAppOnlyPolicy="true" é crucial. Dizemos ao SharePoint para aceitar permissões somente de aplicativo.
Right="Read" define que ele só poderá ler (princípio do menor privilégio).

Clique em Create e, na tela seguinte, confirme clicando em Trust It.
Pronto. A "chave" do nosso App agora "abre a porta" do SharePoint.

Passo 3: Criar o Pipeline no Data Factory
Com as permissões no lugar, vamos ao Data Factory. Nosso pipeline terá duas atividades principais em sequência:
Atividade Web: Para trocar nossas credenciais (Client ID e Secret) por um token de acesso OAuth2 temporário.
Atividade Copy Data: Para usar esse token e, de fato, copiar o arquivo.
(Sugestão de visualização: Um fluxograma simples mostrando Start -> Get_Token (Web) -> Copy_File (Copy) -> End).
Passo 4: Configurar a Atividade "Web" para Obter o Token
O ADF não pode usar o Client Secret diretamente no conector do SharePoint (para arquivos). Precisamos primeiro trocá-lo por um access token.
Arraste uma atividade Web para o seu pipeline e nomeie-a (ex: Get_SharePoint_Token).

Na aba Settings, configure os seguintes campos:
URL: Aqui vamos chamar o endpoint de autenticação do Azure AD. https://accounts.accesscontrol.windows.net/[Seu-Tenant-ID]/tokens/OAuth/2 (Lembre-se de substituir o [Seu-Tenant-ID] que anotamos no Passo 1).

Method: POST
Headers: Adicione um header Content-Type com o valor application/x-www-form-urlencoded.

Body: Aqui está a mágica. Estamos enviando nossas credenciais para receber o token.
grant_type=client_credentials&client_id=[Seu-Client-ID]@[Seu-Tenant-ID]&client_secret=[Seu-Client-Secret]&resource=00000003-0000-0ff1-ce00-000000000000/[nome-do-seu-tenant].sharepoint.com@[Seu-Tenant-ID]
Substitua todos os campos entre colchetes: [Seu-Client-ID], [Seu-Tenant-ID], [Seu-Client-Secret] (o valor que guardamos no Key Vault) e [nome-do-seu-tenant] (ex: minhaempresa.sharepoint.com).

Se você executar o Debug dessa atividade, a saída (output) dela deve ser um JSON contendo o access_token. É isso que queremos.

Passo 5: Configurar a Atividade "Copy Data" para Copiar o Arquivo
Agora, vamos usar o token.
Arraste uma atividade Copy Data e crie uma ligação (seta verde) da atividade Get_SharePoint_Token para ela.

Na aba Source (Origem) da atividade de cópia, vamos criar um novo Dataset.
Selecione "Gerenciar" > "Linked service" > "New".

Selecione o conector HTTP e continue.

Ao configurar o Linked Service do tipo HTTP.
Esses são os dados solicitados:
Base URL: Aqui vai a API do SharePoint para acessar o arquivo. O formato é: https://[seusite].sharepoint.com/site/Folder_Origem/_api/web/GetFileByServerRelativeUrl('/sites/[caminho-relativo-do-arquivo]')/$value
Authentication type: Selecione Anonymous. (Isso mesmo, anônimo. Por quê? Porque vamos injetar o token de autorização manualmente na atividade de cópia).
Vamos dividir a URL ficando parte no linked service e parte nas propriedades do copy data.
Base URL Parte 1: Aqui vai a API do SharePoint para acessar o arquivo. O formato é: https://[seusite].sharepoint.com
Exemplo: https://minhaempresa.sharepoint.com
Authentication type: Selecione Anonymous. (Isso mesmo, anônimo. Por quê? Porque vamos injetar o token de autorização manualmente na atividade de cópia).
Click em "Criar".

Retorne para os pipelines, click no copy data e depois em source.

Em "Source datasete" click em "New" click em database e selecione "HTTP" depois em "Continue".

Escolha o fromato de arquivo que vai ser consumido e click em "Continuar".

Na aba que se abrir na sequência, selecione o Linked Service que criamos.

Vai solicitar a "Relative URL", cole a segunda paerte da URL
Base URL Parte 2: Aqui vai a API do SharePoint para acessar o arquivo. O formato é: /site/Folder_Origem/_api/web/GetFileByServerRelativeUrl('/sites/[caminho-relativo-do-arquivo]')/$value
Click em "OK"

Agora vamos a configurar o Additional headers.

Click dentro do bloco e na aba que se abri cole essa linha:
Em Additional headers, vamos adicionar nossa autorização dinamicamente. Clique em "Add dynamic content" e insira:
Name: Authorization
Value (Conteúdo Dinâmico):
@{concat('Bearer ', activity('Get_SharePoint_Token').output.access_token)}
Essa expressão simplesmente pega a saída (output) da nossa primeira atividade (o access_token) e a formata como um Bearer Token.

Configure seu Sink (Destino) normalmente (seja um Blob Storage, Data Lake Storage, etc.).

Ao executar o pipeline completo, o ADF primeiro bate no Azure AD, pega o token, e no segundo passo, usa esse token para se autenticar no SharePoint e baixar o arquivo diretamente para o seu destino.
Conclusão: Mais que um Arquivo, uma Integração Segura
Pode parecer um setup um pouco complexo para algo que parece "simples" como ler um arquivo. No entanto, em ambientes corporativos de nuvem, segurança, governança e rastreabilidade são fundamentais.
O que construímos aqui não foi um "jeitinho", mas sim o fluxo de autenticação correto e seguro (Server-to-Server) recomendado pela Microsoft. Esse método garante que seu pipeline tenha apenas as permissões que precisa (princípio do menor privilégio), que as credenciais sensíveis (o Client Secret) estejam protegidas (idealmente no Key Vault) e que todo o processo seja auditável e automatizado.
Dominar esse fluxo de autenticação abre portas não só para o SharePoint, mas para diversas outras APIs protegidas pelo Azure AD. Automatizar a ingestão de dados que nascem em ferramentas de produtividade, como o SharePoint, é um passo fundamental para centralizar e democratizar o acesso aos dados no seu Data Lakehouse.
Espero que este guia ajude a desmistificar esse processo.
Até a próxima!




Comentários