Otorga y revoca roles de IAM

En esta página, se describe cómo otorgar roles de Identity and Access Management (IAM) a principales en recursos de Secure Source Manager. Para obtener información sobre cómo otorgar roles en otros recursos de Google Cloud , consulta Administra el acceso a proyectos, carpetas y organizaciones.

Las instancias y los repositorios de Secure Source Manager tienen sus propios roles. La primera vez que otorgues roles de instancia en un proyecto, debes usar la herramienta de gcloud CLI o la API de REST. Puedes otorgar roles de repositorio con la herramienta de gcloud CLI, la API de REST o la interfaz web de Secure Source Manager.

Después de otorgar un rol de Secure Source Manager con gcloud CLI, la interfaz web o la API de REST, el rol estará visible para tu proyecto en la consola de Google Cloud .

Roles requeridos

Para obtener los permisos que necesitas para actualizar la política de IAM en una instancia o un repositorio, pídele a tu administrador que te otorgue los siguientes roles de IAM:

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 a través de roles personalizados o cualquier otro rol predefinido.

Para obtener información sobre cómo otorgar roles de Secure Source Manager, consulta Control de acceso con IAM y Cómo otorgar acceso a la instancia a los usuarios.

Especifica principales

Un principal representa una identidad que puede acceder a un recurso. Cada principal tiene su propio identificador. Los identificadores principales tienen el siguiente formato:

PRINCIPAL-TYPE:ID

Por ejemplo, user:my-user@example.com. Para obtener más información sobre las principales, consulta Cómo funciona IAM.

Para el tipo de principal user, el nombre de dominio en el identificador debe ser un dominio de Google Workspace o de Cloud Identity, a menos que uses la federación de identidades de personal. Para obtener información sobre cómo configurar un dominio de Cloud Identity, consulta la descripción general de Cloud Identity.

Principales de la federación de identidades de personal

Si usas la federación de identidades de personal para acceder a Secure Source Manager, los principales se representan de manera diferente. Para obtener más información sobre cómo otorgar acceso a principales que representan grupos de identidades, consulta Representa a los usuarios del grupo de personal en políticas de IAM.

Por ejemplo, el siguiente comando otorga al usuario user@example.com el rol de Instance Accessor (roles/securesourcemanager.instanceAccessor) en el grupo de personal my-pool en la instancia my-instance del proyecto my-project en la región us-central1:

  gcloud beta source-manager instances add-iam-policy-binding my-instance \
      --project=my-project \
      --region=us-central1 \
      --member=principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com \
      --role=roles/securesourcemanager.instanceAccessor

Puedes otorgar acceso a usuarios o grupos dentro de tu grupo de identidades para cargas de trabajo según los atributos de tu proveedor de identidad (IdP), o bien usar el lenguaje de expresiones comunes (CEL) para asignar tus atributos de OIDC a atributos personalizados y definir una estrategia de autorización en tu política de IAM. Para obtener más información sobre las asignaciones de atributos, consulta Asignaciones de atributos.

Cómo otorgar o revocar roles de instancia

Para otorgar o revocar roles de instancia, usa el patrón lectura-modificación-escritura para actualizar la política de permisos del recurso:

  1. Para leer la política de permisos actual, llama a getIamPolicy().
  2. Edita la política de permisos, ya sea mediante el uso de un editor de texto o de manera programática, para agregar o quitar vinculaciones de roles o principales.
  3. Para escribir la política de permisos actualizada, llama a setIamPolicy().

gcloud

  1. Para leer la política de permisos actual y guardarla en /tmp/instances.json, ejecuta el siguiente comando:

    gcloud beta source-manager instances get-iam-policy INSTANCE_ID \
        --project=PROJECT_ID \
        --region=REGION \
        --format=json > /tmp/instance.json
    

    Reemplaza lo siguiente:

    • INSTANCE_ID por el ID de la instancia.
    • PROJECT_ID por el ID del proyecto o el número del proyecto de la instancia.
    • REGION con la región en la que se encuentra la instancia. Consulta la documentación de ubicaciones para conocer las regiones disponibles de Secure Source Manager.

    El resultado incluirá cualquier vinculación existente o, si no existe ninguna, el valor etag similar al siguiente:

    {
        "etag": "BwUjHYKJUiQ="
    }
    
  2. De manera programática o mediante un editor de texto, modifica la copia local de la política de permisos de tu instancia para que refleje los roles que deseas otorgar o revocar.

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

    Para editar los roles que otorga una política de permisos, debes editar las vinculaciones de roles en la política de permisos. Las vinculaciones de roles tienen el siguiente formato:

    {
      "role": "ROLE_NAME",
      "members": [
        "PRINCIPAL_1",
        "PRINCIPAL_2",
        ...
        "PRINCIPAL_N"
      ]
    }
    

    Los marcadores de posición tienen los siguientes valores:

    • ROLE_NAME: El nombre del rol que deseas otorgar. Usa el siguiente formato: roles/securesourcemanager.IDENTIFIER

    • PRINCIPAL_1, PRINCIPAL_2, ...PRINCIPAL_N: Son los identificadores de las principales a las que deseas otorgar el rol.

    Por ejemplo, la siguiente política otorga el rol instanceOwner a user1@gmail.com y el rol instanceManager a los usuarios user2@gmail.com y user3@gmail.com, y a la cuenta de servicio my-other-app@appspot.gserviceaccount.com.

    {
        "etag": "BwUjHYKJUiQ=",
        "bindings": [
        {
            "role": "roles/securesourcemanager.instanceOwner",
            "members": [
                "user:user1@gmail.com"
            ]
        },
        {
            "role": "roles/resourcemanager.instanceManager",
            "members": [
                "user:user2@gmail.com",
                "user:user3@gmail.com",
                "serviceAccount:my-other-app@appspot.gserviceaccount.com"
            ]
        }
        ]
    }
    
  3. Después de modificar la política de permisos guardada para otorgar y revocar los roles seleccionados, actualiza la política de permisos de tu instancia ejecutando el siguiente comando:

    gcloud beta source-manager instances set-iam-policy INSTANCE_ID  \
        --project=PROJECT_ID \
        --region=REGION \
        /tmp/instance.json
    

    Reemplaza lo siguiente:

    • INSTANCE_ID por el ID de la instancia.
    • PROJECT_ID con el ID del proyecto o el número del proyecto de la instancia.
    • REGION con la región en la que se encuentra la instancia. Consulta la documentación de ubicaciones para conocer las regiones disponibles de Secure Source Manager.

API

  1. Ejecuta el siguiente comando instances.getIamPolicy para leer la política actual:

    curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/instances/INSTANCE_ID:getIamPolicy > /tmp/instance.json
    

    Reemplaza lo siguiente:

    • PROJECT_ID es el ID del proyecto o el número del proyecto de la instancia.
    • REGION es la región en la que se encuentra la instancia. Consulta la documentación de ubicaciones para conocer las regiones disponibles de Secure Source Manager.
    • INSTANCE_ID es el ID de la instancia.

    El resultado incluirá cualquier vinculación existente o, si no existe ninguna, el valor etag similar al siguiente:

    {
        "etag": "BwUjHYKJUiQ="
    }
    
  2. De manera programática o mediante un editor de texto, modifica la copia local de la política de permisos de tu instancia para que refleje los roles que deseas otorgar o revocar.

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

    Para editar los roles que otorga una política de permisos, debes editar las vinculaciones de roles en la política de permisos. Las vinculaciones de roles tienen el siguiente formato:

    {
      "role": "ROLE_NAME",
      "members": [
        "PRINCIPAL_1",
        "PRINCIPAL_2",
        ...
        "PRINCIPAL_N"
      ]
    }
    

    Los marcadores de posición tienen los siguientes valores:

    • ROLE_NAME: El nombre del rol que deseas otorgar. Usa el siguiente formato: roles/securesourcemanager.IDENTIFIER

    • PRINCIPAL_1, PRINCIPAL_2, ...PRINCIPAL_N: Los identificadores de las principales a las que deseas otorgar los roles.

    Por ejemplo, la siguiente política otorga el rol instanceOwner a user1@gmail.com y el rol instanceManager a los usuarios user2@gmail.com y user3@gmail.com, y a la cuenta de servicio my-other-app@appspot.gserviceaccount.com.

    {
    "policy": {
        "etag": "BwUjHYKJUiQ=",
        "bindings": [
        {
            "role": "roles/securesourcemanager.instanceOwner",
            "members": [
                "user:user1@gmail.com"
            ]
        },
        {
            "role": "roles/resourcemanager.instanceManager",
            "members": [
                "user:user2@gmail.com",
                "user:user3@gmail.com",
                "serviceAccount:my-other-app@appspot.gserviceaccount.com"
            ]
        }
        ]
    }
    }
    
  3. Después de modificar la política de permisos para otorgar y revocar los roles elegidos, llama a instances.setIamPolicy() con el fin de realizar las actualizaciones.

    Usa el siguiente comando instances.setIamPolicy para establecer la política nueva en la instancia.

    curl \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/instances/INSTANCE_ID:setIamPolicy \
        -d @/tmp/instance.json
    

    Reemplaza lo siguiente:

    • PROJECT_ID es el ID del proyecto o el número del proyecto de la instancia.
    • REGION es la región en la que se encuentra la instancia. Consulta la documentación de ubicaciones para conocer las regiones disponibles de Secure Source Manager.
    • INSTANCE_ID es el ID de la instancia.

Cómo otorgar o revocar roles de repositorio

Para otorgar o revocar roles de repositorio a usuarios y cuentas de servicio, puedes asignarlos desde la interfaz web de Secure Source Manager o usar la API de Secure Source Manager para actualizar la política de permisos del repositorio. Para otorgar roles de repositorio a grupos, debes usar la API de Secure Source Manager.

A los usuarios se les debe otorgar un rol de instancia antes de que se les puedan otorgar roles de repositorio. Para obtener información sobre cómo otorgar roles de instancia, consulta Otorga o revoca roles de instancia.

Interfaz web

Para otorgar roles a nivel del repositorio a usuarios o cuentas de servicio con la interfaz web, sigue estos pasos:

  1. Navega a la URL de la instancia que te proporcionó tu contacto de Google.
  2. En la página Mis repositorios, selecciona tu repositorio.
  3. Haz clic en la pestaña Permisos.
  4. En la sección Personas y permisos, haz clic en Agregar usuarios.
  5. En el campo Agregar principal, ingresa el correo electrónico del usuario o la cuenta de servicio a la que deseas otorgarle el rol.
  6. En el menú Asignar un rol, selecciona el rol que deseas asignar.
  7. Haz clic en Guardar.

Para agregar roles adicionales, haz clic en el ícono de editar Editar y agrega los roles con el menú Asignar un rol.

API

El método repositories.getIamPolicy de la API de Secure Source Manager obtiene la política de permisos de un repositorio.

  1. Ejecuta el siguiente comando repositories.getIamPolicy para leer la política actual y guardarla en /tmp/repository.json:
curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://securesourcemanager.googleapis.com/v1/projects/REPOSITORY_PROJECT/locations/REGION/repositories/REPOSITORY_ID:getIamPolicy > /tmp/repository.json

Reemplaza lo siguiente:

  • REPOSITORY_PROJECT es el ID del proyecto o el número del proyecto del repositorio.
  • REGION es la región en la que se encuentra el repositorio.
  • REPOSITORY_ID es el ID del repositorio.

El resultado incluirá cualquier vinculación existente o, si no existe ninguna, el valor etag similar al siguiente:

{
    "etag": "BwUjHYKJUiQ="
}
  1. De manera programática o mediante un editor de texto, modifica la copia local de la política de permisos de tu repositorio guardada en /tmp/repository.json para que refleje los roles que deseas otorgar o revocar.

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

    Para editar los roles que otorga una política de permisos, debes editar las vinculaciones de roles en la política de permisos. Las vinculaciones de roles tienen el siguiente formato:

    {
      "role": "ROLE_NAME",
      "members": [
        "PRINCIPAL_1",
        "PRINCIPAL_2",
        ...
        "PRINCIPAL_N"
      ]
    }
    

    Los marcadores de posición tienen los siguientes valores:

    • ROLE_NAME: El nombre del rol que deseas otorgar. Usa el siguiente formato: roles/securesourcemanager.<var>IDENTIFIER</var>

    • PRINCIPAL_1, PRINCIPAL_2, ...PRINCIPAL_N: Los identificadores de las principales a las que deseas otorgar los roles.

    En el siguiente ejemplo, se otorga el rol repoAdmin al usuario email1@gmail.com y el rol repoWriter a los usuarios email2@gmail.com y group1@gmail.com, y a la cuenta de servicio my-other-app@appspot.gserviceaccount.com.

    {
    "policy": {
        "etag": "BwUjHYKJUiQ=",
        "bindings": [
        {
            "role": "roles/securesourcemanager.repoAdmin",
            "members": [
                "user:email1@gmail.com"
            ]
        },
        {
            "role": "roles/resourcemanager.repoWriter",
            "members": [
                "user:email2@gmail.com",
                "group:group1@gmail.com",
                "serviceAccount:my-other-app@appspot.gserviceaccount.com"
            ]
        }
        ]
    }
    }
    
  2. Guarda el archivo /tmp/repository.json editado.

  3. Establece la política nueva con el comando setIamPolicy:

    curl \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        https://securesourcemanager.googleapis.com/v1/projects/REPOSITORY_PROJECT/locations/REGION/repositories/REPOSITORY_ID:setIamPolicy \
        -d @/tmp/repository.json
    

    Reemplaza lo siguiente:

    • REPOSITORY_PROJECT es el ID del proyecto o el número del proyecto del repositorio.
    • REGION es la región en la que se encuentra el repositorio. Consulta la documentación de ubicaciones para conocer las regiones disponibles de Secure Source Manager.
    • REPOSITORY_ID es el ID del repositorio.

¿Qué sigue?