Credenciais e Permissões Exigidas do Cliente
🔴 NÃO PUBLICAR NO WORDPRESS. Este documento é interno.
Ele está dentro da árvore de documentação de clientes por conveniência de consulta, e não é um tutorial de cliente. O conteúdo inclui orientação comercial interna (“não ofereça ao cliente”, “não prometa cobertura de Slack”), a lista de integrações fora do ar e a seção de lacunas conhecidas do produto. Publicar isso expõe roadmap e fragilidades.
A versão para o cliente está em 05. Integrações › Guias por provedor, um documento por provedor, escrito a partir daqui mas sem as partes internas. Os princípios gerais (somente leitura, nenhum dado de conteúdo, credencial cifrada, permissão faltando nunca reprova) estão no tutorial Integrações – Para que servem e como os testes usam os dados, que é público.
Mantido intacto porque é a melhor fonte de verdade que existe sobre permissões mínimas. Se as exigências mudarem no código, atualize aqui primeiro.
—
Referência interna para o time de onboarding e suporte: o que cada integração ativa da plataforma exige do cliente, qual a permissão mínima, e a frase pronta que pode ser enviada ao cliente sem adaptação.
Levantado a partir do código em 2026-08-24 (`apps/customer/src/app/[locale]/integrations/[provider]/page.tsx` para os campos, `apps/worker/src/checks//` para as chamadas de API reais). Nenhuma dessas exigências estava documentada antes — não existe lista de permissões no produto, no catálogo ou na UI.
Princípios que valem para todas as integrações#
- Somente leitura. Nenhuma verificação da Imara escreve, altera ou apaga qualquer coisa no ambiente do cliente. A única exceção é a AWS, onde `iam:GenerateCredentialReport` dispara a geração de um relatório (a própria AWS classifica essa ação como não-leitura).
- Nenhum dado de conteúdo é lido. As verificações leem *configuração* — não leem objetos de bucket, registros de banco, e-mails, mensagens nem segredos armazenados.
- Credenciais são cifradas em repouso antes de serem gravadas, e nunca aparecem em log ou em resposta de API.
- Permissão faltando nunca gera reprovação. Quando o token não alcança um recurso, a verificação vira `NOT_RUN` ou `MANUAL` com a mensagem do motivo — nunca um `FAIL` inventado. Se o cliente cortar permissões, o efeito é perda de cobertura, não queda de score.
- Sempre prefira uma credencial de serviço dedicada, não a chave pessoal de um administrador. Isso mantém o rastro de auditoria limpo e permite revogar o acesso da Imara sem afetar ninguém.
—
Infraestrutura de nuvem#
AWS#
Campos no Imara: Access Key ID · Secret Access Key · Região (opcional, padrão `us-east-1`)
Permissão mínima: políticas gerenciadas `SecurityAudit` + `ViewOnlyAccess`, mais uma política inline com `iam:GenerateCredentialReport`.
Frase para o cliente:
Crie um usuário IAM com acesso programático, anexe as políticas gerenciadas `SecurityAudit` e `ViewOnlyAccess` mais uma política inline permitindo `iam:GenerateCredentialReport`, e nos envie o Access Key ID, o Secret Access Key e a região principal do seu ambiente.
- São 320 operações de leitura em 70 serviços (IAM, EC2, S3, RDS, KMS, CloudTrail, GuardDuty, SecurityHub, SageMaker, Bedrock, WAF, Organizations e outros). Por isso duas políticas gerenciadas em vez de uma lista manual.
- `SecurityAudit` sozinha não cobre SageMaker, Bedrock, Macie, Inspector2, Transfer, Route 53 Domains e Global Accelerator — daí o `ViewOnlyAccess`.
- `ReadOnlyAccess` também funcionaria, mas concede leitura de dados (conteúdo de S3, itens do DynamoDB) que a Imara nunca usa. A própria plataforma tem uma verificação que sinaliza `ReadOnlyAccess` concedida a terceiros como achado.
- A integração não suporta assumir role com ExternalId — só chave estática de usuário IAM. Se o cliente exigir cross-account role, hoje não temos esse caminho.
- A região informada define onde as verificações regionais rodam. Ambiente multi-região tem cobertura apenas da região configurada.
Azure#
Campos no Imara: Tenant ID · Client ID · Client Secret · Subscription ID
Permissão mínima: funções `Reader` e `Security Reader` na assinatura + permissões de aplicativo do Microsoft Graph `Directory.Read.All`, `Policy.Read.All`, `Application.Read.All`, `AuditLog.Read.All`, todas com consentimento do administrador.
Frase para o cliente:
Crie um App Registration no Entra ID, atribua a ele as funções `Reader` e `Security Reader` na assinatura, conceda as permissões de aplicativo do Microsoft Graph `Directory.Read.All`, `Policy.Read.All`, `Application.Read.All` e `AuditLog.Read.All` com consentimento do administrador, e nos envie Tenant ID, Client ID, Client Secret e Subscription ID.
- O formulário marca Subscription ID como opcional, mas ele é obrigatório: sem ele todas as verificações de ARM (storage, SQL, VM, Key Vault, Defender) falham na validação de credencial. Sempre peça os quatro campos.
- As verificações de MFA por usuário leem `signInActivity` e o relatório de registro de métodos de autenticação — isso exige `AuditLog.Read.All` e licença Entra ID P1/P2. Sem licença, essas verificações ficam `NOT_RUN`.
- `Security Reader` é o que habilita as verificações do Defender for Cloud.
Google Cloud#
Campos no Imara: Project ID · Chave JSON da service account
Permissão mínima: `roles/viewer` + `roles/iam.securityReviewer` no projeto.
Frase para o cliente:
Crie uma service account no projeto, conceda a ela os papéis `roles/viewer` e `roles/iam.securityReviewer`, gere uma chave JSON e nos envie o Project ID junto com o conteúdo do arquivo JSON.
- Cobertura de um único projeto por integração. Cliente com vários projetos precisa de uma integração por projeto.
- Uma verificação legada de MFA consulta o Admin Directory do Workspace. Ela só funciona se a service account também tiver delegação em todo o domínio — sem isso fica `NOT_RUN`. Para cobertura de identidade, use a integração Google Workspace.
Oracle Cloud#
Campos no Imara: OCID da Tenancy · OCID do Usuário · Fingerprint · Região · Chave privada (PEM) · Passphrase (opcional)
Permissão mínima: grupo IAM com a política `Allow group to read all-resources in tenancy`.
Frase para o cliente:
Crie um usuário IAM dentro de um grupo que tenha a política `Allow group to read all-resources in tenancy`, gere um par de chaves de API para esse usuário e nos envie o OCID da tenancy, o OCID do usuário, o fingerprint, a região de origem e a chave privada em formato PEM.
—
Desenvolvimento e DevOps#
GitHub#
Campos no Imara: Token · Organização (opcional)
Permissão mínima: Personal Access Token (classic) com `read:org`, `repo` e `read:audit_log`, criado por um owner da organização.
Frase para o cliente:
Como owner da organização, gere um Personal Access Token (classic) com os escopos `read:org`, `repo` e `read:audit_log`, e nos envie o token junto com o nome da organização.
- Ler proteção de branch e alertas de vulnerabilidade exige permissão de admin no repositório — um token de membro comum retorna 403 e essas verificações ficam `NOT_RUN`. Daí a exigência de owner.
- O escopo `repo` é necessário para alcançar repositórios privados. Em organização 100% pública, `public_repo` basta.
- A API de audit log só existe em GitHub Enterprise Cloud. Fora dele, a verificação de log de auditoria orienta a conferência manual.
- Existe também o caminho de instalar o GitHub App da Imara na organização, que dispensa PAT e não expira. Prefira esse caminho quando o cliente aceitar.
GitLab#
Campos no Imara: Token · URL da instância (opcional) · Group ID (opcional) · Project ID (opcional)
Permissão mínima: Personal Access Token com escopo `read_api`, em conta com papel Owner no grupo.
Frase para o cliente:
Gere um Personal Access Token com o escopo `read_api` em uma conta que tenha papel Owner no grupo, e nos envie o token, o ID do grupo e — se for GitLab self-managed — a URL da sua instância.
Heroku#
Campos no Imara: API Key
Permissão mínima: Authorization Token de usuário com papel admin no time.
Frase para o cliente:
Gere um Authorization Token (API key) em uma conta com papel de admin no time Heroku e nos envie a chave.
Render#
Campos no Imara: API Key
Permissão mínima: API Key de usuário com papel Admin no workspace.
Frase para o cliente:
Crie uma API Key nas configurações da sua conta Render, usando um usuário com papel Admin no workspace, e nos envie a chave.
—
Banco de dados e dados#
MongoDB Atlas#
Campos no Imara: Public Key · Private Key · Project (Group) ID
Permissão mínima: API Key de organização com papel Organization Read Only, adicionada ao projeto como Project Read Only.
Frase para o cliente:
Crie uma API Key na organização Atlas com o papel Organization Read Only, adicione essa chave ao projeto com o papel Project Read Only, libere o IP de saída da Imara na API Access List e nos envie a Public Key, a Private Key e o Project ID.
Snowflake#
Campos no Imara: Account · Usuário · Senha · Warehouse (opcional) · Role (opcional)
Permissão mínima: papel de monitoramento dedicado com `IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE` e `MONITOR ON ACCOUNT`. Não é necessário ACCOUNTADMIN.
Frase para o cliente:
Crie um usuário de serviço com um papel de monitoramento que tenha `IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE` e `MONITOR ON ACCOUNT`, e nos envie o identificador da conta, o usuário, a senha, o warehouse e o nome do papel.
Supabase#
Campos no Imara: Access Token · Slug da organização (opcional) · Project Ref (opcional)
Permissão mínima: Personal Access Token de usuário Owner da organização.
Frase para o cliente:
Gere um Personal Access Token na conta de um Owner da organização Supabase e nos envie o token, o slug da organização e o Project Ref do projeto que devemos monitorar.
—
Produtividade e colaboração#
Google Workspace#
Campos no Imara: Domínio · E-mail do admin · Chave JSON da service account
Permissão mínima: service account com delegação em todo o domínio, autorizada no Admin Console para seis escopos de leitura, impersonando um super admin.
Frase para o cliente:
Crie uma service account com delegação em todo o domínio, autorize o Client ID dela no Admin Console para os escopos `admin.directory.user.readonly`, `admin.directory.domain.readonly`, `admin.directory.customer.readonly`, `admin.directory.orgunit.readonly`, `admin.directory.rolemanagement.readonly` e `cloud-identity.policies.readonly`, e nos envie o domínio, o e-mail de um super administrador e a chave JSON.
Slack#
Campos no Imara: Bot Token · Workspace ID (opcional)
Permissão mínima: um bot token válido. `auth.test` não exige escopo adicional.
Frase para o cliente:
Crie um Slack app no seu workspace, instale-o e nos envie o Bot User OAuth Token (começa com `xoxb-`).
—
Identidade e SSO#
Okta#
Campos no Imara: Domínio da org · API Token
Permissão mínima: API Token (SSWS) criado por um Read-Only Administrator.
Frase para o cliente:
Crie um API Token em uma conta com o papel Read-Only Administrator e nos envie o domínio da sua org Okta (ex.: `empresa.okta.com`) e o token.
—
Gerenciadores de senha#
1Password#
Campos no Imara: API Token · URL da Events API (opcional)
Permissão mínima: token da Events API com acesso a *Audit events* e *Sign-in attempts*.
Frase para o cliente:
No 1Password Business, crie um token da Events API com acesso a Audit events e Sign-in attempts, e nos envie o token junto com a URL da Events API da sua região (ex.: `https://events.1password.com`).
Bitwarden#
Campos no Imara: Client ID · Client Secret
Permissão mínima: API Key da organização (não a pessoal), que autentica no escopo `api.organization`.
Frase para o cliente:
No Bitwarden, acesse Settings → Organization info → View API Key na sua organização e nos envie o `client_id` e o `client_secret` exibidos.
Dashlane#
Campos no Imara: API Key
Permissão mínima: chave da Team API, gerada no console de administração.
Frase para o cliente:
No console de administração do Dashlane Business, gere uma chave da API de time (Team API) e nos envie a chave.
—
CDN e segurança#
Cloudflare#
Campos no Imara: API Token · Account ID (opcional)
Permissão mínima: API Token com leitura em Zone, Zone Settings, DNS e Firewall Services (todas as zonas) + Account Settings: Read e Audit Logs: Read.
Frase para o cliente:
Crie um API Token no Cloudflare com permissões de leitura em Zone, Zone Settings, DNS e Firewall Services aplicadas a todas as zonas, mais Account Settings: Read e Audit Logs: Read, e nos envie o token e o Account ID.
—
CRM e vendas#
HubSpot#
Campos no Imara: Access Token
Permissão mínima: Private App com os escopos `settings.users.read` e `crm.objects.contacts.read`.
Frase para o cliente:
Crie um Private App no HubSpot com os escopos `settings.users.read` e `crm.objects.contacts.read` e nos envie o Access Token gerado.
Salesforce#
Campos no Imara: Instance URL · Client ID · Client Secret · Refresh Token
Permissão mínima: Connected App com escopos `api` e `refresh_token`; usuário de integração com `API Enabled` e `View Setup and Configuration`.
Frase para o cliente:
Crie um Connected App com os escopos `api` e `refresh_token`, use um usuário de integração com as permissões `API Enabled` e `View Setup and Configuration`, e nos envie a Instance URL, o Consumer Key, o Consumer Secret e o Refresh Token.
—
Integrações fora do ar (não ofereça ao cliente)#
Estão no código mas não estão marcadas como disponíveis no catálogo:
Integração | Situação |
|---|---|
Vercel | Verificações implementadas e formulário pronto (API Token + Team ID), mas o catálogo está em `COMING_SOON`. Basta liberar. |
Deel · Gupy · Convenia | Verificações de HRIS e formulário (token único) prontos; catálogo em `COMING_SOON`. |
DigitalOcean · Office 365 | Verificações existem, mas o formulário não tem campo de credencial nenhum — liberar no catálogo hoje resultaria em tela de conexão vazia. Precisa de desenvolvimento antes. |
Lacunas conhecidas do produto#
- Nada disso aparece na plataforma. A tela de conexão de cada integração não lista permissão exigida — só um link para a documentação genérica do fornecedor. Cliente sem orientação erra a permissão e a integração conecta mas não produz evidência.
- Campos marcados como opcionais que são obrigatórios na prática — Azure `subscriptionId`, GitLab `groupId`, Google Workspace `adminEmail`, Cloudflare `accountId`, Supabase `organizationSlug`/`projectRef`. Vale corrigir o formulário ou, no mínimo, o texto de apoio.
- AWS sem caminho de role cross-account. Só chave estática. Cliente com política interna proibindo chave de longa duração não consegue conectar.
- Slack praticamente vazio. Uma verificação implementada. Convém remover do catálogo ou rotular claramente até haver cobertura real.