En esta página, se explica cómo crear y eliminar claves de cuentas de servicio mediante la consola de Google Cloud, Google Cloud CLI, la API de Identity and Access Management o una de las bibliotecas cliente de Google Cloud.
Antes de comenzar
Enable the IAM API.
Configura la autenticación.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
C#
Para usar las muestras de .NET de esta página en un entorno de desarrollo local, instala e inicializa gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local en la documentación de autenticación de Google Cloud.
C++
Para usar las muestras de C++ de esta página en un entorno de desarrollo local, instala e inicializa gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local en la documentación de autenticación de Google Cloud.
Go
Para usar las muestras de Go de esta página en un entorno de desarrollo local, instala e inicializa gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local en la documentación de autenticación de Google Cloud.
Java
Para usar las muestras de Java de esta página en un entorno de desarrollo local, instala e inicializa gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local en la documentación de autenticación de Google Cloud.
Python
Para usar las muestras de Python de esta página en un entorno de desarrollo local, instala e inicializa gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local en la documentación de autenticación de Google Cloud.
REST
Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Si deseas obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud.
Comprende las credenciales de las cuentas de servicio.
Roles obligatorios
Para obtener los permisos que necesitas a fin de crear y eliminar 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 a proyectos, carpetas y organizaciones.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.
Según la configuración de la política de tu organización, es posible que también debas permitir que se creen claves de cuenta de servicio en tu proyecto antes de crear una clave.
Para obtener los permisos que necesitas para permitir que se creen claves de cuentas de servicio en un proyecto, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu organización:
-
Administrador de políticas de la organización (
roles/orgpolicy.policyAdmin
) -
Visualizador de la organización (
roles/resourcemanager.organizationViewer
) -
Administrador de etiquetas (
roles/resourcemanager.tagAdmin
)
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Estos roles predefinidos contienen los permisos necesarios para permitir que se creen claves de cuentas de servicio en un proyecto. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Los siguientes permisos son necesarios para permitir que se creen claves de cuenta de servicio en un proyecto:
-
orgpolicy.constraints.list
-
orgpolicy.customConstraints.create
-
orgpolicy.customConstraints.delete
-
orgpolicy.customConstraints.get
-
orgpolicy.customConstraints.list
-
orgpolicy.customConstraints.update
-
orgpolicy.policies.create
-
orgpolicy.policies.delete
-
orgpolicy.policies.list
-
orgpolicy.policies.update
-
orgpolicy.policy.get
-
orgpolicy.policy.set
-
resourcemanager.organizations.get
-
resourcemanager.projects.listTagBindings
-
resourcemanager.projects.listEffectiveTags
-
resourcemanager.tagKeys.get
-
resourcemanager.tagKeys.list
-
resourcemanager.tagValues.list
-
resourcemanager.tagValues.get
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Permite la creación de claves de cuentas de servicio
Antes de crear una clave de cuenta de servicio, asegúrate de que la restricción de la política de la organización
iam.disableServiceAccountKeyCreation
no se aplique a tu proyecto. Si se aplica esta restricción a tu proyecto, no podrás crear claves de cuenta de servicio en él.Recomendamos aplicar esta restricción para la mayoría de los proyectos y solo eximir a los proyectos que realmente requieran claves de cuenta de servicio. Para obtener más información sobre los métodos de autenticación alternativos, consulta Elige el método de autenticación adecuado para tu caso de uso.
Para eximir un proyecto de la restricción de la política de la organización
iam.disableServiceAccountKeyCreation
, pídele a un administrador de políticas de la organización que haga lo siguiente:-
A nivel de la organización, crea una clave y un valor de etiqueta que usarás para definir si un proyecto o carpeta debe estar exento de la política de la organización. Recomendamos crear una etiqueta con la clave
disableServiceAccountKeyCreation
y los valoresenforced
ynot_enforced
.Para aprender a crear claves y valores de etiqueta, consulta Crea y define una etiqueta nueva.
-
Adjunta la etiqueta
disableServiceAccountKeyCreation
a la organización y configúrala con el valorenforced
. Todos los proyectos o carpetas de la organización heredan este valor de etiqueta, a menos que se reemplace por un valor de etiqueta diferente.Para obtener información sobre cómo adjuntar etiquetas a los recursos, consulta Adjunta etiquetas a los recursos.
-
Para cada proyecto o carpeta que desees eximir de la política de la organización, adjunta la etiqueta
disableServiceAccountKeyCreation
y establece su valor ennot_enforced
. Configurar un valor de etiqueta para un proyecto o carpeta de esta manera anula el valor de la etiqueta heredado de la organización. -
Crea o actualiza la política de la organización que impide la creación de claves de cuentas de servicio para que no aplique la restricción para los recursos exentos. Esta política debe tener las siguientes reglas:
-
Configura la restricción
iam.disableServiceAccountKeyCreation
para que no se aplique en ningún recurso con la etiquetadisableServiceAccountKeyCreation: not_enforced
. La condición en esta regla debería verse de la siguiente manera:resource.matchTag(\"ORGANIZATION_ID/disableServiceAccountKeyCreation\", \"not_enforced\")
- Configura la restricción
iam.disableServiceAccountKeyCreation
para que se aplique en todos los demás recursos.
Para aprender a crear políticas de la organización con condiciones de etiquetas, consulta Configura una política de la organización con etiquetas.
-
Crea una clave de cuenta de servicio
Para usar una cuenta de servicio fuera de Google Cloud, como en otras plataformas o localmente, primero debes establecer la identidad de la cuenta de servicio. Los pares de claves públicas/privadas proporcionan una forma segura de lograr este objetivo. Cuando creas una clave de cuenta de servicio, la parte pública se almacena en Google Cloud, mientras que la parte privada solo está disponible para ti. Para obtener más información sobre los pares de claves públicas/privadas, consulta Claves de cuenta de servicio.
Puedes crear una clave de cuenta de servicio con la consola de Google Cloud, la CLI de gcloud, el método
serviceAccounts.keys.create()
o una de las bibliotecas cliente. Una cuenta de servicio puede tener hasta 10 claves.De forma predeterminada, las claves de las cuentas de servicio nunca se vencen. Puedes usar una restricción de políticas de la organización para especificar el período durante el cual una clave de cuenta de servicio es válida. Si deseas obtener más detalles, consulta Tiempos de vencimiento para las claves administradas por el usuario.
En los siguientes ejemplos,
SA_NAME
es el nombre de tu cuenta de servicio yPROJECT_ID
es el ID de tu proyecto de Google Cloud. Puedes recuperar la stringSA_NAME@PROJECT_ID.iam.gserviceaccount.com
desde la página Cuentas de servicio en la consola de Google Cloud.Console
- En la consola de Google Cloud, ve a la página Cuentas de servicio.
Los pasos restantes aparecen en la consola de Google Cloud.
- Selecciona un proyecto
- Haz clic en la dirección de correo electrónico de la cuenta de servicio para la que quieres crear una clave.
- Haz clic en la pestaña
Claves . - Haz clic en el menú desplegable Agregar clave y, luego, selecciona Crear clave nueva.
- Selecciona JSON como el tipo de clave y, luego, haz clic en Crear.
Si haces clic en Crear, se descargará un archivo de claves de cuenta de servicio. Después de descargar el archivo de claves, no puedes volver a descargarlo.
La clave descargada tiene el siguiente formato, en el que
PRIVATE_KEY
es la parte privada del par de claves pública/privada:{ "type": "service_account", "project_id": "PROJECT_ID", "private_key_id": "KEY_ID", "private_key": "-----BEGIN PRIVATE KEY-----\nPRIVATE_KEY\n-----END PRIVATE KEY-----\n", "client_email": "SERVICE_ACCOUNT_EMAIL", "client_id": "CLIENT_ID", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://accounts.google.com/o/oauth2/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL" }
Asegúrate de almacenar el archivo de claves de forma segura, ya que se puede usar para autenticarse como tu cuenta de servicio. Puedes mover y cambiar el nombre de este archivo como desees.
Puedes usar los archivos de claves de cuenta de servicio para autenticar una aplicación como una cuenta de servicio.
gcloud
Ejecuta el comando
gcloud iam service-accounts keys create
para crear claves de cuenta de servicio.Reemplaza los siguientes valores:
KEY_FILE
: La ruta a un archivo de salida nuevo para la clave privada, por ejemplo,~/sa-private-key.json
.SA_NAME
: El nombre de la cuenta de servicio para la que se creará una clave.PROJECT_ID
es el ID del proyecto de Google Cloud.
gcloud iam service-accounts keys create KEY_FILE \ --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com
Resultado:
created key [e44da1202f82f8f4bdd9d92bc412d1d8a837fa83] of type [json] as [/usr/home/username/KEY_FILE] for [SA_NAME@PROJECT_ID.iam.gserviceaccount.com]
El archivo de claves de la cuenta de servicio se descargará ahora en tu máquina. Después de descargar el archivo de claves, no puedes volver a descargarlo.
La clave descargada tiene el siguiente formato, en el que
PRIVATE_KEY
es la parte privada del par de claves pública/privada:{ "type": "service_account", "project_id": "PROJECT_ID", "private_key_id": "KEY_ID", "private_key": "-----BEGIN PRIVATE KEY-----\nPRIVATE_KEY\n-----END PRIVATE KEY-----\n", "client_email": "SERVICE_ACCOUNT_EMAIL", "client_id": "CLIENT_ID", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL" }
Asegúrate de almacenar el archivo de claves de forma segura, ya que se puede usar para autenticarse como tu cuenta de servicio. Puedes mover y cambiar el nombre de este archivo como desees.
Puedes usar los archivos de clave de cuenta de servicio para autenticar una aplicación como una cuenta de servicio.
C++
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM C++.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
C#
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM C#.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
Go
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Go.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
Java
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Java.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
Python
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Python.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
REST
Con el método
projects.serviceAccounts.keys.create
, se crea una clave para una 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, comomy-project
.SA_NAME
: Es el nombre de la cuenta de servicio para la que deseas crear una clave.KEY_ALGORITHM
: Opcional Es el algoritmo de clave que se usará para la clave. El valor predeterminado, que está sujeto a cambios, es una clave RSA de 2,048 bits. Para obtener una lista de todos los valores posibles, consulta la referencia deServiceAccountKeyAlgorithm
.
Método HTTP y URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys
Cuerpo JSON de la solicitud:
{ "keyAlgorithm": "KEY_ALGORITHM" }
Para enviar tu solicitud, expande una de estas opciones:
La respuesta contiene una clave para la cuenta de servicio. La clave que se muestra tiene el siguiente formato, en el que
ENCODED_PRIVATE_KEY
es la parte privada del par de clave pública/privada, codificada en base64.{ "name": "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL/keys/KEY_ID", "privateKeyType": "TYPE_GOOGLE_CREDENTIALS_FILE", "privateKeyData": "ENCODED_PRIVATE_KEY", "validAfterTime": "DATE", "validBeforeTime": "DATE", "keyAlgorithm": "KEY_ALG_RSA_2048" }
Si deseas crear un archivo de claves que puedas usar para autenticarte como la cuenta de servicio, decodifica los datos de claves privadas y guárdalos en un archivo:
Linux
Ejecuta el comando siguiente:
echo 'ENCODED_PRIVATE_KEY' | base64 --decode > PATH
Reemplaza
PATH
por la ruta de acceso del archivo en el que deseas guardar la clave. Usa la extensión de archivo.json
.macOS
Ejecuta el comando siguiente:
echo 'ENCODED_PRIVATE_KEY' | base64 --decode > PATH
Reemplaza
PATH
por la ruta de acceso del archivo en el que deseas guardar la clave. Usa la extensión de archivo.json
.PowerShell
Guarda los datos de clave privada codificada (
ENCODED_PRIVATE_KEY
) en un archivo.Usa
certutil
para decodificar el archivo:certutil -decode ENCODED_FILE DECODED_FILE
Reemplaza los siguientes valores:
ENCODED_FILE
: La ruta de acceso al archivo que contiene los datos de clave privada codificados.DECODED_FILE
: Es la ruta de acceso del archivo en el que deseas guardar la clave. Usa la extensión de archivo.json
.
Asegúrate de almacenar los datos de la clave de manera segura, ya que se pueden usar para autenticarse como tu cuenta de servicio.
Puedes usar los archivos de clave de cuenta de servicio para autenticar una aplicación como una cuenta de servicio.
Borra una clave de cuenta de servicio
Borrar una clave de cuenta de servicio te impide de manera permanente usar la clave para autenticarte con las API de Google.
No puedes recuperar una clave borrada. Antes de borrar una clave, te recomendamos que inhabilites la clave y, luego, esperes a estar seguro de que la clave ya no es necesaria. Luego, puedes borrar la clave.
Como práctica recomendada, rota las claves de tus cuentas de servicio con regularidad. Para obtener más información sobre la rotación de claves de cuentas de servicio, consulta Rotación de claves de cuentas de servicio.
Console
- En la consola de Google Cloud, ve a la página Cuentas de servicio.
Los pasos restantes aparecen en la consola de Google Cloud.
- Selecciona un proyecto
- En la página Cuentas de servicio, haz clic en la dirección de correo electrónico de la cuenta de servicio cuya clave deseas borrar.
- Haz clic en la pestaña Claves.
- En la lista de claves, haz clic en Borrar en cada clave que desees borrar.
gcloud
Ejecuta el comando
gcloud iam service-accounts keys delete
para borrar claves de cuenta de servicio.Reemplaza los siguientes valores:
KEY_ID
: El ID de la clave que se borrará. Para encontrar el ID de la clave, enumera todas las claves de la cuenta de servicio, identifica la clave que deseas borrar y, luego, copia su ID.SA_NAME
: El nombre de la cuenta de servicio a la que pertenece la clave.PROJECT_ID
: es el ID del proyecto de Google Cloud.
gcloud iam service-accounts keys delete KEY_ID \ --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com
Resultado:
Deleted key [KEY_ID] for service account [SA_NAME@PROJECT_ID.iam.gserviceaccount.com]
C++
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM C++.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
C#
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM C#.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
Go
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Go.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
Java
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Java.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
Python
Para obtener más obtener información sobre cómo instalar y usar la biblioteca cliente de IAM, consulta Bibliotecas cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API de IAM Python.
Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Antes de comenzar.
REST
Mediante el método
projects.serviceAccounts.keys.delete
, se borra una clave de 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, comomy-project
.SA_NAME
: Es el nombre de la cuenta de servicio cuya clave deseas borrar.KEY_ID
: Es el ID de la clave que deseas borrar. Para encontrar el ID de la clave, enumera todas las claves de la cuenta de servicio, identifica la clave que deseas borrar y, luego, copia su ID al final del camponame
. El ID único de la clave es todo lo que se encuentra después dekeys/
.
Método HTTP y URL:
DELETE https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys/KEY_ID
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ }
¿Qué sigue?
- Aprende a enumerar y obtener claves de cuenta de servicio.
- Obtén más información sobre cómo subir tus propias claves de cuenta de servicio públicas.
- Comprende las prácticas recomendadas para administrar claves de cuentas de servicio.
- Obtén información sobre las alternativas a las claves de cuenta de servicio para la autenticación.
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.
Comenzar gratisSalvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2024-11-21 (UTC)