En esta página se describe cómo controlar el acceso a los segmentos y objetos mediante listas de control de acceso (LCA). Las LCA son un mecanismo que puedes usar para definir quién tiene acceso a tus segmentos y objetos, así como el nivel de acceso que tienen.
Consulta la descripción general de las LCAs para obtener más información sobre si debes usar LCAs para controlar el acceso a tus recursos.
Roles obligatorios
Para obtener los permisos que necesitas para crear y gestionar ACLs, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Administrador de Storage (roles/storage.admin
) en el segmento que contiene los objetos para los que quieres crear y gestionar ACLs.
Este rol predefinido contiene los permisos necesarios para crear y gestionar ACLs. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
storage.buckets.get
storage.buckets.list
- Este permiso solo es necesario para usar la Google Cloud consola para realizar las tareas de esta página.
storage.buckets.setIamPolicy
storage.buckets.update
storage.objects.get
storage.objects.getIamPolicy
storage.objects.setIamPolicy
storage.objects.update
También puedes obtener estos permisos con roles personalizados.
Para obtener información sobre cómo conceder roles en los contenedores, consulta Usar IAM con contenedores.
Definir o modificar LCAs
Consola
Ve al navegador de Cloud Storage en la Google Cloud consola.
Ir al navegador de Cloud StorageEn la lista de segmentos, haga clic en el nombre del segmento que contiene el objeto cuya lista de control de acceso quiere modificar.
Haga clic en el nombre del objeto para el que quiera definir o modificar las listas de control de acceso.
Haz clic en Editar acceso.
Se abrirá un cuadro de diálogo de permisos con la LCA actual del objeto.
Haz clic en Añadir entrada.
Elige el tipo de entidad al que quieres dar permiso.
Entity especifica el tipo de elemento que recibe el permiso (por ejemplo, un usuario o un grupo). Consulta Ámbitos de control de acceso para ver una lista de los valores admitidos de Entity.
Introduce un valor en Nombre.
Nombre: identifica un usuario, un grupo u otro tipo de entidad específicos. Consulta Ámbitos de control de acceso para ver una lista de los valores admitidos en Nombre.
Los campos Entidad y Nombre definen a quién se aplica el permiso.
Elige un valor en Acceso.
Access define el permiso que quieres establecer en el objeto. Consulta Permisos de control de acceso para ver una lista de los valores admitidos de Acceso.
Haz clic en Guardar.
Para saber cómo obtener información detallada sobre los errores de las operaciones de Cloud Storage en la consola, consulta la sección Solución de problemas. Google Cloud
Línea de comandos
Para añadir, modificar o quitar una concesión individual en un objeto, usa el comando objects update
con la marca correspondiente:
gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME FLAG
Donde:
BUCKET_NAME
es el nombre del segmento que contiene el objeto al que se aplica la modificación. Por ejemplo,example-travel-maps
.OBJECT_NAME
es el nombre del objeto al que se aplica la modificación. Por ejemplo,paris.jpg
.FLAG
es uno de los siguientes elementos:--add-acl-grant
, junto con la concesión que quieras añadir o modificar. Por ejemplo,--add-acl-grant=entity=user-jeffersonloveshiking@gmail.com,role=READER
.--remove-acl-grant
, junto con la entidad a la que quiere quitar el acceso. Por ejemplo,--remove-acl-grant=user-jeffersonloveshiking@gmail.com
.
Para sustituir todas las listas de control de acceso de un objeto, sigue estos pasos:
Define las ACLs en un archivo con formato JSON o YAML.
Por ejemplo, las siguientes listas de control de acceso conceden el permiso
OWNER
para el objetoparis.jpg
a los propietarios del proyecto867489160491
y al usuariojeffersonloveshiking@gmail.com
, así como el permisoREADER
paraparis.jpg
a los miembros del grupogs-announce
:[ { "entity": "project-owners-867489160491", "role": "OWNER", "projectTeam": { "projectNumber": "867489160491", "team": "owners" }, }, { "entity": "user-jeffersonloveshiking@gmail.com", "email": "jeffersonloveshiking@gmail.com", "role": "OWNER" }, { "entity": "group-gs-announce@googlegroups.com", "email": "gs-announce@googlegroups.com", "role": "READER" } ]
Usa el comando
objects update
con la marca--acl-file
:gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --acl-file=FILE_LOCATION
Donde:
BUCKET_NAME
es el nombre del segmento que contiene el objeto al que se aplican las ACLs. Por ejemplo,example-travel-maps
.OBJECT_NAME
es el nombre del objeto al que se aplican las LCA. Por ejemplo,paris.jpg
.FILE_LOCATION
es la ruta local al archivo que contiene las ACLs que has definido. Por ejemplo,Desktop/acls.json
.
Bibliotecas de cliente
C++
Para obtener más información, consulta la documentación de referencia de la API C++ de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
En el siguiente ejemplo se añade una LCA a un objeto:
En el siguiente ejemplo se elimina una LCA de un objeto:
C#
Para obtener más información, consulta la documentación de referencia de la API C# de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
En el siguiente ejemplo se añade una LCA a un objeto:
En el siguiente ejemplo se elimina una LCA de un objeto:
Go
Para obtener más información, consulta la documentación de referencia de la API Go de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
En el siguiente ejemplo se añade una LCA a un objeto:
En el siguiente ejemplo se elimina una LCA de un objeto:
Java
Para obtener más información, consulta la documentación de referencia de la API Java de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
En el siguiente ejemplo se añade una LCA a un objeto:
En el siguiente ejemplo se elimina una LCA de un objeto:
Node.js
Para obtener más información, consulta la documentación de referencia de la API Node.js de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
En el siguiente ejemplo se añade una LCA a un objeto:
En el siguiente ejemplo se elimina una LCA de un objeto:
PHP
Para obtener más información, consulta la documentación de referencia de la API PHP de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
En el siguiente ejemplo se añade una LCA a un objeto:
En el siguiente ejemplo se elimina una LCA de un objeto:
Python
Para obtener más información, consulta la documentación de referencia de la API Python de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
En el siguiente ejemplo se añade una LCA a un objeto:
En el siguiente ejemplo se elimina una LCA de un objeto:
Ruby
Para obtener más información, consulta la documentación de referencia de la API Ruby de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
En el siguiente ejemplo se añade una LCA a un objeto:
En el siguiente ejemplo se elimina una LCA de un objeto:
APIs REST
API JSON
Cuando creas un objeto, puedes especificar la propiedad acl[]
en el cuerpo de la solicitud o el parámetro de consulta predefinedAcl
en una solicitud insert. En el caso de un objeto, especifica la propiedad acl[]
o el parámetro de consulta predefinedAcl
en una solicitud patch o update.
Para ver la definición de la propiedad ACL del objeto, consulta el recurso ObjectAccessControls
.
Define las ACLs en un archivo JSON.
Por ejemplo, si la LCA concede a los propietarios del proyecto
867489160491
y al usuariojeffersonloveshiking@gmail.com
OWNER
permiso, además de conceder a los miembros del grupogs-announce
READER
permiso, podrías tener un archivo llamadoacls.json
con el siguiente contenido:{ "acl": [ { "entity": "project-owners-867489160491", "role": "OWNER", "projectTeam": { "projectNumber": "867489160491", "team": "owners" } }, { "entity": "user-jeffersonloveshiking@gmail.com", "role": "OWNER", "email": "jeffersonloveshiking@gmail.com" }, { "entity": "group-gs-announce@googlegroups.com", "role": "READER", "email": "gs-announce@googlegroups.com" } ] }
Envía una solicitud patch con el archivo JSON y especifica el objeto en el que se van a definir las ACLs.
Por ejemplo, el siguiente comando curl
aplica una carga útil de JSON del documento acls.json
a un objeto llamado paris.jpg
en el contenedor example-travel-maps
:
curl -X PATCH --data @acls.json -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/storage/v1/b/example-travel-maps/o/paris.jpg
API XML
En la API XML, las LCAs se gestionan en formato XML. Debes adjuntar un documento XML al cuerpo de las solicitudes para cambiar las LCAs de segmentos y objetos. Se devuelve un documento XML cuando obtienes las LCA de un segmento y de un objeto. El documento XML contiene las entradas de LCA de los objetos o los contenedores individuales.
Después de crear un contenedor con una solicitud
PUT
Bucket, usa una segunda solicitud PUT Bucket con el parámetro?acl
para cambiar la LCA del contenedor.Después de subir un objeto con una solicitud
PUT
Object, cambia la lista de control de acceso con otra solicitud PUT mediante el parámetro?acl
o el encabezado de solicitudx-googl-acl
.
Por ejemplo, el siguiente comando curl
aplica una carga útil XML del documento acls.xml
a un objeto llamado paris.jpg
en el contenedor example-travel-maps
:
curl -X PUT --data-binary @acls.xml \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/example-travel-maps/paris.jpg?acl
Utiliza la siguiente sintaxis de LCA para el documento XML:
Elemento | Descripción |
---|---|
AccessControlList |
Contenedor de elementos Entries y Owner . |
Owner |
Contenedor de elementos DisplayName y ID . Este elemento no es obligatorio para los objetos, ya que siempre son propiedad del usuario que los ha subido. Este elemento se usa cuando se utiliza la sintaxis de LCA de Amazon S3 en un caso de migración. Amazon Simple Storage Service y Amazon S3 son marcas de Amazon.com, Inc. o sus filiales en Estados Unidos u otros países. |
ID |
ID de Cloud Storage del propietario del segmento. |
DisplayName |
No se ha implementado. El valor siempre es una cadena vacía. |
Entries |
Contenedor para cero o más elementos Entry . |
Entry |
Contenedor de elementos Scope y Permission . Un elemento Entry solo puede contener un elemento Scope y un elemento Permission . |
Scope |
Contenedor de un elemento ID , EmailAddress o Domain que define el ámbito de la LCA. Este elemento debe tener un atributo type que contenga uno de los siguientes valores: UserByID , UserByEmail , GroupByID , GroupByEmail , GroupByDomain , AllUsers o AllAuthenticatedUsers . |
ID |
Identificador del beneficiario cuando la entrada de permiso se especifica por ID. |
EmailAddress |
Identificador de correo del beneficiario cuando la entrada de permiso se especifica por correo. |
Domain |
Identificador de dominio del beneficiario cuando la entrada de permiso se especifica por dominio. |
Name |
Elemento opcional que se puede especificar o que se puede añadir automáticamente si el ámbito es UserByEmail o GroupByEmail . |
Permission |
El permiso concedido READ , WRITE o FULL_CONTROL . |
Cuando trabajes con listas de control de acceso mediante la API XML, ten en cuenta lo siguiente:
- Solo puedes usar el formato XML descrito anteriormente.
No puedes definir ámbitos duplicados.
Puede tener muchas entradas en su archivo XML de LCA, pero no puede tener entradas con ámbitos duplicados. Por ejemplo, no puede tener dos entradas con el mismo elemento de ámbito
jane@example.com
.
En el siguiente ejemplo se muestran diferentes entradas de ACL de un segmento:
<?xml version="1.0" encoding="UTF-8"?> <AccessControlList> <Owner> <ID>00b4903a9721...</ID> </Owner> <Entries> <Entry> <Scope type="GroupById"> <ID>00b4903a9722...</ID> </Scope> <Permission>FULL_CONTROL</Permission> </Entry> <Entry> <Scope type="GroupByDomain"> <Domain>example.com</Domain> </Scope> <Permission>READ</Permission> </Entry> <Entry> <Scope type="GroupByEmail"> <EmailAddress>gs-announce@googlegroups.com</EmailAddress> </Scope> <Permission>READ</Permission> </Entry> <Entry> <Scope type="UserByEmail"> <EmailAddress>jeffersonloveshiking@gmail.com</EmailAddress> <Name>Jefferson</Name> </Scope> <Permission>FULL_CONTROL</Permission> </Entry> <Entry> <Scope type="AllUsers"/> <Permission>READ</Permission> </Entry> <Entry> <Scope type="AllAuthenticatedUsers"/> <Permission>READ</Permission> </Entry> </Entries> </AccessControlList>
Definir el elemento Name en el XML de la LCA
Cuando recupera una lista de control de acceso de un contenedor o un objeto, puede que vea un elemento <Name>
adicional añadido a algunas de sus entradas. Por ejemplo, puede que veas una entrada como la siguiente:
<Entry> <Scope type="UserByEmail"> <EmailAddress>jeffersonloveshiking@gmail.com</EmailAddress> <Name>Jefferson</Name> </Scope> <Permission>FULL_CONTROL</Permission> </Entry>
Estos elementos <Name>
opcionales se rellenan en dos casos:
Cuando las ACLs del segmento o del objeto incluyen
<Name>
como elemento.Cuando definas las LCA, puedes incluir el elemento
<Name>
en tus entradas de LCA. Puede proporcionar cualquier valor en el elemento<Name>
y Cloud Storage recordará estos valores hasta que se elimine o se sustituya la LCA. Este método puede ser útil si usas identificadores que no son fáciles de identificar.Cuando un ámbito
UserByEmail
oGroupByEmail
contiene un perfil público de Google.Si usas alguno de estos ámbitos, pero no proporcionas un elemento
<Name>
, Cloud Storage comprueba si el usuario o el grupo de Google asociado a la dirección de correo tiene un perfil público de Google con un nombre público. Si es así, Cloud Storage rellena automáticamente el elemento<Name>
con el nombre público.
Aplicar una LCA predefinida
En lugar de especificar toda la LCA de una entrada cada vez, como se muestra arriba, puedes usar una LCA predefinida, que aplicará automáticamente una serie de entradas personalizadas para un caso concreto. Puedes aplicar una lista de control de acceso predefinida a un contenedor o a un objeto mediante la CLI de Google Cloud, la API JSON o la API XML.
En objetos nuevos
Para aplicar una LCA predefinida a un objeto durante la subida del objeto, sigue estos pasos:
Consola
No puedes aplicar una ACL predefinida mediante la Google Cloud consola. Usa gcloud storage
en su lugar.
Línea de comandos
Usa el comando gcloud storage cp
con la marca --predefined-acl
:
gcloud storage cp OBJECT gs://BUCKET_NAME --predefined-acl=PREDEFINED_ACL
Por ejemplo, para aplicar la LCA predefinida bucketOwnerRead
al subir un objeto paris.jpg
a un segmento example-travel-maps
:
gcloud storage cp paris.jpg gs://example-travel-maps --predefined-acl=bucketOwnerRead
APIs REST
API JSON
Utilice el parámetro de cadena de consulta predefinedAcl
en una solicitud insert para aplicar la lista de control de acceso predefinida.
Por ejemplo, para aplicar la LCA predefinida bucketOwnerRead
al subir un objeto paris.jpg
a un segmento example-travel-maps
:
curl -X POST --data-binary @paris.jpg -H "Content-Type: image/jpeg" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/upload/storage/v1/b/example-travel-maps/o?name=paris.jpg&predefinedAcl=bucketOwnerRead"
API XML
Usa el encabezado x-goog-acl
en una solicitud Put Object para aplicar la LCA predefinida.
Por ejemplo, para aplicar la LCA predefinida bucket-owner-read
al subir un objeto paris.jpg
a un segmento example-travel-maps
:
curl -X PUT --upload-file paris.jpg -H "x-goog-acl: bucket-owner-read" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/example-travel-maps/paris.jpg
En segmentos u objetos ya creados
También puedes aplicar una LCA predefinida a un segmento u objeto que ya tengas, lo que resulta útil si quieres cambiar de una LCA predefinida a otra o si quieres actualizar las LCA personalizadas a una LCA predefinida.
Consola
No puedes aplicar una ACL predefinida mediante la Google Cloud consola. Usa gcloud storage
en su lugar.
Línea de comandos
Usa el comando objects update
con la marca --predefined-acl
:
gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --predefined-acl=PREDEFINED_ACL_NAME
Por ejemplo, para aplicar la LCA predefinida private
al objeto paris.jpg
del segmento example-travel-maps
, haz lo siguiente:
gcloud storage objects update gs://example-travel-maps/paris.jpg --predefined-acl=private
APIs REST
API JSON
Usa el parámetro de cadena de consulta predefinedAcl
y especifica una propiedad acl
vacía en una solicitud patch para aplicar la ACL predefinida.
Por ejemplo, para aplicar la LCA predefinida private
al objeto paris.jpg
del segmento example-travel-maps
, haz lo siguiente:
curl -X PATCH --data '{"acl": []}' -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/storage/v1/b/example-travel-maps/o/paris.jpg?predefinedAcl=private
API XML
Utilice el encabezado x-goog-acl
con el parámetro de cadena de consulta acl
en una solicitud Put Object, pero no incluya ningún documento XML en la solicitud.
Por ejemplo, para aplicar la LCA predefinida private
al objeto paris.jpg
del segmento example-travel-maps
, haz lo siguiente:
curl -X PUT -H "Content-Length: 0" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-acl: private" \ https://storage.googleapis.com/example-travel-maps/paris.jpg?acl
Definir LCAs de objetos predeterminadas
Para no tener que definir las LCA cada vez que crees un objeto, puedes definir una LCA de objeto predeterminada en un segmento. Después de hacerlo, todos los objetos nuevos que se añadan a ese segmento y que no tengan una ACL aplicada explícitamente tendrán la ACL predeterminada. Por ejemplo, puede especificar que solo un grupo de usuarios determinado tenga acceso a la mayoría de los objetos de un determinado contenedor. Puede cambiar la LCA de objeto predeterminada y, a continuación, añadir objetos al segmento. Estos objetos añadidos tienen automáticamente aplicada la LCA de objeto predeterminada que hayas especificado. Sin embargo, puedes asignar diferentes LCA a objetos específicos, en cuyo caso esos objetos no tendrán aplicada la LCA predeterminada.
Para ver y cambiar la LCA de objeto predeterminada de un segmento, haz lo siguiente:
Consola
No puedes definir LCA de objeto predeterminadas con la Google Cloud consola. Usa gcloud storage
en su lugar.
Línea de comandos
Usa el comando
buckets describe
con la marca--format
para obtener la LCA de objeto predeterminada del segmento:gcloud storage buckets describe gs://BUCKET_NAME --format="default(default_acl)"
Donde
BUCKET_NAME
es el nombre del cubo cuya LCA de objeto predeterminada quieres ver. Por ejemplo,my-bucket
.Usa el comando
buckets update
con la marca que quieras para modificar la LCA de objeto predeterminada del segmento:gcloud storage buckets update gs://BUCKET_NAME FLAG
Donde:
BUCKET_NAME
es el nombre del contenedor cuya LCA de objeto predeterminada quieres modificar. Por ejemplo,my-bucket
.FLAG
es uno de los siguientes elementos:--add-default-object-acl-grant
y una concesión que quieras añadir a la LCA de objeto predeterminada general del segmento.--default-object-acl-file
y la ruta a un archivo local que define una nueva LCA de objeto predeterminada para el segmento.--predefined-default-object-acl
y el nombre de una LCA de objeto predefinida con la que quieras sustituir la LCA de objeto predeterminada del segmento.--remove-default-object-acl-grant
y una entidad que quieras quitar de la LCA de objeto predeterminada general del segmento.
Bibliotecas de cliente
C++
Para obtener más información, consulta la documentación de referencia de la API C++ de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
En el siguiente ejemplo se añade una LCA de objeto predeterminada a un segmento:
En el siguiente ejemplo se elimina una LCA de objeto predeterminada de un segmento:
C#
Para obtener más información, consulta la documentación de referencia de la API C# de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
En el siguiente ejemplo se imprime la LCA de objeto predeterminada de un segmento:
En el siguiente ejemplo se añade una LCA de objeto predeterminada a un segmento:
En el siguiente ejemplo se elimina una LCA de objeto predeterminada de un segmento:
Go
Para obtener más información, consulta la documentación de referencia de la API Go de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
En el siguiente ejemplo se añade una LCA de objeto predeterminada a un segmento:
En el siguiente ejemplo se elimina una LCA de objeto predeterminada de un segmento:
Java
Para obtener más información, consulta la documentación de referencia de la API Java de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
En el siguiente ejemplo se añade una LCA de objeto predeterminada a un segmento:
En el siguiente ejemplo se elimina una LCA de objeto predeterminada de un segmento:
Node.js
Para obtener más información, consulta la documentación de referencia de la API Node.js de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
En el siguiente ejemplo se añade una LCA de objeto predeterminada a un segmento:
En el siguiente ejemplo se elimina una LCA de objeto predeterminada de un segmento:
PHP
Para obtener más información, consulta la documentación de referencia de la API PHP de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
En el siguiente ejemplo se añade una LCA de objeto predeterminada a un segmento:
En el siguiente ejemplo se elimina una LCA de objeto predeterminada de un segmento:
Python
Para obtener más información, consulta la documentación de referencia de la API Python de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
En el siguiente ejemplo se añade una LCA de objeto predeterminada a un segmento:
En el siguiente ejemplo se elimina una LCA de objeto predeterminada de un segmento:
Ruby
Para obtener más información, consulta la documentación de referencia de la API Ruby de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
En el siguiente ejemplo se añade una LCA de objeto predeterminada a un segmento:
En el siguiente ejemplo se elimina una LCA de objeto predeterminada de un segmento:
APIs REST
API JSON
Recupera la LCA de objeto predeterminada con una solicitud GET. Por ejemplo:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?projection=full
Usa una solicitud patch para sustituir la LCA de objeto predeterminada. Por ejemplo, la siguiente solicitud sustituye la LCA de objeto predeterminada por la LCA especificada en
defacls.json
para un segmentoexample-travel-maps
:curl -X PATCH --data @defacls.json -H "Content-Type: application/json" -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/storage/v1/b/example-travel-maps
Ejemplo de
defacls.json
:{ "defaultObjectAcl": [ { "email": "jeffersonloveshiking@gmail.com", "entity": "user-jeffersonloveshiking@gmail.com", "role": "READER" } ] }
API XML
Recupera la LCA de objeto predeterminada con una solicitud
GET
acotada a tu segmento y al parámetro?defaultObjectAcl
. Por ejemplo:curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/BUCKET_NAME?defaultObjectAcl
Usa una solicitud
PUT
con el ámbito de tu segmento y el parámetro?defaultObjectAcl
para sustituir la LCA de objeto predeterminada por la LCA especificada enacls.xml
. Por ejemplo:curl -X PUT --data-binary @acls.xml -H "Authorization: Bearer $(gcloud auth print-access-token)" \ http://storage.googleapis.com/BUCKET_NAME?defaultObjectAcl
Ejemplo de
acls.xml
:<AccessControlList> <Entries> <Entry> <Permission>
FULL_CONTROL
</Permission> <Scope type="UserByEmail"> <EmailAddress>jeffersonloveshiking@gmail.com</EmailAddress> </Scope> </Entry> </Entries> </AccessControlList>
La sintaxis de las listas de control de acceso se explica en el artículo Definir listas de control de acceso. También puede especificar una LCA predefinida como LCA de objeto predeterminada.
Para definir una LCA predefinida como LCA de objeto predeterminada de un segmento, haz lo siguiente:
Consola
No puedes definir LCA de objeto predeterminadas con la Google Cloud consola. Usa gcloud storage
en su lugar.
Línea de comandos
Usa el comando buckets update
con la marca --predefined-default-object-acl
:
gcloud storage buckets update gs://BUCKET_NAME --predefined-default-object-acl=PREDEFINED_ACL
Donde:
BUCKET_NAME
es el nombre del contenedor cuya LCA de objeto predeterminada quieres modificar. Por ejemplo,my-bucket
.PREDEFINED_ACL
es el nombre de una LCA predefinida válida. Por ejemplo,projectPrivate
.
APIs REST
API JSON
Usa una solicitud PUT y el parámetro predefinedAcl
.
Por ejemplo:
curl -X PUT -H "Content-Length: 0" -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?predefinedAcl=private
API XML
Usa una solicitud PUT
con el ámbito de tu contenedor, el parámetro ?defaultObjectAcl
y el encabezado x-goog-acl
.
Por ejemplo:
curl -X PUT -H "x-goog-acl: project-private" -H "Content-Length: 0" -H "Authorization: Bearer $(gcloud auth print-access-token)" \ http://storage.googleapis.com/BUCKET_NAME?defaultObjectAcl
LCAs de objeto predeterminadas para los segmentos recién creados:
En los ejemplos siguientes se muestran las listas de control de acceso de objetos predeterminadas que se aplican automáticamente a los contenedores recién creados cuando no especifica sus propias listas de control de acceso de objetos predeterminadas como parte de la solicitud. Para comprobar si se han cambiado las LCA de objeto predeterminadas de tu segmento, compara las LCA de objeto predeterminadas actuales de tu segmento con los ejemplos que se muestran a continuación.
Consola
No puedes trabajar con las LCA de objeto predeterminadas mediante la consola Google Cloud .
En su lugar, usa gcloud storage
.
Línea de comandos
En el ejemplo siguiente, el ID de proyecto es "123412341234", pero el tuyo será diferente.
defaultObjectAcl: – entity: project-owners-123412341234 etag: CAE= kind: storage#objectAccessControl projectTeam: projectNumber: '123412341234' team: owners role: OWNER – entity: project-editors-123412341234 etag: CAE= kind: storage#objectAccessControl projectTeam: projectNumber: '123412341234' team: editors role: OWNER – entity: project-viewers-123412341234 etag: CAE= kind: storage#objectAccessControl projectTeam: projectNumber: '123412341234' team: viewers role: READER
APIs REST
API JSON
En el ejemplo siguiente, el ID de proyecto es "123412341234", pero el tuyo será diferente.
"defaultObjectAcl": [ { "kind": "storage#objectAccessControl", "entity": "project-owners-123412341234", "role": "OWNER", "projectTeam": { "projectNumber": "123412341234", "team": "owners" } }, { "kind": "storage#objectAccessControl", "entity": "project-editors-123412341234", "role": "OWNER", "projectTeam": { "projectNumber": "123412341234", "team": "editors" } }, { "kind": "storage#objectAccessControl", "entity": "project-viewers-123412341234", "role": "READER", "projectTeam": { "projectNumber": "123412341234", "team": "viewers" } } ]
API XML
En el ejemplo siguiente, los IDs de rol de proyecto empiezan por "00b4903a97..."; los IDs de tu proyecto serán diferentes.
<?xml version='1.0' encoding='UTF-8'?> <AccessControlList> <Entries> <Entry> <Scope type='GroupById'> <ID>00b4903a9721...</ID> </Scope> <Permission>FULL_CONTROL</Permission> </Entry> <Entry> <Scope type='GroupById'> <ID>00b4903a9722...</ID> </Scope> <Permission>FULL_CONTROL</Permission> </Entry> <Entry> <Scope type='GroupById'> <ID>00b4903a9723...</ID> </Scope> <Permission>READ</Permission> </Entry> </Entries> </AccessControlList>
Ten en cuenta que la LCA de objeto predeterminada de un segmento recién creado es equivalente a la LCA projectPrivate
predefinida.
Obtener LCAs
Para obtener la ACL de un recurso, sigue estos pasos:
Consola
Ve al navegador de Cloud Storage en la Google Cloud consola.
Ir al navegador de Cloud StorageDesplázate hasta el objeto cuya lista de control de acceso quieras ver.
En el menú desplegable del objeto, selecciona Editar acceso.
Debería aparecer un cuadro de diálogo con los permisos del objeto.
Para saber cómo obtener información detallada sobre los errores de las operaciones de Cloud Storage en la consola, consulta la sección Solución de problemas. Google Cloud
Línea de comandos
Usa el comando
objects describe
con la marca--format
para obtener la LCA de un objeto:gcloud storage objects describe gs://BUCKET_NAME/OBJECT_NAME --format="default(acl)"
Donde:
BUCKET_NAME
es el nombre del contenedor que contiene el objeto cuya ACL quieres ver. Por ejemplo,my-bucket
.OBJECT_NAME
es el nombre del objeto cuya ACL quieres ver. Por ejemplo,paris.jpg
.
Bibliotecas de cliente
C++
Para obtener más información, consulta la documentación de referencia de la API C++ de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
En el siguiente ejemplo se obtiene la LCA de un objeto:
C#
Para obtener más información, consulta la documentación de referencia de la API C# de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
En el siguiente ejemplo se obtiene la LCA de un objeto:
Go
Para obtener más información, consulta la documentación de referencia de la API Go de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
En el siguiente ejemplo se obtiene la LCA de un objeto:
Java
Para obtener más información, consulta la documentación de referencia de la API Java de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
En el siguiente ejemplo se obtiene la LCA de un objeto:
Node.js
Para obtener más información, consulta la documentación de referencia de la API Node.js de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
En el siguiente ejemplo se obtiene la LCA de un objeto:
PHP
Para obtener más información, consulta la documentación de referencia de la API PHP de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
En el siguiente ejemplo se obtiene la LCA de un objeto:
Python
Para obtener más información, consulta la documentación de referencia de la API Python de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
En el siguiente ejemplo se obtiene la LCA de un objeto:
Ruby
Para obtener más información, consulta la documentación de referencia de la API Ruby de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
En el siguiente ejemplo se obtiene la LCA de un objeto:
APIs REST
API JSON
Asegúrate de que tienes permiso
OWNER
en el objeto.Recupera la LCA del objeto con una solicitud
GET
.La ACL del objeto se devuelve en formato JSON, adjunta al cuerpo de la respuesta.
Por ejemplo, para devolver la lista de control de acceso del objeto paris.jpg
del segmento example-travel-maps
, haz lo siguiente:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/storage/v1/b/example-travel-maps/o/paris.jpg?projection=full
Deberías ver una respuesta similar a esta:
{ "kind": "storage#object", "id": "example-travel-maps/paris.jpg/1412805837131000", "selfLink": "https://www.googleapis.com/storage/v1/b/example-travel-maps/o/paris.jpg", "name": "paris.jpg", "bucket": "example-travel-maps", ... "acl": [ { ... "entity": "project-owners-867489160491", "role": "OWNER", "projectTeam": { "projectNumber": "867489160491", "team": "owners" }, ... }, { ... "entity": "user-jeffersonloveshiking@gmail.com", "role": "OWNER", "email": "jeffersonloveshiking@gmail.com", ... }, { ... "entity": "group-gs-announce@googlegroups.com", "role": "READER", "email": "gs-announce@googlegroups.com", ... } ], "owner": { "entity": "user-jeffersonloveshiking@gmail.com" }, ... }
También puede usar el método GET
del recurso objectAccessControls
para devolver entradas individuales en la LCA de un objeto.
API XML
Asegúrate de que tienes permiso
FULL_CONTROL
en el segmento o el objeto.Para obtener la LCA de un cubo o un objeto, utilice el parámetro de cadena de consulta
acl
en una solicitud GET Object.
Las ACLs se describen en XML y se adjuntan al cuerpo de la respuesta.
Por ejemplo, para devolver la lista de control de acceso del objeto paris.jpg
del segmento example-travel-maps
, haz lo siguiente:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/example-travel-maps/paris.jpg?acl
Deberías ver una respuesta similar a esta:
<?xml version="1.0" encoding="UTF-8"?> <AccessControlList> <Owner> <ID>84fac329bceSAMPLE777d5d22b8SAMPLE77d85ac2SAMPLE2dfcf7c4adf34da46</ID> <Name>Owner Name</Name> </Owner> <Entries> <Entry> <Scope type="UserById"> <ID>84fac329bceSAMPLE777d5d22b8SAMPLE77d85ac2SAMPLE2dfcf7c4adf34da46</ID> <Name>Name</Name> </Scope> <Permission>FULL_CONTROL</Permission> </Entry> <Entry> <Scope type="UserByEmail"> <EmailAddress>jeffersonloveshiking@gmail.com</EmailAddress> <Name>Jefferson</Name> </Scope> <Permission>FULL_CONTROL</Permission> </Entry> <Entry> <Scope type="GroupByEmail"> <EmailAddress>gs-announce@googlegroups.com</EmailAddress> </Scope> <Permission>READ</Permission> </Entry> </Entries> </AccessControlList>
También puedes usar el método JSON GET
del recurso ObjectAccessControls
para devolver una entrada de ACL específica.
Siguientes pasos
- Más información sobre las listas de control de acceso
- Consulta cómo simplificar el control de acceso con el acceso uniforme a nivel de segmento.
- Consulta las prácticas recomendadas para usar listas de control de acceso.