Pular para o conteúdo
fernando.moretes.com
BlogEstudosCursosE-booksOpen SourcePodcasts
Loading…
Fernando Azevedo

Arquiteto de TI Especialista

Arquitetura, AWS, IA em produção, sistemas financeiros e FinOps, escritos a partir do que foi operado, com os números.

  • LinkedIn
  • GitHub
  • E-mail

Conteúdo

  • Blog
  • Estudos de arquitetura
  • Cursos
  • E-books
  • Open Source
  • Podcasts
  • Assuntos
  • Trilhas

Ferramentas

  • Well-Architected self-check
  • Arquitetura deste site
  • Números públicos
  • Histórico de estudo

Sobre

  • Comunidade
  • IA Builder
  • Perfil
  • Currículo (CV)
  • Trabalhe comigo
  • Media kit
  • RSS do blog
  • RSS dos estudos
  • Artigos narrados (podcast)
  • llms.txt
  • Termos, privacidade e uso de IA

(c) 2026 Fernando Francisco Azevedo

Blog/Artigo
RSSMarkdownLLMs
IA & AgentesHistória de Migração

3LO no Bedrock Managed KB: 5 minutos de setup, 1 decisão irreversível

5 de set. de 2026 9 minAvançado Com apoio de IA000 visualizações00 reproduções
Ouvir artigo

18:04 · voz do Fernando

A pergunta que importa nesse anúncio não é "quanto tempo leva para conectar o SharePoint?", é "quem consegue ler o que foi indexado depois que você conectou?". O user-managed setup (3LO) que a AWS liberou em 4 de setembro de 2026 para SharePoint, OneDrive e Confluence no Amazon Bedrock Managed Knowledge Base resolve a primeira pergunta muito bem: você clica em Sign in, autoriza com a sua conta corporativa, e o Bedrock cria sozinho o segredo no Secrets Manager com o refresh token. A segunda pergunta é onde eu passei três semanas.

O que o caminho de cinco minutos realmente troca

A página de setup do SharePoint é explícita e vale ler duas vezes: user-managed setup does not support document-level access control (ACL). Todo conteúdo indexado fica acessível a qualquer pessoa que possa consultar o knowledge base, e as permissões individuais do SharePoint não são aplicadas. A mesma frase aparece na página do Confluence, palavra por palavra.

Isso não é um bug nem uma lacuna temporária, é consequência direta do fluxo. No 3LO o Bedrock guarda um refresh token delegado, emitido para você, com quatro permissões: Sites.Read.All e User.Read no Microsoft Graph, offline_access para renovar o token, e AllSites.Read na API do SharePoint Online. São permissões delegated, herdadas do que a sua conta enxerga. O crawler entra no tenant vestindo a sua identidade e copia tudo o que ela alcança para um índice que não tem noção de quem é quem.

O caminho que suporta ACL é outro: ENTRA_ID_APP_ONLY no SharePoint, ENTRA_APP_ID no OneDrive, SERVICE_ACCOUNT no Google Drive, BASIC no Confluence. São permissões application, com admin consent, e no caso do SharePoint com ACL exigem Sites.FullControl.All, ou Sites.Selected com grant fullcontrol por site, porque Sites.Read.All não basta para ler permissão de item.

A troca, dita sem eufemismo: o 3LO substitui um ticket de duas semanas com o time de identidade por um índice sem fronteira interna. Para um protótipo de wiki pública de engenharia, é um bom negócio. Para o repositório de políticas de crédito, é um incidente esperando a data.

A jornada: do protótipo em 3LO ao knowledge base de produção

  1. 1

    Semana 0, o protótipo nasce no console, sem pedir nada a ninguém

    Um analista com bedrock:GetDataSourceAuthorizationUrl, bedrock:CreateDataSourceToken e secretsmanager:CreateSecret completa o fluxo sozinho. O Bedrock cria o segredo em arn:aws:secretsmanager:{region}:{account}:secret:bedrock-managedkb-oauth/{prefix}/{connector}/{uuid} e o data source sai com authType=MANAGED_OAUTH2. Nenhum ticket, nenhum tenant ID, nenhuma revisão.

  2. 2

    Semana 1, o portão que ninguém leu

    A página do Entra App-Only diz o que trava a jornada inteira: a decisão de habilitar ACL não pode ser mudada depois que o data source é criado. E o 3LO não oferece a opção. Ou seja: não existe upgrade in-place de MANAGED_OAUTH2 para ACL, existe um data source novo e uma reingestão completa.

  3. 3

    Semana 2, inventário do que já foi copiado

    Antes de construir o caminho novo, responda o que o antigo já indexou. O crawl seguiu a identidade de quem logou; se essa pessoa é sênior, o alcance é o dela. Liste os sites e espaços incluídos, cruze com a classificação de dados e trate o índice atual como um repositório de cópia, porque é isso que ele é.

  4. 4

    Semana 3, app registration e certificado

    Aqui volta o ticket que o 3LO tinha eliminado. Um Global Administrator ou Privileged Role Administrator registra a aplicação single-tenant sem redirect URI, adiciona as permissões application e dá admin consent. Você gera um par com openssl req -x509 -newkey rsa:2048, sobe o .cer para o Entra e o bundle .p12 para o S3 com SSE. O .p12 é obrigatório quando há ACL.

  5. 5

    Semana 4, segredo, service role e o data source novo

    O segredo leva clientId e certificatePassword, sempre defina a senha explicitamente; se omitir, o Bedrock abre o bundle usando o client ID como senha. A service role recebe s3:GetObject no objeto do certificado com condição aws:ResourceAccount, mais kms:Decrypt se você usou CMK. O data source sai com certificateS3Path, que é exigido no ENTRA_ID_APP_ONLY mesmo com ACL desligado.

  6. 6

    Semana 5, a aplicação passa a provar quem está perguntando

    O Retrieve ganha userContext.userId com o e-mail universal do usuário. Sem isso, data sources com ACL devolvem zero resultados, o que é ótimo como fail-safe e péssimo como surpresa em produção. A autenticação continua sendo sua: o Bedrock filtra pela identidade que você afirma, não verifica se ela é verdadeira.

  7. 7

    Semana 6, apagar o caminho antigo, inclusive o segredo

    Delete o data source MANAGED_OAUTH2 e o segredo bedrock-managedkb-oauth/ que ficou órfão, ele ainda guarda um refresh token válido. Do lado da Microsoft, revogue desabilitando ou apagando o service principal em Enterprise applications; no Atlassian, o grant é por site, então cada .atlassian.net precisa da sua própria revogação.

As duas fases e o portão imutável entre elas

O 3LO é rápido porque termina em um refresh token delegado; a produção é lenta porque começa em um certificado e em consentimento administrativo. O portão no meio não é uma etapa, é uma decisão que só pode ser tomada uma vez por data source.

🧪 Fase 1: Protótipo (3LO, minutos)
  • Console Bedrock KB · GetDataSourceAuthorizationUrl
  • Secrets Manager · bedrock-managedkb-oauth/.../uuid
  • Data source · authType=MANAGED_OAUTH2
🔐 Entra ID / Atlassian, consentimento
  • Consentimento delegado · Sites.Read.All + offline_access
  • Admin consent do tenant · obrigatório se o tenant restringe apps
🚧 O portão imutável
  • aclEnabled · não muda após CreateDataSource
🟧 AWS: Fase 2: Produção (2LO + ACL)
  • Entra app registration · application perms + Sites.FullControl.All
  • Amazon S3 · certificate.p12 (SSE)
  • Data source · ENTRA_ID_APP_ONLY + ACL
  • Managed KB · conteúdo + permissões crawladas
  • Retrieve · userContext.userId = e-mail
👤 Sua aplicação, autenticação verificada
  • App corporativa · OIDC valida o usuário final

Antes e depois, em números que a documentação confirma

4
permissões delegadas concedidas no caminho 3LO
Sites.Read.All, User.Read, offline_access e AllSites.Read, leitura de tudo que a conta que logou enxerga, renovável indefinidamente.
0
documentos filtrados por permissão no 3LO
Sem ACL não há userContext: quem consulta o knowledge base lê todo o índice, independentemente do que teria acesso no SharePoint.
365 dias
validade padrão do certificado do caminho de produção
Certificado expirado faz todo sync falhar. A rotação vira item de runbook com dono e data, não uma lembrança.

Identidade: o e-mail é a chave, e não há tradução

Chegar no caminho com ACL resolve menos coisas do que parece, e resolve de um jeito muito específico. O Bedrock Managed Knowledge Base usa e-mail como identificador universal: não há resolução de alias nem mapeamento entre provedores de identidade. O userId que você passa no Retrieve precisa bater exatamente com o e-mail associado àquele usuário em cada data source conectado. Se o seu IdP corporativo emite fernando.azevedo@empresa.com e o Confluence guarda fazevedo@empresa.com, o match falha em silêncio e o usuário simplesmente não recebe resultado daquela fonte. Silêncio é o pior modo de falha possível num sistema de busca: ninguém abre chamado por resposta incompleta, abre por resposta errada.

Grupos funcionam por outra régua. São identificados como a fonte os representa, nome, ID, o que for, e a associação usuário→grupo vem do crawl. A documentação é direta: a associação de grupos é tão fresca quanto o último sync. Mudou permissão entre syncs, o filtro pré-retrieval não sabe. O que salva é a segunda camada: para SharePoint, OneDrive, Google Drive e Confluence existe verificação em tempo real contra a fonte, que pega justamente essa janela. S3 e Custom não têm essa rede, porque o ACL deles vem de arquivo de metadados fornecido por você.

Duas notas que mudam o desenho da aplicação: credenciais do IdP terceiro ficam em cache por até 1 hora, e mudanças de permissão são eventualmente consistentes, tipicamente em poucos minutos. Então "revoguei o acesso agora" e "o RAG parou de mostrar" não são o mesmo instante. Em ambiente sob BACEN ou LGPD, essa diferença precisa estar escrita no desenho, não descoberta na auditoria.

Os dois caminhos, lado a lado

Protótipo: MANAGED_OAUTH2 (3LO)Produção: ENTRA_ID_APP_ONLY (2LO)
Quem autorizaO próprio usuário, no popup, a menos que o tenant restrinja apps de terceiros, aí volta a exigir admin consentGlobal Administrator ou Privileged Role Administrator, com admin consent explícito
Credencial armazenadaRefresh token delegado, em segredo criado pelo próprio BedrockCertificado .p12 no S3 mais clientId/certificatePassword em segredo que você cria
Controle de acesso por documentoNão suportado, e a flag não muda depoisSuportado, com filtro pré-retrieval e verificação em tempo real
Alcance do crawlO que a conta que logou enxerga, variável, invisível no console AWSTodo o tenant com Sites.Read.All/Sites.FullControl.All, ou site a site com Sites.Selected
O que quebraO desligamento de quem autorizou; o token revogado no Entra; conteúdo compartilhado depois do sync, que exige resyncCertificado expirado (todo sync falha); grant per-site esquecido para site novo, que não é retroativo

Os modos de falha que só aparecem depois

O token tem dono, e dono pede demissão. O refresh token do 3LO pertence a uma pessoa. Quando ela sai da empresa e a conta é desabilitada, o sync para, e o índice continua lá, com o conteúdo que ela alcançava. O caminho de produção não tem esse acoplamento: a aplicação se autentica com certificado, sem login humano nem no crawl nem na consulta.

Fail closed é bom, mas parece bug. A retrieval com ACL falha fechada: erro de resolução de grupo, timeout na verificação em tempo real ou erro interno não devolvem o documento. A resposta pode vir com menos resultados que o maxResults pedido, e o Bedrock não completa com outros documentos. Sua aplicação precisa tratar resposta parcial como normal, e distinguir "zero por ACL" de "zero por relevância", a API sinaliza a falha de resolução justamente para isso.

Documento sem ACL é documento invisível. Em data source com ACL habilitado, documento cujas permissões não foram extraídas não vai para ninguém. Ausência é tratada como restrição, não como público. Depois da migração, espere uma queda de recall e investigue antes de culpar o embedding.

O prefixo do segredo é a sua única alavanca de IAM, e o default é ambíguo. A página de IAM do 3LO diz que sem prefixo o Bedrock usa default; as páginas de conector dizem que o segredo criado usa o prefixo bedrock-managedkb-oauth. Não construa policy em cima dessa suposição: informe um secret name prefix explícito no sign-in e escreva a policy com Resource escopado a ele antes de alguém rodar o fluxo. É a diferença entre secretsmanager:CreateSecret num caminho previsível e um Resource: "*" que ninguém vai revisar depois.

O risco não é o 3LO, é o 3LO que ninguém previu

Duas permissões do Bedrock (GetDataSourceAuthorizationUrl e CreateDataSourceToken) mais secretsmanager:CreateSecret bastam para qualquer pessoa com acesso ao console indexar o SharePoint corporativo num knowledge base sem fronteira interna, sem tocar em nenhum processo de identidade. Se a sua conta de produção já concede essas ações por wildcard num policy de "desenvolvedor Bedrock", você não tem uma feature nova, tem um caminho novo de exfiltração autorizada por engano. Negue bedrock:CreateDataSourceToken fora das contas de sandbox antes de discutir arquitetura de RAG.

Anti-padrões que eu já vi nascer nesse fluxo

  • Promover o protótipo trocando o authType: não existe. A flag de ACL é imutável por data source, então promover significa criar data source novo e reingerir, planeje o custo de reingestão e a janela de índice duplicado.
  • Autorizar o 3LO com a conta do arquiteto: quanto mais sênior o autorizador, maior o alcance do crawl. Se for usar 3LO, use uma conta com acesso deliberadamente estreito aos sites do escopo.
  • Tratar ACL awareness como autorização: a própria documentação diz que é filtro, não fronteira de segurança. O Bedrock não autentica o usuário final, ele confia no userId que a sua aplicação afirma.
  • Desbloquear apps instalados por usuário no Atlassian "só por um minuto": enquanto o toggle está aberto, qualquer usuário autoriza qualquer app OAuth no site inteiro. Peça para o admin autorizar direto.
  • Deixar o segredo do 3LO para trás na limpeza: o data source apagado não leva o segredo junto, e ele guarda um refresh token que ainda renova.

Lente Well-Architected sobre a decisão

Segurança

Negue bedrock:CreateDataSourceToken em contas de produção por SCP; exija secret name prefix e escope o Resource a ele; use Sites.Selected em vez de Sites.FullControl.All sempre que a lista de sites for conhecida; guarde o .p12 com SSE-KMS e kms:Decrypt restrito à service role.

Confiabilidade

Certificado com validade padrão de 365 dias derruba todo sync ao expirar, alarme com 45 dias de antecedência. Grants per-site não são retroativos: site novo sem grant simplesmente não é crawlado, sem erro visível no data source.

Deixe o protótipo existir, mas em uma conta onde ele não possa crescer

A tentação óbvia depois de ler tudo isso é bloquear o 3LO e pronto. Eu não faria. O atrito que ele remove é real: sem ele, todo experimento de RAG sobre a wiki interna vira um ticket de duas semanas com o time de identidade, e o resultado prático é que ninguém experimenta, ou pior, alguém exporta a wiki para um bucket e faz o RAG por fora, sem crawler, sem sync e sem nenhuma das verificações que a gente acabou de discutir.

O desenho que eu recomendo é topológico, não político. Uma conta de sandbox onde bedrock:GetDataSourceAuthorizationUrl e bedrock:CreateDataSourceToken são permitidas, sem dado classificado e com ciclo de vida curto, o índice inteiro morre em N dias por processo, não por lembrança. As contas de produção com essas duas ações negadas por SCP, o que faz o 3LO desaparecer do cardápio sem discussão caso a caso.

O que atravessa essa fronteira não é o data source; é o aprendizado. O protótipo responde as perguntas caras de verdade: quais espaços do Confluence têm conteúdo que resolve dúvida real, qual estratégia de chunking sobrevive a documento de política com 80 páginas, se a busca agêntica com maxAgentIteration acima do padrão de 5 muda a resposta o suficiente para pagar o custo. Nada disso depende de ACL. Quando a resposta for "vale", aí sim você abre o ticket com o time de Entra sabendo exatamente quais sites pedir no Sites.Selected, e o ticket fica mais curto porque você chega com escopo, não com intenção.

FA
O que eu faria na segunda-feira
Arquiteto de TI Especialista

Antes de habilitar qualquer coisa, eu rodaria uma busca por bedrock:* nos policies da conta de produção, a chance de as duas ações novas já estarem concedidas por wildcard é alta, e nenhuma revisão de IAM feita antes de setembro de 2026 poderia tê-las considerado. Depois eu criaria a conta de sandbox com o SCP invertido, porque bloquear na produção sem oferecer o lugar certo só empurra o problema para fora do meu campo de visão. Aprendi isso da forma cara em plataforma financeira: a decisão de arquitetura que parece de segurança quase sempre é de ergonomia, as pessoas contornam controle inconveniente com criatividade que nenhum policy prevê. E manteria a regra que uso para todo conector novo: se a flag não pode ser mudada depois, ela não é configuração, é design, e design vai para ADR, com o trade-off escrito e assinado antes do CreateDataSource.

Veredito

Adote em sandbox, negue em produção

Use o user-managed setup (3LO) quando as três condições valerem juntas: o conteúdo já é legível por toda a audiência do knowledge base, o índice vive em uma conta sem dado classificado, e existe data de expiração acordada para ele. Fora disso, vá direto para ENTRA_ID_APP_ONLY no SharePoint, ENTRA_APP_ID no OneDrive ou BASIC no Confluence, não porque o 3LO seja mal feito, mas porque a flag de ACL não muda depois do CreateDataSource e o desvio de cinco minutos hoje custa uma reingestão completa e um ticket com o time de Entra depois. O anúncio não é sobre autenticação; é sobre onde a fronteira de acesso da sua organização passa a existir, e o 3LO responde que ela passa a não existir dentro do índice. Isso é uma escolha legítima para um protótipo e é uma constatação de auditoria para o resto.

Referências

AWS What's New: Bedrock Managed Knowledge Base introduces user-managed setup for SharePoint, OneDrive, and Confluence (Amazon Bedrock User Guide: SharePoint user-managed setup (3LO)Amazon Bedrock User Guide: Confluence user-managed setup (3LO)Amazon Bedrock User Guide: IAM permissions for user-managed setup (3LO)Amazon Bedrock User Guide: Access Control Lists awareness enablementAmazon Bedrock User Guide: ACL-aware retrieval on managed knowledge bases (userContext)Amazon Bedrock User Guide: Set up Microsoft Entra ID App-Only authentication for SharePointAWS ML Blog: Build enterprise search for agents with Amazon Bedrock Managed Knowledge Base
#bedrock#rag#iam#sharepoint#confluence#governance#oauth
Compartilhar:LinkedInWhatsAppXBaixar em Markdown
Fonte analisada: Amazon Bedrock Managed Knowledge Base introduces user-managed setup for SharePoint, OneDrive, and Confluence data sources
Próximo passo
Agentes de IA em produção na AWSComo eu desenho, oriento e audito agentes que vão ao ar, com os números e as fontes.Ver o IA BuilderTrilha Arquiteto de IA, gratuitaFundamentos, LLMs, RAG, tools, MCP e arquitetura na AWS, em aulas curtas e interativas.Começar a trilha

Continue lendo

IA & AgentesFable 5.1 no Bedrock: retenção de dados virou decisão de arquiteturaClaude Fable 5.1 chegou ao Bedrock em 1º de setembro de 2026 com 1M de contexto e uma condição que nenhum modelo anterior da Anthropic tinha: você precisa autorizar explicitamente a retenção de prompts e saídas por até 30 dias dentro da AWS. Isso não é uma caixinha de consentimento, é uma configuração de conta com raio de alcance organizacional, que colide com o SCP de zero data retention que a maioria dos ambientes regulados já tem escrito.Ler IA & AgentesRAG sobre ServiceNow: o conector que apaga o user criteriaO conector nativo de ServiceNow do Amazon Bedrock Managed Knowledge Base chegou em 4 de setembro de 2026 e tira semanas de pipeline artesanal do caminho. Ele também instrui você a usar uma conta de serviço com knowledge_admin, que ignora o user criteria por knowledge base, e o conector não ingere ACL de documento. Este é o retro do piloto em que essas duas linhas de documentação se encontraram.Ler IA & AgentesOAuth no AWS MCP Server: Comparativo de Estratégias de Autenticação para AgentesO suporte OAuth nativo no AWS MCP Server muda o jogo para quem estava improvisando autenticação de agentes com credenciais estáticas ou fluxos Cognito customizados. Mas 'suporte OAuth' não é uma decisão de arquitetura, é um ponto de partida. Neste artigo, faço um bake-off honesto entre quatro estratégias de autenticação para agentes de IA em ambientes financeiros, com trade-offs reais, números plausíveis e uma recomendação direta.Ler
AnteriorAMI com contrato: anatomia do novo bloqueio de tipos no EC2PróximoRAG sobre ServiceNow: o conector que apaga o user criteria
Gostou desta análise? Receba a próxima.

Deep dives de arquitetura, AWS, IA e mercado: direto no seu email. Grátis.

Sem spam · cancele quando quiser

Pergunte ao Fernando sobre isto

Uma resposta focada sobre este artigo, do meu assistente de IA, baseada no meu trabalho.

Participe da conversa

Entre para comentar

Confirme seu e-mail para participar, você também recebe a newsletter. Sem senha.

Neste artigo
O que o caminho de cinco minutos realmente trocaA jornada: do protótipo em 3LO ao knowledge base de produçãoArquiteturaIdentidade: o e-mail é a chave, e não há traduçãoOs dois caminhos, lado a ladoOs modos de falha que só aparecem depoisAntipadrõesWell-ArchitectedDeixe o protótipo existir, mas em uma conta onde ele não possa crescerVereditoReferências