Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Menu Docs

Gerenciar chaves de API e contas de serviço

Neste guia, você pode aprender a gerenciar as credenciais que autenticam um aplicação para a API do Atlas Agent Engine. O Atlas Agent Engine aceita chaves de API e tokens de acesso à conta de serviço em suas rotas de API. Essas credenciais funcionam nas rotas de gerenciamento de projeto e organização e nas rotas de invocação do agente .

Para autenticar sua própria conta com a CLI agentengine, consulte Instalar e autenticar.

Observação

Estabilidade da API durante a pré-visualização pública

A API pública do Atlas Agent Engine está sujeita a alterações durante a pré-visualização pública. Endpoints, formatos de solicitação e formatos de resposta podem mudar sem um caminho de migração compatível com versões anteriores. Fixe a versão do CLI do agentengine da qual sua automação depende e revise as notas de versão antes de atualizar.

Para revisar todas as limitações que se aplicam durante a visualização pública, consulte Limitações do mecanismo do agente do MongoDB Atlas .

Uma conta de serviço é uma conta que pertence a um projeto ou organização em vez de pertencer a uma pessoa. Use uma conta de serviço quando um servidor de aplicação invocar agentes em nome de seus próprios usuários, para que seu aplicação não dependa de uma credencial individual.

Importante

Identidade de memória da conta de serviço

Quando uma conta de serviço invoca um agente implementado, o Atlas Agent Engine utiliza a própria identidade da conta de serviço como a identidade da memória de tempo de execução. A plataforma ignora qualquer valor user_id de usuário final que a solicitação de invocação ou o sinalizador agentengine invoke --user-id forneça.

As operações automáticas de registro, extração, consolidação e app.memory usam essa identidade resolvida. Como resultado, as invocações que autenticam por meio da mesma conta de serviço compartilham um escopo de usuário de memória.

Esta limitação se aplica apenas aos agentes implementados que uma conta de serviço invoca. O serviço de memória autônomo do, com escopo de projeto, não é afetado. Este serviço continua a aceitar valores user_id e session_id explícitos do chamador.

Para isolar a memória pelo usuário final, chame o serviço de memória autônomo do seu aplicação e passe um valor user_id e session_id explícito para cada chamada. Para saber mais, consulte Usar o serviço de memória independente.

Esta seção descreve como criar uma conta de serviço usando a API, a UI e a CLI agentengine.

Para criar uma conta de serviço com escopo de projeto, você deve ter a função PROJECT_OWNER no projeto.

Para criar uma conta de serviço, envie uma solicitação POST para o endpoint /api/v1/projects/{id}/service-accounts .

Nas solicitações a seguir, $SESSION_TOKEN é seu próprio token de sessão ao fazer login no Atlas Agent Engine. Você não pode gerenciar contas de serviço com o token de acesso de uma conta de serviço. O Atlas Agent Engine define o proprietário de uma nova conta de serviço a partir do token de sessão, portanto, cada solicitação que cria, gira, desativa ou restringe uma conta de serviço deve vir de um usuário conectado que detém a função necessária.

curl -s "https://agentengine.mongodb.com/api/v1/projects/$PROJECT_ID/service-accounts" \
-X POST \
-H "Authorization: Bearer $SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "my-app-server",
"description": "Invokes agents from the support app",
"roles": ["PROJECT_OWNER"],
"secret_expires_after_hours": 2160
}'

O campo secret_expires_after_hours é opcional e o padrão é 2160 horas, que são 90 dias. A resposta se assemelha à seguinte saída:

{
"client_secret": "ae_sa_sk_...",
"service_account": {
"client_id": "ae_sa_id_...",
"name": "my-app-server",
"is_active": true
}
}

Importante

Salve o segredo do cliente quando o Atlas Agent Engine exibi-lo. O Atlas Agent Engine mostra o segredo somente na criação.

Os IDs do cliente da conta de serviço começam com ae_sa_id_ e os segredos do cliente começam com ae_sa_sk_. Para criar uma conta de serviço com escopo da organização, você deve ter a função ORG_GROUP_CREATOR. Enviar uma solicitação POST para o endpoint /api/v1/organizations/{id}/service-accounts:

curl -s "https://agentengine.mongodb.com/api/v1/organizations/$ORG_ID/service-accounts" \
-X POST \
-H "Authorization: Bearer $SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "my-app-server",
"description": "Invokes agents from the support app",
"roles": ["ORG_GROUP_CREATOR"],
"secret_expires_after_hours": 2160
}'

A resposta tem o mesmo formato que a resposta com escopo de projeto.

Você pode criar e gerenciar contas de serviço na UI do Atlas Agent Engine. Para uma conta de serviço com escopo de projeto, clique em Service Accounts na navegação do projeto . Para uma conta de serviço no escopo da organização, acesse Organization Settings e clique em Service Accounts.

Você também pode criar e gerenciar contas de serviço com a CLI agentengine. O comando a seguir cria uma conta de serviço com escopo de projeto:

agentengine service-account create my-app-server \
--project-id $PROJECT_ID \
--role PROJECT_OWNER \
--description "Invokes agents from the support app"

Para criar uma conta de serviço com escopo da organização, passe --org-id em vez de --project-id. Se você não passar nenhum dos dois, a CLI usará o projeto do seu estado de login atual e retornará à sua organização quando nenhum projeto for selecionado.

As seguintes bandeiras estão disponíveis:

bandeira
Descrição

--role

(Obrigatório) O role para conceder a conta de serviço. Este sinalizador aceita exatamente um role. Para uma conta com escopo de projeto, passe PROJECT_OWNER ou PROJECT_READ_ONLY. Para uma conta com escopo de organização, passe ORG_GROUP_CREATOR ou ORG_READ_ONLY.

--project-id

Escopo do projeto para a conta de serviço. Passe apenas um de --project-id ou --org-id.

--org-id

Escopo da organização para a conta de serviço. Passe apenas um de --project-id ou --org-id.

--description

Uma descrição legível por humanos da conta de serviço.

--secret-expires-in

A vida útil secreta como duração em horas inteiras, como 720h. O padrão do servidor é 2160h.

--ip-access-list

Restringe os endereços que podem usar a credencial. O padrão é irrestrito.

O comando service-account também fornece os subcomandos list, get, rotate e delete, que aceitam os mesmos sinalizadores de escopo.

Troque o ID do cliente e o segredo do cliente por um token de acesso enviando uma solicitação POST para o endpoint /api/v1/oauth/token. Passe as credenciais como credenciais HTTP Basic, conforme mostrado no exemplo a seguir, ou como campos client_id e client_secret no corpo da solicitação:

curl -s "https://agentengine.mongodb.com/api/v1/oauth/token" \
-X POST \
-u "$CLIENT_ID:$CLIENT_SECRET" \
-d "grant_type=client_credentials"

O campo grant_type aceita apenas o valor client_credentials. A resposta se assemelha à seguinte saída:

{
"access_token": "...",
"token_type": "Bearer",
"expires_in": 3600
}

O token de acesso é válido por uma hora. Solicite um novo token antes que o atual expire. O Atlas Agent Engine controla a taxa de solicitações de token para cada conta de serviço e retorna um código de erro 429 quando um cliente solicita tokens com muita frequência.

Envie um token de acesso no cabeçalho Authorization de um pedido de invocação para invocar um agente com um token de acesso:

curl -s "https://agentengine.mongodb.com/api/v1/projects/$PROJECT_ID/workspaces/$WORKSPACE_ID/invoke" \
-X POST \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"message": "Hello, agent!"}'

Uma conta de serviço com escopo de projeto pode atuar apenas em seu próprio projeto. Se o caminho da solicitação nomear qualquer outro projeto, o Atlas Agent Engine rejeitará sua solicitação. Uma conta de serviço com escopo de organização deve nomear um projeto em sua própria organização.

A função ORG_GROUP_CREATOR por si só não concede acesso de invocação a todos os projeto da organização. Uma conta de serviço no escopo da organização com a função ORG_GROUP_CREATOR pode invocar agentes somente em projetos gerenciados pelo Atlas Agent Engine. Para invocar um agente em um projeto apoiado pelo Atlas, use uma conta de serviço com escopo de projeto com a função PROJECT_OWNER.

Para substituir o segredo de uma conta de serviço, envie uma solicitação de POST para o ponto de extremidade de rotação do escopo da conta. Para uma conta com escopo de projeto, use o seguinte endpoint:

curl -s "https://agentengine.mongodb.com/api/v1/projects/$PROJECT_ID/service-accounts/$CLIENT_ID/rotate" \
-X POST \
-H "Authorization: Bearer $SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{"secret_expires_after_hours": 2160}'

Para uma conta com escopo organizacional, use o seguinte endpoint:

curl -s "https://agentengine.mongodb.com/api/v1/organizations/$ORG_ID/service-accounts/$CLIENT_ID/rotate" \
-X POST \
-H "Authorization: Bearer $SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{"secret_expires_after_hours": 2160}'

O campo secret_expires_after_hours é opcional e o padrão é 2160 horas. Para aceitar o padrão, omita o corpo da solicitação. A resposta tem o mesmo formato que a resposta de criação e contém o novo segredo. O segredo anterior permanece válido por até sete dias ou até sua própria expiração, o que ocorrer primeiro.

Para desativar o segredo anterior imediatamente, gire o segredo uma segunda vez ou desative a conta. Ambas as ações interrompem a autenticação do segredo anterior. Use um deles quando precisar revogar um segredo que pode estar comprometido.

Para desativar uma conta de serviço, envie uma solicitação de DELETE para o endpoint para o escopo da conta. Para uma conta com escopo de projeto, use o seguinte endpoint:

curl -s "https://agentengine.mongodb.com/api/v1/projects/$PROJECT_ID/service-accounts/$CLIENT_ID" \
-X DELETE \
-H "Authorization: Bearer $SESSION_TOKEN"

Para uma conta com escopo organizacional, use o seguinte endpoint:

curl -s "https://agentengine.mongodb.com/api/v1/organizations/$ORG_ID/service-accounts/$CLIENT_ID" \
-X DELETE \
-H "Authorization: Bearer $SESSION_TOKEN"

Depois de desativar uma conta de serviço, a conta não pode mais solicitar tokens, e qualquer token que ela já tenha falhará na próxima solicitação.

Uma conta de serviço tem exatamente um role. A tabela a seguir mostra os papéis que você pode atribuir à conta de serviço em cada escopo:

Escopo
Funções

Projeto

PROJECT_OWNER, PROJECT_READ_ONLY

Organização

ORG_GROUP_CREATOR, ORG_READ_ONLY

Ambos os escopos podem invocar agentes, mas nem todos os papéis podem. Para invocar um agente, uma conta de serviço com escopo de projeto deve ter a função PROJECT_OWNER e uma conta de serviço com escopo de organização deve ter a função ORG_GROUP_CREATOR. Você pode atribuir as funções PROJECT_READ_ONLY e ORG_READ_ONLY a uma conta de serviço, mas uma conta de serviço com qualquer função não pode invocar agentes. Atribua uma função somente leitura a uma conta de serviço que não invoque agentes. O Atlas Agent Engine reavalia o status e as funções da conta de serviço em cada solicitação, portanto, uma alteração de função ou uma desativação se aplica à próxima solicitação da conta.

Para limitar os endereços IP que podem usar o token de uma conta de serviço, defina uma lista de acesso IP. Envie uma solicitação PUT para o endpoint para o escopo da conta com a lista completa de endereços IP e blocos CIDR permitidos. Para uma conta com escopo de projeto, use o seguinte endpoint:

curl -s "https://agentengine.mongodb.com/api/v1/projects/$PROJECT_ID/service-accounts/$CLIENT_ID/ip-access-list" \
-X PUT \
-H "Authorization: Bearer $SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{"ip_access_list": ["203.0.113.0/24"]}'

Para uma conta com escopo organizacional, use o seguinte endpoint:

curl -s "https://agentengine.mongodb.com/api/v1/organizations/$ORG_ID/service-accounts/$CLIENT_ID/ip-access-list" \
-X PUT \
-H "Authorization: Bearer $SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{"ip_access_list": ["203.0.113.0/24"]}'

A solicitação substitui toda a lista de acesso IP. Para remover restrições de IP, envie uma array vazia para o endpoint. O Atlas Agent Engine rejeita solicitações que usam o token de acesso da conta de serviço de um endereço que não está na lista. A lista de acesso IP não restringe as solicitações de token.

Para saber como chamar um agente implementado com essas credenciais,consulte Invocar um agente.