As contas de serviço são as contas que cargas de trabalho ou serviços usam para consumir recursos e acessar microsserviços de maneira programática e segura. Elas são um tipo especial de identidade usada por um aplicativo ou carga de trabalho, em vez de uma pessoa. Assim como uma conta de usuário, as contas de serviço podem receber permissões e papéis, mas não podem fazer login como um usuário humano.
As contas de serviço são úteis para gerenciar a infraestrutura isolada do Google Distributed Cloud (GDC), como:
- Serviços e cargas de trabalho internos do Distributed Cloud para acessar com segurança a interface de programação de aplicativos (API) do plano de controle do Distributed Cloud. Por exemplo, os serviços de banco de dados interagem com as APIs do Kubernetes para criar e excluir bancos de dados.
- Workloads do cliente no Distributed Cloud para acessar serviços do Distributed Cloud e fazer chamadas autorizadas de interface de programação de aplicativos (API). Por exemplo, as contas de serviço podem gerenciar um cliente usando um notebook do Vertex AI Workbench para transcrever arquivos de áudio com a API Speech-to-Text.
- Cargas de trabalho externas para federar com o Distributed Cloud. Por exemplo, as contas de serviço podem gerenciar um aplicativo externo ao Distributed Cloud que digitaliza documentos, mas quer usar a API Optical Character Recognition (OCR) para substituir o mecanismo de OCR atual.
- Serviços do Distributed Cloud ou controladores de sistema para acessar com segurança recursos do cliente ou clusters de usuários. Por exemplo, as contas de serviço podem gerenciar fluxos de trabalho de autenticação e autorização em que os controladores de serviço executados em clusters de administrador precisam executar cargas de trabalho nos clusters de usuários gerenciados pelos clientes.
É possível gerenciar contas usando o console do GDC ou
a CLI gdcloud. Com a CLI gdcloud, o recurso de identidade
de serviço é criado com base na API global ProjectServiceAccount
. Como as contas de serviço são configuradas globalmente, elas operam em todas as zonas do seu universo gdcloud.
Antes de começar
Só é possível criar contas de serviço em um projeto. Para mais informações sobre como criar um projeto, consulte Criar um projeto.
Criar uma identidade de serviço
Para receber as permissões necessárias para criar contas de serviço, peça ao administrador do IAM do projeto para conceder a você o papel de administrador do IAM do projeto (project-iam-admin
).
Os usuários com acesso a contas de serviço podem acessar todas as contas de serviço em um projeto.
Para criar contas de serviço em um projeto, use o console do GDC ou a CLI gdcloud.
Console
- Faça login no console do GDC.
- No menu de navegação, selecione Identidade e acesso > Identidades de serviço.
- Clique em Criar identidade do serviço. A página Detalhes da identidade do serviço é aberta.
- No campo Nome da identidade de serviço, insira um nome para sua identidade de serviço. Por exemplo,
testserviceidentity
. - Clique em Criar.
gdcloud
Crie uma identidade de serviço:
gdcloud iam service-accounts create NAME \
--project=PROJECT
Substitua os seguintes valores:
- NAME: o nome do
ProjectServiceAccount
. O nome precisa ser exclusivo no namespace do projeto. - PROJECT: o projeto em que a identidade de serviço será criada. Se
gdcloud init
já estiver definido, omita a flag--project
.
Esse comando cria um ProjectServiceAccount
no namespace do projeto no
servidor da API Management.
API
Crie um arquivo YAML de recurso personalizado
ProjectServiceAccount
, comomy-project-sa.yaml
:apiVersion: resourcemanager.global.gdc.goog/v1 kind: ProjectServiceAccount metadata: name: NAME namespace: PROJECT spec: keys: - algorithm: ALGORITHM id: KEY_ID key: KEY validAfter: "START_TIME" validBefore: "EXPIRATION_TIME"
Substitua as seguintes variáveis:
NAME
: o nome do recursoProjectServiceAccount
. O nome precisa ser exclusivo no namespace do projeto.PROJECT
: o projeto em que a identidade de serviço será criada.ALGORITHM
: o algoritmo da chave. Apenas chaves ES256 são aceitas.KEY_ID
: o identificador exclusivo da chave. O ID é usado para determinar qual chave verificar.KEY
: a chave pública codificada em base64 para verificação.START_TIME
: o horário de início em que a chave se torna válida, como2025-02-07T00:59:34Z
.EXPIRATION_TIME
: o prazo de validade da chave, como2026-02-07T00:59:34Z
.
Aplique o recurso personalizado
ProjectServiceAccount
ao servidor da API global:kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f my-project-sa.yaml
Substitua a variável
GLOBAL_API_SERVER_KUBECONFIG
pelo caminho para o arquivo kubeconfig do servidor de API global.
Ver identidades de serviço
Para conferir uma lista de contas de serviço em um projeto, use o console do GDC ou a CLI gdcloud.
Console
- Faça login no console do GDC.
- Selecione um projeto.
- No menu de navegação, clique em Identidade e acesso > Identidades de serviço para conferir a lista de contas de serviço do projeto.
gdcloud
Listar as contas de serviço em um projeto:
gdcloud iam service-accounts list \
--project=PROJECT
Atribuir uma vinculação de função à identidade de serviço
Para atribuir uma vinculação de função, é preciso ter as permissões adequadas. Para receber as permissões necessárias para atribuir papéis, peça ao administrador do IAM do projeto para conceder a você o papel de administrador do IAM do projeto (project-iam-admin
).
Use o console do GDC ou a CLI gdcloud para atribuir uma vinculação de função.
Console
- Faça login no console do GDC.
- Selecione um projeto.
- No menu de navegação, selecione Identidade e acesso > Acesso.
- Na lista Membro, clique em Adicionar membro. A página Usuários e papéis é exibida.
- Selecione Identidade de serviço na lista Tipo de membro.
- Na lista Identidade de serviço, selecione a identidade de serviço a que você quer atribuir uma vinculação de função.
- Na lista Papel, selecione o papel que você quer atribuir à identidade de serviço, como Criador de backup.
- Opcional: para adicionar outro papel, clique em Adicionar outro papel. Selecione a função adicional.
- Clique em Adicionar.
gdcloud
Esse comando cria e nomeia a vinculação de papel do projeto para vincular o
papel especificado com o ProjectServiceAccount
no servidor da API Management:
gdcloud iam service-accounts add-iam-policy-binding \
--project=PROJECT \
--role=ROLE \
--role-namespace=ROLE_NAMESPACE \
--iam-account=NAME
Substitua os seguintes valores:
- PROJECT: o projeto em que a vinculação de função será
criada.
Se
gdcloud init
já estiver definido, você poderá omitir a flag--project
. - ROLE: o papel predefinido a ser atribuído ao
ProjectServiceAccount
. Especifique os papéis no formatoRole/name
, em que Role é o tipo do KubernetesIAMRole
e name é o nome do papel predefinido. Por exemplo, para atribuir o papel de Visualizador de projetos, defina o papel comoIAMRole/project-viewer
. - ROLE_NAMESPACE: o namespace da função a ser vinculada com a conta de serviço. Isso só se aplica se o universo tiver várias zonas.
- NAME: o nome da identidade de serviço a ser usada.
Excluir uma identidade de serviço
Para excluir contas de serviço em um projeto, use o console do GDC ou a CLI gdcloud.
Console
- Faça login no console do GDC.
- No menu de navegação, selecione Identidade e acesso > Identidades de serviço.
- Marque a caixa de seleção da identidade de serviço que você quer excluir.
- Clique em Excluir.
- A caixa de diálogo de confirmação aparece. No campo Confirme digitando o seguinte abaixo, insira
remove
. - Clique em Excluir.
gdcloud
Execute o comando a seguir para excluir uma identidade de serviço:
gdcloud iam service-accounts delete NAME \
--project=PROJECT
Criar e adicionar pares de chaves
Para criar e adicionar pares de chaves em um projeto, use o console do GDC ou a CLI gdcloud.
Console
- Faça login no console do GDC.
- No menu de navegação, selecione Identidade e acesso > Identidades de serviço.
- Clique no nome da identidade de serviço que você quer adicionar à chave.
- Clique em Criar nova chave.
- A nova chave aparece na lista Chaves, e uma caixa de diálogo confirma que você criou a chave.
gdcloud
Esse comando cria o arquivo JSON de credenciais padrão do aplicativo e os pares de chaves pública e privada:
gdcloud iam service-accounts keys create APPLICATION_DEFAULT_CREDENTIALS_FILENAME \
--project=PROJECT \
--iam-account=NAME \
--ca-cert-path=CA_CERTIFICATE_PATH
Substitua os seguintes valores:
- APPLICATION_DEFAULT_CREDENTIALS_FILENAME: o nome do arquivo JSON.
- PROJECT : seleciona o projeto para criar a chave.
Se
gdcloud init
já estiver definido, você poderá omitir a flag--project
. - NAME: o nome da identidade de serviço para adicionar a chave.
- CA_CERTIFICATE_PATH: opcional: o caminho do certificado da autoridade de certificação (CA) para verificar o endpoint de autenticação. Se você não especificar esse caminho, os certificados de CA do sistema serão usados. É necessário instalar a CA nos certificados de CA do sistema.
O Distributed Cloud adiciona a chave pública às ProjectServiceAccount
chaves usadas para verificar os JSON Web Tokens (JWTs) que a chave privada assina. A chave privada é gravada no arquivo JSON de credenciais padrão do aplicativo.
O exemplo a seguir mostra o arquivo JSON de credenciais padrão do aplicativo:
{
"type": "gdch_service_account",
"format_version": "1",
"project": "project_name",
"private_key_id": "abcdef1234567890",
"private_key": "-----BEGIN RSA PRIVATE KEY-----\nETC\n-----END RSA PRIVATE KEY-----\n",
"name": "service_identity_name",
"ca_cert_path": "service_identity_name",
"token_uri": "https://service-identity.<Domain>/authenticate"
}
Este exemplo usa os seguintes valores:
project
: o namespace do projeto na organização.private_key_id
: o ID atribuído à chave.private_key
: a chave privada gerada pela CLI.name
: o nome da identidade de serviço.token_uri
: o endereço do endpoint de autenticação.
Listar credenciais para contas de serviço
Liste as chaves públicas de um ProjectServiceAccount
específico no projeto:
gdcloud iam service-accounts keys list \
--project=PROJECT \
--iam-account=NAME
Excluir credenciais
Para excluir a chave pública, use o console do GDC ou a CLI gdcloud.
Console
- Faça login no console do GDC.
- No menu de navegação, selecione Identidade e acesso > Identidades de serviço.
- Clique no nome da identidade de serviço que tem a chave a ser excluída.
- Clique em Excluir.
- Na caixa de diálogo de confirmação, clique em Excluir.
gdcloud
Remova a chave pública com o ID da chave do ProjectServiceAccount
específico
no projeto:
gdcloud iam service-accounts keys delete KEY_ID \
--project=PROJECT \
--iam-account=NAME