Administración de identidades y accesos de Cloud

En esta página, se proporciona una descripción general de Cloud Identity and Access Management (Cloud IAM) y su uso para controlar el acceso a los depósitos y objetos en Cloud Storage. A fin de obtener más información sobre cómo configurar y administrar los permisos de Cloud IAM para los depósitos y proyectos de Cloud Storage, consulta Usa los permisos de Cloud IAM. Para obtener más información sobre otras maneras de controlar el acceso a los depósitos y objetos, consulta Descripción general de control de acceso.

En esta página, se describen aspectos de Cloud IAM relevantes para Cloud Storage en específico. A fin de ver un análisis más detallado de Cloud IAM y sus características en general, consulta la guía para desarrolladores de Cloud Identity and Access Management. En particular, consulta la sección Administra las políticas de Cloud IAM.

Descripción general

Con Cloud Identity and Access Management (Cloud IAM) puedes controlar quién tiene acceso a los recursos en tu proyecto de Google Cloud Platform. En los recursos, se incluyen los objetos y depósitos de Cloud Storage almacenados en los depósitos, así como otras entidades de GCP, como las instancias de Compute Engine.

La configuración de las reglas de acceso que aplicas a un recurso se denomina política de Cloud IAM. En una política de Cloud IAM que se aplica a tu proyecto, se definen las acciones que los usuarios pueden realizar en todos los objetos o depósitos dentro del proyecto. En una política de Cloud IAM que se aplica a un depósito único, se definen las acciones que los usuarios pueden realizar en ese depósito específico y los objetos que contiene.

Por ejemplo, puedes crear una política de Cloud IAM para uno de tus depósitos con la que se le otorgue a un usuario el control administrativo de ese depósito. Mientras tanto, puedes agregar otro usuario a la política de Cloud IAM de todo el proyecto con la que se le brinda la capacidad de ver objetos en cualquier depósito de tu proyecto

Los miembros son "quienes" están en Cloud IAM. Pueden ser usuarios individuales, grupos, dominios o, incluso, el público en general. Se les asignan funciones con las que se les concede la capacidad de realizar acciones en Cloud Storage y GCP de manera más general. Cada función es un grupo de uno o más permisos. Los permisos son las unidades básicas de Cloud IAM. Cada permiso te permite realizar una acción determinada.

Por ejemplo, con el permiso storage.objects.create puedes crear objetos. Este permiso se encuentra en funciones como roles/storage.objectCreator, en donde es el único permiso, y roles/storage.objectAdmin, en donde se agrupan varios permisos. Si le asignas a un miembro la función roles/storage.objectCreator para un depósito específico, solo podrá crear objetos en ese depósito. Si le asignas a otro miembro la función roles/storage.objectAdmin para el depósito, podrá realizar tareas adicionales, como borrar objetos, pero solo en ese depósito. Si les asignas estas funciones a estos dos usuarios y no a otros, no tendrán conocimiento de ningún otro depósito en tu proyecto. Si le asignas a un tercer miembro la función roles/storage.objectAdmin de tu proyecto y no solo de un depósito único, tendrá acceso a cualquier objeto en cualquier depósito de tu proyecto.

El uso de Cloud IAM con Cloud Storage facilita la limitación de los permisos de un miembro sin modificar el permiso de cada objeto o depósito de manera individual.

Permisos

Con los permisos, los miembros pueden realizar acciones específicas en objetos o depósitos en Cloud Storage. Por ejemplo, un miembro puede enumerar los depósitos en tu proyecto con el permiso storage.buckets.list. No otorgues permisos a miembros de forma directa. En su lugar, asigna funciones que tengan uno o más permisos en conjunto.

Para ver una lista de referencia de los permisos de Cloud IAM que se aplican a Cloud Storage, consulta Permisos de Cloud IAM para Cloud Storage.

Funciones

Las funciones son un paquete de uno o más permisos. Por ejemplo, roles/storage.objectViewer contiene los permisos de storage.objects.get y storage.objects.list. Asigna funciones a los miembros, lo que les permite realizar acciones en los depósitos y objetos de tu proyecto.

Para ver una lista de referencia de las funciones de Cloud IAM que se aplican a Cloud Storage, consulta Funciones de Cloud IAM para Cloud Storage.

Funciones a nivel de proyecto frente a funciones a nivel de depósito

La asignación de funciones a nivel de depósito no afecta a las funciones existentes que otorgaste a nivel de proyecto y viceversa. Por lo tanto, puedes usar estos dos niveles de detalle para personalizar tus permisos. Por ejemplo, supongamos que deseas otorgarle a un usuario permiso para leer objetos en cualquier depósito, pero crearlos solo en un depósito específico. Para lograrlo, otorga al usuario la función roles/storage.objectViewer a nivel de proyecto, lo que le permitirá leer cualquier objeto almacenado en cualquier depósito de tu proyecto, y la función roles/storage.objectCreator a nivel de depósito para un depósito específico, lo que le permitirá crear objetos solo ahí.

Algunas funciones se pueden usar a nivel de proyecto y a nivel de depósito. Cuando se usan a nivel de proyecto, los permisos que contienen se aplican a todos los depósitos y objetos en el proyecto. Cuando se usan a nivel de depósito, los permisos solo se aplican a un depósito específico y los objetos que contenga. roles/storage.admin, roles/storage.objectViewer, y roles/storage.objectCreator son ejemplos de estas funciones.

Algunas funciones solo se pueden aplicar a un nivel. Por ejemplo, solo puedes aplicar la función Viewer a nivel de proyecto, mientras que solo puedes aplicar la función roles/storage.legacyObjectOwner a nivel de depósito.

Relación con las LCA

Las funciones de Cloud IAM del depósito heredado funcionan en conjunto con las LCA de depósitos. Cuando agregas o quitas una función del depósito heredado, tus cambios se reflejan en las LCA asociadas con el depósito. De manera similar, cambiar una LCA específica del depósito hace que se actualice la función del depósito heredado correspondiente para el depósito.

Función del depósito heredado LCA equivalente
roles/storage.legacyBucketReader Lector del depósito
roles/storage.legacyBucketWriter Escritor del depósito
roles/storage.legacyBucketOwner Propietario del depósito

Las demás funciones de Cloud IAM a nivel de depósito y todas las funciones de Cloud IAM a nivel de proyecto funcionan de manera independiente desde las LCA. Por ejemplo, si le asignas a un usuario la función de lector de objetos de almacenamiento, las LCA no se modificarán. Esto significa que puedes usar las funciones de Cloud IAM a nivel de depósito a fin de otorgar acceso total a todos los objetos de un depósito y usar las LCA de objetos detalladas para personalizar el acceso a objetos específicos en el depósito.

Permiso de Cloud IAM para cambiar las LCA

Puedes usar Cloud IAM a fin de otorgar a los miembros el permiso necesario para cambiar las LCA en los objetos. Con los siguientes permisos storage.buckets, los usuarios pueden trabajar con las LCA de depósitos y las LCA de objetos predeterminadas: .get, .getIamPolicy, .setIamPolicy y .update.

De manera similar, con los siguientes permisos de storage.objects los usuarios pueden trabajar con las LCA de objetos: .get, .getIamPolicy, .setIamPolicy y .update.

Funciones personalizadas

Si bien Cloud IAM tiene varias funciones predefinidas que abarcan casos prácticos comunes, es posible que desees definir tus propias funciones que contengan los paquetes de permisos que especifiques. Para respaldar esto, Cloud IAM ofrece funciones personalizadas.

Tipos de miembros

Hay varios tipos de miembros. Por ejemplo, las Cuentas de Google y los grupos de Google representan dos tipos generales, mientras que allAuthenticatedUsers y allUsers son dos tipos especializados. Para ver una lista de los tipos de miembros típicos en Cloud IAM, consulta Conceptos relacionados con la identidad. Además de los tipos que se enumeran allí, Cloud IAM admite los siguientes tipos de miembros, que se pueden aplicar de manera específica a las políticas de Cloud IAM de tu depósito de Cloud Storage:

  • projectOwner:[PROJECT_ID]
  • projectEditor:[PROJECT_ID]
  • projectViewer:[PROJECT_ID]

Donde [PROJECT_ID] es el ID de un proyecto específico.

Cuando le otorgas una función a uno de los tipos de miembros anteriores, todos los miembros con el permiso especificado para el proyecto especificado reciben la función que selecciones. Por ejemplo, supongamos que deseas asignar la función roles/storage.objectCreator de uno de tus depósitos a todos los miembros que tengan la función Viewer del proyecto my-example-project. Para ello, asigna al miembro projectViewer:my-example-project la función roles/storage.objectCreator de ese depósito.

Uso con las herramientas de Cloud Storage

Aunque los permisos de Cloud IAM no se pueden configurar a través de la API de XML, los usuarios que cuenten con permisos de Cloud IAM pueden usar la API de XML, así como cualquier otra herramienta para acceder a Cloud Storage.

Para obtener referencias de los permisos de Cloud IAM con los que los usuarios pueden realizar acciones con herramientas diferentes de Cloud Storage, consulta Cloud IAM con Cloud Console, Cloud IAM con gsutil, Cloud IAM con JSON y Cloud IAM con XML.

Recomendaciones

Como toda configuración administrativa, Cloud IAM requiere que la administración activa sea eficaz. Antes de permitir a otros usuarios el acceso a un objeto o depósito, asegúrate de saber con quién deseas compartirlos y qué funciones deseas que desempeñe cada uno de ellos. Con el tiempo, es posible que los cambios en la administración del proyecto, los patrones de uso y la propiedad de la organización requieran que modifiques la configuración de Cloud IAM en depósitos y proyectos, en especial, si administras Cloud Storage en una organización grande o para un grupo grande de usuarios. A medida que evalúes y planifiques tu configuración de control de acceso, ten en cuenta las siguientes recomendaciones:

  • Usa el principio de privilegios mínimos cuando otorgues acceso.

    El principio de privilegios mínimos es una guía de seguridad para otorgar privilegios o derechos. Cuando otorgas acceso según este principio, otorgas los privilegios mínimos necesarios para que un usuario realice su tarea asignada. Por ejemplo, si deseas compartir un archivo con alguien, otorga a esa persona la función storage.objectReader y no la función storage.admin.

  • Evita asignar funciones con el permiso setIamPolicy a personas que no conoces.

    Otorgar el permiso de setIamPolicy permite a un usuario cambiar los permisos y tomar el control de los datos. Debes usar funciones con el permiso de setIamPolicy solo cuando desees delegar el control administrativo en los objetos y depósitos.

  • Ten cuidado con la forma en la que otorgas permisos para usuarios anónimos.

    Los tipos de miembros allUsers y allAuthenticatedUsers solo se deben usar cuando la lectura y el análisis de tus datos sea aceptable para cualquier usuario de Internet. Si bien estos alcances son útiles en algunas aplicaciones y situaciones, normalmente no es buena idea otorgar a todos los usuarios ciertos permisos, como setIamPolicy, update, create o delete.

  • Comprende las funciones Viewer/Editor/Owner del proyecto en Cloud Storage

    Con las funciones a nivel de proyecto Viewer/Editor/Owner se otorga de forma eficaz el acceso que sus nombres implican en Cloud Storage. Sin embargo, esto se hace de manera indirecta a través del acceso adicional que se proporciona en los niveles de depósito y objeto, mediante el uso de tipos de miembros exclusivos de Cloud Storage. Puedes revocar el acceso mientras este se agrega según la configuración predeterminada.

    Por ejemplo, con la función Viewer por sí sola, únicamente se otorga a un miembro el permiso storage.buckets.list, pero con los depósitos nuevos, se asigna según la configuración predeterminada la función roles/storage.legacyBucketReader a todos los miembros con la función Viewer del proyecto. Con esta función, un Viewer puede ver un depósito. Además, el depósito tiene una LCA de objetos predeterminada de projectPrivate, lo que significa que los objetos que se agregaron obtuvieron la LCA projectPrivate según la configuración predeterminada. Con esta LCA, un Viewer puede ver el objeto.

    De manera similar, las funciones del proyecto Editor y Owner tienen acceso limitado a Cloud Storage, pero los miembros que tienen asignadas estas funciones obtienen roles/storage.legacyBucketOwner para los depósitos nuevos y propiedad de objetos mediante la LCA projectPrivate.

    Ten en cuenta que, debido a que parte del acceso a un depósito y a los objetos no es inherente a las funciones Viewer/Editor/Owner del proyecto, es posible revocar el acceso que los miembros podrían esperar que tuvieran.

  • Evita configurar permisos que den como resultado depósitos y objetos inaccesibles.

    Un objeto o depósito se vuelve inaccesible cuando no hay nadie con permiso para leerlo. Esto puede suceder con un depósito cuando todos los permisos de Cloud IAM del depósito se quitan. También puede suceder con un objeto cuando el propietario del objeto deja un proyecto y no existen políticas de Cloud IAM a nivel de proyecto o de depósito que otorguen acceso a los objetos. En ambos casos, puedes recuperar el acceso si te asignas a ti mismo o a otro miembro una función adecuada, como roles/storage.admin, a nivel de proyecto. Ten en cuenta que hacer esto brinda acceso a todos los depósitos y objetos del proyecto, por lo que es posible que desees revocar la función una vez que hayas restablecido el objeto o depósito afectado.

  • Asegúrate de delegar el control administrativo de tus depósitos.

    Según la configuración predeterminada, los miembros con la función Owner a nivel de proyecto son las únicas entidades que tienen la función roles/legacyBucketOwner en un depósito recién creado. Debes tener al menos dos miembros con la función Owner en un momento determinado para que, si un miembro del equipo deja el grupo, otros miembros aún puedan administrar tus depósitos.

Pasos siguientes

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

¿Necesitas ayuda? Visita nuestra página de asistencia.