Sube claves de cuentas de servicio

En esta página, se explica cómo subir una clave pública para una cuenta de servicio. Después de subir la clave pública, puedes usar la clave privada del par de claves para autenticarte como la cuenta de servicio.

Antes de comenzar

Roles obligatorios

Para obtener los permisos que necesitas a fin de subir las claves de cuentas de servicio, pídele a tu administrador que te otorgue el rol de IAM de administrador de claves de cuentas de servicio (roles/iam.serviceAccountKeyAdmin) en el proyecto o en la cuenta de servicio cuyas claves deseas administrar. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.

También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

Para obtener más información, consulta Roles de cuentas de servicio.

Las funciones de IAM básicas también contienen permisos para administrar claves de cuentas de servicio. No deberías otorgar funciones básicas en un entorno de producción, pero puedes otorgarlas en un entorno de desarrollo o de prueba.

Sube una clave pública para una cuenta de servicio

Puedes subir la parte de clave pública de un par de claves administradas por el usuario para asociarlo con una cuenta de servicio. Después de subir la clave pública, puedes usar la clave privada del par de claves como una clave de cuenta de servicio.

La clave que subas debe ser una clave pública RSA que esté unida en un certificado X.509 v3 y codificada en base64. Puedes usar herramientas como OpenSSL para generar una clave y un certificado con este formato.

Importante: No incluyas información privada en el certificado X.509. Específicamente, usa un asunto genérico y no agregues ningún atributo opcional. Los certificados son visibles de forma pública. Cualquier información privada en el certificado es visible para cualquier persona que lo recupere. Para obtener más información, consulta Evita revelar información confidencial en los certificados X.509 subidos.

Por ejemplo, mediante el siguiente comando, se genera un par de claves RSA de 2,048 bits y se une la clave pública en un certificado autofirmado que es válido durante 365 días:

openssl req -x509 -nodes -newkey rsa:2048 -days 365 \
    -keyout /path/to/private_key.pem \
    -out /path/to/public_key.pem \
    -subj "/CN=unused"

Luego, puedes subir el archivo public_key.pem como la clave pública de una cuenta de servicio.

Consola

  1. En la consola de Google Cloud, ve a la página Cuentas de servicio.

    Ir a Cuentas de servicio

    Los pasos restantes aparecerán automáticamente en la consola de Google Cloud.

  2. Selecciona un proyecto.
  3. En la página Cuentas de servicio, haz clic en la dirección de correo electrónico de la cuenta de servicio para la que deseas subir una clave.
  4. Haz clic en la pestaña Claves.
  5. Haz clic en el menú desplegable Agregar clave y, luego, selecciona Subir clave existente.
  6. Haz clic en Explorar y, luego, busca y selecciona tu archivo de clave pública. De manera alternativa, puedes copiar y pegar el contenido de tu archivo de clave pública en el cuadro Pegar clave existente.
  7. Haz clic en Subir.

gcloud

Ejecuta el comando gcloud iam service-accounts keys upload para subir una clave pública con el fin de firmar claves de cuenta de servicio.

Reemplaza los siguientes valores:

  • KEY_FILE: La ruta de acceso al archivo que contiene los datos clave que se subirán, por ejemplo, ./public_key.pem.
  • SA_NAME: El nombre de la cuenta de servicio para subir una clave.
  • PROJECT_ID: El ID del proyecto de Google Cloud.
gcloud iam service-accounts keys upload KEY_FILE \
    --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com

El siguiente resultado contiene un identificador único para la clave subida:

Name: projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys/c7b74879da78e4cdcbe7e1bf5e129375c0bfa8d0

Para determinar si el resultado del comando fue correcto, ejecuta el comando gcloud iam service-accounts keys list:

gcloud iam service-accounts keys list \
    --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com

El resultado contendrá el mismo identificador único que se mostró después de crear la clave:

KEY_ID CREATED_AT EXPIRES_AT INHABILITADO
c7b74879da78e4cdcbe7e1bf5e129375c0bfa8d0 2019-06-26T21:01:42Z 9999-12-31T23:59:59Z  

REST

Mediante el método projects.serviceAccounts.keys.upload, se sube la clave pública desde un par de claves administradas por el usuario y se agrega esta clave a la cuenta de servicio.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: El ID del proyecto de Google Cloud Los ID de proyecto son strings alfanuméricas, como my-project.
  • SA_NAME: Es el nombre de la cuenta de servicio con la que se asociará la clave.
  • PUBLIC_KEY_DATA: Son los datos de la clave pública para el par de claves. Debe ser una clave pública RSA que esté unida en un certificado X.509 v3. Codifica los datos de clave pública en base64, incluidas la primera, -----BEGIN CERTIFICATE-----, y la última línea, -----END CERTIFICATE-----.

Método HTTP y URL:

POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys:upload

Cuerpo JSON de la solicitud:

{
  "publicKeyData": "PUBLIC_KEY_DATA"
}

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "name": "projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com/keys/c7b74879da78e4cdcbe7e1bf5e129375c0bfa8d0",
  "validAfterTime": "2020-05-17T19:31:19Z",
  "validBeforeTime": "2021-05-17T19:31:19Z",
  "keyAlgorithm": "KEY_ALG_RSA_2048",
  "keyOrigin": "USER_PROVIDED",
  "keyType": "USER_MANAGED"
}

Inhabilita las cargas de claves públicas

Si quieres inhabilitar la capacidad de subir claves para el proyecto, consulta Restringe la carga de claves de cuentas de servicio.

¿Qué sigue?

Pruébalo tú mismo

Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.

Empezar gratis