Acceso uniforme a nivel de bucket

Configuración

En esta página, se describe el acceso uniforme a nivel de bucket, que te permite controlar de manera uniforme el acceso a los recursos de Cloud Storage. Cuando habilitas el acceso uniforme a nivel de bucket en uno de ellos, las listas de control de acceso (LCA) se inhabilitan y solo los permisos de Identity and Access Management (IAM) a nivel de bucket otorgan acceso a ese bucket y a los objetos que contiene. Revocarás todos los accesos otorgados por las LCA de objetos y la capacidad de administrar permisos a través de LCA de buckets.

Descripción general

Cloud Storage ofrece dos sistemas para otorgar permiso a los usuarios para acceder a tus buckets y objetos: IAM y las listas de control de acceso (LCA). Estos sistemas actúan en paralelo: para que un usuario acceda a un recurso de Cloud Storage, solo uno de los sistemas debe otorgarle permiso. La IAM se usa en todo Google Cloud y te permite otorgar una variedad de permisos a nivel de proyecto y de bucket. Las LCA solo se usan en Cloud Storage y tienen opciones de permisos limitadas, pero te permiten otorgar permisos por objeto.

Para admitir un sistema de permisos uniforme, Cloud Storage tiene acceso uniforme a nivel de bucket. Usar esta característica en un bucket inhabilita las LCA para todos los recursos de Cloud Storage en el bucket. El acceso a los recursos de Cloud Storage se otorga de forma exclusiva a través de IAM. El acceso uniforme a nivel de bucket no puede inhabilitarse si estuvo activo en un bucket durante 90 días consecutivos.

¿Deberías usar el acceso uniforme a nivel de bucket ?

Por lo general, se recomienda usar el acceso uniforme a nivel de bucket, ya que unifica y simplifica la forma en que otorgas acceso a los recursos de Cloud Storage.

El uso del acceso uniforme a nivel de bucket también te permite usar otras funciones de seguridad de Google Cloud, como el uso compartido restringido del dominio, la federación de Workload Identity y las condiciones de IAM.

Es posible que no quieras usar el acceso uniforme a nivel de bucket y desees retener las LCA detalladas en los siguientes casos:

  • Si deseas controlar el acceso a objetos específicos de un bucket a través de LCA heredadas.

  • Deseas que quien sube un objeto tenga control total sobre ese objeto, pero menos acceso a otros objetos en tu bucket.

  • Usa la API de XML para ver o configurar permisos para buckets.

Cómo es el comportamiento cuando está habilitado

Puedes habilitar el acceso uniforme a nivel de bucket cuando crees un bucket nuevo o cuando habilites el acceso uniforme a nivel de bucket de forma explícita en un bucket existente.

Una vez habilitado, el bucket tiene el siguiente comportamiento:

  • Las solicitudes para establecer, leer o modificar las LCA de buckets y objetos fallan con errores 400 Bad Request.

  • Las solicitudes a la API de JSON para una proyección completa de metadatos de objetos o buckets incluyen una lista de LCA vacía como parte de la respuesta.

  • La propiedad individual del objeto ya no existe; el acceso que se otorga desde esa propiedad se revoca, y las solicitudes de metadatos de buckets y objetos ya no contienen un campo owner.

  • En el momento de la creación, los buckets reciben roles de IAM especializados. Si habilitas el acceso uniforme a nivel de bucket como parte de la creación de un bucket nuevo, ese bucket obtendrá roles de IAM adicionales.

    • Con este comportamiento, los objetos conservan los permisos que habrían heredado de la LCA de objetos predeterminada estándar para un bucket.

    • Si habilitas el acceso uniforme a nivel de bucket en un bucket existente, debes aplicar esos roles de forma manual. Si cambiaste con anterioridad la LCA de objeto predeterminada del depósito, es probable que desees aplicar un conjunto diferente de roles de IAM.

Cómo es el comportamiento cuando se revierte

Para admitir la posibilidad de inhabilitar el acceso uniforme a nivel de bucket y volver a usar las LCA, Cloud Storage guarda las LCA existentes. Si inhabilitas el acceso uniforme a nivel de bucket, ocurre lo siguiente:

  • Los objetos recuperan sus LCA guardadas.

  • Cualquier objeto que se agregue al bucket después de que se haya habilitado el acceso uniforme a nivel de bucket obtendrá LCA en función de las LCA de objetos predeterminadas que usa el bucket.

Consideraciones para migrar un bucket existente

Cuando habilitas el acceso uniforme a nivel de bucket en un bucket existente, debes asegurarte de que los permisos de los usuarios y servicios que antes dependían de las LCA para obtener el acceso se migren a la IAM. En esta sección, se describen algunos pasos que debes seguir cuando migres un bucket al acceso uniforme a nivel de bucket. Ten en cuenta que, como las LCA y la IAM están sincronizadas para los permisos de depósitos, tus consideraciones se deben enfocar en específico en el acceso a objetos dentro de tu depósito y no en el acceso al depósito.

Considera si un permiso de IAM a nivel de bucket sobreexpone los datos

Antes de asignar equivalentes de IAM a las LCA, ten en cuenta los siguientes factores:

  • Un permiso de IAM aplicado a nivel de depósito se aplica a todos los objetos del depósito, mientras que las LCA de objetos pueden variar de un objeto a otro.

Si deseas aplicar acceso a algunos objetos, pero no a otros, debes agruparlos en depósitos diferentes. Cada agrupación debe contener aquellos objetos que tienen los mismos permisos.

Verifica el uso de LCA de objetos

Cuando migres al acceso uniforme a nivel de bucket, debes comprobar si se accede a los objetos del bucket a través de las LCA que se les aplican. Para comprobarlo, Cloud Monitoring tiene una métrica que realiza seguimientos del uso de la LCA. Si esta métrica indica que los usuarios o servicios dependen de las LCA para acceder a los objetos, debes asignar equivalentes de IAM al depósito antes de habilitar el acceso uniforme a nivel de depósito. Para obtener una guía sobre cómo verificar el uso de las LCA en Monitoring, consulta Verifica el uso de las LCA.

Usa esta métrica para determinar si habilitar el acceso uniforme a nivel de bucket interrumpiría el flujo de trabajo:

Métrica Descripción
storage.googleapis.com/authz/acl_operations_count La cantidad de operaciones de LCA que se inhabilitarán cuando se habilite el acceso uniforme a nivel de bucket, dividida por el tipo de operación de LCA y bucket.

Una operación importante de LCA que se debe examinar es OBJECT_ACCESS_REQUIRED_OBJECT_ACL:

  • Si este número es cero, no se requirieron LCA a nivel de objeto para acceder a los objetos en las últimas 6 semanas. Las políticas de IAM cubren los permisos necesarios a nivel de bucket o proyecto.

  • Si este número es mayor que cero, hubo solicitudes de acceso a objetos en las últimas 6 semanas que requirieron permisos de LCA de objetos. Debes asignar políticas de IAM equivalentes antes de habilitar el acceso uniforme a nivel de bucket.

Para obtener más información de las métricas de Monitoring, consulta Métricas, series temporales y recursos.

Revisa la LCA de objetos predeterminada del depósito

Los buckets sin acceso uniforme a nivel de bucket tienen una LCA de objetos predeterminada asociada a ellos. Los objetos nuevos agregados a esos buckets tienen esta LCA de objetos predeterminada aplicada a ellos, a menos que se suministre de forma explícita una LCA en el momento en que el objeto se agrega al bucket.

Por ejemplo, los depósitos suelen usar la LCA predefinida projectPrivate como su LCA de objeto predeterminada. projectPrivate otorga el permiso de objeto READER a los visualizadores de proyectos asociados con el depósito y otorga permiso al objeto OWNER a los editores y propietarios del proyecto. asociados con el bucket.

Antes de habilitar el acceso uniforme a nivel de bucket, revisa la LCA de objetos predeterminada del bucket. Considera si deseas otorgar los permisos asociados con la LCA de objetos predeterminada una vez que hayas habilitado el acceso uniforme a nivel de bucket. De ser así, asigna equivalentes de IAM al depósito.

Asigna equivalentes de IAM para las LCA de objetos

Las LCA de objetos pueden otorgar el acceso que la IAM no otorga en la actualidad. Para garantizar que los usuarios existentes no pierdan el acceso a objetos cuando habilites el acceso uniforme a nivel de depósito, usa la siguiente tabla y asigna a los usuarios afectados las funciones de IAM correspondientes.

Permiso para LCA de objetos Función de IAM equivalente
READER Lector de objetos heredados de almacenamiento (roles/storage.legacyObjectReader)
OWNER Propietario de objetos heredados de almacenamiento (roles/storage.legacyObjectOwner)

Consideraciones para usar las condiciones de IAM

Para evitar conflictos entre las LCA de objetos y las políticas de IAM de un bucket, las condiciones de IAM solo se pueden usar en los buckets que tengan el acceso uniforme a nivel de bucket habilitado. Esto significa lo siguiente:

¿Qué sigue?