Como gerenciar o acesso a agentes implantados

Há diferentes tipos de métodos de autenticação disponíveis para diferentes modos de acesso:

Caso de uso Método de autenticação Sobre este método de autenticação
Acessar fontes de dados diretamente de um agente. Conta de serviço Os agentes implantados têm acesso a todos os recursos que a conta de serviço deles tem permissão para acessar.
Envie solicitações para endpoints usando chaves de API de um agente. Chaves de API Verifique se a API que você quer usar é compatível com chaves de API antes de usar esse método de autenticação.
Gerenciar contas de usuário, registro, login ou autorização para os usuários finais do agente. ID do cliente OAuth Exige que seu agente peça e receba o consentimento do usuário.

Papéis

Os agentes implantados no Vertex AI Agent Engine são executados usando o agente de serviço do AI Platform Reasoning Engine ou sua conta de serviço personalizada. Consulte Configurar a identidade e as permissões do agente para mais informações.

Agente de serviço do AI Platform Reasoning Engine

A conta de serviço do agente de serviço do mecanismo de raciocínio do AI Platform usa o formato service-PROJECT_NUMBER@gcp-sa-aiplatform-re.iam.gserviceaccount.com.

A conta de serviço tem uma função de Agente de serviço do mecanismo de raciocínio da Vertex AI (roles/aiplatform.reasoningEngineServiceAgent) que concede as permissões padrão necessárias para agentes implantados. Confira a lista completa de permissões padrão na documentação do IAM.

Listar as funções de um agente implantado

Console

  1. Acessar a página IAM

    Acessar IAM

  2. Selecione o projeto correspondente ao seu projeto Google Cloud .

  3. Encontre o Principal que corresponde à conta de serviço usada como identidade do agente.

  4. As funções do agente implantado podem ser encontradas na coluna Função.

gcloud

Primeiro, instale e inicialize a CLI gcloud. Em seguida, execute o comando:

gcloud projects get-iam-policy PROJECT_ID_OR_NUMBER \
  --flatten="bindings[].members" \
  --filter="bindings.members:serviceAccount:PRINCIPAL" \
  --format="value(bindings.role)"

em que

  • PROJECT_ID_OR_NUMBER é o ID ou número do projeto, e
  • PRINCIPAL é baseada na conta de serviço usada quando o agente é implantado no Vertex AI Agent Engine.

Para mais detalhes, consulte a documentação do IAM e a referência da CLI.

Python

Primeiro, instale a biblioteca de cliente executando

pip install google-api-python-client

Em seguida, autentique-se e execute o seguinte comando para listar as funções de um agente implantado:

from google.cloud import resourcemanager_v3
from google.iam.v1 import iam_policy_pb2

project_id = "PROJECT_ID"
principal = "PRINCIPAL"

crm_service = resourcemanager_v3.ProjectsClient()
policy = crm_service.get_iam_policy(iam_policy_pb2.GetIamPolicyRequest(
    resource=f"projects/{project_id}"
))
for binding in policy.bindings:
    for member in binding.members:
        if principal in member:
            print(binding.role)

Em que o PRINCIPAL é baseado na conta de serviço usada quando o agente é implantado no Vertex AI Agent Engine.

Conceder papéis a um agente implantado

  1. Acessar a página IAM

    Acessar IAM

  2. Selecione o projeto correspondente ao seu projeto Google Cloud .

  3. Encontre o Principal que corresponde à conta de serviço usada como identidade do agente.

  4. Adicione os papéis necessários ao Principal clicando no botão de edição, adicionando os papéis e clicando no botão de salvar.

gcloud

Primeiro, instale e inicialize a CLI gcloud. Em seguida, execute o comando:

gcloud projects add-iam-policy-binding PROJECT_ID --member=PRINCIPAL --role=ROLE_NAME

em que

  • PRINCIPAL é baseada na conta de serviço usada quando o agente é implantado no Vertex AI Agent Engine.
  • ROLE_NAME é o nome do papel que você quer conceder. Para uma lista de papéis predefinidos, consulte Noções básicas sobre papéis.

Para mais detalhes, consulte a documentação do IAM e a referência da CLI.

Python

Não recomendamos escrever seu próprio código Python para conceder ou revogar papéis de agentes implantados. Em vez disso, recomendamos usar o console Google Cloud ou gcloud para operações únicas ou o Terraform para gerenciar o controle de acesso do IAM de maneira programática. Se você quiser ou precisar fazer isso em Python, consulte a documentação da biblioteca de cliente do IAM.

Revogar papéis de um agente implantado

  1. Acessar a página IAM

    Acessar IAM

  2. Selecione o projeto correspondente ao seu projeto Google Cloud .

  3. Encontre o Principal que corresponde à conta de serviço usada como identidade do agente.

  4. Para revogar os papéis do Principal, clique no botão de edição, remova os papéis correspondentes e clique no botão de salvar.

gcloud

Primeiro, instale e inicialize a CLI gcloud. Em seguida, execute o comando:

gcloud projects remove-iam-policy-binding PROJECT_ID --member=PRINCIPAL --role=ROLE_NAME

em que

  • PRINCIPAL é baseada na conta de serviço usada quando o agente é implantado no Vertex AI Agent Engine.
  • ROLE_NAME é o nome do papel que você quer revogar. Para uma lista de papéis predefinidos, consulte Noções básicas sobre papéis.

Para mais detalhes, consulte a documentação do IAM e a referência da CLI.

Python

Não recomendamos escrever seu próprio código Python para conceder ou revogar papéis de agentes implantados. Em vez disso, recomendamos usar o console Google Cloud ou gcloud para operações únicas ou o Terraform para gerenciar o controle de acesso do IAM de maneira programática. Se você quiser ou precisar fazer isso em Python, consulte a documentação da biblioteca de cliente do IAM.

Secrets

Um secret contém uma ou mais versões dele, junto com metadados como rótulos e informações de replicação. O payload real de um secret é armazenado em uma versão do secret. Os secrets são gerenciados (pelo Secret Manager) no nível do projeto e podem ser compartilhados entre agentes implantados. Para listar os secrets correspondentes a um agente no Secret Manager, adicione rótulos e use-os para filtragem.

Criar um secret

Console

  1. Acesse a página do Secret Manager.

    Acessar o Secret Manager

  2. Na página Gerenciador de secrets, clique em Criar secret.

  3. No campo Nome, insira um nome para o secret (por exemplo, my-secret).

  4. Opcional: para adicionar uma versão do secret ao criar o secret inicial, no campo Valor do secret, insira um valor para o secret (por exemplo, abcd1234).

  5. Acesse Rótulos e clique em Adicionar rótulo.

  6. Insira uma chave e o valor correspondente para criar um rótulo.

  7. Clique em Criar secret.

gcloud

Primeiro, instale e inicialize a CLI gcloud. Em seguida, execute os comandos abaixo:

gcloud secrets create SECRET_ID --replication-policy="automatic"
gcloud secrets versions add SECRET_ID --data-file="FILE_PATH"

em que

  • SECRET_ID é o ID do segredo ou o identificador totalmente qualificado do segredo.
  • FILE_PATH é o caminho completo (incluindo o nome do arquivo) para o arquivo que contém os detalhes da versão.

Para mais detalhes, acesse a documentação do Secret Manager para criar um secret e uma versão do secret, ou a referência da CLI para criar um secret e uma versão do secret, respectivamente.

Python

Primeiro, instale a biblioteca de cliente executando

pip install google-cloud-secret-manager

Em seguida, faça a autenticação e execute o seguinte

from google.cloud import secretmanager
import google_crc32c

client = secretmanager.SecretManagerServiceClient()
secret = client.create_secret(request={
    "parent": "projects/PROJECT_ID",
    "secret_id": "SECRET_ID",
    "secret": {  # google.cloud.secretmanager_v1.types.Secret
        # Required. The replication policy cannot be changed after the Secret has been created.
        "replication": {"automatic": {}},
        # Optional. Labels to associate with the secret.
        "labels": {"type": "api_key", "provider": "anthropic"},
        # Optional. The secret's time-to-live in seconds with format (e.g.,
        # "900s" for 15 minutes). If specified, the secret versions will be
        # automatically deleted upon reaching the end of the TTL period.
        "ttl": "TTL",
    },
})

anthropic_api_key = "API_KEY"  # The secret to be stored.
payload_bytes = anthropic_api_key.encode("UTF-8")
# Optional. Calculate payload checksum.
crc32c = google_crc32c.Checksum()
crc32c.update(payload_bytes)

version = client.add_secret_version(request={
    "parent": secret.name,
    "payload": {
        "data": payload_bytes,
        "data_crc32c": int(crc32c.hexdigest(), 16),  # Optional.
    },
})
print(f"Added secret version: {version.name}")

Receber um secret

Console

  1. Acesse a página do Secret Manager.

    Acessar o Secret Manager

  2. Na página Secret Manager, clique no nome de um secret para descrever.

  3. A página Detalhes do secret lista informações sobre o secret.

gcloud

Primeiro, instale e inicialize a CLI gcloud. Em seguida, execute o comando:

gcloud secrets versions describe VERSION_ID --secret=SECRET_ID

em que

  • VERSION_ID é o ID da versão do secret, e
  • SECRET_ID é o ID do segredo ou o identificador totalmente qualificado do segredo.

Para mais detalhes, consulte a documentação do Secret Manager ou a referência da CLI.

Python

Primeiro, instale a biblioteca de cliente executando

pip install google-cloud-secret-manager

Em seguida, faça a autenticação e execute o seguinte

from google.cloud import secretmanager

client = secretmanager.SecretManagerServiceClient()
name = client.secret_path("PROJECT_ID", "SECRET_ID")
response = client.get_secret(request={"name": name})

Listar secrets

Console

  1. Acesse a página do Secret Manager.

    Acessar o Secret Manager

  2. Na tabela "Secrets", clique no campo Filtrar.

  3. Escolha uma propriedade de filtro e o valor correspondente, por exemplo, Location:asia-east1.

  4. A tabela é filtrada automaticamente com base nos valores inseridos.

  5. (Opcional) Para filtrar versões de secrets: selecione um secret para acessar as versões dele e use a opção Filtrar na tabela Versões.

gcloud

Primeiro, instale e inicialize a CLI gcloud.

Para listar todos os segredos de um projeto, execute o seguinte comando:

gcloud secrets list --filter="FILTER"

em que FILTER é uma string (por exemplo, name:asecret OR name:bsecret) ou expressões regulares (por exemplo, name ~ "secret_ab.*").

Para listar todas as versões de uma chave secreta, execute o seguinte comando:

gcloud secrets versions list SECRET_ID

em que SECRET_ID é o ID ou o identificador totalmente qualificado do secret.

Para mais detalhes, acesse a documentação do Secret Manager para filtrar secrets e listar versões de secrets, ou a referência da CLI para listar secrets e versões de secrets, respectivamente.

Python

Primeiro, instale a biblioteca de cliente executando

pip install google-cloud-secret-manager

Em seguida, faça a autenticação e execute o seguinte

from google.cloud import secretmanager
client = secretmanager.SecretManagerServiceClient()
for secret in client.list_secrets(request={
    "parent": "projects/PROJECT_ID",
    "filter": "FILTER", # e.g. "labels.provider=anthropic"
}):
    print(f"Found secret: {secret.name}")

Atualizar um secret

Console

  1. Acesse a página do Secret Manager.

    Acessar o Secret Manager

  2. Na página do Gerenciador de secrets, clique na caixa de seleção ao lado do nome do secret.

  3. Se o painel de informações estiver fechado, clique em Mostrar painel de informações para exibi-lo.

  4. No painel de informações, clique na guia Rótulos.

  5. Clique em Adicionar rótulo e insira uma chave e um valor para o rótulo.

  6. Clique em Salvar.

gcloud

Primeiro, instale e inicialize a CLI gcloud. Em seguida, execute o comando:

gcloud secrets update SECRET_ID --update-labels=KEY=VALUE

em que

  • SECRET_ID é o ID do segredo ou o identificador totalmente qualificado dele.
  • KEY é a chave do rótulo, e
  • VALUE é o valor correspondente do rótulo.

Para mais detalhes, consulte a documentação do Secret Manager ou a referência da CLI.

Python

Primeiro, instale a biblioteca de cliente executando

pip install google-cloud-secret-manager

Em seguida, faça a autenticação e execute o seguinte

from google.cloud import secretmanager
client = secretmanager.SecretManagerServiceClient()
name = client.secret_path("PROJECT_ID", "SECRET_ID")
response = client.update_secret(request={
    "secret": {
        "name": name,
        "labels": {"type": "api_key", "provider": "anthropic"}, # updated labels
    },
    "update_mask": {"paths": ["labels"]},
})
print(f"Updated secret: {response.name}")

Excluir um secret

Console

  1. Acesse a página do Secret Manager.

    Acessar o Secret Manager

  2. Na página do Secret Manager, na coluna Ações do secret, clique em Ver mais.

  3. No menu, selecione Excluir.

  4. Na caixa de diálogo Excluir secret, insira o nome do secret.

  5. Clique no botão Excluir secret.

gcloud

Primeiro, instale e inicialize a CLI gcloud.

Para excluir uma versão secreta, execute o seguinte comando:

gcloud secrets versions destroy VERSION_ID --secret=SECRET_ID

em que

  • VERSION_ID é o nome do recurso da versão do secret, e
  • SECRET_ID é o ID do segredo ou o identificador totalmente qualificado do segredo.

Para excluir um secret e todas as versões dele, execute o seguinte comando:

gcloud secrets delete SECRET_ID

em que SECRET_ID é o ID do segredo ou o identificador totalmente qualificado dele.

Para mais detalhes, consulte a documentação do Secret Manager sobre como excluir um secret e como destruir uma versão do secret ou a referência da CLI sobre como excluir um secret e como destruir uma versão do secret.

Python

Primeiro, instale a biblioteca de cliente executando

pip install google-cloud-secret-manager

Em seguida, faça a autenticação e execute o seguinte

from google.cloud import secretmanager
client = secretmanager.SecretManagerServiceClient()
name = client.secret_path("PROJECT_ID", "SECRET_ID")
client.delete_secret(request={"name": name})

Clientes e credenciais OAuth

Um ID do cliente é usado para identificar um único agente nos servidores OAuth do Google. Se o agente for executado em várias plataformas, cada uma precisará de um ID do cliente. Em um nível alto, para integrar um agente baseado em OAuth, faça o seguinte:

  1. Crie um cliente e uma credencial OAuth.

  2. Armazene o ID e a chave secreta do cliente no Secret Manager. Consulte Criar um secret.

  3. Acesse o secret no seu agente durante o desenvolvimento.

Criar uma credencial de cliente OAuth

  1. No Google Cloud console, acesse a página Plataforma de autenticação do Google > Clientes.

    Acesse Google Auth Platform > Clients

  2. (Se necessário) Se a tela mostrar "A plataforma de autenticação do Google ainda não está configurada", clique em Começar e preencha as Configurações do projeto. É possível atualizar essas informações depois. Para detalhes sobre a prontidão para produção, acesse Conformidade com a política do OAuth 2.0.

  3. Clique em Criar cliente.

  4. Defina o Tipo de aplicativo como Web application.

  5. Defina o nome do cliente OAuth como OAUTH_CLIENT_DISPLAY_NAME.

  6. Em URIs de redirecionamento autorizados, adicione o URI de REDIRECT_URI.

  7. Em "Chaves secretas do cliente", clique no botão "Fazer o download do JSON". Ele vai baixar um arquivo client_secret.json com o seguinte conteúdo:

{'web': {
    'client_id': "CLIENT_ID",
    'client_secret': "CLIENT_SECRET",
    'project_id': "PROJECT_ID",
    'redirect_uris': [REDIRECT_URIs],
    'auth_uri': 'https://accounts.google.com/o/oauth2/auth',
    'token_uri': 'https://www.googleapis.com/oauth2/v3/token',
    'auth_provider_x509_cert_url': 'https://www.googleapis.com/oauth2/v1/certs',
    'javascript_origins': "JAVASCRIPT_ORIGINS",  # Optional.
}}
  1. Armazene o ID e a chave secreta do cliente no Secret Manager, por exemplo:
from google.cloud import secretmanager
import google_crc32c
import json

client = secretmanager.SecretManagerServiceClient()
secret = client.create_secret(request={
    "parent": "projects/PROJECT_ID",
    "secret_id": "OAUTH_SECRET_ID", # e.g. "oauth-client-demo"
    "secret": {
        "labels": {"type": "oauth_client"},
        "replication": {"automatic": {}},
    },
})

payload_bytes = json.dumps(cred).encode("UTF-8")
crc32c = google_crc32c.Checksum()
crc32c.update(payload_bytes)

client.add_secret_version(request={
    "parent": secret.name,
    "payload": {
        "data": payload_bytes,
        "data_crc32c": int(crc32c.hexdigest(), 16),
    },
})

Listar clientes OAuth

  1. No Google Cloud console, acesse a página Plataforma de autenticação do Google > Clientes.

    Acesse Google Auth Platform > Clients

  2. Ela vai listar as credenciais de cliente OAuth que você tem.

Excluir um cliente OAuth

  1. No Google Cloud console, acesse a página Plataforma de autenticação do Google > Clientes.

    Acesse Google Auth Platform > Clients

  2. Selecione as credenciais de cliente OAuth a serem excluídas e clique em "Excluir".