Segurança Reforçada para Agentes AI no Amazon Bedrock: Políticas Chrome e CAs
Introdução: Elevando a Segurança de Agentes AI no Amazon Bedrock
Agentes de Inteligência Artificial com acesso irrestrito à web representam riscos significativos de segurança. Sem políticas claras para controlar o comportamento do navegador, um agente pode acessar domínios não autorizados, armazenar credenciais ou baixar arquivos fora dos fluxos de trabalho aprovados. Além disso, organizações com serviços internos que utilizam uma autoridade de certificação (CA) privada enfrentam desafios de conectividade devido a erros de validação de certificado.
O Amazon Bedrock AgentCore Browser, agora com suporte a políticas enterprise do Chrome e certificados CA raiz customizados, oferece um controle granular sobre o comportamento do navegador do agente e sua conectividade. Este artigo explorará como configurar essas políticas para restringir agentes a sites específicos, observar a aplicação das políticas e demonstrar o uso de certificados CA raiz customizados para garantir conectividade segura a serviços internos.
Por que Reforçar Políticas de Navegação para Agentes AI?
A aplicação de políticas enterprise do Chrome para agentes AI atende a três necessidades organizacionais fundamentais:
- Restrição de Escopo a Domínios Aprovados: Políticas de allowlist e denylist de URL garantem que os agentes naveguem apenas em domínios autorizados. Um agente focado no processamento de faturas, por exemplo, não necessita de acesso a redes sociais ou motores de busca.
- Desabilitação de Recursos de Navegador de Risco: As políticas do Chrome permitem desativar o gerenciador de senhas, bloquear downloads de arquivos, desabilitar o preenchimento automático e controlar dezenas de outras funcionalidades, reduzindo o risco de armazenamento ou exfiltração de dados indesejados.
- Separação da Gestão de Políticas do Desenvolvimento de Agentes: As políticas gerenciadas são configuradas no nível do navegador através da API do plano de controle, aplicando-se a cada sessão. Isso permite que equipes de segurança definam as configurações aprovadas, enquanto as equipes de desenvolvimento se concentram na lógica do agente, sem a necessidade de incorporar decisões de política no código da aplicação.
Como Políticas Chrome e Certificados CA são Aplicados
A integração das políticas e certificados ocorre em duas camadas de aplicação de políticas e uma configuração de confiança de certificado opcional:
- Políticas Gerenciadas (Managed Policies): Operam no nível do navegador. Arquivos JSON de políticas enterprise do Chrome, armazenados no Amazon S3, são fornecidos ao criar um navegador via API do plano de controle. Estas são armazenadas pelo serviço e aplicadas em cada sessão, correspondendo ao diretório
/etc/chromium/policies/managed/do Chrome. - Políticas Recomendadas (Recommended Policies): Operam no nível da sessão. Podem ser fornecidas opcionalmente ao iniciar uma sessão do navegador via API do plano de dados. Mapeiam para
/etc/chromium/policies/recommended/e funcionam como preferências de usuário. Em caso de conflito, as políticas gerenciadas têm precedência. - Certificados Root CA Customizados: Permitem armazenar o certificado CA raiz de sua organização no AWS Secrets Manager. Ao criar um navegador ou o AgentCore Code Interpreter, o serviço importa o certificado para o armazenamento de confiança, garantindo que as conexões a serviços internos e proxies SSL-interceptores sejam bem-sucedidas.
Arquitetura da Solução
As políticas Chrome e certificados CA raiz fluem do seu ambiente para as sessões de navegador isoladas do Amazon Bedrock AgentCore através de um processo definido:
- Em seu ambiente, os arquivos JSON de políticas Chrome são armazenados no Amazon S3 e os certificados CA raiz, opcionalmente, no AWS Secrets Manager.
- O plano de controle busca os arquivos JSON de política do seu bucket S3 ao chamar
CreateBrowsere o certificado CA raiz do AWS Secrets Manager, se configurado. - Sua aplicação chama a API
CreateBrowsere, em seguida, a APIStartBrowserSession. - O plano de controle passa os metadados de configuração do navegador para o plano de dados.
- O plano de dados implanta as políticas gerenciadas, políticas recomendadas e certificados CA raiz na sessão de navegador isolada. O Chrome lê a configuração unificada na inicialização e aplica as políticas durante toda a sessão.
Pré-requisitos
Antes de iniciar, certifique-se de ter:
- Python 3.10 ou posterior.
- Uma conta AWS com acesso ao Amazon Bedrock AgentCore habilitado.
- Credenciais AWS configuradas (verifique com
aws sts get-caller-identity). - Uma região AWS onde o Amazon Bedrock AgentCore esteja disponível.
- Acesso a um modelo de IA para acionar o agente (este artigo utiliza Anthropic Claude via Amazon Bedrock, mas o AgentCore é agnóstico a modelos).
É crucial utilizar credenciais temporárias do AWS IAM Identity Center ou AWS Security Token Service (AWS STS) e seguir o princípio do menor privilégio.
Configurando o Ambiente
O código completo para este passo a passo está disponível como um notebook Jupyter no repositório de amostras.
git clone https://github.com/awslabs/amazon-bedrock-agentcore-samples.git
cd amazon-bedrock-agentcore-samples/01-tutorials/05-AgentCore-tools/02-Agent-Core-browser-tool/13-browser-chrome-policies
Configure o ambiente Python:
python3 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -r requirements.txt
Configure as credenciais e execute o notebook:
export AWS_REGION=us-west-2
jupyter notebook browser-chrome-policies.ipynb
Execute as células sequencialmente. A Parte 1 aborda as políticas enterprise do Chrome, e a Parte 2, os certificados CA raiz customizados.
Passo a Passo
O notebook está organizado em duas partes principais, demonstrando a configuração e aplicação das políticas e certificados.
Definindo a Política Enterprise do Chrome
As primeiras células do notebook definem uma política enterprise do Chrome que restringe o navegador à documentação da AWS e desabilita recursos desnecessários para o agente.
policy = {
"URLBlocklist": ["*"],
"URLAllowlist": [
"docs.aws.amazon.com",
".aws.amazon.com",
".amazonaws.com",
],
"PasswordManagerEnabled": False,
"DownloadRestrictions": 3,
"DeveloperToolsAvailability": 0,
"BookmarkBarEnabled": False,
"AutofillAddressEnabled": False,
"AutofillCreditCardEnabled": False,
}
A seguir, a descrição de cada configuração de política:
- URLBlocklist:
["*"]- Bloqueia URLs por padrão. - URLAllowlist:
docs.aws.amazon.com, .aws.amazon.com, .amazonaws.com- Permite acesso à documentação da AWS e domínios relacionados. - PasswordManagerEnabled:
false- Bloqueia o armazenamento de credenciais. - DownloadRestrictions:
3- Bloqueia todos os downloads. - DeveloperToolsAvailability:
0- Permite o uso do DevTools (necessário para automação Playwright ou CDP). - BookmarkBarEnabled:
false- Oculta a barra de favoritos. - AutofillAddressEnabled:
false- Desativa o preenchimento automático de endereços. - AutofillCreditCardEnabled:
false- Desativa o preenchimento automático de cartões de crédito.
É importante notar que URLAllowlist utiliza um formato de padrão de filtro de URL do Chrome, que difere dos padrões glob típicos. Além disso, DeveloperToolsAvailability deve ser 0 (ou omitido) para navegadores usados com Playwright ou outras automações baseadas em CDP.
Criando um Navegador com Políticas Gerenciadas
As próximas células do notebook criam um navegador customizado que aplica a política em cada sessão. A chamada de API essencial utiliza o parâmetro enterprise_policies com o tipo MANAGED. A gravação da sessão também é habilitada para revisão posterior.
from bedrock_agentcore.tools import BrowserClient
client = BrowserClient(REGION)
response = client.create_browser(
name="docs_research_browser",
execution_role_arn=EXECUTION_ROLE_ARN,
network_configuration={"networkMode": "PUBLIC"},
enterprise_policies=[
{
"location": {
"s3": {
"bucket": BUCKET_NAME,
"prefix": POLICY_KEY,
}
},
"type": "MANAGED",
}
],
recording={
"enabled": True,
"s3Location": {
"bucket": BUCKET_NAME,
"prefix": "policy-demo",
},
},
)
O notebook então consulta get_browser() até que o status mude de CREATING para READY.
Demonstrando a Aplicação da Política Chrome com Playwright
O notebook inicia uma sessão de navegador e usa o Playwright para navegar para duas URLs. A primeira, docs.aws.amazon.com, é permitida pela política e carrega com sucesso. A segunda, www.wikipedia.org, é bloqueada, e o Chrome exibe uma página de erro.
TEST 1: Navigate to docs.aws.amazon.com (ALLOWED)
Page title: Overview - Amazon Bedrock AgentCore
Page text preview: Amazon Bedrock AgentCore ...
Result: PAGE LOADED SUCCESSFULLY
TEST 2: Navigate to www.wikipedia.org (BLOCKED)
Page title:
Result: CHROME POLICY BLOCKED THIS URL
Essa demonstração ilustra o valor central das políticas Chrome: a restrição ocorre no nível do navegador, independentemente do raciocínio ou das instruções do prompt do agente. Durante a execução, é possível observar o navegador ao vivo no console do Amazon Bedrock AgentCore.
Revisando a Gravação da Sessão
Com a gravação de sessão habilitada, é possível revisar a sessão para observar a aplicação da política. No console do Amazon Bedrock AgentCore, na seção "Built-in tools", selecione o navegador (docs_research_browser), e na seção "Browser sessions", escolha "View Recording" para a sessão concluída. A interface de reprodução oferece vídeo interativo com linha do tempo, ações do usuário e eventos de rede, confirmando que apenas o tráfego permitido foi bem-sucedido.
Executando um Agente Strands com o Navegador Restrito (Opcional)
Uma célula opcional no notebook cria um agente Strands utilizando o navegador com políticas de restrição. Este agente pesquisa a documentação do AgentCore dentro do domínio permitido. Ao tentar navegar para uma URL não autorizada, o agente detecta o bloqueio e continua seu trabalho com as páginas acessíveis, demonstrando a resiliência do agente mesmo sob restrições.
Demonstrando Certificados Root CA Customizados
Organizações com serviços internos que utilizam CAs privadas, ou que roteiam tráfego através de proxies corporativos com interceptação SSL, precisam que seus agentes confiem nesses certificados não públicos. O AgentCore Browser e o AgentCore Code Interpreter suportam certificados CA raiz customizados para essa finalidade.
Esta seção utiliza https://untrusted-root.badssl.com, um site público que apresenta intencionalmente um certificado assinado por uma CA não confiável.
Armazenando o Certificado Root CA no AWS Secrets Manager
O certificado CA raiz não confiável do BadSSL é salvo no AWS Secrets Manager para que o Amazon Bedrock AgentCore possa importá-lo para o armazenamento de confiança de certificados. Em um ambiente de produção, o certificado CA interno da organização seria colocado no Secrets Manager da mesma forma.
Demonstração da Falha Sem o Root CA
O notebook cria uma sessão padrão do AgentCore Code Interpreter e executa um código Python que chama urllib.request.urlopen() contra o site não confiável. A conexão falha com um SSLCertVerificationError, espelhando o erro que ocorreria ao conectar-se a serviços corporativos internos com uma CA privada.
Demonstração de Sucesso Com o Root CA
Em seguida, o notebook cria um AgentCore Code Interpreter customizado que confia no certificado CA raiz do BadSSL, utilizando o parâmetro certificates.
from bedrock_agentcore.tools import CodeInterpreter, Certificate
ci_client_with_ca = CodeInterpreter(REGION)
response = ci_client_with_ca.create_code_interpreter(
name="demo_rootca_interpreter",
execution_role_arn=EXECUTION_ROLE_ARN,
network_configuration={"networkMode": "PUBLIC"},
certificates=[Certificate.from_secret_arn(secret_arn)],
)
Após executar o mesmo código urlopen() com o interpretador customizado, a saída mostra Status: 200. A conexão é bem-sucedida porque o CA raiz do BadSSL é agora confiável, sem a necessidade de alterações no código da aplicação.
Aplicando em Sua Organização
A demonstração do badssl.com reflete cenários reais:
- Serviços Corporativos Internos: Armazene o certificado CA raiz da sua organização no AWS Secrets Manager e referencie-o ao criar um navegador ou AgentCore Code Interpreter.
- Proxies Corporativos com Interceptação SSL: Armazene o certificado CA raiz do seu proxy no AWS Secrets Manager e referencie-o nos certificados, além de configurar as definições de proxy.
Certificados CA raiz customizados funcionam tanto com o AgentCore Browser quanto com o AgentCore Code Interpreter. No navegador, o certificado é importado para o armazenamento de confiança do Chrome. No interpretador, o serviço configura variáveis de ambiente como REQUESTS_CA_BUNDLE e SSL_CERT_FILE, permitindo que as bibliotecas Python confiem na CA customizada sem workarounds no código.
É possível combinar certificados CA raiz com políticas Chrome em um único navegador. Por exemplo, criando um navegador conectado a uma VPC que confia em uma CA interna e restringe a navegação a uma intranet corporativa:
from bedrock_agentcore.tools import BrowserClient, Certificate
response = client.create_browser(
name="internal_locked_down_browser",
execution_role_arn=EXECUTION_ROLE_ARN,
network_configuration={
"networkMode": "VPC",
"vpcConfig": {
"securityGroups": ["sg-0123456789abcdef0"],
"subnets": ["subnet-0123456789abcdef0"],
}
},
enterprise_policies=[
{
"location": {
"s3": {
"bucket": "org-policies",
"prefix": "intranet-only-policy.json",
}
},
"type": "MANAGED",
}
],
certificates=[
Certificate.from_secret_arn(
"arn:aws:secretsmanager:us-west-2:123456789012:secret:corp-root-ca"
)
],
)
Limpeza de Recursos
Para evitar cobranças, lembre-se de deletar os recursos criados. As células de limpeza no final do notebook interrompem as sessões ativas do navegador e excluem o navegador customizado, o AgentCore Code Interpreter, o perfil IAM, o segredo do Secrets Manager e o arquivo de política S3. Sessões do Amazon Bedrock AgentCore Browser incorrem em cobranças enquanto ativas.
Conclusão
Neste artigo, demonstramos como configurar políticas enterprise do Chrome para restringir agentes AI a domínios aprovados e desabilitar recursos de navegador de risco no Amazon Bedrock AgentCore. Observamos a aplicação dessas políticas através da visualização em tempo real e gravações de sessão. Além disso, mostramos como utilizar certificados CA raiz customizados para permitir que as sessões do AgentCore Code Interpreter se conectem a serviços que utilizam CAs não públicas.
Com essas capacidades, é possível implantar agentes de IA que operam dentro dos limites de segurança e conformidade de sua organização. As políticas Chrome oferecem controles no nível do navegador, gerenciados independentemente do código da aplicação do agente. O suporte a CA raiz customizado remove barreiras de conectividade para a infraestrutura interna.
Próximos Passos
Comece criando um navegador com uma allowlist de URLs adaptada ao seu caso de uso. A lista de políticas Enterprise do Chrome documenta mais de 450 configurações. Para agentes de entrada de dados que interagem com formulários sensíveis, considere desabilitar o preenchimento automático e o gerenciador de senhas. Para agentes que processam documentos em um portal específico, restrinja downloads e limite a navegação ao domínio desse portal.
Se sua organização usa PKI privada, configure certificados CA raiz e teste a conectividade com seus serviços internos. Para agentes que operam atrás de proxies com interceptação SSL, combine a configuração de CA raiz com o recurso de configuração de proxy para rotear o tráfego através de seu proxy corporativo enquanto confia em seu certificado.
Aguardando Login...