Capítulo 2 — Segurança de IA e aprendizado de máquina: contexto do serviço e das partes interessadas
Mapa da aula
Aula 02 publicada. Mapa, exemplo, EX006.
flowchart TD
N0["2.1 Finalidade, usuários, pessoas afetadas"]
N1["2.2 Partes interessadas"]
N2["2.3 Um quadro simples do fluxo de dados"]
N3["2.4 Ativos de IA"]
N4["2.5 Quais serviços primeiro"]
N5["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5
N5 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX006"]
Desenho lógico
flowchart LR
N0["2.1 Finalidade, usuários, pessoas afetadas"]
N1["2.2 Partes interessadas"]
N2["2.3 Um quadro simples do fluxo de dados"]
N3["2.4 Ativos de IA"]
N4["2.5 Quais serviços primeiro"]
N5["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX006"]
[2.1 Finalidade, usuários, pessoas afetadas]
|
v
[2.2 Partes interessadas]
|
v
[2.3 Um quadro simples do fluxo de dados]
|
v
[2.4 Ativos de IA]
|
v
[2.5 Quais serviços primeiro]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX006]
Objetivos de aprendizagem
Você vai (1) descrever a finalidade, os usuários e as pessoas afetadas por um serviço de IA; (2) identificar as partes interessadas e suas preocupações; (3) desenhar um quadro simples do fluxo de dados; (4) registrar os ativos de IA; e (5) julgar quais serviços precisam de mais atenção.
2.1 Finalidade, usuários, pessoas afetadas
Comece toda avaliação perguntando para que serve o serviço, quem o usa e quem é afetado por suas saídas mesmo sem usá-lo. Os usuários do ClaimChat são os clientes; entre as pessoas afetadas estão os analistas de sinistros que recebem os retornos agendados e os terceiros citados nos sinistros. No FraudFlag, entre as pessoas afetadas estão os segurados honestos cujos sinistros atrasam quando são sinalizados, embora nunca vejam o modelo. Escreva a lista de usuários e de pessoas afetadas no início de toda avaliação e volte a ela ao escolher os testes.
2.2 Partes interessadas
Os responsáveis pelo produto querem valor e rapidez; a operação quer estabilidade; o jurídico e a privacidade querem conformidade; o atendimento ao cliente quer menos reclamações; a segurança quer dano limitado. Converse cedo com cada um. As preocupações deles viram requisitos, e o apoio deles faz os controles pegarem. Na Meridian, o responsável pelo produto ClaimChat, a operação, o encarregado de privacidade e o atendimento ao cliente levantaram, cada um, uma preocupação diferente com Sofia. Registre do que cada parte interessada precisa e quem aprovará as mudanças, para que as constatações futuras cheguem à pessoa certa. Pergunte a cada um que falha mais o preocuparia.
2.3 Um quadro simples do fluxo de dados
Desenhe caixas para o cliente, o aplicativo de chat, o modelo, a leitura de documentos, a base de dados de sinistros e a ferramenta de retorno; setas para os dados; linhas tracejadas onde a confiança muda (entrada do cliente, documentos enviados, saída do modelo para as ferramentas). Esse quadro mostra onde um conteúdo não confiável pode conduzir ações. O quadro de Sofia para o ClaimChat mostrou os documentos enviados fluindo direto para a entrada do modelo. Mantenha o quadro atualizado à medida que ferramentas e fontes de dados mudam e use-o para escolher os testes. Marque cada ponto onde entra texto de fora da Meridian, como os orçamentos enviados, já que esses pontos precisam de testes de injeção.
2.4 Ativos de IA
Liste: o modelo (fornecedor e versão), o prompt de sistema, as fontes de dados, as ferramentas e suas permissões, as chaves, os registros. Anote o responsável e a sensibilidade de cada um. Prompts de sistema podem vazar (OWASP LLM07), por isso não podem conter segredos. No ClaimChat, a lista de Sofia inclui o modelo do fornecedor e sua versão, o prompt de sistema, os documentos enviados, a ferramenta de retorno e suas permissões, a chave do fornecedor e os registros das conversas. Revise a lista depois de cada mudança, já que uma nova ferramenta ou fonte de dados acrescenta um ativo e amplia o que um atacante pode alcançar.
2.5 Quais serviços primeiro
Serviços que leem conteúdo não confiável, podem executar ações, tratam dados pessoais ou afetam muitas pessoas merecem atenção primeiro.
"""Lab V: an AI system inventory scored for review priority (synthetic).
Each system lists exposure, autonomy, data sensitivity and whether it reads
untrusted content; mapping to OWASP LLM Top 10 (2025) IDs is illustrative."""
import json
inv = json.loads("""[
{"name":"support-chatbot","exposure":"public","autonomy":"tools","data":"customer","untrusted_input":true},
{"name":"invoice-ocr-model","exposure":"internal","autonomy":"none","data":"financial","untrusted_input":true},
{"name":"code-assistant","exposure":"internal","autonomy":"suggest","data":"source","untrusted_input":true},
{"name":"churn-predictor","exposure":"internal","autonomy":"none","data":"customer","untrusted_input":false},
{"name":"hr-cv-screener","exposure":"internal","autonomy":"decide","data":"personal","untrusted_input":true}
]""")
E = {"public": 3, "internal": 1}; A = {"none": 0, "suggest": 1, "tools": 3, "decide": 3}
D = {"customer": 2, "financial": 2, "source": 2, "personal": 3}
for s in inv:
s["score"] = E[s["exposure"]] + A[s["autonomy"]] + D[s["data"]] + (2 if s["untrusted_input"] else 0)
risks = []
if s["untrusted_input"]: risks.append("LLM01")
if s["autonomy"] in ("tools", "decide"): risks.append("LLM06")
if s["data"] in ("customer", "personal"): risks.append("LLM02")
s["owasp"] = ",".join(risks) or "-"
for s in sorted(inv, key=lambda s: -s["score"]):
print(f"{s['name']:18s} score={s['score']:2d} owasp={s['owasp']}")
Saída esperada:
support-chatbot score=10 owasp=LLM01,LLM06,LLM02
hr-cv-screener score= 9 owasp=LLM01,LLM06,LLM02
code-assistant score= 6 owasp=LLM01
invoice-ocr-model score= 5 owasp=LLM01
churn-predictor score= 3 owasp=LLM02
O ClaimChat lê documentos enviados, agenda retornos, trata dados pessoais e atende muitos clientes, por isso pontua nos quatro critérios; o FraudFlag pontua em dados pessoais e no número de segurados afetados. Use a pontuação simples do laboratório para ordenar os serviços e explique a ordem às partes interessadas. Comece pela pontuação mais alta e desça. Um serviço que agenda ações, lê texto de fora e guarda dados pessoais merece ser testado antes de um que só responde a perguntas gerais.
2.6 Exemplo resolvido (caso sintético da Meridian)
Sofia entrevista o responsável pelo produto ClaimChat, um líder da equipe de sinistros e o encarregado de privacidade. O líder da equipe teme que retornos falsos marcados como urgentes inundem os analistas; o encarregado de privacidade, que documentos enviados contenham informações de saúde. O quadro de fluxo de dados de Sofia mostra os documentos enviados entrando diretamente na entrada do modelo — um caminho para injeção indireta. A lista de ativos revela que a chave do fornecedor é compartilhada com um ambiente de teste.
Essas quatro constatações vieram de conversas e de um quadro, antes de qualquer teste. Sofia as compartilhou com o responsável pelo produto, que confirmou que ninguém tinha considerado os envios de documentos como uma via para instruções.
2.7 Erros e limites
Três erros são comuns: deixar de fora pessoas afetadas que não são usuárias; conversar só com a equipe técnica; e listas de ativos sem responsáveis. Cada erro estreita a visão. Deixar de fora as pessoas afetadas que não são usuárias excluiria, na Meridian, os analistas de sinistros e os terceiros citados. Conversar só com a equipe técnica deixa escapar preocupações como a do encarregado de privacidade com informações de saúde nos envios. Uma lista de ativos sem responsáveis não deixa ninguém responsável, como Sofia constatou ao listar os ativos do ClaimChat. Verifique os três nas suas anotações de contexto. Corrija qualquer lacuna antes de os testes começarem.
Exercícios
- EX006 — Contexto. Escreva a finalidade, os usuários e as pessoas afetadas pelo FraudFlag. Rubrica: 3 = os três, com detalhes; 2 = dois; 1 = um; 0 = nenhum.
- EX007 — Partes interessadas. Liste quatro partes interessadas e a principal preocupação de cada uma. Rubrica: 3 = quatro pertinentes; 2 = três; 1 = uma ou duas; 0 = nenhuma.
- EX008 — Quadro. Desenhe o quadro de fluxo de dados do ClaimChat com três fronteiras de confiança. Rubrica: 3 = componentes, fluxos, três fronteiras; 2 = duas fronteiras; 1 = só os componentes; 0 = nenhum.
- EX009 — Chave compartilhada. Por que uma chave do fornecedor compartilhada com o ambiente de teste é um problema? Rubrica: 3 = exposição maior, falta de separação, impacto na rotação; 2 = dois; 1 = um; 0 = nenhum.
- EX010 — Prioridade. Usando a lógica do laboratório, ordene o ClaimChat e o FraudFlag. Rubrica: 3 = ordem com justificativas; 2 = ordem com justificativas parciais; 1 = só a ordem; 0 = nenhuma.
Síntese
O contexto — finalidade, pessoas, partes interessadas, fluxos e ativos — decide o que importa em segurança de IA antes que qualquer teste seja executado.
Continue estudando — capítulo 02 de 12
← Capítulo 01 (rascunho) · Índice de capítulos do curso · Capítulo 03 (rascunho) →