Otorga y revoca roles de IAM

En esta página, se describe cómo otorgar roles de Identity and Access Management (IAM) a las principales en los 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 a través de la interfaz web de Secure Source Manager.

Después de otorgar un rol de Secure Source Manager al menos una vez con la herramienta de gcloud CLI, la interfaz web o la API de REST, el rol estará disponible para seleccionarlo en la consola de Google Cloud cuando otorgues acceso a nivel de proyecto. Sin embargo, las asignaciones de roles específicas a nivel de instancia y de repositorio (vinculaciones) no aparecen en la lista de principales en la página de IAM de la consola de Google Cloud a nivel de proyecto.

Roles obligatorios

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 Otorga acceso a la instancia a los usuarios.

Especifica las principales

Una principal representa una identidad que puede acceder a un recurso. Cada principal tiene su propio identificador. Los identificadores de principal 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, las principales se representan de manera diferente. Para obtener más información sobre cómo otorgar acceso a las principales que representan grupos de identidades, consulta Representa a los usuarios del grupo de personal en las políticas de IAM.

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

  gcloud 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 Workload Identity según los atributos de tu proveedor de identidad (IdP) o usar el lenguaje de expresión común (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.

Otorga o revoca roles de instancia

Para otorgar o revocar roles de instancia a las principales, usa la herramienta de gcloud CLI o la API de Secure Source Manager.

gcloud

  1. Para otorgar un rol a una principal en una instancia, ejecuta el siguiente comando:

    gcloud source-manager instances add-iam-policy-binding INSTANCE_ID \
        --project=PROJECT_ID \
        --region=REGION \
        --member=PRINCIPAL \
        --role=ROLE_NAME
    

    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 por 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.
    • PRINCIPAL por la principal a la que se le otorgará el rol. Por ejemplo, user:my-user@example.com
    • ROLE_NAME por el nombre del rol que se otorgará. Por ejemplo, roles/securesourcemanager.instanceOwner
  2. Para revocar un rol de una principal en una instancia, ejecuta el siguiente comando:

    gcloud source-manager instances remove-iam-policy-binding INSTANCE_ID \
        --project=PROJECT_ID \
        --region=REGION \
        --member=PRINCIPAL \
        --role=ROLE_NAME
    

    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 por la región en la que se encuentra la instancia.
    • PRINCIPAL por la principal a la que se le revocará el rol. Por ejemplo, user:my-user@example.com
    • ROLE_NAME por el nombre del rol que se revocará. Por ejemplo, roles/securesourcemanager.instanceOwner

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á las vinculaciones existentes o, si no hay ninguna, el valor etag similar al siguiente:

    {
        "etag": "BwUjHYKJUiQ="
    }
    
  2. De manera programática o con 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,user3@gmail.com y a la cuenta de servicio my-other-app@.

    {
    "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@"
            ]
        }
        ]
    }
    }
    
  3. Después de modificar la política de permisos para otorgar y revocar los roles elegidos, llama a instances.setIamPolicy() para realizar las actualizaciones.

    Usa el siguiente comando de 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.

Otorga o revoca roles del 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 los grupos, debes usar la API de Secure Source Manager.

Se debe otorgar un rol de instancia a los usuarios 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 de 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ú Asigna un rol, selecciona el rol que quieres 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á las vinculaciones existentes o, si no hay ninguna, el valor etag similar al siguiente:

{
    "etag": "BwUjHYKJUiQ="
}
  1. De manera programática o con 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, group1@gmail.com y a la cuenta de servicio my-other-app@.

    {
    "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@"
            ]
        }
        ]
    }
    }
    
  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?