Cloud

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:

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:

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:

Pré-requisitos

Antes de iniciar, certifique-se de ter:

É 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:

É 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:

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.

Comentários

Interações
Seu Perfil

Aguardando Login...