En esta página se explica cómo hacer que todos los usuarios de Internet puedan leer los objetos que te pertenecen y cómo quitar el acceso público a tu segmento. Para saber cómo acceder a los datos que se han hecho públicos, consulta Acceder a datos públicos.
Cuando un objeto se comparte públicamente, 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 se puedan leer públicamente, pide a tu administrador que te conceda los siguientes roles en el contenedor que contiene los datos que quieres hacer públicos:
Para que todos los objetos de un segmento se puedan leer públicamente: Administrador de Storage (
roles/storage.admin
)Para que los objetos se puedan leer públicamente: Administrador de objetos de Storage (
roles/storage.objectAdmin
)- Si tienes previsto usar la consola, necesitarás el rol Administrador de Storage (
roles/storage.admin
) en lugar del rol Administrador de objetos de Storage. Google Cloud
- Si tienes previsto usar la consola, necesitarás el rol Administrador de Storage (
Para quitar el acceso público de todos los objetos de un segmento, sigue estos pasos: Administrador de Storage (
roles/storage.admin
)
Estos roles contienen los permisos necesarios para hacer públicos los objetos. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
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 deGoogle Cloud para realizar las tareas de 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 sobre cómo conceder roles en los contenedores, consulta Usar IAM con contenedores.
Hacer que todos los objetos de un segmento se puedan leer públicamente
Para que todos los objetos de un segmento sean legibles para cualquier persona en Internet, concede al principal allUsers
el rol Lector de objetos de Storage (roles/storage.objectViewer
):
Consola
- En la Google Cloud consola, ve a la página Segmentos de Cloud Storage.
En la lista de segmentos, haga clic en el nombre del segmento que quiera hacer público.
Seleccione la pestaña Permisos, situada en la parte superior de la página.
En la sección Permisos, haz clic en el botón
Dar acceso.Aparecerá el cuadro de diálogo Dar acceso.
En el campo Nuevos directores, introduce
allUsers
.En el menú desplegable Seleccionar un rol, introduce
Storage Object Viewer
en el cuadro de filtro y selecciona Visor de objetos de Storage en los resultados filtrados.Haz clic en Guardar.
Haz clic en Permitir acceso público.
Una vez que se haya concedido el acceso público, aparecerá el botón Copiar URL en cada objeto de la columna Acceso público. Puede hacer clic en este botón para obtener la URL pública del objeto. La URL pública es diferente del enlace que obtienes al hacer clic con el botón derecho en un objeto. Ambos enlaces proporcionan acceso a un objeto, pero la URL pública funciona sin que el usuario tenga que iniciar sesión en una cuenta de usuario. Para obtener más información, consulta Endpoints de solicitud.
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
Para saber cómo resolver errores de políticas de la organización y de permisos, consulte Solucionar problemas al hacer públicos los datos.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
Donde
BUCKET_NAME
es el nombre del cubo cuyos objetos quieres hacer públicos. Por ejemplo,my-bucket
.Tener instalada e inicializadala CLI de gcloud, 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 JSON con una solicitud dePUT
contenedor: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"
Donde:
JSON_FILE_NAME
es la ruta del archivo que has creado en el paso 2.BUCKET_NAME
es el nombre del contenedor cuyos objetos quieres hacer públicos. Por ejemplo,my-bucket
.
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.
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.
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.
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.
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.
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.
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.
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.
Terraform
Puedes usar un recurso de Terraform para hacer públicos todos los objetos de un segmento.
APIs REST
API JSON
API XML
La API XML no admite que todos los objetos de un segmento sean legibles públicamente. Usa la Google Cloud consola o gcloud storage
.
Hacer que una parte de un segmento se pueda leer públicamente
Usa una carpeta gestionada para controlar el acceso a los objetos cuyo prefijo de nombre coincida con el nombre de la carpeta gestionada. Por ejemplo, una carpeta gestionada llamada my-folder
se puede usar para controlar el acceso a los objetos my-folder/cats.jpg
y my-folder/dogs.jpg
.
Para que estos objetos sean accesibles públicamente, primero crea la carpeta gestionada y, a continuación, define una política de gestión de identidades y accesos en la carpeta que conceda a allUsers
el rol Lector de objetos de Storage (roles/storage.objectViewer
):
Consola
- En la Google Cloud consola, ve a la página Segmentos de Cloud Storage.
Haga clic en el nombre del segmento que contiene los objetos que quiere hacer públicos.
Crea una carpeta siguiendo estos pasos:
Haz clic en el botón Crear carpeta.
Introduce el Nombre de la carpeta. Una vez que la carpeta se haya convertido en una carpeta gestionada, los objetos cuyo nombre empiece por este nombre estarán sujetos a los roles de gestión de identidades y accesos definidos en la carpeta.
Haz clic en Crear.
Convierte la carpeta en una carpeta gestionada siguiendo estos pasos:
En el panel que muestra el contenido del contenedor, busca el nombre de la carpeta que has creado y haz clic en el icono Más opciones
.Haz clic en Editar acceso.
En la ventana que aparece, haz clic en Habilitar.
Añade una política de gestión de identidades y accesos a la carpeta que conceda el rol Visor de objetos de Storage (
roles/storage.objectViewer
) aallUsers
. Para ello, sigue estos pasos:Si el panel Permisos de la carpeta gestionada aún no está abierto, haz clic en el icono Más opciones
de la carpeta gestionada y, a continuación, en Editar acceso.En el panel Permisos, haz clic en el botón
Añadir principal.En el campo Nuevos directores, introduce
allUsers
.En el menú desplegable Seleccionar un rol, introduce
Storage Object Viewer
en el cuadro de filtro y selecciona Visor de objetos de Storage en los resultados filtrados.Haz clic en Guardar.
Haz clic en Permitir acceso público.
Una vez que se haya concedido el acceso público, aparecerá un botón Copiar URL en cada objeto aplicable de la columna Acceso público. Puedes hacer clic en este botón para obtener la URL pública del objeto. La URL pública es diferente del enlace que obtienes al hacer clic con el botón derecho en un objeto. Ambos enlaces proporcionan acceso a un objeto, pero la URL pública funciona sin que el usuario tenga que iniciar sesión en una cuenta de usuario. Para obtener más información, consulta Endpoints de solicitud.
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
Para saber cómo resolver errores de políticas de la organización y de permisos, consulte Solucionar problemas al hacer públicos los datos.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 gestionada con el comando
gcloud storage managed-folders create
:gcloud storage managed-folders create gs://BUCKET_NAME/MANAGED_FOLDER_NAME/
Donde:
BUCKET_NAME
es el nombre del contenedor en el que quieres crear una carpeta gestionada. Por ejemplo,my-bucket
.MANAGED_FOLDER_NAME
es el nombre de la carpeta gestionada que quieres crear. Por ejemplo,my-managed-folder
.
En tu entorno de desarrollo, añade
allUsers
a la política de gestión de identidades y accesos de la carpeta gestionada 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
Donde:
BUCKET_NAME
es el nombre del contenedor que contiene la carpeta gestionada a la que vas a añadir la política de IAM. Por ejemplo,my-bucket
.MANAGED_FOLDER_NAME
es el nombre de la carpeta gestionada a la que quieres añadir acceso público. Por ejemplo,my-managed-folder
.
Tener instalada e inicializadala CLI de gcloud, 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" }
Donde
MANAGED_FOLDER_NAME
es el nombre de la carpeta gestionada que quieres crear. Por ejemplo,my-managed-folder
.Usa
cURL
para llamar a la API 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"
Donde:
JSON_FILE_NAME
es la ruta del archivo que has creado en el paso anterior.BUCKET_NAME
es el nombre del bucket en el que quieres crear una carpeta gestionada. 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 JSON con una solicitudsetIamPolicy
ManagedFolder: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"
Donde:
JSON_FILE_NAME
es la ruta del archivo que has creado en el paso anterior.BUCKET_NAME
es el nombre del contenedor que contiene la carpeta gestionada a la que vas a añadir la política de IAM. Por ejemplo,my-bucket
.MANAGED_FOLDER_NAME
es el nombre de la carpeta gestionada a la que vas a añadir la política de gestión de identidades y accesos. Por ejemplo,my-managed-folder
.
APIs REST
API JSON
API XML
La API XML no admite el uso de carpetas gestionadas. Usa otra herramienta, como la Google Cloud consola, o define las LCA en objetos individuales mediante solicitudes Set Object ACL
. A continuación, se muestra un ejemplo de archivo de LCA que concedería acceso a allUsers
a un objeto:
<AccessControlList> <Entries> <Entry> <Scope type="AllUsers"/> <Permission>READ</Permission> </Entry> </Entries> </AccessControlList>
Quitar el acceso público a todos los objetos de un segmento
Para retirar el acceso público a todos los objetos de un segmento, elimina la política de gestión de identidades y accesos que concede el rol Lector de objetos de Storage (roles/storage.objectViewer
) a allUsers
:
Consola
- En la Google Cloud consola, ve a la página Segmentos de Cloud Storage.
En la lista de segmentos, haga clic en el nombre del segmento al que quiera quitar el acceso público.
Selecciona la pestaña Permisos.
La política de gestión de identidades y accesos que se aplica al segmento aparece en la sección Permisos.
En la pestaña Ver por principales, selecciona la casilla del principal
allUsers
que quieras quitar.Haz clic en el botón - Quitar acceso.
En la ventana superpuesta que aparece, haz clic en Confirmar.
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
-
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 remove-iam-policy-binding
:Tener instalada e inicializadala CLI de gcloud, que te permite generar un token de acceso para el encabezado
Authorization
.Aplica la política actual a tu segmento. Para ello, usa
cURL
para llamar a la API JSON con una solicitudGET getIamPolicy
:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
Donde
BUCKET_NAME
es el nombre del contenedor cuya política de gestión de identidades y accesos quiere ver. Por ejemplo,my-bucket
.Crea un archivo JSON que contenga la política que has obtenido en el paso anterior y edítalo para quitar la vinculación del principal
allUsers
de la política.Usa
cURL
para llamar a la API JSON con una solicitudPUT setIamPolicy
: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"
Donde:
JSON_FILE_NAME
es la ruta del archivo que has creado en el paso 3.BUCKET_NAME
es el nombre del segmento al que quieres quitar el acceso. Por ejemplo,my-bucket
.
gcloud storage buckets remove-iam-policy-binding gs://BUCKET_NAME --member=allUsers --role=roles/storage.objectViewer
Donde BUCKET_NAME
es el nombre del segmento al que quieres revocar el acceso. Por ejemplo, my-bucket
.
APIs REST
JSON
Siguientes pasos
- Accede a datos públicos.
- Consulta más información sobre las opciones de control de acceso para tus segmentos y objetos.