Administra el acceso a las cuentas de servicio

En esta página, se describe cómo otorgar, cambiar y revocar el acceso de un miembro a una sola cuenta de servicio. Para administrar el acceso de un miembro a todas las cuentas de servicio de un proyecto, una carpeta o una organización, administra su acceso a nivel de proyecto, organización o carpeta.

En la administración de identidades y accesos (IAM), el acceso se administra a través de las políticas de IAM. Una política de IAM se vincula a un recurso de Google Cloud. Cada política contiene una colección de vinculaciones de funciones que asocian uno o más miembros, como usuarios o cuentas de servicio, con una función de IAM. Estas vinculaciones de funciones otorgan las funciones especificadas a los miembros, tanto en el recurso al que se adjunta la política como en todos los descendientes de ese recurso. Para obtener más información sobre las políticas de IAM, consulta la sección Comprende las políticas.

Las cuentas de servicio son recursos a los que otros miembros pueden tener acceso y miembros a los que se les puede otorgar acceso a otros recursos. En esta página, las cuentas de servicio se tratan como recursos y se describe cómo otorgar acceso a otros miembros. Para obtener información sobre cómo otorgar a una cuenta de servicio acceso a otros recursos, sigue estas guías:

En esta página, se describe cómo administrar el acceso a las cuentas de servicio con Google Cloud Console, la herramienta de línea de comandos de gcloud y la API de REST. También puedes administrar el acceso mediante las bibliotecas cliente de IAM.

Antes de comenzar

Obtén más información sobre las cuentas de servicio.

Permisos necesarios

Para administrar el acceso a una cuenta de servicio, necesitas una función que incluya los siguientes permisos:

  • iam.serviceAccounts.get
  • iam.serviceAccounts.list
  • iam.serviceAccounts.getIamPolicy
  • iam.serviceAccounts.setIamPolicy

Para obtener estos permisos y seguir el principio de privilegio mínimo, pídele a tu administrador que te otorgue una de las siguientes funciones:

  • Administrador de cuenta de servicio (roles/iam.serviceAccountAdmin)
  • Administrador de seguridad (roles/iam.securityAdmin)

Como alternativa, el administrador puede otorgarte una función diferente con los permisos necesarios, como una función personalizada o una función predefinida con más permisos.

Visualiza el acceso actual

En la siguiente sección, se muestra cómo usar Cloud Console, la herramienta de gcloud y la API de REST para ver quién tiene acceso a una cuenta de servicio. También puedes ver el acceso mediante las bibliotecas cliente de IAM para obtener la política de IAM de la cuenta de servicio.

Console

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

    Ir a Cuentas de servicio

  2. Selecciona un proyecto

  3. Haz clic en la dirección de correo electrónico de la cuenta de servicio.

  4. Ve a la pestaña Permisos. En la sección Miembros con acceso a esta cuenta de servicio, se enumeran todos los miembros a los que se les otorgó una función en la cuenta de servicio.

    En esta lista, se incluyen los miembros cuyo acceso proviene de funciones que se otorgan en recursos superiores. Para obtener más información sobre la herencia de políticas, consulta Herencia de políticas y la jerarquía de recursos.

  5. Para ver las asignaciones de funciones para las cuentas de servicio administradas por Google, selecciona la casilla de verificación Incluir asignaciones de funciones proporcionadas por Google (opcional).

gcloud

Para ver quién tiene acceso a tu cuenta de servicio, obtén la política de IAM para la cuenta de servicio. Para aprender a interpretar las políticas de IAM, consulta Comprende las políticas.

A fin de obtener la política de IAM para la cuenta de servicio, ejecuta el comando get-iam-policy de la cuenta de servicio:

gcloud iam service-accounts get-iam-policy SA_ID --format=FORMAT > PATH

Ingresa los siguientes valores:

  • SA_ID: El ID de la cuenta de servicio. Puede ser la dirección de correo electrónico de la cuenta de servicio en el formulario.
  • FORMAT: El formato deseado para la política Usa json o yaml
  • PATH: Es la ruta a un nuevo archivo de salida de la política.

Por ejemplo, con el siguiente comando, se obtiene la política para la cuenta de servicio my-service-account y se guarda en tu directorio principal en formato JSON:

gcloud iam service-accounts get-iam-policy my-service-account --format json > ~/policy.json

REST

Para ver quién tiene acceso a tu cuenta de servicio, obtén la política de IAM para la cuenta de servicio. Para aprender a interpretar las políticas de IAM, consulta Comprende las políticas.

El método serviceAccounts.getIamPolicy obtiene la política de IAM de 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, como my-project.
  • SA_ID: El ID de la cuenta de servicio. Puede ser la dirección de correo electrónico de la cuenta de servicio con el formato SA_NAME@PROJECT_ID.iam.gserviceaccount.com o el ID numérico único de la cuenta de servicio.

  • POLICY_VERSION: Es la versión de la política que se mostrará. Las solicitudes deben especificar la versión de política más reciente, que es la versión de política 3. Consulta Especifica una versión de política cuando obtienes una política para obtener más detalles.

Método HTTP y URL:

POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_ID:getIamPolicy

Cuerpo JSON de la solicitud:

{
  "options": {
    "requestedPolicyVersion": POLICY_VERSION
  }
}

Para enviar tu solicitud, expande una de estas opciones:

La respuesta contiene la política de IAM de la cuenta de servicio. Por ejemplo:

{
  "version": 1,
  "etag": "BwWKmjvelug=",
  "bindings": [
    {
      "role": "roles/serviceAccountAdmin",
      "members": [
        "user:admin@example.com"
      ]
    }
  ]
}

Otorga o revoca una sola función

Puedes usar Cloud Console y la herramienta de gcloud a fin de otorgar o revocar con rapidez una sola función para un solo miembro, sin editar directamente la política de IAM de la cuenta de servicio. Los tipos de miembros comunes incluyen Cuentas de Google, cuentas de servicio, Grupos de Google y dominios. Para ver una lista de todos los tipos de miembros, consulta Conceptos relacionados con la identidad.

Otorga una sola función

Para otorgar una función única a un miembro, haz lo siguiente:

Console

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

    Ir a Cuentas de servicio

  2. Selecciona un proyecto

  3. Haz clic en la dirección de correo electrónico de la cuenta de servicio.

  4. Ve a la pestaña Permisos y busca la sección Miembros con acceso a esta cuenta de servicio.

  5. Selecciona un miembro para otorgarle una función:

    • Para otorgar una función a un miembro existente, busca la fila que contiene la dirección de correo electrónico del miembro y, luego, haz clic en Editar miembro. En esa fila, luego, haz clic en Agregar otra función.

      Si deseas otorgar una función a una cuenta de servicio administrada por Google, debes seleccionar la casilla de verificación Incluir asignaciones de funciones proporcionadas por Google para ver su correo electrónico.

    • Para otorgar una función a un nuevo miembro, haz clic en Otorgar acceso y, luego, ingresa la dirección de correo electrónico del miembro.

  6. Selecciona una función para otorgar de la lista desplegable. Para las prácticas recomendadas de seguridad, elige una función que incluya solo los permisos que necesita tu miembro.

  7. Agrega una condición a la función (opcional).

  8. Haz clic en Guardar. Al miembro se le otorga la función en la cuenta de servicio.

gcloud

Para otorgarle una función a un miembro con rapidez, ejecuta el comando add-iam-policy-binding:

gcloud iam service-accounts add-iam-policy-binding SA_ID \
    --member=MEMBER --role=ROLE_ID \
    --condition=CONDITION

Ingresa los siguientes valores:

  • SA_ID: El ID de la cuenta de servicio. Puede ser la dirección de correo electrónico de la cuenta de servicio con el formato SA_NAME@PROJECT_ID.iam.gserviceaccount.com o el ID numérico único de la cuenta de servicio.

  • MEMBER: Es un identificador para el miembro, que tiene el formato MEMBER-TYPE:ID. Por ejemplo, user:my-user@example.com. Si deseas obtener una lista completa de los valores que MEMBER puede tener, consulta la referencia sobre la vinculación de políticas.

    Para el tipo de miembro user, el nombre de dominio en el identificador debe ser un dominio de lugar Google Workspace o de Cloud Identity. Para obtener información sobre cómo configurar un dominio de Cloud Identity, consulta la descripción general de Cloud Identity.

  • ROLE_ID: El nombre de la función que deseas otorgar Por ejemplo, roles/iam.serviceAccountUser Para obtener una lista de las funciones, consulta Comprende las funciones.

  • CONDITION: Opcional La condición que se agregará a la vinculación de función. Para obtener más información sobre las condiciones, consulta la descripción general de las condiciones.

Por ejemplo, a fin de otorgar la función de usuario de cuenta de servicio al usuario my-user@example.com para la cuenta de servicio my-service-account@my-project.iam.gserviceaccount.com, ejecuta el siguiente comando:

gcloud iam service-accounts add-iam-policy-binding my-service-account@my-project.iam.gserviceaccount.com \
    --member=user:my-user@example.com --role=roles/iam.serviceAccountUser

Revoca una sola función

Para revocar una sola función de un miembro, haz lo siguiente:

Console

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

    Ir a Cuentas de servicio

  2. Selecciona un proyecto

  3. Haz clic en la dirección de correo electrónico de la cuenta de servicio.

  4. Ve a la pestaña Permisos y busca la sección Miembros con acceso a esta cuenta de servicio.

  5. Busca la fila con la dirección de correo electrónico del miembro cuyo acceso deseas revocar. Luego, haz clic en Editar miembro en esa fila.

  6. Haz clic en el botón Borrar para cada función que desees revocar y, luego, haz clic en Guardar.

gcloud

Para revocar una función de un usuario, ejecuta el comando remove-iam-policy-binding:

gcloud iam service-accounts remove-iam-policy-binding SA_ID \
    --member=MEMBER --role=ROLE_ID

Ingresa los siguientes valores:

  • SA_ID: El ID de la cuenta de servicio. Puede ser la dirección de correo electrónico de la cuenta de servicio con el formato SA_NAME@PROJECT_ID.iam.gserviceaccount.com o el ID numérico único de la cuenta de servicio.

  • MEMBER: Es un identificador para el miembro, que tiene el formato MEMBER-TYPE:ID. Por ejemplo, user:my-user@example.com. Si deseas obtener una lista completa de los valores que MEMBER puede tener, consulta la referencia sobre la vinculación de políticas.

    Para el tipo de miembro user, el nombre de dominio en el identificador debe ser un dominio de lugar Google Workspace o de Cloud Identity. Para obtener información sobre cómo configurar un dominio de Cloud Identity, consulta la descripción general de Cloud Identity.

  • ROLE_ID: El nombre de la función que deseas revocar. Por ejemplo, roles/iam.serviceAccountUser Para obtener una lista de las funciones, consulta Comprende las funciones.

Por ejemplo, a fin de revocar la función de usuario de la cuenta de servicio del usuario my-user@example.com en la cuenta de servicio my-service-account@my-project.iam.gserviceaccount.com, usa este comando:

gcloud iam service-accounts remove-iam-policy-binding my-service-account@my-project.iam.gserviceaccount.com \
    --member=user:my-user@example.com --role=roles/iam.serviceAccountUser

Otorga o revoca varias funciones

Para realizar cambios de acceso a gran escala que impliquen otorgar y revocar varias funciones, usa el patrón lectura-modificación-escritura a fin de actualizar la política de IAM de la cuenta de servicio:

  1. Lectura de la política actual mediante una llamada a getIamPolicy()
  2. Edición de la política mostrada, ya sea mediante el uso de un editor de texto o de manera programática, para agregar o quitar miembros o vinculaciones de funciones
  3. Escritura de la política actualizada mediante una llamada a setIamPolicy()

En esta sección, se muestra cómo usar la herramienta de gcloud y la API de REST para actualizar la política. También puedes actualizar la política mediante las bibliotecas cliente de IAM.

Obtén la política actual

gcloud

A fin de obtener la política de IAM para la cuenta de servicio, ejecuta el comando get-iam-policy de la cuenta de servicio:

gcloud iam service-accounts get-iam-policy SA_ID --format=FORMAT > PATH

Ingresa los siguientes valores:

  • SA_ID: El ID de la cuenta de servicio. Puede ser la dirección de correo electrónico de la cuenta de servicio en el formulario.
  • FORMAT: El formato deseado para la política Usa json o yaml
  • PATH: Es la ruta a un nuevo archivo de salida de la política.

Por ejemplo, con el siguiente comando, se obtiene la política para la cuenta de servicio my-service-account y se guarda en tu directorio principal en formato JSON:

gcloud iam service-accounts get-iam-policy my-service-account --format json > ~/policy.json

REST

El método serviceAccounts.getIamPolicy obtiene la política de IAM de 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, como my-project.
  • SA_ID: El ID de la cuenta de servicio. Puede ser la dirección de correo electrónico de la cuenta de servicio con el formato SA_NAME@PROJECT_ID.iam.gserviceaccount.com o el ID numérico único de la cuenta de servicio.

  • POLICY_VERSION: Es la versión de la política que se mostrará. Las solicitudes deben especificar la versión de política más reciente, que es la versión de política 3. Consulta Especifica una versión de política cuando obtienes una política para obtener más detalles.

Método HTTP y URL:

POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_ID:getIamPolicy

Cuerpo JSON de la solicitud:

{
  "options": {
    "requestedPolicyVersion": POLICY_VERSION
  }
}

Para enviar tu solicitud, expande una de estas opciones:

La respuesta contiene la política de IAM de la cuenta de servicio. Por ejemplo:

{
  "version": 1,
  "etag": "BwWKmjvelug=",
  "bindings": [
    {
      "role": "roles/serviceAccountAdmin",
      "members": [
        "user:admin@example.com"
      ]
    }
  ]
}

Guarda la respuesta en un archivo del tipo adecuado (json o yaml).

Modifica la política

De manera programática o mediante un editor de texto, modifica la copia local de la política de la cuenta de servicio para que refleje las funciones que deseas otorgar o revocar a determinados usuarios.

Para asegurarte de no reemplazar otros cambios de política, no edites ni quites el campo etag de la política. El campo etag identifica el estado actual de la política. Cuando configuras la política actualizada, IAM compara el valor de etag en la solicitud con el etag existente y solo escribe la política si los valores coinciden.

Otorga una función

Para otorgar funciones a los miembros, modifica las vinculaciones de funciones en la política. Para obtener información sobre qué funciones puedes otorgar, consulta Comprende las funciones o Visualiza las funciones otorgables para la cuenta de servicio.

Para otorgar una función que ya está incluida en la política, agrega el miembro a una vinculación de función existente:

gcloud

Para editar la política que se muestra, agrega el miembro a una vinculación de función existente. Ten en cuenta que este cambio en la política se implementará una vez que hayas establecido la política actualizada.

Por ejemplo, imagina que la política que se muestra contiene la siguiente vinculación de función, que otorga la función de usuario de cuenta de servicio (roles/iam.serviceAccountUser) a kai@example.com:

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com"
  ]
}

Para otorgar esa misma función a raha@example.com, agrega raha@example.com a la vinculación de función existente:

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com",
    "user:raha@example.com"
  ]
}

REST

Para editar la política que se muestra, agrega el miembro a una vinculación de función existente. Ten en cuenta que este cambio en la política se implementará una vez que hayas establecido la política actualizada.

Por ejemplo, imagina que la política que se muestra contiene la siguiente vinculación de función, que otorga la función de usuario de cuenta de servicio (roles/iam.serviceAccountUser) a kai@example.com:

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com"
  ]
}

Para otorgar esa misma función a raha@example.com, agrega raha@example.com a la vinculación de función existente:

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com",
    "user:raha@example.com"
  ]
}

Para otorgar una función que aún no está incluida en la política, agrega una nueva vinculación de función:

gcloud

Edita la política mostrada mediante la adición de una nueva vinculación de función que otorga la función al miembro. Este cambio en la política se implementará una vez que hayas establecido la política actualizada.

Por ejemplo, para otorgar la función de creador de tokens de la cuenta de servicio (roles/iam.serviceAccountTokenCreator) a raha@example.com, agrega la siguiente vinculación de función al array bindings de la política:

{
  "role": "roles/iam.serviceAccountTokenCreator",
  "members": [
    "user:raha@example.com"
  ]
}

REST

Edita la política mostrada mediante la adición de una nueva vinculación de función que otorga la función al miembro. Este cambio en la política se implementará una vez que hayas establecido la política actualizada.

Por ejemplo, para otorgar la función de creador de tokens de la cuenta de servicio (roles/iam.serviceAccountTokenCreator) a raha@example.com, agrega la siguiente vinculación de función al array bindings de la política:

{
  "role": "roles/iam.serviceAccountTokenCreator",
  "members": [
    "user:raha@example.com"
  ]
}

Revoca una función

Para revocar una función, quita al miembro de la vinculación de función. Si el miembro es el único miembro en la vinculación de función, quita toda la vinculación de función de la política.

gcloud

Quita el miembro o la vinculación de toda la función para editar la política que se muestra. Este cambio en la política se implementará una vez que hayas establecido la política actualizada.

Por ejemplo, imagina que la política que se muestra contiene la siguiente vinculación de función, que otorga a kai@example.com y raha@example.com la función de usuario de cuenta de servicio (roles/iam.serviceAccountUser):

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com",
    "user:raha@example.com"
  ]
}

Para revocar la función de kai@example.com, quita kai@example.com de la vinculación de la función:

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:raha@example.com"
  ]
}

Para revocar la función de kai@example.com y raha@example.com, quita la vinculación de función de la política.

REST

Quita el miembro o la vinculación de toda la función para editar la política que se muestra. Este cambio en la política se implementará una vez que hayas establecido la política actualizada.

Por ejemplo, imagina que la política que se muestra contiene la siguiente vinculación de función, que otorga a kai@example.com y raha@example.com la función de usuario de cuenta de servicio (roles/iam.serviceAccountUser):

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com",
    "user:raha@example.com"
  ]
}

Para revocar la función de kai@example.com, quita kai@example.com de la vinculación de la función:

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:raha@example.com"
  ]
}

Para revocar la función de kai@example.com y raha@example.com, quita la vinculación de función de la política.

Establece la política.

Después de modificar la política para otorgar y revocar las funciones deseadas, llama a setIamPolicy() a fin de realizar las actualizaciones.

gcloud

A fin de establecer la política de IAM para el recurso, ejecuta el comando set-iam-policy de la cuenta de servicio:

gcloud iam service-accounts set-iam-policy SA_ID PATH

Ingresa los siguientes valores:

  • SA_ID: El ID de la cuenta de servicio. Puede ser la dirección de correo electrónico de la cuenta de servicio con el formato SA_NAME@PROJECT_ID.iam.gserviceaccount.com o el ID numérico único de la cuenta de servicio.

  • PATH: Es la ruta a un archivo que contiene la política nueva.

La respuesta contiene la política actualizada.

Por ejemplo, con el siguiente comando, se establece la política almacenada en policy.json como la política para la cuenta de servicio my-service-account@my- project.iam.gserviceaccount.com:

gcloud iam service-accounts set-iam-policy my-service-account@my-project.iam.gserviceaccount.com \
    ~/policy.json

REST

Mediante el método serviceAccounts.setIamPolicy, se configura una política de IAM actualizada para 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_ID: El ID de la cuenta de servicio. Puede ser la dirección de correo electrónico de la cuenta de servicio con el formato SA_NAME@PROJECT_ID.iam.gserviceaccount.com o el ID numérico único de la cuenta de servicio.

  • POLICY: Es una representación JSON de la política que deseas establecer. Para obtener más información sobre el formato de una política, consulta Referencia de políticas.

    Por ejemplo, para establecer la política que se muestra en el paso anterior, reemplaza policy por lo siguiente:

    {
      "version": 1,
      "etag": "BwUqLaVeua8=",
      "bindings": [
        {
          "role": "roles/iam.serviceAccountUser",
          "members": [
            "user:robin@example.com"
          ]
        },
        {
          "role": "roles/serviceAccountAdmin",
          "members": [
            "user:admin@example.com"
          ]
        }
      ]
    }
    

Método HTTP y URL:

POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_ID:setIamPolicy

Cuerpo JSON de la solicitud:

{
  "policy": POLICY
}

Para enviar tu solicitud, expande una de estas opciones:

La respuesta contiene la política actualizada.

¿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.

Comenzar gratis