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:
-
Concede roles de IAM de instancia:
Propietario de la instancia de Secure Source Manager (
roles/securesourcemanager.instanceOwner) en la instancia de Secure Source Manager -
Concede roles de gestión de identidades y accesos del repositorio:
Administrador del repositorio de Secure Source Manager (
roles/securesourcemanager.repoAdmin) en el repositorio.
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 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:
- Lee la política de permiso actual llamando a
getIamPolicy(). - 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.
- Escribe la política de permiso actualizada llamando a
setIamPolicy().
gcloud
Para leer la política de permisos actual y guardarla en
/tmp/instances.json, ejecuta el siguiente comando:gcloud source-manager instances get-iam-policy INSTANCE_ID \ --project=PROJECT_ID \ --region=REGION \ --format=json > /tmp/instance.jsonHaz los cambios siguientes:
INSTANCE_IDcon el ID de instancia.PROJECT_IDcon el ID o el número del proyecto de la instancia.REGIONcon 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=" }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
etagde la política de permisos. El campoetagidentifica el estado actual de la política de permiso. Cuando defines la política de permiso actualizada, IAM compara el valor deetagde la solicitud con el valor deetagactual 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.IDENTIFIERPRINCIPAL_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
instanceOwnerauser1@gmail.comy el rolinstanceManagera los usuariosuser2@gmail.comyuser3@gmail.com, y a la cuenta de serviciomy-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" ] } ] }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 source-manager instances set-iam-policy INSTANCE_ID \ --project=PROJECT_ID \ --region=REGION \ /tmp/instance.jsonHaz los cambios siguientes:
INSTANCE_IDcon el ID de instancia.PROJECT_IDcon el ID o el número de proyecto de la instancia.REGIONcon 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
Ejecuta el siguiente comando
instances.getIamPolicypara 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.jsonHaz los cambios siguientes:
PROJECT_IDel ID o el número de proyecto de la instancia.REGIONla 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_IDel 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=" }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
etagde la política de permisos. El campoetagidentifica el estado actual de la política de permiso. Cuando define la política de permiso actualizada, IAM compara el valor deetagde la solicitud con el valor deetagque 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.IDENTIFIERPRINCIPAL_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
instanceOwnerauser1@gmail.comy el rolinstanceManagera los usuariosuser2@gmail.comyuser3@gmail.com, y a la cuenta de serviciomy-other-app@appspot.gserviceaccount.com.{ "policy": { "etag": "BwUjHYKJUiQ=", "bindings": [ { "role": "roles/securesourcemanager.instanceOwner",