Google Cloud ofrece Gestión de Identidades y Accesos (IAM), que te permite dar un acceso más granular a recursos Google Cloud específicos y evitar el acceso no deseado a otros recursos. IAM te permite adoptar el principio de seguridad de mínimos accesos, de forma que solo concedas el acceso necesario a tus recursos.
La gestión de identidades y accesos te permite controlar quién (usuarios) tiene qué acceso (roles) a qué recursos definiendo políticas de permiso. Las políticas de permiso conceden roles específicos a un usuario, lo que le otorga determinados permisos.
En esta página se explican los roles de gestión de identidades y accesos (IAM) disponibles en el recurso de organización y cómo crear y gestionar políticas de permisos para recursos de organización mediante la API Cloud Resource Manager. Para obtener más información, consulta Gestionar el acceso a proyectos, carpetas y organizaciones.
Permisos y roles
Para controlar el acceso a los recursos, Google Cloud requiere que las cuentas que realicen solicitudes de API tengan los roles de gestión de identidades y accesos adecuados. Los roles de gestión de identidades y accesos incluyen permisos que permiten a los usuarios realizar acciones específicas enGoogle Cloud recursos. Por ejemplo, el permiso resourcemanager.organizations.get permite a un usuario obtener detalles sobre el recurso de su organización.
No se conceden permisos directamente a los usuarios, sino que se les asignan roles, que incluyen uno o varios permisos.
Puedes designar una o más funciones en el mismo recurso.
Usar roles predefinidos
En la siguiente tabla se indican los roles que puede asignar para acceder a las propiedades de un recurso de organización, la descripción de lo que hace el rol y los permisos incluidos en ese rol.
.| Rol | Permisos |
|---|---|
Administrador de la organización( Permiso para gestionar políticas de gestión de identidades y accesos, y ver políticas de organización para organizaciones, carpetas y proyectos. Recursos de nivel más bajo en los que puedes asignar este rol:
|
|
Lector de organización( Proporciona acceso para ver una organización. Recursos de nivel más bajo en los que puedes asignar este rol:
|
|
Administrador de políticas de organización( Proporciona acceso para definir las restricciones que una organización quiere aplicar a la configuración de los recursos en la nube mediante la definición de políticas de la organización. Recursos de nivel más bajo en los que puedes asignar este rol:
|
|
Navegador( Acceso de lectura para consultar la jerarquía de un proyecto, incluida la carpeta, la organización y la política de permisos. Este rol no incluye el permiso para ver los recursos del proyecto. Recursos de nivel más bajo en los que puedes asignar este rol:
|
|
Crear roles personalizados
Además de los roles predefinidos que se describen en este tema, también puedes crear roles personalizados, que son conjuntos de permisos que puedes adaptar a tus necesidades. Cuando crees un rol personalizado para usarlo con Resource Manager, ten en cuenta lo siguiente:- Los permisos de lista y de obtención, como
resourcemanager.projects.get/list, siempre deben concederse en pareja. - Si tu rol personalizado incluye los permisos
folders.listyfolders.get, también debe incluirprojects.listyprojects.get. - Ten en cuenta que el permiso
setIamPolicypara los recursos de organización, carpeta y proyecto permite al usuario conceder todos los demás permisos, por lo que debe asignarse con cuidado.
Ver el acceso de un recurso de organización
Para ver qué roles se han concedido a un usuario en un recurso de una organización, puedes obtener la política de permisos de ese recurso. Puedes ver la política de permitidos de un recurso de organización mediante la Google Cloud consola, la CLI de Google Cloud o el método getIamPolicy().
Consola
Para ver los roles concedidos a nivel de recurso de organización mediante la Google Cloud consola, sigue estos pasos:
Ve a la página Gestionar recursos de la Google Cloud consola:
En la lista desplegable Organización, selecciona el recurso de tu organización.
Marca la casilla del recurso de la organización.
En el panel de información de la derecha, en Permisos, haz clic para desplegar un rol y mostrar todos los miembros que lo tienen.
gcloud
Obtén la política de permiso del recurso de organización con el comando get-iam-policy:
gcloud alpha organizations get-iam-policy [ORGANIZATION_ID] --format json >
[FILENAME.JSON]
El comando muestra la política de permiso, que es similar a la siguiente:
bindings:
- members:
- user:testuser1@gcp-test.com
role: roles/editor
- members:
- user:admin@gcp-test.com
role:roles/resourcemanager.organizationAdmin
- members:
- user:testuser2@gcp-test.com
role: roles/resourcemanager.projectCreator
etag": "BwU1aRxWk30="
API
El siguiente fragmento de código devuelve la política de permiso del recurso de la organización https://cloudresourcemanager.googleapis.com/v3/organizations/12345.
Solicitud:
POST
https://cloudresourcemanager.googleapis.com/v3/organizations/12345:getIamPolicy
Respuesta:
{
"bindings": [
{
"role": "roles/resourcemanager.organizationAdmin",
"members": [
"user:email1@gmail.com"
]
},
{
"role": "roles/resourcemanager.projectCreator",
"members": [
"user:email2@gmail.com",
"user:email3@gmail.com",
"serviceAccount:my-other-app@appspot.gserviceaccount.com"
]
}
]
"etag": "BwUjHYKHHiQ="
}
Python
El método
getIamPolicy()
te permite obtener una política de permiso que se haya definido anteriormente.
crm = discovery.build(
'cloudresourcemanager', 'v3', http=creds.authorize(httplib2.Http()))
policy = crm.organizations().getIamPolicy(
resource=flags.organizationId, body={}).execute()
print json.dumps(policy, indent=2)
Conceder acceso a un recurso de la organización
Los administradores de la organización pueden asignar roles de gestión de identidades y accesos a los miembros del equipo para que puedan acceder a los recursos y las APIs de la organización. Puedes conceder roles a una dirección de correo de una cuenta de usuario, a un grupo de Google, a una cuenta de servicio o a un dominio de G Suite. Puedes usar la Google Cloud consola, la CLI de gcloud o el método setIamPolicy()
para asignar roles.
Consola
Para definir el control de acceso a nivel de recurso de organización mediante la Google Cloud consola, sigue estos pasos:
Ve a la página Gestionar recursos de la Google Cloud consola:
En la lista desplegable Organización, selecciona el recurso de tu organización.
Marca la casilla del recurso de la organización. Si no tienes un recurso de carpeta, el recurso de organización no se mostrará. Para continuar, consulta las instrucciones para conceder roles en la página Gestión de identidades y accesos.
Si el panel de información de la derecha está oculto, haz clic en la opción Mostrar panel de información de la esquina superior derecha.
En la pestaña Permisos del panel de información, haz clic en Añadir miembro.
En el campo Miembros nuevos, introduce los miembros del equipo que quieras añadir. Puedes designar una dirección de correo de una cuenta de usuario, un grupo de Google, una cuenta de servicio o un dominio de G Suite.
En la lista desplegable Selecciona un rol, elige el rol que quieras asignar a los miembros del equipo.
Haz clic en Añadir.
gcloud
Para definir la política de permiso de un recurso de la organización con el comando gcloud, sigue estos pasos:
Obtén la política de permiso del recurso de la organización con el comando
get-iam-policyy genera la política en un archivo JSON:gcloud alpha organizations get-iam-policy [ORGANIZATION_ID] --format json > [FILENAME.JSON]El contenido del archivo JSON será similar al siguiente:
{
"bindings": [
{
"members": [
"user:testuser1@gcp-test.com"
],
"role": "roles/editor"
},
{
"members": [
"user:admin@gcp-test.com",
],
"role": "roles/resourcemanager.organizationAdmin"
},
{
"members": [
"user:testuser2@gcp-test.com"
],
"role": "roles/resourcemanager.projectCreator"
},
],
"etag": "BwU1aRxWk30="
}
- Con un editor de texto, abre el archivo JSON y añade una entrada a la matriz bindings que defina el administrador de la organización. Por ejemplo, para convertir a
anotheradmin@gcp-test.comen administrador de la organización, puedes modificar el ejemplo anterior de la siguiente manera:
{
"bindings": [
{
"members": [
"user:testuser1@gcp-test.com"