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.json
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
con 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
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 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 campoetag
identifica el estado actual de la política de permisos. Cuando configuras la política de permisos actualizada, IAM compara el valor deetag
en la solicitud con eletag
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
: Son los identificadores de las principales a las que deseas otorgar el rol.
Por ejemplo, la siguiente política otorga 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 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.json
Reemplaza lo siguiente:
INSTANCE_ID
por el ID de la instancia.PROJECT_ID
con el ID del proyecto 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 de ubicaciones para conocer 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
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á 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 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 campoetag
identifica el estado actual de la política de permisos. Cuando configuras la política de permisos actualizada, IAM compara el valor deetag
en la solicitud con eletag
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
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" ] } ] } }
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.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.
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.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á 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.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 campoetag
identifica el estado actual de la política de permisos. Cuando configuras la política de permisos actualizada, IAM compara el valor deetag
en la solicitud con eletag
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 usuarioemail1@gmail.com
y el rolrepoWriter
a los usuariosemail2@gmail.com
ygroup1@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.json
editado.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?
- Obtén más información sobre el control de acceso con IAM en Secure Source Manager.