En esta página, se muestra cómo hacer que los objetos que posees sean legibles para todos en la Internet pública. Para obtener más información sobre cómo acceder a los datos que se hicieron públicos, consulta Accede a datos públicos.
Cuando un objeto se comparte de forma pública, cualquier usuario que conozca el URI del objeto puede acceder a él mientras sea público.
Roles obligatorios
Para obtener los permisos necesarios para que los objetos sean legibles de forma pública, pídele a tu administrador que te otorgue los siguientes roles para el bucket que contiene los datos que quieres hacer públicos:
Para que todos los objetos de un bucket sean legibles de forma pública: administrador de Storage (
roles/storage.admin
)Para que los objetos individuales sean legibles de forma pública: administrador de objetos de Storage (
roles/storage.objectAdmin
)- Si planeas usar la consola de Google Cloud, necesitarás el rol de
administrador de Storage (
roles/storage.admin
) en lugar del rol de administrador de objetos de Storage.
- Si planeas usar la consola de Google Cloud, necesitarás el rol de
administrador de Storage (
Estos roles contienen los permisos necesarios para hacer públicos los objetos. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
storage.objects.get
storage.objects.getIamPolicy
storage.objects.setIamPolicy
storage.objects.update
Los siguientes permisos solo son necesarios para usar la consola de Google Cloud para realizar la tarea en esta página:
storage.buckets.list
storage.objects.list
También puedes obtener estos permisos con otros roles predefinidos o roles personalizados.
Para obtener instrucciones para otorgar roles a los buckets, consulta Usa IAM con buckets.
Haz que todos los objetos de un bucket se puedan leer de forma pública
Para que todos los objetos de un bucket sean legibles para todos en la Internet pública,
otorga a la principal allUsers
el rol de visualizador de objetos de Storage
(roles/storage.objectViewer
):
Console
- En la consola de Google Cloud, ve a la página Buckets de Cloud Storage.
En la lista de buckets, haz clic en el nombre del bucket que deseas hacer público.
Selecciona la pestaña Permisos cerca de la parte superior de la página.
En la sección Permisos, haz clic en el botón
Otorgar acceso.Aparecerá el cuadro de diálogo Otorgar acceso.
En el campo Principales nuevas, ingresa
allUsers
.En el menú desplegable Seleccionar un rol, ingresa
Storage Object Viewer
en el cuadro de filtro y selecciona Visualizador de objetos de almacenamiento a partir de los resultados filtrados.Haz clic en Guardar.
Haga clic en Permitir acceso público.
Una vez que se otorgue el acceso público, aparecerá Copiar URL para cada objeto de la columna de acceso público. Puedes hacer clic en este botón para obtener la URL pública 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
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
En tu entorno de desarrollo, ejecuta el comando
buckets add-iam-policy-binding
:gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=allUsers --role=roles/storage.objectViewer
En este comando,
BUCKET_NAME
es el nombre del bucket cuyos objetos quieres hacer públicos. Por ejemplo,my-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.
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.
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.
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.
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.
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.
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.
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.
Terraform
Puedes usar un recurso de Terraform para hacer públicos todos los objetos en un bucket.
API de REST
API de JSON
Tener la gcloud CLI instalada e inicializada, lo que te permite generar un token de acceso para el encabezado
Authorization
.Crea un archivo JSON que contenga la siguiente información:
{ "bindings":[ { "role": "roles/storage.objectViewer", "members":["allUsers"] } ] }
Usa
cURL
para llamar a la API de JSON con una solicitud de bucketPUT
:curl -X PUT --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
Aquí:
JSON_FILE_NAME
es la ruta de acceso del archivo que creaste en el paso 2.BUCKET_NAME
es el nombre del bucket cuyos objetos quieres hacer públicos. Por ejemplo,my-bucket
.
API de XML
La API de XML no admite que todos los objetos de un bucket se hagan legibles de forma pública. En su lugar, usa la consola de Google Cloud o gcloud storage
.
Haz que una parte de un bucket sea de lectura pública
Usa una carpeta administrada para controlar el acceso a los objetos cuyo prefijo de nombre coincida
con el nombre de la carpeta administrada. Por ejemplo, se puede usar una carpeta administrada llamada my-folder
para controlar el acceso a los objetos llamados my-folder/cats.jpg
y my-folder/dogs.jpg
.
Para hacer que esos objetos tengan acceso público, primero crea la carpeta administrada y, luego, establece una política de IAM en la carpeta que otorga a allUsers
el rol de visualizador de objetos de Storage (roles/storage.objectViewer
):
Console
- En la consola de Google Cloud, ve a la página Buckets de Cloud Storage.
Haz clic en el nombre del bucket que contiene los objetos que quieres hacer públicos.
Sigue estos pasos para crear una carpeta:
Haz clic en el botón Crear carpeta.
Ingresa el nombre de la carpeta. Una vez que la carpeta se convierta en una carpeta administrada, los objetos cuyo nombre comience con este nombre estarán sujetos a los roles de IAM establecidos en la carpeta.
Haz clic en Crear.
Sigue estos pasos para convertir la carpeta en una carpeta administrada:
En el panel que muestra el contenido del bucket, busca el nombre de la carpeta que creaste y haz clic en el ícono Más opciones
.Haz clic en acceso de edición.
En la ventana que aparece, haz clic en Habilitar.
Agrega una política de IAM a la carpeta que otorgue a
allUsers
el rol de visualizador de objetos de Storage (roles/storage.objectViewer
) con los siguientes pasos:Si el panel Permisos de tu carpeta administrada aún no está abierto, haz clic en el ícono Más opciones
de la carpeta administrada y, luego, en Editar acceso.En el panel Permissions, haz clic en el botón
Agregar principal.En el campo Principales nuevas, ingresa
allUsers
.En el menú desplegable Seleccionar un rol, ingresa
Storage Object Viewer
en el cuadro de filtro y selecciona Visualizador de objetos de almacenamiento a partir de los resultados filtrados.Haz clic en Guardar.
Haz clic en Permitir acceso público.
Una vez que se otorgue el acceso público, aparecerá Copiar URL para cada objeto de la columna de acceso público. Puedes hacer clic en este botón para obtener la URL pública 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
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
En tu entorno de desarrollo, crea una carpeta administrada con el comando
gcloud storage managed-folders create
:gcloud storage managed-folders create gs://BUCKET_NAME/MANAGED_FOLDER_NAME/
Aquí:
BUCKET_NAME
es el nombre del bucket en el que deseas crear una carpeta administrada. Por ejemplo,my-bucket
MANAGED_FOLDER_NAME
es el nombre de la carpeta administrada que deseas crear. Por ejemplo,my-managed-folder
En tu entorno de desarrollo, agrega
allUsers
a la política de IAM de la carpeta administrada con el comandogcloud storage managed-folders add-iam-policy-binding
:gcloud storage managed-folders add-iam-policy-binding gs://BUCKET_NAME/MANAGED_FOLDER_NAME --member=allUsers --role=roles/storage.objectViewer
Aquí:
BUCKET_NAME
es el nombre del bucket que contiene la carpeta administrada a la que agregas la política de IAM. Por ejemplo,my-bucket
MANAGED_FOLDER_NAME
es el nombre de la carpeta administrada a la que deseas agregar acceso público. Por ejemplo,my-managed-folder
API de REST
API de JSON
Tener la gcloud CLI instalada e inicializada, lo que te permite generar un token de acceso para el encabezado
Authorization
.Crea un archivo JSON que contenga la siguiente información:
{ "name": "MANAGED_FOLDER_NAME" }
En el que
MANAGED_FOLDER_NAME
es el nombre de la carpeta administrada que deseas crear. Por ejemplo,my-managed-folder
Usa
cURL
para llamar a la API de JSON con una solicitudInsert ManagedFolder
:curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders"
Aquí:
JSON_FILE_NAME
es la ruta de acceso al archivo que creaste en el paso anterior.BUCKET_NAME
es el nombre del bucket en el que deseas crear una carpeta administrada. Por ejemplo,my-bucket
Crea un archivo JSON que contenga la siguiente información:
{ "bindings":[ { "role": "roles/storage.objectViewer", "members":["allUsers"] } ] }
Usa
cURL
para llamar a la API de JSON con una solicitud de ManagedFoldersetIamPolicy
:curl -X PUT --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAME/iam"
Aquí:
JSON_FILE_NAME
es la ruta de acceso al archivo que creaste en el paso anterior.BUCKET_NAME
es el nombre del bucket que contiene la carpeta administrada a la que agregas la política de IAM. Por ejemplo,my-bucket
MANAGED_FOLDER_NAME
es el nombre de la carpeta administrada a la que agregas la política de IAM. Por ejemplo,my-managed-folder
API de XML
La API de XML no admite el trabajo con carpetas administradas. Usa una
herramienta diferente, como la consola de Google Cloud, o establece las LCA en
objetos individuales con las solicitudes Set Object ACL
. El siguiente
es un archivo de LCA de ejemplo que otorgaría acceso a allUsers
a un objeto:
<AccessControlList> <Entries> <Entry> <Scope type="AllUsers"/> <Permission>READ</Permission> </Entry> </Entries> </AccessControlList>
¿Qué sigue?
- Accede a los datos que se hicieron públicos.
- Obtén información sobre más opciones de control de acceso para tus buckets y objetos.