# Boas práticas para a construção de um pipeline

Antes de publicar um pipeline, revise estes pontos-chave para proteger seus fluxos de integração:

## **Use chaves de API**

Se o seu pipeline incluir os triggers [**HTTP**](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/triggers/web-protocols/http), [**REST**](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/triggers/web-protocols/rest) ou [**HTTP File**](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/triggers/web-protocols/http-file), os serviços criados ficarão expostos à internet. Para aumentar a segurança, a Digibee Integration Platform exige que esses triggers sejam usados com uma chave de API por padrão. Saiba [como criar uma chave de API](https://app.gitbook.com/s/cO0A6g1dOsu8BiHYqO67/platform-administration/settings/api-keys-consumers).

Use uma chave de API separada para cada sistema que consome uma API e restrinja o acesso apenas aos pipelines necessários.

Para maior segurança, recomendamos implementar a autenticação [JWT (JSON Web Token)](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/security/digibee-jwt/digibee-jwt-implementation).

{% hint style="danger" %}
**Exceção:** Se precisar publicar um pipeline com esses triggers sem uma chave de API (não recomendado), solicite via chat usando o seguinte modelo:

*Solicito a inclusão dos seguintes pipelines na whitelist para não exigir chave de API.*

* *Nome do realm*
* *Nomes dos pipelines a serem incluídos na whitelist do realm*
* *Motivo da solicitação*
  {% endhint %}

## **Armazene nomes de usuário e senhas com segurança**

Nunca exponha credenciais de login diretamente na configuração dos conectores. Em vez disso, armazene-as na página [**Contas**](https://app.gitbook.com/s/cO0A6g1dOsu8BiHYqO67/platform-administration/settings/accounts) e faça referência a elas no formulário de configuração do conector.

## **Oculte campos sensíveis**

Configure os campos sensíveis nas [configurações do pipeline](https://app.gitbook.com/s/cO0A6g1dOsu8BiHYqO67/development-cycle/build-overview/pipelines/how-to-create-a-pipeline) ou na [Política de Campos Sensíveis](https://app.gitbook.com/s/cO0A6g1dOsu8BiHYqO67/platform-administration/governance/policies/security/sensitive-fields) para ocultá-los automaticamente nos logs e mensagens. Isso evita a exposição de dados durante a integração, reduzindo riscos de segurança. Os campos ocultados são substituídos por "\*\*\*".

<figure><img src="https://content.gitbook.com/content/XfrDexGOLMin51pAiWkq/blobs/Zvslm1hpQIVSMMwjNz7M/Pol%C3%ADtica%20de%20campos%20sens%C3%ADveis.png" alt=""><figcaption></figcaption></figure>

## **Use HTTPS em vez de HTTP**

Sempre que possível, use **HTTPS** para chamadas a serviços externos para aumentar a segurança.

## **Criptografe e limpe os dados do Object Store**

* **Criptografe** dados sensíveis armazenados em um [**Object Store**](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/structured-data/object-store) usando conectores de criptografia.
* **Limpe** periodicamente o **Object Store**. Ele é um banco de dados auxiliar para o desenvolvimento de fluxos de integração e não deve armazenar grandes volumes de dados. Se não for limpo regularmente, pode causar falhas nos fluxos de integração.

## **Use o conector Script apenas quando necessário**

O conector [**Script (JavaScript)**](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/tools/script) roda em uma infraestrutura separada fora do pipeline. Isso pode tornar o processamento mais lento e, como essa infraestrutura é compartilhada, o uso excessivo pode causar atrasos em vários pipelines.

Para evitar esses problemas, sempre que possível utilize conectores dedicados, como [**Transformer (JOLT)**](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/tools/jolt-v2), [**JSLT**](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/tools/jslt), [**JSON Transformer**](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/tools/json-transformer) e [**JSON Generator (Mock)**](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/tools/json-generator) para transformação e mapeamento de dados. Esses conectores são incorporados ao pipeline e oferecem melhor desempenho. Utilize o **Script (JavaScript)** apenas quando for a única opção viável.

{% hint style="success" %}
Não tem certeza se precisa do conector **Script (JavaScript)**? [Fale com nosso time](https://app.gitbook.com/s/3ANg0NQQeslB7Og5K7Ah/help-and-faq/support). Podemos ter uma solução melhor com outros conectores.
{% endhint %}

## **Valide as respostas de serviços externos**

Ao integrar com serviços externos, como APIs ou bancos de dados, sempre verifique se o tipo de resposta está dentro do esperado. Caso não esteja, tome as ações necessárias, como reprocessar ou tratar o erro.

Para mais detalhes, consulte nossa documentação sobre [arquitetura orientada a eventos](https://docs.digibee.com/documentation/resources/pt-br/use-cases/how-to-event-driven-architecture).
