Pular para o conteúdo principal

Boas Praticas de Seguranca

Principios fundamentais

1. Uma chave por integracao

Crie API keys separadas para cada sistema ou integracao:

IntegracaoChavePermissoes
CRMIntegracao CRMcontacts.read, contacts.write, conversations.read
ChatbotChatbot Producaomessages.send, messages.read
DashboardDashboard BIconversations.read, contacts.read
Envio em massaCampanhas Marketingbulk-send.write, bulk-send.read, contacts.read

Vantagem: Se uma chave for comprometida, voce revoga apenas aquela chave sem afetar as outras integracoes.

2. Principio do menor privilegio

Conceda apenas os escopos estritamente necessarios para cada integracao:

# BOM: Apenas os escopos necessarios
{
"permissions": ["messages.send", "messages.read"]
}

# RUIM: Todos os escopos (desnecessario e inseguro)
{
"permissions": [
"channels.read", "channels.write",
"messages.send", "messages.read",
"contacts.read", "contacts.write",
"webhooks.read", "webhooks.write",
"bulk-send.write", "bulk-send.read",
"conversations.read", "conversations.write",
"sandbox.write"
]
}

3. Nunca exponha chaves no frontend

API keys devem ser usadas exclusivamente em servidores backend:

CORRETO:
Browser → Seu Backend → Ogmma API (com API key)

ERRADO:
Browser → Ogmma API (com API key exposta no JavaScript)
Perigo

Chaves expostas em codigo client-side (JavaScript no navegador, apps mobile) podem ser facilmente extraidas e usadas indevidamente. Se uma chave for exposta, revogue-a imediatamente.


Rotacao de chaves

Rotacione suas API keys periodicamente para minimizar o risco de uso indevido:

Processo de rotacao

  1. Crie uma nova chave com as mesmas permissoes
  2. Atualize sua integracao para usar a nova chave
  3. Teste se a integracao funciona com a nova chave
  4. Revogue a chave antiga apos confirmar que tudo funciona
# 1. Criar nova chave
curl -X POST "https://oapi.ogmma.com.br/v1/api-keys" \
-H "Authorization: Bearer {JWT_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"name": "CRM Producao (rotacao fev/2025)",
"permissions": ["contacts.read", "contacts.write"]
}'

# 2. Apos atualizar a integracao, revogar a chave antiga
curl -X DELETE "https://oapi.ogmma.com.br/v1/api-keys/{oldKeyId}" \
-H "Authorization: Bearer {JWT_TOKEN}"

Frequencia recomendada

Tipo de integracaoFrequencia
Integracoes criticas (pagamentos, dados sensiveis)A cada 30 dias
Integracoes internasA cada 90 dias
Integracoes de testeSem necessidade de rotacao

Armazenamento seguro

Variaveis de ambiente

Armazene API keys como variaveis de ambiente, nunca em codigo-fonte:

# .env (NUNCA commite este arquivo!)
OGMMA_API_KEY=oapi_sk_live_a1b2c3d4e5f6g7h8...
// Usar variavel de ambiente
const apiKey = process.env.OGMMA_API_KEY;

Gerenciadores de secrets

Para ambientes de producao, utilize gerenciadores de secrets:

  • AWS Secrets Manager
  • Google Secret Manager
  • HashiCorp Vault
  • Vercel / Railway Environment Variables

O que NAO fazer

  • Nunca commite chaves em repositorios Git
  • Nunca envie chaves por e-mail, Slack ou mensagens
  • Nunca registre chaves em logs da aplicacao
  • Nunca armazene chaves em banco de dados sem criptografia

Data de expiracao

Para chaves temporarias (ex: acesso a terceiros, testes), defina uma data de expiracao:

curl -X POST "https://oapi.ogmma.com.br/v1/api-keys" \
-H "Authorization: Bearer {JWT_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"name": "Acesso temporario - Parceiro X",
"permissions": ["messages.read", "conversations.read"],
"expiresAt": "2025-03-01T00:00:00Z"
}'

A chave sera automaticamente desativada na data configurada.


Monitoramento

  • Revise periodicamente a lista de chaves ativas via GET /v1/api-keys
  • Revogue chaves que nao estao mais em uso
  • Investigue atividade incomum (volume de requisicoes fora do padrao)
  • Configure alertas para falhas de autenticacao repetidas

Resposta a incidentes

Se voce suspeita que uma chave foi comprometida:

  1. Revogue a chave imediatamente via DELETE /v1/api-keys/:id
  2. Crie uma nova chave e atualize a integracao
  3. Investigue o impacto: verifique logs de mensagens enviadas e operacoes realizadas
  4. Notifique sua equipe sobre o incidente