Cette page vous explique comment rendre vos objets lisibles par tous sur l'Internet public et comment supprimer l'accès public à votre bucket. Pour savoir comment accéder aux données rendues publiques, consultez Accéder aux données publiques.
Lorsqu'un objet est partagé publiquement, tout utilisateur connaissant son URI peut y accéder tant qu'il est public.
Rôles requis
Pour obtenir les autorisations requises pour rendre des objets accessibles en lecture publique, demandez à votre administrateur de vous accorder les rôles suivants pour le bucket contenant les données que vous souhaitez rendre publiques :
Pour rendre tous les objets d'un bucket lisibles publiquement : administrateur de l'espace de stockage (
roles/storage.admin)Pour rendre des objets individuels lisibles publiquement: administrateur des objets de l'espace de stockage (
roles/storage.objectAdmin)- Si vous prévoyez d'utiliser la console Google Cloud , vous devrez disposer du rôle Administrateur de l'espace de stockage (
roles/storage.admin) au lieu du rôle "Administrateur des objets de l'espace de stockage".
- Si vous prévoyez d'utiliser la console Google Cloud , vous devrez disposer du rôle Administrateur de l'espace de stockage (
Pour supprimer l'accès public à tous les objets d'un bucket : administrateur de l'espace de stockage (
roles/storage.admin)
Ces rôles contiennent les autorisations requises pour rendre des objets publics. Pour afficher les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
storage.buckets.getstorage.buckets.getIamPolicystorage.buckets.setIamPolicystorage.buckets.updatestorage.objects.getstorage.objects.getIamPolicystorage.objects.setIamPolicystorage.objects.update
Les autorisations suivantes ne sont requises que pour effectuer les tâches décrites sur cette page à l'aide de la consoleGoogle Cloud :
storage.buckets.liststorage.objects.list
Vous pouvez également obtenir ces autorisations avec d'autres rôles prédéfinis ou rôles personnalisés.
Pour savoir comment attribuer des rôles aux buckets, consultez la section Définir et gérer des stratégies IAM sur des buckets.
Rendre tous les objets d'un bucket lisibles publiquement :
Pour rendre tous les objets d'un bucket lisibles par tous sur l'Internet public, attribuez au compte principal allUsers le rôle "Lecteur des objets Storage" (roles/storage.objectViewer) :
Console
- Dans la console Google Cloud , accédez à la page Buckets de Cloud Storage.
Dans la liste des buckets, cliquez sur le nom de celui que vous souhaitez rendre public.
Sélectionnez l'onglet Autorisations en haut de la page.
Dans la section Autorisations, cliquez sur le bouton Accorder l'accès.
La boîte de dialogue Accorder l'accès s'affiche.
Dans le champ Nouveaux comptes principaux, saisissez
allUsers.Dans la liste déroulante Sélectionner un rôle, saisissez
Storage Object Viewerdans le champ de filtre, puis sélectionnez Lecteur des objets Storage dans les résultats filtrés.Cliquez sur Enregistrer.
Cliquez sur Autoriser l'accès public.
Une fois l'accès public accordé, un bouton Copier l'URL s'affiche pour chaque objet dans la colonne Accès public. Vous pouvez cliquer sur ce bouton pour obtenir l'URL publique de l'objet. L'URL publique est différente du lien que vous obtenez en effectuant un clic droit sur un objet. Les deux liens permettent d'accéder à un objet, mais l'URL publique fonctionne sans que l'utilisateur ait besoin de se connecter à un compte utilisateur. Pour en savoir plus, consultez la page Points de terminaison de requêtes.
Pour savoir comment obtenir des informations détaillées sur les erreurs liées aux opérations Cloud Storage ayant échoué dans la console Google Cloud , consultez la section Dépannage.
Pour savoir comment résoudre les erreurs liées aux règles de l'organisation et aux autorisations, consultez Résoudre les problèmes liés à la publication de données.Ligne de commande
-
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.
Dans votre environnement de développement, exécutez la commande
buckets add-iam-policy-binding:gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=allUsers --role=roles/storage.objectViewer
où
BUCKET_NAMEcorrespond au nom du bucket dont vous souhaitez rendre les objets publics. Par exemple,my-bucket.Vous devez installer et initialiser gcloud CLIafin de générer un jeton d'accès pour l'en-tête
Authorization.Créez un fichier JSON contenant les informations suivantes :
{ "bindings":[ { "role": "roles/storage.objectViewer", "members":["allUsers"] } ] }
Utilisez
cURLpour appeler l'API JSON avec une requête 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"
Où :
JSON_FILE_NAMEcorrespond au chemin d'accès au fichier que vous avez créé à l'étape 2.BUCKET_NAMEest le nom du bucket dont vous souhaitez rendre les objets publics. Exemple :my-bucket.
Bibliothèques clientes
C++
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage C++.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
C#
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage C#.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Go
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Go.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Java
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Java.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Node.js
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Node.js.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
PHP
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage PHP.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Python
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Python.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Ruby
Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Ruby.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Terraform
Vous pouvez utiliser une ressource Terraform pour rendre publics tous les objets d'un bucket.
API REST
API JSON
API XML
L'API XML ne permet pas de rendre tous les objets d'un bucket lisibles publiquement. Utilisez la console Google Cloud ou gcloud storage.
Rendre une partie d'un bucket lisible publiquement
Utilisez un dossier géré pour contrôler l'accès aux objets dont le préfixe de nom correspond au nom du dossier géré. Par exemple, un dossier géré nommé my-folder peut être utilisé pour contrôler l'accès aux objets nommés my-folder/cats.jpg et my-folder/dogs.jpg.
Pour rendre ces objets accessibles au public, commencez par créer le dossier géré, puis définissez une stratégie IAM sur le dossier qui attribue le rôle Lecteur des objets Storage (roles/storage.objectViewer) à allUsers :
Console
- Dans la console Google Cloud , accédez à la page Buckets de Cloud Storage.
Cliquez sur le nom du bucket contenant les objets que vous souhaitez rendre publics.
Pour créer un dossier :
Cliquez sur le bouton Créer un dossier.
Saisissez le nom du dossier. Une fois le dossier converti en dossier géré, les objets dont le nom commence par ce nom seront soumis aux rôles IAM définis sur le dossier.
Cliquez sur Créer.
Convertissez le dossier en dossier géré en procédant comme suit :
Dans le volet affichant le contenu du bucket, recherchez le nom du dossier que vous avez créé, puis cliquez sur l'icône Plus d'options .
Cliquez sur Modifier l'accès.
Dans la fenêtre qui apparaît, cliquez sur Activer.
Ajoutez une stratégie IAM au dossier qui attribue le rôle Lecteur des objets Storage (
roles/storage.objectViewer) àallUsers, en procédant comme suit :Si le volet Autorisations de votre dossier géré n'est pas déjà ouvert, cliquez sur l'icône Plus d'options pour le dossier géré, puis cliquez sur Modifier l'accès.
Dans le volet Autorisations, cliquez sur le bouton Ajouter un compte principal.
Dans le champ Nouveaux comptes principaux, saisissez
allUsers.Dans la liste déroulante Sélectionner un rôle, saisissez
Storage Object Viewerdans le champ de filtre, puis sélectionnez Lecteur des objets Storage dans les résultats filtrés.Cliquez sur Enregistrer.
Cliquez sur Autoriser l'accès public.
Une fois l'accès public accordé, un bouton Copier l'URL s'affiche pour chaque objet concerné dans la colonne Accès public. Vous pouvez cliquer sur ce bouton pour obtenir l'URL publique de l'objet. L'URL publique est différente du lien que vous obtenez en effectuant un clic droit sur un objet. Les deux liens permettent d'accéder à un objet, mais l'URL publique fonctionne sans que l'utilisateur ait besoin de se connecter à un compte utilisateur. Pour en savoir plus, consultez la page Points de terminaison de requêtes.
Pour savoir comment obtenir des informations détaillées sur les erreurs liées aux opérations Cloud Storage ayant échoué dans la console Google Cloud , consultez la section Dépannage.
Pour savoir comment résoudre les erreurs liées aux règles de l'organisation et aux autorisations, consultez Résoudre les problèmes liés à la publication de données.Ligne de commande
-
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.
Dans votre environnement de développement, créez un dossier géré à l'aide de la commande
gcloud storage managed-folders create:gcloud storage managed-folders create gs://BUCKET_NAME/MANAGED_FOLDER_NAME/
Où :
BUCKET_NAMEcorrespond au nom du bucket dans lequel vous souhaitez créer un dossier géré. Exemple :my-bucketMANAGED_FOLDER_NAMEcorrespond au nom du dossier géré que vous souhaitez créer. Exemple :my-managed-folder
Dans votre environnement de développement, ajoutez
allUsersà la stratégie IAM du dossier géré à l'aide de la commandegcloud 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
Où :
BUCKET_NAMEcorrespond au nom du bucket contenant le dossier géré auquel vous ajoutez la stratégie IAM. Exemple :my-bucketMANAGED_FOLDER_NAMEcorrespond au nom du dossier géré pour lequel vous souhaitez accorder l'accès public. Exemple :my-managed-folder.
Vous devez installer et initialiser gcloud CLIafin de générer un jeton d'accès pour l'en-tête
Authorization.Créez un fichier JSON contenant les informations suivantes :
{ "name": "MANAGED_FOLDER_NAME" }
Où
MANAGED_FOLDER_NAMEcorrespond au nom du dossier géré que vous souhaitez créer. Exemple :my-managed-folderUtilisez
cURLpour appeler l'API JSON avec une requêteInsert 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"
Où :
JSON_FILE_NAMEcorrespond au chemin d'accès au fichier que vous avez créé à l'étape précédente.BUCKET_NAMEcorrespond au nom du bucket dans lequel vous souhaitez créer un dossier géré. Exemple :my-bucket.
Créez un fichier JSON contenant les informations suivantes :
{ "bindings":[ { "role": "roles/storage.objectViewer", "members":["allUsers"] } ] }
Utilisez
cURLpour appeler l'API JSON avec une requêtesetIamPolicyManagedFolder :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"
Où :
JSON_FILE_NAMEcorrespond au chemin d'accès au fichier que vous avez créé à l'étape précédente.BUCKET_NAMEcorrespond au nom du bucket contenant le dossier géré auquel vous ajoutez la stratégie IAM. Exemple :my-bucketMANAGED_FOLDER_NAMEcorrespond au nom du dossier géré auquel vous ajoutez la stratégie IAM. Exemple :my-managed-folder
API REST
API JSON
API XML
L'API XML ne permet pas d'utiliser les dossiers gérés. Utilisez un autre outil, comme la console Google Cloud , ou définissez des LCA sur des objets individuels à l'aide de requêtes Set Object ACL. Voici un exemple de fichier de LCA qui accorderait l'accès allUsers à un objet :
<AccessControlList>
<Entries>
<Entry>
<Scope type="AllUsers"/>
<Permission>READ</Permission>
</Entry>
</Entries>
</AccessControlList>Supprimer l'accès public pour tous les objets d'un bucket
Pour supprimer l'accès public à tous les objets d'un bucket, supprimez la stratégie IAM qui attribue le rôle Lecteur des objets Storage (roles/storage.objectViewer) à allUsers :
Console
- Dans la console Google Cloud , accédez à la page Buckets de Cloud Storage.
Dans la liste des buckets, cliquez sur le nom de celui pour lequel vous souhaitez supprimer l'accès public.
Sélectionnez l'onglet Autorisations.
La stratégie IAM qui s'applique au bucket s'affiche dans la section Autorisations.
Dans l'onglet Afficher par compte principal, cochez la case correspondant au compte principal
allUsersque vous supprimez.Cliquez sur le bouton Supprimer l'accès.
Dans la fenêtre de superposition qui s'affiche, cliquez sur Confirmer.
Pour savoir comment obtenir des informations détaillées sur les erreurs liées aux opérations Cloud Storage ayant échoué dans la console Google Cloud , consultez la section Dépannage.
Ligne de commande
-
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.
Dans votre environnement de développement, exécutez la commande
buckets remove-iam-policy-binding:Vous devez installer et initialiser gcloud CLIafin de générer un jeton d'accès pour l'en-tête
Authorization.Obtenez la stratégie existante appliquée à votre bucket. Pour ce faire, exécutez
cURLpour appeler l'API JSON avec une requêteGET getIamPolicy:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
Où
BUCKET_NAMEcorrespond au nom du bucket dont vous souhaitez afficher la stratégie IAM. Exemple :my-bucket.Créez un fichier JSON contenant la stratégie récupérée à l'étape précédente, puis modifiez-le pour supprimer l'association du compte principal
allUsersde la stratégie.Exécutez
cURLpour appeler l'API JSON avec une requêtePUT 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"
Où :
JSON_FILE_NAMEcorrespond au chemin d'accès au fichier que vous avez créé à l'étape 3.BUCKET_NAMEcorrespond au nom du bucket pour lequel vous voulez supprimer l'accès. Exemple :my-bucket
gcloud storage buckets remove-iam-policy-binding gs://BUCKET_NAME --member=allUsers --role=roles/storage.objectViewer
BUCKET_NAME correspond au nom du bucket pour lequel vous révoquez l'accès. Exemple :my-bucket
API REST
JSON
Étapes suivantes
- Accédez aux données qui ont été rendues publiques.
- Découvrez d'autres options de contrôle des accès pour vos buckets et vos objets.