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:
-
Otorga roles de IAM de la instancia:
Propietario de instancias de Secure Source Manager (
roles/securesourcemanager.instanceOwner) en la instancia de Secure Source Manager -
Otorga roles de IAM del repositorio:
Administrador de repositorios de Secure Source Manager (
roles/securesourcemanager.repoAdmin) en el repositorio
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:
- Para leer la política de permisos actual, llama a
getIamPolicy(). - 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.
- Para escribir la política de permisos actualizada, llama 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.jsonReemplaza lo siguiente:
INSTANCE_IDpor el ID de la instancia.PROJECT_IDpor el ID del proyecto o el número del proyecto de la instancia.REGIONcon 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
etagsimilar al siguiente:{ "etag": "BwUjHYKJUiQ=" }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
etagde la política de permisos. El campoetagidentifica el estado actual de la política de permisos. Cuando configuras la política de permisos actualizada, IAM compara el valor deetagen la solicitud con eletagexistente 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.IDENTIFIERPRINCIPAL_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
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 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.jsonReemplaza lo siguiente:
INSTANCE_IDpor el ID de la instancia.PROJECT_IDcon el ID del proyecto o el número del proyecto de la instancia.REGIONcon 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
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.jsonReemplaza lo siguiente:
PROJECT_IDes el ID del proyecto o el número del proyecto de la instancia.REGIONes 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_IDes el ID de la instancia.
El resultado incluirá cualquier vinculación existente o, si no existe ninguna, el valor
etagsimilar al siguiente:{ "etag": "BwUjHYKJUiQ=" }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
etagde la política de permisos. El campoetagidentifica el estado actual de la política de permisos. Cuando configuras la política de permisos actualizada, IAM compara el valor deetagen la solicitud con eletagexistente 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.IDENTIFIERPRINCIPAL_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
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", "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 para otorgar y revocar los roles elegidos, llama a
instances.setIamPolicy()con el fin de realizar las actualizaciones.Usa el siguiente comando
instances.setIamPolicypara 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.jsonReemplaza lo siguiente:
PROJECT_IDes el ID del proyecto o el número del proyecto de la instancia.REGIONes 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_IDes 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:
- Navega a la URL de la instancia que te proporcionó 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 Agregar usuarios.
- En el campo Agregar principal, ingresa el correo electrónico del usuario o la cuenta de servicio a la que deseas otorgarle el rol.
- En el menú Asignar un rol, selecciona el rol que deseas asignar.
- 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.
- Ejecuta el siguiente comando
repositories.getIamPolicypara 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_PROJECTes el ID del proyecto o el número del proyecto del repositorio.REGIONes la región en la que se encuentra el repositorio.REPOSITORY_IDes el ID del repositorio.
El resultado incluirá cualquier vinculación existente o, si no existe ninguna, el valor etag similar al siguiente:
{
"etag": "BwUjHYKJUiQ="
}
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.jsonpara que refleje los roles que deseas otorgar o revocar.Para asegurarte de no reemplazar otros cambios, no edites ni quites el campo
etagde la política de permisos. El campoetagidentifica el estado actual de la política de permisos. Cuando configuras la política de permisos actualizada, IAM compara el valor deetagen la solicitud con eletagexistente 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
repoAdminal usuarioemail1@gmail.comy el rolrepoWritera los usuariosemail2@gmail.comygroup1@gmail.com, y 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.jsoneditado.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.jsonReemplaza lo siguiente:
REPOSITORY_PROJECTes el ID del proyecto o el número del proyecto del repositorio.REGIONes 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_IDes el ID del repositorio.
¿Qué sigue?
- Obtén más información sobre el control de acceso con IAM en Secure Source Manager.