En esta página, se describe cómo controlar el acceso a depósitos y objetos con Listas de control de acceso (LCA). Las LCA son un mecanismo que puedes usar para determinar quién tiene acceso a tus depósitos y objetos y qué nivel de acceso tienen.
Consulta la descripción general de LCA para obtener más información sobre si debes usar las LCA para controlar el acceso a tus recursos.
Roles obligatorios
Para obtener los permisos que te permitan crear y administrar las LCA, pídele a tu administrador que te otorgue el rol de IAM de administrador de almacenamiento (roles/storage.admin
) en el bucket que contiene los objetos para los que quieres crear y administrar las LCA.
Este rol predefinido contiene los permisos necesarios para crear y administrar las LCA. Para ver los permisos exactos que son necesarios, expande la sección Permisos necesarios:
Permisos necesarios
storage.buckets.get
storage.buckets.list
- Este permiso solo es necesario para usar la consola de Google Cloud para hacer la tarea en 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 más información sobre cómo otorgar roles en los buckets, consulta Usa IAM con buckets.
Establece o modifica las LCA
Console
Ve al navegador de Cloud Storage en la consola de Google Cloud.
Ir al navegador de Cloud StorageEn la lista de buckets, haz clic en el nombre del bucket que contiene el objeto cuya LCA deseas modificar.
Haz clic en el nombre del objeto para el que deseas establecer o modificar las LCA.
Haz clic en acceso de edición.
Se abre un cuadro de diálogo de permisos con la LCA actual del objeto.
Haz clic en + Agregar entrada.
Elige el tipo de Entity (Entidad) a la que quieres darle permiso.
Entidad especifica el tipo de entidad que obtiene el permiso (por ejemplo, un usuario o un grupo). Consulta los Alcances de control de acceso a fin de obtener una lista de los valores admitidos para Entidad.
Ingresa un valor en Name (Nombre).
Nombre identifica a un usuario, grupo o algún otro tipo de entidad específica. Consulta los Alcances de control de acceso a fin de obtener una lista de los valores admitidos para Nombre.
Juntos, Entidad y Nombre definen a quién se le aplica el permiso.
Elige un valor en Access (Acceso).
Acceso define el permiso que quieres establecer en el objeto. Consulta los Permisos de control de acceso a fin de obtener una lista de los valores admitidos para Acceso.
Haz clic en Guardar.
Para obtener información sobre cómo ver detalles de errores acerca de operaciones fallidas de Cloud Storage en la consola de Google Cloud, consulta Solución de problemas.
Línea de comandos
Para agregar, 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 bucket 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 una de las siguientes opciones:--add-acl-grant
, junto con la concesión que deseas agregar o modificar. Por ejemplo,--add-acl-grant=entity=user-jane@gmail.com,role=READER
.--remove-acl-grant
, junto con la entidad cuyo acceso deseas quitar. Por ejemplo,--remove-acl-grant=user-jane@gmail.com
.
Para reemplazar todas las LCA de un objeto, haz lo siguiente:
Define las LCA en un archivo de formato JSON o YAML.
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 bucket que contiene el objeto al que se aplican las LCA. 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 de acceso local al archivo que contiene las LCA que definiste. Por ejemplo,Desktop/acls.json
El contenido de un archivo de LCA de ejemplo se muestra a continuación. Estas LCA otorgan a los propietarios del proyecto 867489160491
y al usuario jane@gmail.com
el permiso OWNER
para el objeto paris.jpg
, y otorgan a los miembros del grupo gs-announce
el permiso READER
:
[ { "entity": "project-owners-867489160491", "role": "OWNER", "projectTeam": { "projectNumber": "867489160491", "team": "owners" }, }, { "entity": "user-jane@gmail.com", "email": "jane@gmail.com", "role": "OWNER" }, { "entity": "group-gs-announce@googlegroups.com", "email": "gs-announce@googlegroups.com", "role": "READER" } ]
Bibliotecas cliente
C++
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C++.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
En el siguiente ejemplo, se agrega una LCA a un objeto:
En el siguiente ejemplo, se quita la LCA de un objeto:
C#
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C#.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
En el siguiente ejemplo, se agrega una LCA a un objeto:
En el siguiente ejemplo, se quita la LCA de un objeto:
Go
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Go.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
En el siguiente ejemplo, se agrega una LCA a un objeto:
En el siguiente ejemplo, se quita la LCA de un objeto:
Java
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Java.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
En el siguiente ejemplo, se agrega una LCA a un objeto:
En el siguiente ejemplo, se quita la LCA de un objeto:
Node.js
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Node.js.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
En el siguiente ejemplo, se agrega una LCA a un objeto:
En el siguiente ejemplo, se quita la LCA de un objeto:
PHP
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage PHP.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
En el siguiente ejemplo, se agrega una LCA a un objeto:
En el siguiente ejemplo, se quita la LCA de un objeto:
Python
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Python.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
En el siguiente ejemplo, se agrega una LCA a un objeto:
En el siguiente ejemplo, se quita la LCA de un objeto:
Ruby
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Ruby.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
En el siguiente ejemplo, se agrega una LCA a un objeto:
En el siguiente ejemplo, se quita la LCA de un objeto:
API de REST
API de 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 de inserción. Para un objeto existente, especifica la propiedad acl[]
o el parámetro de consulta predefinedAcl
en una solicitud de parche o de actualización.
Para ver la definición de la propiedad de la LCA del objeto, consulta el
recurso ObjectAccessControls
.
Define las LCA en un archivo de JSON.
Por ejemplo, si con la LCA se otorga a los propietarios del proyecto
867489160491
y al usuariojane@gmail.com
el permisoOWNER
, además de otorgar a los miembros del grupogs-announce
el permisoREADER
, 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-jane@gmail.com", "role": "OWNER", "email": "jane@gmail.com" }, { "entity": "group-gs-announce@googlegroups.com", "role": "READER", "email": "gs-announce@googlegroups.com" } ] }
Envía una solicitud de parche con el archivo JSON y especifica el objeto en el que establecerás las LCA.
Por ejemplo, con el siguiente comando cURL, se aplica una carga útil de JSON del documento acls.json
a un objeto llamado paris.jpg
en el bucket 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 de XML
En la API de XML, trabajas con LCA en formato XML. Debes adjuntar un documento XML al cuerpo de las solicitudes para cambiar las LCA del bucket y del objeto. Se muestra un documento XML cuando obtienes las LCA del bucket y del objeto. El documento XML contiene entradas de LCA del objeto o bucket individual.
Después de crear un bucket con una solicitud de bucket
PUT
, usa una segunda solicitud de bucket PUT con el parámetro?acl
para cambiar la LCA.Después de subir un objeto con una solicitud de objeto
PUT
, cambia la LCA con otra solicitud PUT con el parámetro?acl
o el encabezado de solicitudx-googl-acl
.
Con el siguiente comando cURL, se aplica una carga útil de XML desde el
documento acls.xml
hasta un objeto llamado paris.jpg
en el bucket
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
Usa la siguiente sintaxis de LCA para el documento API de XML.
Elemento | Descripción |
---|---|
AccessControlList |
Contenedor para elementos Entries y Owner |
Owner |
Contenedor para elementos DisplayName y ID Este elemento no es necesario para los objetos, ya que un objeto siempre es propiedad el usuario que lo subió. Este elemento se usa cuando empleas la sintaxis de la LCA de Amazon S3 en una situación de migración. Amazon Simple Storage Service y Amazon S3 son marcas registradas de Amazon.com, Inc. o sus afiliados en Estados Unidos y otros países. |
ID |
ID de Cloud Storage del propietario del bucket. |
DisplayName |
No se implementó. El valor es siempre una string vacía. |
Entries |
Contenedor para cero o más elementos Entry |
Entry |
Contenedor para elementos Scope y Permission . Una Entry debe contener solo un elemento Scope y un elemento Permission . |
Scope |
Contenedor para un elemento ID , EmailAddress o Domain con el que se define el alcance 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 |
Un identificador para el beneficiario cuando con el ID se especifica la entrada de permiso. |
EmailAddress |
El identificador de correo electrónico para el beneficiario cuando la entrada de permiso la especifica el correo electrónico. |
Domain |
El identificador de dominio para el beneficiario cuando la entrada de permiso se especifica por dominio. |
Name |
Elemento opcional que se puede especificar o que se puede agregar de forma automática si el alcance es UserByEmail o GroupByEmail . |
Permission |
El permiso otorgado READ , WRITE o FULL_CONTROL . |
Cuando trabajas con LCA, usa la API de XML de la siguiente manera:
- Solo puedes usar el formato XML que se describió antes.
No puedes establecer alcances duplicados.
Puedes tener muchas entradas en tu XML de la LCA, pero no puedes tener entradas con alcances duplicados. Por ejemplo, no puedes tener dos entradas con el mismo elemento de alcance de
jane@example.com
.
En el ejemplo siguiente, se muestran diferentes entradas de LCA de bucket.
<?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>jane@gmail.com</EmailAddress> <Name>jane</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>
Establece el elemento Nombre en el XML de la LCA
Cuando recuperas una LCA de un objeto o bucket, podrías observar un elemento <Name>
adicional adjunto a algunas de tus entradas. Por ejemplo, quizás veas una entrada con el siguiente aspecto:
<Entry> <Scope type="UserByEmail"> <EmailAddress>jane@gmail.com</EmailAddress> <Name>Jane</Name> </Scope> <Permission>FULL_CONTROL</Permission> </Entry>
Estos elementos opcionales <Name>
se propagan en las siguientes dos circunstancias:
Cuando las LCA de objeto o bucket incluyen
<Name>
como elementoCuando estableces las LCA, puedes elegir incluir el elemento
<Name>
con tus entradas de LCA. Puedes proporcionar cualquier valor en el elemento<Name>
; Cloud Storage recuerda estos valores hasta que se quita o reemplaza la LCA. Este enfoque puede ser útil si usas identificadores que no son fáciles de identificar.Cuando un alcance
UserByEmail
oGroupByEmail
contiene un perfil público de Google.Si usas uno de estos alcances, pero no proporcionas un elemento
<Name>
, Cloud Storage verifica si el usuario o Grupo de Google asociado con la dirección de correo electrónico tiene un perfil público de Google con un nombre público. Si es así, Cloud Storage propaga de forma automática el elemento<Name>
con el nombre público.
Aplica una LCA predefinida
En vez de especificar la LCA en su totalidad de a una entrada a la vez como se muestra arriba, puedes usar una LCA predefinida. Esta se aplicará de forma automática a un número de entradas personalizadas en una situación específica. Puedes aplicar una LCA predefinida a un bucket o un objeto con Google Cloud CLI, la API de JSON o la API de XML.
En objetos nuevos
Para aplicar una LCA predefinida a un objeto mientras se sube, haz lo siguiente:
Console
No puedes aplicar una LCA predefinida con la consola de Google Cloud. Utiliza 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
cuando se sube un objeto paris.jpg
a un bucket example-travel-maps
, haz lo siguiente:
gcloud storage cp paris.jpg gs://example-travel-maps --predefined-acl=bucketOwnerRead
API de REST
API de JSON
Usa el parámetro predefinedAcl
de string de consulta en una solicitud de inserción para aplicar la LCA predefinida.
Por ejemplo, para aplicar la LCA predefinida bucketOwnerRead
cuando se sube un objeto paris.jpg
a un bucket example-travel-maps
, haz lo siguiente:
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 de XML
Usa el encabezado x-goog-acl
en una solicitud Put de objeto para aplicar la LCA predefinida.
Por ejemplo, para aplicar la LCA predefinida bucket-owner-read
cuando se sube un objeto paris.jpg
a un bucket example-travel-maps
, haz lo siguiente:
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 objetos o depósitos existentes
También puedes aplicar una LCA predefinida en un objeto o bucket existente, que es útil si deseas cambiar de una LCA predefinida a otra, o si deseas actualizar una LCA personalizada a una predefinida.
Console
No puedes aplicar una LCA predefinida con la consola de Google Cloud. Utiliza 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
en el bucket example-travel-maps
, haz lo siguiente:
gcloud storage objects update gs://example-travel-maps/paris.jpg --predefined-acl=private
API de REST
API de JSON
Usa el parámetro de string de consulta predefinedAcl
y especifica una propiedad vacía acl
en una solicitud de parche para aplicar la LCA predefinida.
Por ejemplo, para aplicar la LCA predefinida private
al objeto paris.jpg
en el bucket 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 de XML
Usa el encabezado x-goog-acl
con el parámetro de string de consulta acl
en una solicitud Put Object, pero no incluyas un documento XML en ella.
Por ejemplo, para aplicar la LCA predefinida private
al objeto paris.jpg
en el bucket 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
Establece LCA de objeto predeterminadas
Para evitar establecer LCA cada vez que creas un objeto nuevo, puedes determinar una LCA de objeto predeterminada en un bucket. Una vez que haces esto, se le aplicará la LCA predeterminada a cada objeto nuevo agregado a ese bucket que no tenga una aplicada de forma explícita. Por ejemplo, quizás desees especificar que solo un determinado grupo de usuarios tenga acceso a la mayoría de los objetos en un bucket determinado. Puedes cambiar la LCA de objeto predeterminada y, luego, agregar objetos al bucket. A estos objetos agregados se les aplica de forma automática la LCA de objeto predeterminada que especificaste; sin embargo, puedes proporcionar diferentes LCA a objetos específicos, en cuyo caso no se les aplicará la LCA predeterminada.
Para ver y cambiar la LCA de objeto predeterminada de un bucket, haz lo siguiente:
Console
No puedes establecer LCA de objeto predeterminadas con la consola de Google Cloud. Utiliza gcloud storage
en su lugar.
Línea de comandos
Usa el comando
buckets describe
con la marca--format
a fin de recuperar la LCA de objetos predeterminada para el bucket:gcloud storage buckets describe gs://BUCKET_NAME --format="default(default_acl)"
En el ejemplo anterior,
BUCKET_NAME
es el nombre del bucket con la LCA de objetos predeterminada que deseas ver. Por ejemplo,my-bucket
Usa el comando
buckets update
con la marca deseada para modificar la LCA de objetos predeterminada del bucket:gcloud storage buckets update gs://BUCKET_NAME FLAG
Donde:
BUCKET_NAME
es el nombre del bucket con la LCA de objetos predeterminada que deseas modificar. Por ejemplo,my-bucket
FLAG
es una de las siguientes opciones:--add-default-object-acl-grant
y una concesión que desees agregar a la LCA de objetos predeterminada general del bucket.--default-object-acl-file
y la ruta a un archivo local que define una LCA de objetos predeterminada nueva para el bucket.--predefined-default-object-acl
y el nombre de una LCA de objetos predefinida con la que quieras reemplazar la LCA de objetos predeterminada existente para el bucket.--remove-default-object-acl-grant
y una entidad que desees quitar de la LCA de objetos predeterminada general del bucket.
Bibliotecas cliente
C++
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C++.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
En el siguiente ejemplo, se agrega una LCA de objeto predeterminada a un bucket:
En la siguiente tabla, se borra una LCA de objeto predeterminada de un bucket:
C#
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C#.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
En el siguiente ejemplo, se imprime la LCA del objeto predeterminado de un bucket:
En el siguiente ejemplo, se agrega una LCA de objeto predeterminada a un bucket:
En la siguiente tabla, se borra una LCA de objeto predeterminada de un bucket:
Go
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Go.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
En el siguiente ejemplo, se agrega una LCA de objeto predeterminada a un bucket:
En la siguiente tabla, se borra una LCA de objeto predeterminada de un bucket:
Java
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Java.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
En el siguiente ejemplo, se agrega una LCA de objeto predeterminada a un bucket:
En la siguiente tabla, se borra una LCA de objeto predeterminada de un bucket:
Node.js
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Node.js.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
En el siguiente ejemplo, se agrega una LCA de objeto predeterminada a un bucket:
En la siguiente tabla, se borra una LCA de objeto predeterminada de un bucket:
PHP
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage PHP.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
En el siguiente ejemplo, se agrega una LCA de objeto predeterminada a un bucket:
En la siguiente tabla, se borra una LCA de objeto predeterminada de un bucket:
Python
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Python.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
En el siguiente ejemplo, se agrega una LCA de objeto predeterminada a un bucket:
En la siguiente tabla, se borra una LCA de objeto predeterminada de un bucket:
Ruby
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Ruby.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
En el siguiente ejemplo, se agrega una LCA de objeto predeterminada a un bucket:
En la siguiente tabla, se borra una LCA de objeto predeterminada de un bucket:
API de REST
API de 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 de parche para reemplazar la LCA de objeto predeterminada. Por ejemplo, con la siguiente solicitud, se reemplaza la LCA de objeto predeterminada por la LCA especificada en
defacls.json
para un bucketexample-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
Un ejemplo de
defacls.json
:{ "defaultObjectAcl": [ { "email": "jane@gmail.com", "entity": "user-jane@gmail.com", "role": "READER" } ] }
API de XML
Recupera la LCA de objeto predeterminada con una solicitud
GET
con el alcance acotado a tu bucket y el 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 alcance acotado a tu bucket y el parámetro?defaultObjectAcl
para reemplazar 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
Un ejemplo de
acls.xml
:<AccessControlList> <Entries> <Entry> <Permission>
FULL_CONTROL
</Permission> <Scope type="UserByEmail"> <EmailAddress>jane@gmail.com</EmailAddress> </Scope> </Entry> </Entries> </AccessControlList>
La sintaxis de las LCA se describen en Establece LCA. También puedes especificar una LCA predefinida como la LCA de objeto predeterminada.
Para establecer la LCA de objeto predeterminada de un bucket como una LCA predefinida, haz lo siguiente:
Console
No puedes establecer LCA de objeto predeterminadas con la consola de Google Cloud. Utiliza 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 bucket con la LCA de objetos predeterminada que deseas modificar. Por ejemplo,my-bucket
PREDEFINED_ACL
es el nombre de una LCA predefinida válida. Por ejemplo,projectPrivate
APIs de REST
API de 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 de XML
Usa una solicitud PUT
con el alcance acotado a tu bucket, 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
LCA de objetos predeterminadas para los depósitos recién creados:
En los siguientes ejemplos, se muestran las LCA de objeto predeterminadas que se aplican de forma automática a los depósitos recién creados cuando no especificas tus propias LCA de objeto predeterminadas como parte de la solicitud. Para ver si se cambiaron las LCA de objeto predeterminadas de tu bucket, compara las LCA de objeto predeterminadas actuales de tu bucket con los ejemplos a continuación.
Console
No puedes trabajar con LCA de objeto predeterminadas en la consola de Google Cloud.
Utiliza gcloud storage
en lugar de esta función.
Línea de comandos
En el ejemplo siguiente, el ID del proyecto es “123412341234”; 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
API de REST
API de JSON
En el ejemplo siguiente, el ID del proyecto es “123412341234”; 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 de XML
En el ejemplo siguiente, los ID de función del proyecto comienzan con “00b4903a97…”; tus ID de 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 para un bucket recién creado es equivalente a la LCA projectPrivate
predefinida.
Recupera las LCA
Para obtener la LCA de un recurso existente, sigue estos pasos:
Console
Ve al navegador de Cloud Storage en la consola de Google Cloud.
Ir al navegador de Cloud StorageNavega al objeto cuya LCA deseas ver.
Elige Editar acceso en el menú desplegable del objeto.
Deberías ver un diálogo con los permisos del objeto.
Para obtener información sobre cómo ver detalles de errores acerca de operaciones fallidas de Cloud Storage en la consola de Google Cloud, consulta Solución de problemas.
Línea de comandos
Usa el comando
objects describe
con la marca--format
para recuperar la LCA de un objeto:gcloud storage objects describe gs://BUCKET_NAME/OBJECT_NAME --format="default(acl)"
Donde:
BUCKET_NAME
es el nombre del bucket que contiene el objeto cuya LCA deseas ver. Por ejemplo,my-bucket
OBJECT_NAME
es el nombre del objeto cuya LCA deseas ver. Por ejemplo,paris.jpg
Bibliotecas cliente
C++
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C++.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
En el siguiente ejemplo, se obtiene una LCA de objeto:
C#
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage C#.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
En el siguiente ejemplo, se obtiene una LCA de objeto:
Go
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Go.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
En el siguiente ejemplo, se obtiene una LCA de objeto:
Java
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Java.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
En el siguiente ejemplo, se obtiene una LCA de objeto:
Node.js
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Node.js.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
En el siguiente ejemplo, se obtiene una LCA de objeto:
PHP
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage PHP.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
En el siguiente ejemplo, se obtiene una LCA de objeto:
Python
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Python.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
En el siguiente ejemplo, se obtiene una LCA de objeto:
Ruby
Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Ruby.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
En el siguiente ejemplo, se obtiene una LCA de objeto:
API de REST
API de JSON
Asegúrate de tener permiso
OWNER
en el objeto.Recupera la LCA de un objeto con una solicitud
GET
.La LCA de objeto se muestra en el formato JSON adjunta al cuerpo de la respuesta.
Por ejemplo, para mostrar la LCA del objeto paris.jpg
en el bucket 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 la siguiente:
{ "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-jane@gmail.com", "role": "OWNER", "email": "jane@gmail.com", ... }, { ... "entity": "group-gs-announce@googlegroups.com", "role": "READER", "email": "gs-announce@googlegroups.com", ... } ], "owner": { "entity": "user-jane@gmail.com" }, ... }
También puedes usar el método GET
de recurso objectAccessControls
para mostrar entradas individuales de la LCA de un objeto.
API de XML
Asegúrate de tener permiso
FULL_CONTROL
en el objeto o bucket.Recupera la LCA del objeto o bucket con el parámetro de string de consulta
acl
en una solicitud GET de objeto.
Las LCA se describen en XML, adjuntas al cuerpo de la respuesta.
Por ejemplo, para mostrar la LCA del objeto paris.jpg
en el bucket 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 la siguiente:
<?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>jane@gmail.com</EmailAddress> <Name>Jane</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 mostrar una entrada específica de la LCA.
¿Qué sigue?
- Obtén más información sobre las LCA.
- Para aprender a simplificar el control de acceso, consulta Usa el acceso uniforme a nivel de bucket .
- Obtén información sobre las prácticas recomendadas para usar las LCA.