Asignar y revocar roles de gestión de identidades y accesos

En esta página se describe cómo asignar roles de Gestión de Identidades y Accesos (IAM) a principales en recursos de Secure Source Manager. Para obtener información sobre cómo conceder roles en otros Google Cloud recursos, consulta el artículo 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 asignes roles de instancia en un proyecto, debes usar la herramienta de la CLI de gcloud o la API REST. Puedes asignar roles de repositorio con la herramienta de línea de comandos gcloud, la API REST o la interfaz web de Secure Source Manager.

Una vez que hayas asignado un rol de Secure Source Manager mediante la CLI de gcloud, la interfaz web o la API REST, el rol estará visible en la consola de tu proyecto. Google Cloud

Roles obligatorios

Para obtener los permisos que necesitas para actualizar la política de gestión de identidades y accesos de una instancia o un repositorio, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:

Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.

Para obtener información sobre cómo conceder roles de Secure Source Manager, consulta los artículos Control de acceso con gestión de identidades y accesos y Conceder acceso a instancias a los usuarios.

Especificar principales

Una entidad 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 entidades, consulta Cómo funciona IAM.

En el caso del tipo de principal user, el nombre de dominio del identificador debe ser un dominio de Google Workspace o de Cloud Identity, a menos que utilices la federación de identidades de la plantilla. Para saber cómo configurar un dominio de Cloud Identity, consulta la descripción general de Cloud Identity.

Principales de Workforce Identity Federation

Si usas Workforce Identity Federation para acceder a Secure Source Manager, los principales se representan de forma diferente. Para obtener más información sobre cómo conceder acceso a principales que representan grupos de identidades, consulta Representar usuarios de grupos de usuarios 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 trabajo my-pool de 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 conceder acceso a usuarios o grupos de tu grupo de identidades de la plantilla en función de los atributos de tu proveedor de identidades (IdP) o 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 gestión de identidades y accesos. Para obtener más información sobre las asignaciones de atributos, consulte el artículo Asignaciones de atributos.

Conceder o revocar roles de instancia

Para asignar o revocar roles de instancia, utiliza el patrón de lectura, modificación y escritura para actualizar la política de permiso del recurso:

  1. Lee la política de permiso actual llamando a getIamPolicy().
  2. Edita la política de permiso, ya sea mediante un editor de texto o de forma programática, para añadir o eliminar cualquier principal o enlace de rol.
  3. Escribe la política de permiso actualizada llamando 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
    

    Haz los cambios siguientes:

    • INSTANCE_ID con el ID de instancia.
    • PROJECT_ID con el ID 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 sobre ubicaciones para ver las regiones disponibles de Secure Source Manager.

    La salida incluirá los enlaces que ya existan o, si no hay ninguno, el valor etag, como en el siguiente ejemplo:

    {
        "etag": "BwUjHYKJUiQ="
    }
    
  2. Modifica la copia local de la política de permisos de tu instancia de forma programática o mediante un editor de texto para reflejar los roles que quieras otorgar o revocar.

    Para asegurarte de que no sobrescribes 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 permiso. Cuando defines la política de permiso actualizada, IAM compara el valor de etag de la solicitud con el valor de etag actual y solo escribe la política de permiso si los valores coinciden.

    Para editar los roles que concede una política de permiso, debes editar las vinculaciones de roles en la política de permiso. Las asignaciones 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 quieres conceder. Utiliza el siguiente formato: roles/securesourcemanager.IDENTIFIER

    • PRINCIPAL_1, PRINCIPAL_2: ...PRINCIPAL_N: identificadores de las entidades a las que quieres asignar el rol.

    Por ejemplo, la siguiente política asigna 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 conceder 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
    

    Haz los cambios siguientes:

    • INSTANCE_ID con el ID de instancia.
    • PROJECT_ID con el ID o el número de proyecto de la instancia.
    • REGION con la región en la que se encuentra la instancia. Consulta la documentación sobre ubicaciones para ver 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
    

    Haz los cambios siguientes:

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

    La salida incluirá los enlaces que ya existan o, si no hay ninguno, el valor etag, como en el siguiente ejemplo:

    {
        "etag": "BwUjHYKJUiQ="
    }
    
  2. Modifica la copia local de la política de permiso de tu instancia de forma programática o mediante un editor de texto para reflejar los roles que quieras otorgar o revocar.

    Para asegurarte de que no sobrescribes 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 permiso. Cuando define la política de permiso actualizada, IAM compara el valor de etag de la solicitud con el valor de etag que ya existe y solo escribe la política de permiso si los valores coinciden.

    Para editar los roles que concede una política de permiso, debes editar las vinculaciones de roles en la política de permiso. Las asignaciones 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 quieres conceder. Utiliza el siguiente formato: roles/securesourcemanager.IDENTIFIER

    • PRINCIPAL_1, PRINCIPAL_2, ...PRINCIPAL_N: identificadores de las entidades a las que quieres asignar el rol.

    Por ejemplo, la siguiente política asigna 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. Cuando hayas modificado la política de permiso para conceder y revocar los roles elegidos, llama a instances.setIamPolicy() para hacer las actualizaciones pertinentes.

    Usa el siguiente comando instances.setIamPolicy para definir la nueva política 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
    

    Haz los cambios siguientes:

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

Conceder o revocar roles de repositorio

Para conceder 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 asignar roles de repositorio a grupos, debes usar la API Secure Source Manager.

Los usuarios deben tener asignado un rol de instancia para que se les puedan asignar roles de repositorio. Para obtener información sobre cómo conceder roles de instancia, consulta Conceder o revocar roles de instancia.

Interfaz web

Para conceder roles a nivel de repositorio a usuarios o cuentas de servicio mediante la interfaz web, sigue estos pasos:

  1. Ve a la URL de la instancia que te haya proporcionado 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 Añadir usuarios.
  5. En el campo Añadir principal, introduce el correo del usuario o de la cuenta de servicio al que quieras asignar el rol.
  6. En el menú Asignar un rol, selecciona el rol que quieras asignar.
  7. Haz clic en Guardar.

Para añadir más roles, haz clic en el icono de editar Editar y añade los roles mediante el menú Asignar un rol.

API

El método repositories.getIamPolicy de la API Secure Source Manager obtiene la política de permiso 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

Haz los cambios siguientes:

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

La salida incluirá los enlaces que ya existan o, si no hay ninguno, el valor etag, como en el siguiente ejemplo:

{
    "etag": "BwUjHYKJUiQ="
}
  1. Modifica la copia local de la política de permisos de tu repositorio, que se encuentra en /tmp/repository.json, de forma programática o mediante un editor de texto para reflejar los roles que quieras conceder o revocar.

    Para asegurarte de que no sobrescribes 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 permiso. Cuando define la política de permiso actualizada, IAM compara el valor de etag de la solicitud con el valor de etag que ya existe y solo escribe la política de permiso si los valores coinciden.

    Para editar los roles que concede una política de permiso, debes editar las vinculaciones de roles en la política de permiso. Las asignaciones 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 quieres conceder. Utiliza el siguiente formato: roles/securesourcemanager.<var>IDENTIFIER</var>

    • PRINCIPAL_1, PRINCIPAL_2, ...PRINCIPAL_N: identificadores de las entidades a las que quieres asignar el rol.

    En el siguiente ejemplo se asigna el rol repoAdmin al usuario email1@gmail.com y el rol repoWriter a los usuarios email2@gmail.com y group1@gmail.com, así como 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. Define la nueva política 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
    

    Haz los cambios siguientes:

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

Siguientes pasos