Acceso uniforme a nivel de bucket

Ir a ejemplos

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 la administración de identidades y accesos (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 mediante LCA de depósitos.

Descripción general

Cloud Storage ofrece dos sistemas para otorgar permiso a los usuarios a fin de 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 exclusivamente mediante IAM. Una vez que habilitas el acceso uniforme a nivel de bucket, tienes 90 días para revertir la decisión.

¿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 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 a fin de 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.

  • Los comandos de gsutil cp -p, mv -p y rsync -p fallan (cuando el bucket de acceso uniforme a nivel de bucket es la fuente y cuando es el destino). Los comandos de gsutil acl y defacl también fallan.

  • 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 funciones de IAM especializadas. Si habilitas el acceso uniforme a nivel de bucket como parte de la creación de un bucket nuevo, ese bucket obtendrá funciones de IAM adicionales, como se indica en la tabla vinculada.

    • Con este comportamiento, los objetos conservan los permisos que heredaron de las LCA de objetos predeterminadas del bucket.

    • Si habilitas el acceso uniforme a nivel de bucket en un bucket existente, debes aplicar esas funciones de forma manual. Es posible que desees aplicar un conjunto de funciones diferente si cambiaste las LCA de objeto predeterminadas del bucket.

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 durante 90 días. Si inhabilitas el acceso uniforme a nivel de bucket durante este tiempo, sucede 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 específicamente 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 mediante 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 sobre las métricas de Monitoring, consulta Métricas, series temporales y recursos.

Revisa la LCA de objetos predeterminada del bucket

Todos los buckets tienen una LCA de objetos predeterminada asociada a ellos. Los objetos nuevos agregados a un bucket tienen esta LCA de objetos predeterminada aplicada a ellos, a menos que se suministre explícitamente una LCA en el momento en que el objeto se agrega al 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

A fin de 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:

  • Para configurar las condiciones de IAM en un bucket, primero debes habilitar el acceso uniforme a nivel de bucket en ese bucket.

  • Para inhabilitar el acceso uniforme a nivel de bucket en un bucket, primero debes quitar todas las condiciones de IAM de la política de ese bucket. Si deseas obtener información sobre cómo ver y quitar las condiciones de la política de un depósito, consulta Usa las condiciones de IAM en depósitos. Ten en cuenta que el acceso uniforme a nivel de bucket no se puede inhabilitar si estuvo activo en un bucket durante 90 días consecutivos.

Próximos pasos