Pular para o conteúdo principal

Política de Uso de Ferramentas de Apoio ao Desenvolvimento

1. Objetivo​

Esta política define os requisitos para o uso controlado de ferramentas de apoio ao desenvolvimento, com particular enfoque em assistentes de inteligência artificial generativa (GenAI), ferramentas de geração de código, autocompletion assistido e sistemas de sugestão automática.

A adoção de ferramentas GenAI no desenvolvimento de software é uma realidade crescente e, quando bem governada, pode aumentar a produtividade sem comprometer a segurança. O risco não está na ferramenta em si, mas na ausência de revisão e validação do output gerado - que pode conter vulnerabilidades conhecidas, violações de licença, ou desalinhamento com requisitos técnicos e de segurança que o modelo de linguagem desconhece.

O objetivo desta política é garantir que:

  • O uso de ferramentas de apoio ao desenvolvimento é registado e rastreável
  • Todo o output gerado automaticamente é sujeito a revisão técnica humana antes de ser aceite
  • Os constrangimentos técnicos e de segurança aplicáveis ao projeto são comunicados à ferramenta e verificados no output
  • A responsabilidade pela qualidade e segurança do código permanece humana, independentemente da origem do código

2. Âmbito​

Esta política aplica-se a qualquer ferramenta de apoio ao desenvolvimento que gere, sugira ou complete código, configuração, testes ou documentação técnica de forma automatizada, incluindo (sem carácter exclusivo):

  • Assistentes GenAI integrados no IDE (GitHub Copilot, Amazon CodeWhisperer, Tabnine, Cursor, etc.)
  • Assistentes GenAI conversacionais usados para geração de código (ChatGPT, Claude, Gemini, etc.)
  • Ferramentas de geração de testes automatizados por IA
  • Geradores de IaC, configuração ou scripts por IA

Não está no âmbito desta política o uso de ferramentas determinísticas de scaffolding ou de templates curados internamente (ex: cookiecutter, templates de projeto aprovados).


3. Princípio fundamental: a responsabilidade é sempre humana​

O uso de ferramentas GenAI não transfere nem dilui a responsabilidade do developer pelo código produzido. O código gerado por IA é tratado como código de terceiros não auditado - deve ser lido, compreendido, validado e assumido pelo developer antes de ser incluído numa base de código.

aviso

A aceitação de sugestões automáticas sem leitura e compreensão do código gerado é equivalente a copiar código de uma fonte desconhecida sem revisão. Esta prática é proibida em qualquer nível de criticidade.


4. Regras de uso por nível​

RequisitoL1L2L3
Registo de uso de GenAI em PRsOpcionalObrigatórioObrigatório
Revisão técnica humana do output antes de submeterObrigatórioObrigatórioObrigatório
Constrangimentos técnicos do projeto comunicados à ferramentaRecomendadoObrigatórioObrigatório
Validação de licença do outputRecomendadoObrigatórioObrigatório
Revisão de código com foco em output GenAIRecomendadoObrigatórioObrigatório + AppSec
Ferramentas aprovadas pela organizaçãoRecomendadoObrigatórioObrigatório
Proibição de envio de código confidencial para ferramentas externasObrigatórioObrigatórioObrigatório

5. Aprovação de ferramentas​

Antes de adotar uma nova ferramenta de apoio ao desenvolvimento, deve ser realizada uma avaliação que cubra:

  • Modelo de dados: o código ou prompts enviados são usados para treino do modelo?
  • Localização de processamento: os dados são processados em infraestrutura que cumpre os requisitos de privacidade aplicáveis?
  • Licença do output: existe risco de output com licenças incompatíveis com o produto (ex: GPL contaminante)?
  • Integração com repositório interno: a ferramenta acede a código confidencial? Com que controlos?
  • Conformidade com requisitos regulatórios aplicáveis (GDPR, DORA, NIS2, etc.)

A aprovação deve ser registada e a lista de ferramentas aprovadas publicada internamente.

aviso

O uso de ferramentas não aprovadas pela organização para gerar código de produção é proibido em L2/L3, independentemente de ser uso pessoal ou integrado no IDE.


6. Constrangimentos técnicos​

Antes de utilizar uma ferramenta GenAI para gerar código relacionado com um projeto, o developer deve comunicar à ferramenta os constrangimentos técnicos relevantes:

  • Stack tecnológica, versões e frameworks em uso
  • Bibliotecas proibidas ou aprovadas
  • Padrões de segurança obrigatórios (ex: "não usar concatenação SQL", "usar ORM X", "seguir guideline Y")
  • Requisitos de segurança aplicáveis ao contexto

Estes constrangimentos devem estar versionados por projeto (constrangimentos-genia.md ou equivalente) e ser referenciados nos PRs que incluam output GenAI.


7. Rastreabilidade do output GenAI​

Em L2/L3, os PRs que incluam código gerado ou significativamente assistido por ferramentas GenAI devem indicá-lo explicitamente:

  • Referência no corpo do PR à ferramenta utilizada (ex: "Secções X e Y geradas com Copilot, revistas manualmente")
  • Constrangimentos aplicados documentados ou referenciados
  • Registo em uso-genia.md (ou equivalente) quando aplicável ao projeto

O objetivo não é criar burocracia, mas assegurar que os reviewers sabem que o código foi gerado automaticamente e devem dar atenção redobrada à sua revisão.


8. Validação de licenças​

Ferramentas GenAI podem sugerir código que reproduz parcialmente código com licenças restritivas (copyleft). Para mitigar este risco:

  • Verificar se a ferramenta tem modo de filtragem de sugestões com correspondência em código público sob licenças incompatíveis (ex: GitHub Copilot "Duplication detection")
  • Não aceitar sugestões de blocos de código extensos sem verificar se são derivações de código licenciado
  • Em L3, submeter output extenso a análise de licença antes de inclusão

9. Proibição de envio de informação confidencial​

É proibido enviar para ferramentas GenAI externas (não aprovadas para processamento de dados confidenciais):

  • Código que contenha segredos, chaves, tokens ou credenciais
  • Dados de produção, PII ou dados classificados como confidenciais
  • Código de sistemas com informação sobre vulnerabilidades não divulgadas
  • Documentação interna classificada

Em L3, antes de usar qualquer ferramenta GenAI em contexto do projeto, deve ser verificado se o contrato de serviço cobre os requisitos de confidencialidade aplicáveis.


10. Responsabilidades​

RoleResponsabilidade
DeveloperUsar apenas ferramentas aprovadas; rever todo o output antes de submeter; registar uso em L2/L3; não enviar informação confidencial
Tech LeadGarantir que a equipa conhece e segue esta política; rever PRs com output GenAI com atenção adicional
AppSec EngineerDefinir e publicar lista de ferramentas aprovadas; rever constrangimentos técnicos por projeto; avaliar novas ferramentas
GRC / LegalAvaliar conformidade regulatória e de licenciamento das ferramentas candidatas
DevOps / SREConfigurar, se aplicável, ferramentas aprovadas com acesso controlado ao repositório

11. Agentes autónomos (A2+) com tool-use​

As secções 1–10 cobrem o caso geral: a ferramenta sugere e o developer decide. Quando o que a ferramenta faz passa a ser executar acções com efeito real — abrir PRs, ler segredos, fazer deploys, escrever em sistemas externos — entramos em território de agentes autónomos, com graus variáveis de supervisão humana. O modelo de cinco níveis de autonomia (A0–A4) está definido no Cap. 02 — Modelo de níveis de autonomia; aplicam-se aqui sem reformulação.

11.1 Onde esta política se aplica vs. Policy 38​

CenárioCoberto por
Uso assistido (A0–A1) — ferramenta sugere, developer decideSecções 1–10 desta política
Uso autónomo (A2–A4) — agente executa acções reaisEsta secção 11 (regras operacionais) + Policy 38 — Mandates de agentes AI (mandate, ownership, revisão)

📌 A separação importa. As secções 1–10 são suficientes para Copilot/Cursor em modo sugere. A partir do momento em que o agente executa (gh pr create, kubectl apply, terraform apply, npm publish, qualquer ação fora do IDE), passa a aplicar-se a Policy 38 além desta.

11.2 Regras operacionais para A2+​

RegraA2A3A4
Mandate registado e versionado em VCS (Policy 38)✔✔✔
Identidade dedicada com workload identity efémera (OIDC, TTL ≤ 1h) — ver ARC-015✔✔✔
Scope mínimo por tool declarado no mandate✔✔✔
Intent declaration antes de tool call destrutivo (REQ-AGN-004)✔✔✔
Aprovação humana out-of-band por acção destrutiva✔(substituída por revert auto + notificação)(apenas auditoria periódica)
Revert automático demonstrado em testes—✔✔
Kill-switch documentado e operacional (REQ-AGN-003)✔✔✔
Kill-switch exercitado com cadência registadaAnualTrimestralMensal
Mandate assinado por CISO (não apenas registado)——✔
Auditoria periódica do mandateAnualSemestralTrimestral

11.3 Proibições específicas em A2+​

  • ❌ Reutilizar credenciais humanas para autenticar o agente. Cada agente é um principal distinto.
  • ❌ Aprovar acções destrutivas dentro do canal do agente (e.g. pedir confirmação no chat onde o agente opera) — viola o princípio out-of-band; resposta a prompt injection torna-se trivialmente aprovável.
  • ❌ Subir nível de autonomia (A1 → A2, A2 → A3, …) sem revisão e actualização do mandate. Subida exige evidência operacional dos pré-requisitos.
  • ❌ Operar em produção em A3/A4 sem revert automático demonstrado em ambiente de teste. Se não foi exercitado, é decorativo.
  • ❌ A4 em qualquer projecto sem mandate assinado pelo CISO. Sem excepções.

11.4 Reporte de incidentes específicos a agentes​

Constituem incidentes de segurança que devem ser reportados via processo IR (Cap. 12):

  • Off-policy action: agente executou acção fora do scope declarado no mandate.
  • Intent-action divergence: acção real difere materialmente do intent declarado.
  • Prompt injection bem-sucedida que resultou em tool call não autorizada.
  • Kill-switch falhou ou demorou > tempo acordado a fazer efeito.
  • Credential exposure: identidade do agente reutilizada ou exposta fora do âmbito.

12. Revisão e auditoria desta política​

Esta política deve ser revista semestralmente dada a rápida evolução das ferramentas GenAI, ou após qualquer um dos seguintes eventos:

  • Identificação de vulnerabilidade com origem em output GenAI não revisto
  • Alteração significativa nas capacidades ou modelo de dados de uma ferramenta aprovada
  • Alteração regulatória com impacto no uso de IA no desenvolvimento de software

13. Referências normativas e técnicas​

ReferênciaRelevância
SbD-ToE Cap. 06 - Desenvolvimento SeguroUso controlado de GenAI, rastreabilidade, constrangimentos
SbD-ToE Cap. 02 - Requisitos de Segurança (addon 09-governaca-automatismos)Modelo de níveis de autonomia A0–A4; REQ-AGN-001..004
SbD-ToE Cap. 04 - Arquitetura Segura (ARC-015)Agente como principal com workload identity efémera e least privilege
SbD-ToE Cap. 03 - Threat Modeling (playbook agentic)Threat library para agentes com tool-use (MITRE ATLAS AML.T*, OWASP LLM Top 10)
Política 38 — Mandates de Agentes AI (38_policy-mandates-agentes.md)Operacionalização de REQ-AGN-001: mandate, ownership, revisão
Política de Revisão de Código (15_policy-revisao-codigo.md)Revisão de PRs com output GenAI
Política de Guidelines de Desenvolvimento (14_policy-guidelines-desenvolvimento.md)Constrangimentos técnicos derivados de guidelines
MITRE ATLASCatálogo canónico de tactics/techniques adversariais para AI systems
OWASP Top 10 for LLM Applications (2025)Riscos de segurança em aplicações baseadas em LLM (LLM01–LLM10 2025)
NIST AI RMF 1.0 (2023) + Generative AI Profile (2024)Risk Management Framework para AI: GOVERN / MAP / MEASURE / MANAGE
NIST SP 800-218ASecure Software Development Framework Profile for GenAI
NIST SP 800-207Zero Trust Architecture — princípios aplicáveis a agentes como principals não-humanos
ISO/IEC 42001:2023AI Management System (alinha com REQ-AGN-001 e revisão periódica)
EU AI Act (Reg. (UE) 2024/1689)Requisitos regulatórios para sistemas de IA — ver cross-check AI Act
ENISA - Cybersecurity of AIOrientações de segurança para uso de IA em desenvolvimento
GitHub Copilot Trust CenterModelo de dados e privacidade de ferramenta de referência