Acceso uniforme a nivel de depósito

En esta página se describe el acceso uniforme a nivel de depósito, que te permite controlar de manera uniforme el acceso a tus recursos de Cloud Storage. Cuando se habilita en un depósito, solo los permisos de nivel de depósito de Cloud Identity and Access Management (Cloud IAM) otorgan acceso a ese depósito y a los objetos que contiene; las Listas de control de acceso (LCA) están inhabilitadas y el acceso otorgado por las LCA se revoca. Para obtener una guía sobre cómo usar esta función, consulta la página sobre cómo usar el acceso uniforme a nivel de depósito.

Descripción general

Cloud Storage ofrece dos sistemas para otorgarles permiso a los usuarios a fin de acceder a tus depósitos y objetos: Cloud Identity and Access Management (Cloud 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. Cloud IAM se usa en todo Google Cloud y te permite otorgar permisos específicos a nivel de proyecto y de depósito. Solo Cloud Storage usa las LCA que tienen menos opciones de permiso, pero te autorizan a otorgar permisos por objeto.

Para admitir un sistema de permisos uniforme, Cloud Storage tiene acceso uniforme a nivel de depósito. El uso de esta función inhabilita las LCA para todos los recursos de Cloud Storage: el acceso a los recursos de Cloud Storage se otorga exclusivamente mediante Cloud IAM.

¿Deberías usar el acceso uniforme a nivel de depósito?

Usa el acceso uniforme a nivel de depósito si se cumplen algunas de las siguientes condiciones:

  • Deseas controlar el acceso a los recursos de Cloud Storage mediante un único sistema de permiso.

  • Deseas tener una experiencia de control de acceso coherente en todos tus recursos de Google Cloud.

  • Tienes muchos objetos en tu depósito y no deseas administrar el acceso a cada uno de ellos de manera individual.

  • Deseas usar las funciones de seguridad de Google Cloud, como Cloud Audit Logs y el uso compartido restringido al dominio, que solo realizan un seguimiento del acceso otorgado mediante las políticas de Cloud IAM, no de las LCA.

  • No deseas que quien sube un objeto siempre tenga el control total de él.

No uses el acceso uniforme a nivel de depósito si deseas realizar una de las siguientes acciones:

  • Deseas otorgar acceso a objetos específicos en un depósito mediante LCA heredadas.

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

Restricciones

La siguiente restricción se aplica cuando se usa el acceso uniforme a nivel de depósito:

  • Ciertos servicios de Google Cloud que exportan a Cloud Storage no pueden exportar a depósitos que tengan habilitado el acceso uniforme a nivel de depósito. Entre estos servicios, se incluyen los siguientes:

    Stackdriver, Cloud Audit Logs y Datastore.

  • No puedes usar la API de XML para verificar el estado del acceso uniforme a nivel de depósito, habilitarlo o inhabilitarlo.

  • No puedes usar la API de XML a fin de ver o establecer permisos para depósitos con el acceso uniforme a nivel de depósito habilitado.

  • El valor de Cache-Control se establece en private de forma predeterminada para los objetos de acceso público en depósitos uniformes habilitados para el acceso a nivel de depósito, a menos que establezcas de forma explícita el valor como public.

Cómo es el comportamiento cuando está habilitado

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

Una vez habilitado, finaliza la siguiente funcionalidad de LCA:

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

  • Las solicitudes a la API de JSON realizadas con los métodos BucketAccessControls, DefaultObjectAccessControls y ObjectAccessControls fallan con errores 400 Bad Request.

  • Las solicitudes a la API de JSON para una proyección completa de metadatos de objetos o depósitos 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 depósito de acceso uniforme a nivel de depósito es la fuente y cuando es el destino).

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

Además, si habilitas el acceso uniforme a nivel de depósito como parte de la creación de un depósito nuevo, el depósito recibe funciones adicionales de Cloud IAM de forma automática. Con este comportamiento, se mantienen los permisos que los objetos heredaron de las LCA de objetos predeterminadas del depósito. Si habilitas el acceso uniforme a nivel de depósito en un depósito 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 depósito.

Cómo es el comportamiento cuando se revierte

Para admitir la capacidad de inhabilitar el acceso uniforme a nivel de depósito y volver a usar las LCA, Cloud Storage guarda las LCA existentes durante 90 días. Si inhabilitas el acceso uniforme a nivel de depósito durante este tiempo, sucede lo siguiente:

  • Los objetos recuperan sus LCA guardadas.

  • Cualquier objeto que se agregue al depósito después de habilitar el acceso uniforme a nivel de depósito obtendrá LCA de acuerdo con las LCA de objeto predeterminadas que usa el depósito.

Consideraciones para migrar un depósito existente

Cuando habilitas el acceso uniforme a nivel de depósito en un depósito 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 Cloud IAM. En esta sección se describen algunos pasos que debes seguir cuando migres un depósito al acceso uniforme a nivel de depósito. Ten en cuenta que, como las LCA y Cloud IAM están sincronizados 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 de nivel de depósito sobreexpone los datos

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

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

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

Comprueba el uso de LCA de objetos

Cuando migres al acceso uniforme a nivel de depósito, debes comprobar si se accede a los objetos del depósito mediante las LCA que se les aplican. Para comprobar esto, Stackdriver tiene una métrica que hace un seguimiento del uso de LCA. Si esta métrica indica que los usuarios o servicios dependen de las LCA para acceder a tus objetos, debes asignar equivalentes de Cloud IAM al depósito antes de habilitar el acceso uniforme a nivel de depósito. Para obtener una guía y poder comprobar el uso de LCA en Stackdriver, consulta la sección sobre cómo comprobar el uso de LCA.

Usa esta métrica para determinar si habilitar el acceso uniforme a nivel de depósito interrumpiría tu 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 depósito, dividida por el tipo de operación de LCA y depósito.

Una operación importante de LCA para examinar es OBJECT_ACCESS_REQUIRED_OBJECT_ACL:

  • Si este número es cero, no se requirieron LCA de nivel de objeto para acceder a los objetos en las últimas 6 semanas. Las políticas de Cloud IAM cubren los permisos necesarios a nivel de depósito o de 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 Cloud IAM equivalentes antes de habilitar el acceso uniforme a nivel de depósito.

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

Comprueba la LCA de objetos predeterminada del depósito

Todos los depósitos tienen una LCA de objetos predeterminada asociada a ellos. Los objetos nuevos agregados a un depósito 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 depósito.

Antes de habilitar el acceso uniforme a nivel de depósito, revisa la LCA de objeto predeterminada que tiene el depósito. Considera si deseas otorgar los permisos asociados con la LCA de objeto predeterminada después de habilitar el acceso uniforme a nivel de depósito. De ser así, asigna equivalentes de Cloud IAM al depósito.

Asigna equivalentes de Cloud IAM para LCA de objetos

Las LCA de objetos pueden otorgar el acceso que Cloud 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 correspondientes de Cloud IAM.

Permiso para LCA de objetos Función equivalente de Cloud IAM
READER roles/storage.legacyObjectReader
OWNER roles/storage.legacyObjectOwner

Próximos pasos