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 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:
- 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 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=" }
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 campoetag
identifica el estado actual de la política de permiso. Cuando defines la política de permiso actualizada, IAM compara el valor deetag
de la solicitud con el valor deetag
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
auser1@gmail.com
y el rolinstanceManager
a los usuariosuser2@gmail.com
yuser3@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 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
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=" }
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 campoetag
identifica el estado actual de la política de permiso. Cuando define la política de permiso actualizada, IAM compara el valor deetag
de la solicitud con el valor deetag
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
auser1@gmail.com
y el rolinstanceManager
a los usuariosuser2@gmail.com
yuser3@gmail.com
, y a la cuenta de serviciomy-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" ] } ] } }
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:
- Ve a la URL de la instancia que te haya proporcionado tu contacto de Google.
- En la página Mis repositorios, selecciona tu repositorio.
- Haz clic en la pestaña Permisos.
- En la sección Personas y permisos, haz clic en Añadir usuarios.
- En el campo Añadir principal, introduce el correo del usuario o de la cuenta de servicio al que quieras asignar el rol.
- En el menú Asignar un rol, selecciona el rol que quieras asignar.
- 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.
- 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="
}
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 campoetag
identifica el estado actual de la política de permiso. Cuando define la política de permiso actualizada, IAM compara el valor deetag
de la solicitud con el valor deetag
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 usuarioemail1@gmail.com
y el rolrepoWriter
a los usuariosemail2@gmail.com
ygroup1@gmail.com
, así como a la cuenta de serviciomy-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" ] } ] } }
Guarda el archivo
/tmp/repository.json
editado.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
- Consulta más información sobre el control de acceso con la gestión de identidades y accesos en Secure Source Manager.