Las cuentas de servicio son las cuentas que usan las cargas de trabajo o los servicios para consumir recursos y acceder a microservicios de forma segura de manera programática. Son un tipo especial de identidad que usa una aplicación o carga de trabajo en lugar de una persona. Al igual que las cuentas de usuario, a las cuentas de servicio se les pueden otorgar permisos y roles, pero no pueden acceder como un usuario humano.
Las cuentas de servicio son útiles para administrar la infraestructura aislada de Google Distributed Cloud (GDC), como las siguientes:
- Servicios y cargas de trabajo internos de Distributed Cloud para acceder de forma segura a la interfaz de programación de aplicaciones (API) del plano de control de Distributed Cloud. Por ejemplo, los servicios de bases de datos interactúan con las APIs de Kubernetes para crear y borrar bases de datos.
- Cargas de trabajo del cliente en Distributed Cloud para acceder a los servicios de Distributed Cloud y realizar llamadas autorizadas a la interfaz de programación de aplicaciones (API). Por ejemplo, las cuentas de servicio pueden administrar un cliente con un notebook de Vertex AI Workbench para transcribir archivos de audio con la API de Speech-to-Text.
- Cargas de trabajo externas para federar con Distributed Cloud. Por ejemplo, las cuentas de servicio pueden administrar una aplicación externa a Distributed Cloud que digitaliza documentos, pero quiere usar la API de reconocimiento óptico de caracteres (OCR) para reemplazar su motor de OCR actual.
- Controladores del sistema o servicios de Distributed Cloud para acceder de forma segura a los recursos del cliente o a los clústeres de usuarios Por ejemplo, las cuentas de servicio pueden administrar flujos de trabajo de autenticación y autorización en los que los controladores de servicio que se ejecutan en clústeres de administrador deben ejecutar cargas de trabajo dentro de los clústeres de usuario que administran los clientes.
Puedes administrar cuentas con la consola de GDC o la CLI de gdcloud. Con la CLI de gcloud, la función de identidad del servicio se basa en la API de ProjectServiceAccount
global. Como las cuentas de servicio se configuran de forma global, operan en todas las zonas de tu universo de gdcloud.
Antes de comenzar
Solo puedes crear cuentas de servicio dentro de un proyecto. Para obtener más información sobre cómo crear un proyecto, consulta Crea un proyecto.
Crea una identidad de servicio
Para obtener los permisos necesarios para crear cuentas de servicio, pídele al administrador de IAM del proyecto que te otorgue el rol de administrador de IAM del proyecto (project-iam-admin
).
Los usuarios con acceso a las cuentas de servicio pueden acceder a todas las cuentas de servicio de un proyecto.
Para crear cuentas de servicio en un proyecto, usa la consola de GDC o la CLI de gdcloud.
Console
- Accede a la consola de GDC.
- En el menú de navegación, selecciona Identidad y acceso > Identidades de servicio.
- Haz clic en Crear identidad de servicio. Se abrirá la página Detalles de la identidad del servicio.
- En el campo Nombre de la identidad del servicio, ingresa un nombre para la identidad del servicio. Por ejemplo:
testserviceidentity
. - Haz clic en Crear.
gdcloud
Crea una identidad de servicio:
gdcloud iam service-accounts create NAME \
--project=PROJECT
Reemplaza los siguientes valores:
- NAME: Es el nombre de
ProjectServiceAccount
. El nombre debe ser único dentro del espacio de nombres del proyecto. - PROJECT: Es el proyecto en el que se creará la identidad del servicio. Si
gdcloud init
ya está configurado, omite la marca--project
.
Este comando crea un ProjectServiceAccount
en el espacio de nombres del proyecto en el servidor de la API de Management.
API
Crea un archivo 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"
Reemplaza las siguientes variables:
NAME
: Es el nombre del recursoProjectServiceAccount
. El nombre debe ser único dentro del espacio de nombres del proyecto.PROJECT
: Es el proyecto en el que se creará la identidad del servicio.ALGORITHM
: Es el algoritmo de la clave. Solo se admiten claves ES256.KEY_ID
: Es el identificador único de la clave. El ID se usa para determinar con qué clave se realizará la verificación.KEY
: Es la clave pública codificada en Base64 con la que se realizará la verificación.START_TIME
: Es la hora de inicio en la que la clave se vuelve válida, como2025-02-07T00:59:34Z
.EXPIRATION_TIME
: Es la hora de vencimiento de la clave, como2026-02-07T00:59:34Z
.
Aplica el recurso personalizado
ProjectServiceAccount
al servidor de la API global:kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f my-project-sa.yaml
Reemplaza la variable
GLOBAL_API_SERVER_KUBECONFIG
por la ruta de acceso al archivo kubeconfig del servidor de la API global.
Cómo ver las identidades de servicio
Para ver una lista de las cuentas de servicio en un proyecto, usa la consola de GDC o la CLI de gdcloud.
Console
- Accede a la consola de GDC.
- Selecciona un proyecto.
- En el menú de navegación, haz clic en Identidad y acceso > Identidades de servicio para ver la lista de cuentas de servicio del proyecto.
gdcloud
Enumera las cuentas de servicio en un proyecto:
gdcloud iam service-accounts list \
--project=PROJECT
Asigna una vinculación de rol a la identidad del servicio
Para asignar una vinculación de rol, debes tener los permisos adecuados. Para obtener los permisos necesarios para asignar roles, pídele al administrador de IAM del proyecto que te otorgue el rol de administrador de IAM del proyecto (project-iam-admin
).
Usa la consola de GDC o la CLI de gdcloud para asignar una vinculación de rol.
Console
- Accede a la consola de GDC.
- Selecciona un proyecto.
- En el menú de navegación, selecciona Identidad y acceso > Acceso.
- En la lista Miembro, haz clic en Agregar miembro. Verás la página Usuarios y roles.
- Selecciona Identidad del servicio en la lista Tipo de miembro.
- En la lista Identidad del servicio, selecciona la identidad del servicio a la que deseas asignar una vinculación de rol.
- En la lista Rol, selecciona el rol que deseas asignar a la identidad del servicio, como Creador de copias de seguridad.
- Opcional: Para agregar otro rol, haz clic en Agregar otro rol. Selecciona el rol adicional.
- Haz clic en Agregar.
gdcloud
Este comando crea y nombra la vinculación del rol del proyecto para vincular el rol especificado con ProjectServiceAccount
en el servidor de la API de Management:
gdcloud iam service-accounts add-iam-policy-binding \
--project=PROJECT \
--role=ROLE \
--role-namespace=ROLE_NAMESPACE \
--iam-account=NAME
Reemplaza los siguientes valores:
- PROJECT: Es el proyecto en el que se creará la vinculación del rol.
Si
gdcloud init
ya está configurado, puedes omitir la marca--project
. - ROLE: Es el rol predefinido que se asignará al
ProjectServiceAccount
. Especifica roles en el formatoRole/name
, en el que Role es el tipo de KubernetesIAMRole
y name es el nombre del rol predefinido. Por ejemplo, para asignar el rol de Lector del proyecto, establece el rol enIAMRole/project-viewer
. - ROLE_NAMESPACE: Es el espacio de nombres del rol que se vinculará con la cuenta de servicio. Esto solo se aplica si tu universo tiene varias zonas.
- NAME: Es el nombre de la identidad del servicio que se usará.
Borra una identidad de servicio
Para borrar cuentas de servicio en un proyecto, usa la consola de GDC o la CLI de gdcloud.
Console
- Accede a la consola de GDC.
- En el menú de navegación, selecciona Identidad y acceso > Identidades de servicio.
- Selecciona la casilla de verificación de la identidad de servicio que deseas borrar.
- Haz clic en Borrar.
- Aparecerá el diálogo de confirmación. En el campo Para confirmar, escribe lo siguiente, ingresa
remove
. - Haz clic en Borrar.
gdcloud
Ejecuta el siguiente comando para borrar una identidad de servicio:
gdcloud iam service-accounts delete NAME \
--project=PROJECT
Crea y agrega pares de claves
Para crear y agregar pares de claves en un proyecto, usa la consola de GDC o la CLI de gdcloud.
Console
- Accede a la consola de GDC.
- En el menú de navegación, selecciona Identidad y acceso > Identidades de servicio.
- Haz clic en el nombre de la identidad de servicio que deseas agregar a la clave.
- Haz clic en Crear clave nueva.
- La nueva clave aparecerá en la lista Claves, y un diálogo confirmará que creaste la clave correctamente.
gdcloud
Este comando crea el archivo JSON de credenciales predeterminadas de la aplicación y los pares de claves públicas y privadas:
gdcloud iam service-accounts keys create APPLICATION_DEFAULT_CREDENTIALS_FILENAME \
--project=PROJECT \
--iam-account=NAME \
--ca-cert-path=CA_CERTIFICATE_PATH
Reemplaza los siguientes valores:
- APPLICATION_DEFAULT_CREDENTIALS_FILENAME: Es el nombre del archivo JSON.
- PROJECT : Selecciona el proyecto para el que se creará la clave.
Si
gdcloud init
ya está configurado, puedes omitir la marca--project
. - NAME: Es el nombre de la identidad del servicio para la que se agregará la clave.
- CA_CERTIFICATE_PATH: Opcional: Es la ruta de acceso al certificado de la autoridad certificadora (CA) para verificar el extremo de autenticación. Si no especificas esta ruta de acceso, se usarán los certificados de CA del sistema. Debes instalar la CA en los certificados de CA del sistema.
Distributed Cloud agrega la clave pública a las claves ProjectServiceAccount
que usas para verificar los tokens web JSON (JWT) que firma la clave privada. La clave privada se escribe en el archivo JSON de las credenciales predeterminadas de la aplicación.
En el siguiente ejemplo, se muestra el archivo JSON de las credenciales predeterminadas de la aplicación:
{
"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"
}
En este ejemplo, se usan los siguientes valores:
project
: Es el espacio de nombres del proyecto en la organización.private_key_id
: Es el ID asignado a la clave.private_key
: Es la clave privada que genera la CLI.name
: Es el nombre de la identidad del servicio.token_uri
: Es la dirección del extremo de autenticación.
Enumera las credenciales de las cuentas de servicio
Enumera las claves públicas de un ProjectServiceAccount
específico en el proyecto:
gdcloud iam service-accounts keys list \
--project=PROJECT \
--iam-account=NAME
Borrar credenciales
Para borrar la clave pública, usa la consola de GDC o la CLI de gdcloud.
Console
- Accede a la consola de GDC.
- En el menú de navegación, selecciona Identidad y acceso > Identidades de servicio.
- Haz clic en el nombre de la identidad del servicio que tiene la clave que deseas borrar.
- Haz clic en Borrar.
- En el diálogo de confirmación, haz clic en Borrar.
gdcloud
Quita la clave pública con el ID de clave del ProjectServiceAccount
específico del proyecto:
gdcloud iam service-accounts keys delete KEY_ID \
--project=PROJECT \
--iam-account=NAME