Arquitetura do laboratório
Arquitetura: caminhos comprováveis
O MCP direto do SDK testa autenticação própria, não a governança do gateway em D05.
MI para Foundry, app/API do MCP, blueprint, identidade da instância e entrada de inventário são objetos distintos.
A365_AGENT_ID é appId da instância, alinhado ao token S2S e gen_ai.agent.id.
Export remoto também exige A365_BLUEPRINT_ID, A365_TENANT_ID e AZURE_CLIENT_ID da MI de bootstrap.
Tokens MI para Foundry/MCP continuam sendo MI; não herdam CA Agent ID por haver telemetria associada ao agente.
O estado privado scripts/.state/agent-id.json separa IDs de blueprint/principal/instância; registro Agent365 e grants
pendentes permanecem handoffs manuais, não resultados comprovados pelo arquivo.
Na IaC, a365ObservabilityEnabled nasce false; a365AgentId e a365BlueprintId são parâmetros distintos.
Habilitar export remoto somente após os gates, sem interpretar manual_pending de tenant/25 como readiness concluído.
Componentes por trilha
| Núcleo | Extensões condicionais |
|---|---|
| D02 identidade/sponsor/owner | Lifecycle e CSA |
| D11 SDK existente, modelo e tool de leitura | Work IQ, notificações, outros fluxos |
| D01 registro nativo | Vertex, Local Agents, Shadow AI |
| D05 BYO/Tooling Gateway em um cliente | APIM/Tools Gateway, outros clientes, granularidade por tool |
| D12 inventário e checklist | GSA/Sentinel, Defender, Purview, Viva |
D03/D04/D06/D07/D08/D09/D10 são extensões. APIM precisa comprovar autenticação MI→backend,
papéis e filtro MCP por tool; validate-azure-ad-token de entrada não implementa isso sozinho.
GSA cloud depende de conector suportado e baseline tenant-wide; GSA endpoint é outro caminho.
Purview exige instância/canal/integração elegíveis. RTP usa detection type/agent scope, com audit separado de block.
Preparar, implantar, verificar
- Revisar
config/lab.example.psd1; copiar para configuração privada sem versionar valores reais. - Seguir a sessão de leitura abaixo e executar
& ./scripts/lab.ps1 -Command verify -ConfigPath $configPathno mesmo processo PowerShell autenticado; resultados manuais permanecem pendentes. pwsh scripts/lab.ps1 up -Only infra -WhatIf, depois preparação sem WhatIf quando autorizada: não é deployment.- Operador implanta manualmente recursos/imagens/configuração/roles definidos em
infra/azure/e registra outputs privados. - Verificar recursos e endpoints reais, autenticação positiva/negativa, AgentID S2S e Activity. Infra compilada não é infra implantada.
- Executar núcleo em ordem D02 → D11 → D01 → D05 → D12; extensões só após readiness. Checklist V01–V17 mantém os IDs anteriores.
Sessão de leitura para verify
O procedimento completo está em infra/azure/README.md, seção Sessão autenticada de leitura: sequência do operador.
Na janela autorizada, abrir apenas pwsh -NoProfile, sem script; importar Lab.psm1,
Microsoft.Graph.Authentication, Az.Accounts e Az.ResourceGraph já disponíveis. Resolver $configPath,
carregar $config e fazer login manual Graph/Az no tenant/subscription configurados, com contexto Process.
Usar escopos previamente consentidos LicenseAssignment.Read.All, Application.Read.All, ThreatHunting.Read.All,
papéis de leitura Entra/Defender e Reader Azure adequados. Validar com Assert-LabContext conforme o runbook.
Permanecer no mesmo prompt e executar:
& ./scripts/lab.ps1 -Command verify -ConfigPath $configPath
$LASTEXITCODE
Novo pwsh/pwsh -File não herda essa sessão. Azure CLI autenticada não substitui Graph/Az PowerShell.
verify não faz login, prompt, consent, elevação ou troca de contexto. Se houver pedido de consent novo na
preparação, cancelar e encaminhar aprovação separada; não ampliar privilégio para fazer o teste passar.
Guardrails e evidência
- Azure keyless: MI/RBAC, FIC e CI OIDC; sem API keys/client secrets. GCP opcional mantém credencial fora do Git.
- Dados sintéticos; tenant de lab e escopo explícito. Break-glass fora de CA, início em report-only.
mcp-maliciososomente em cópia isolada,LAB_ONLY=true; ingress on/off manual precisa de verificação de estado e inacessibilidade fora da janela.- Reset não equivale a teardown e nunca limpa e-mails/holds por padrão. Etapa essencial pendente impede declarar sucesso.
- Em
reset -All, pendências manuais (código 2) são agregadas enquanto os demais resets continuam, inclusive contenção D05/D08/D10; o resultado final continua 2. Outros erros interrompem. Continuação não significa sucesso nem autoriza limpeza. - O coletor suporta somente D08/D10/D12. D08/D10 exigem appId/janela UTC e
WorkspaceId(GUID Log Analytics) para sign-ins completos; sem workspace há diagnóstico/erro, não sucesso. D12 só inventário List packages v1.0, sem alvo/janela/workspace. Demais demos usam evidência manual. Hunting Defender e Log Analytics são fontes distintas. - Portal público: revisão de metadados/sanitização; configuração integral não é um export seguro.
Fontes
Conferidas em 2026-09-30: AgentID S2S, BYO MCP, Observability. Esta arquitetura é proposta de execução; nenhuma implantação no tenant foi validada nesta revisão.