Cette page explique comment contrôler l'accès aux buckets et aux objets à l'aide de listes de contrôle d'accès (LCA). Une liste de contrôle d'accès, ou LCA, est un mécanisme permettant de déterminer qui a accès à vos buckets et objets, et de définir le niveau d'accès accordé.
Consultez la présentation des LCA pour savoir si vous devez utiliser des LCA pour contrôler l'accès à vos ressources.
Rôles requis
Pour obtenir les autorisations nécessaires pour créer et gérer des LCA, demandez à votre administrateur de vous accorder le rôle IAM d'administrateur de l'espace de stockage (roles/storage.admin
) sur le bucket contenant les objets pour lesquels vous souhaitez créer et gérer des LCA.
Ce rôle prédéfini contient les autorisations requises pour créer et gérer des ACL. Pour afficher les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
storage.buckets.get
storage.buckets.list
- Cette autorisation n'est nécessaire que pour effectuer les tâches décrites sur cette page à l'aide de la console Google Cloud.
storage.buckets.setIamPolicy
storage.buckets.update
storage.objects.get
storage.objects.getIamPolicy
storage.objects.setIamPolicy
storage.objects.update
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés.
Pour en savoir plus sur l'attribution de rôles dans des buckets, consultez la page Utiliser IAM avec des buckets.
Définir ou modifier des listes de contrôle d'accès
Console
Accédez au navigateur Cloud Storage dans la console Google Cloud.
Accéder au navigateur Cloud StorageDans la liste des buckets, cliquez sur le nom du bucket contenant l'objet dont vous souhaitez modifier la liste de contrôle d'accès.
Cliquez sur le nom de l'objet pour lequel vous souhaitez définir ou modifier des LCA.
Cliquez sur Modifier l'accès.
Une boîte de dialogue d'autorisation affichant la LCA actuelle de l'objet s'affiche.
Cliquez sur + Ajouter une entrée.
Choisissez le type d'entité auquel une autorisation doit être accordée.
Le champ Entité spécifie le type d'objet qui obtient l'autorisation (par exemple, un utilisateur ou un groupe). Consultez la section Champs d'application liés au contrôle des accès pour connaître la liste des valeurs acceptées pour Entité.
Saisissez une valeur dans le champ Nom.
Le champ Nom identifie un utilisateur, un groupe ou un autre type d'entité spécifique. Consultez la section Champs d'application liés au contrôle des accès pour connaître la liste des valeurs acceptées pour Nom.
Les champs Entité et Nom définissent à qui s'applique l'autorisation.
Choisissez une valeur dans le champ Accès.
Le champ Accès définit l'autorisation que vous souhaitez configurer sur l'objet. Consultez la section Autorisations liées au contrôle des accès pour connaître la liste des valeurs acceptées pour Accès.
Cliquez sur Enregistrer.
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
Pour ajouter, modifier ou supprimer une autorisation individuelle sur un objet, exécutez la commande objects update
avec l'option pertinente :
gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME FLAG
Où :
BUCKET_NAME
correspond au nom du bucket contenant l'objet auquel la modification s'applique. Exemple :example-travel-maps
.OBJECT_NAME
correspond au nom de l'objet auquel la modification s'applique. Par exemple,paris.jpg
.FLAG
est l'un des éléments suivants :--add-acl-grant
, ainsi que l'autorisation que vous souhaitez ajouter ou modifier. Exemple :--add-acl-grant=entity=user-jane@gmail.com,role=READER
.--remove-acl-grant
, ainsi que l'entité dont vous souhaitez supprimer l'accès. Exemple :--remove-acl-grant=user-jane@gmail.com
.
Pour remplacer toutes les LCA associées à un objet, procédez comme suit :
Définissez les LCA dans un fichier au format JSON ou YAML.
Exécutez la commande
objects update
avec l'option--acl-file
:gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --acl-file=FILE_LOCATION
Où :
BUCKET_NAME
correspond au nom du bucket contenant l'objet auquel les LCA s'appliquent. Exemple :example-travel-maps
.OBJECT_NAME
correspond au nom de l'objet auquel les LCA s'appliquent. Par exemple,paris.jpg
.FILE_LOCATION
est le chemin d'accès local au fichier contenant les LCA que vous avez définies. Exemple :Desktop/acls.json
.
Vous trouverez ci-dessous un exemple de fichier d'ACL. Ces LCA accordent aux propriétaires de projet 867489160491
, ainsi qu'à l'utilisateur jane@gmail.com
, l'autorisation OWNER
sur l'objet paris.jpg
, et accordent également aux membres du groupe gs-announce
l'autorisation READER
sur cet objet :
[ { "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" } ]
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.
L'exemple suivant ajoute une liste de contrôle d'accès à un objet :
L'exemple suivant permet de supprimer une LCA d'un objet :
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.
L'exemple suivant ajoute une liste de contrôle d'accès à un objet :
L'exemple suivant permet de supprimer une LCA d'un objet :
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.
L'exemple suivant ajoute une liste de contrôle d'accès à un objet :
L'exemple suivant permet de supprimer une LCA d'un objet :
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.
L'exemple suivant ajoute une liste de contrôle d'accès à un objet :
L'exemple suivant permet de supprimer une LCA d'un objet :
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.
L'exemple suivant ajoute une liste de contrôle d'accès à un objet :
L'exemple suivant permet de supprimer une LCA d'un objet :
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.
L'exemple suivant ajoute une liste de contrôle d'accès à un objet :
L'exemple suivant permet de supprimer une LCA d'un objet :
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.
L'exemple suivant ajoute une liste de contrôle d'accès à un objet :
L'exemple suivant permet de supprimer une LCA d'un objet :
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.
L'exemple suivant ajoute une liste de contrôle d'accès à un objet :
L'exemple suivant permet de supprimer une LCA d'un objet :
API REST
API JSON
Lors de la création d'un objet, vous pouvez spécifier la propriété acl[]
dans le corps de la requête ou le paramètre de requête predefinedAcl
dans une requête insert. Pour un objet existant, spécifiez la propriété acl[]
ou le paramètre de requête predefinedAcl
dans une requête patch ou update.
Pour obtenir la définition de la propriété de LCA d'objet, consultez la ressource ObjectAccessControls
.
Définissez les LCA dans un fichier JSON.
Par exemple, si la LCA accorde aux propriétaires du projet
867489160491
et à l'utilisateurjane@gmail.com
l'autorisationOWNER
, et aux membres du groupegs-announce
l'autorisationREADER
, vous pouvez obtenir un fichier nomméacls.json
avec le contenu suivant :{ "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" } ] }
Envoyez une requête patch avec le fichier JSON et spécifiez l'objet sur lequel définir les LCA.
Par exemple, la commande cURL suivante applique une charge utile JSON du document acls.json
à un objet nommé paris.jpg
dans le 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 XML
Dans l'API XML, vous utilisez des listes de contrôle d'accès au format XML. Vous devez joindre un document XML au corps des requêtes de modification des LCA associées aux objets et au bucket. Un document XML est renvoyé lorsque vous obtenez des LCA associées aux objets et au bucket. Le document XML contient les entrées individuelles de LCA associées à des objets ou au bucket.
Après la création d'un bucket à l'aide d'une requête de bucket
PUT
, exécutez une seconde requête de bucket PUT avec le paramètre?acl
pour modifier la LCA associée au bucket.Après avoir importé un objet avec une requête d'objet
PUT
, remplacez la LCA par une autre requête PUT avec le paramètre?acl
ou l'en-tête de requêtex-googl-acl
.
Par exemple, la commande cURL suivante applique une charge utile XML du document acls.xml
à un objet nommé paris.jpg
dans le 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
Utilisez la syntaxe de LCA suivante pour le document XML.
Élément | Description |
---|---|
AccessControlList |
Conteneur pour les éléments Entries et Owner . |
Owner |
Conteneur pour les éléments DisplayName et ID . Cet élément n'est pas obligatoire pour les objets puisqu'un objet appartient toujours à l'utilisateur qui l'a importé. Cet élément est utilisé lorsque vous appliquez la syntaxe de LCA Amazon S3 dans un scénario de migration. Amazon Simple Storage Service et Amazon S3 sont des marques d'Amazon.com, Inc. ou de ses sociétés affiliées aux États-Unis et/ou dans d'autres pays. |
ID |
ID Cloud Storage du propriétaire du bucket. |
DisplayName |
Fonctionnalité non disponible. La valeur correspond toujours à une chaîne vide. |
Entries |
Conteneur pour zéro ou plusieurs éléments Entry . |
Entry |
Conteneur pour les éléments Scope et Permission . Un Entry ne doit contenir qu'un seul élément Scope et qu'un seul élément Permission . |
Scope |
Conteneur pour un élément ID , EmailAddress ou Domain qui définit le champ d'application de la LCA. Cet élément doit avoir un attribut type contenant l'une des valeurs suivantes: UserByID , UserByEmail , GroupByID , GroupByEmail , GroupByDomain , AllUsers ou AllAuthenticatedUsers . |
ID |
Identifiant associé au bénéficiaire lorsque l'entrée d'autorisation est spécifiée par ID. |
EmailAddress |
Identifiant d'adresse e-mail associé au bénéficiaire lorsque l'entrée d'autorisation est spécifiée par adresse e-mail. |
Domain |
Identifiant de domaine associé au bénéficiaire lorsque l'entrée d'autorisation est spécifiée par domaine. |
Name |
Élément facultatif pouvant être spécifié ou pouvant être ajouté automatiquement si le champ d'application correspond à UserByEmail ou GroupByEmail . |
Permission |
Autorisation READ , WRITE ou FULL_CONTROL accordée. |
Lorsque vous utilisez des LCA à l'aide de l'API XML :
- vous ne pouvez utiliser que le format XML décrit ci-dessus ;
vous ne pouvez pas définir des champs d'application en double.
Vous pouvez disposer de plusieurs entrées dans votre LCA XML, mais vous ne pouvez pas disposer d'entrées avec des champs d'application en double. Par exemple, vous ne pouvez pas avoir deux entrées avec le même élément de champ d'application de
jane@example.com
.
L'exemple suivant montre différentes entrées de liste de contrôle d'accès associées à un 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>
Configurer l'élément "Name" dans une liste de contrôle d'accès XML
Lorsque vous récupérez une LCA à partir d'un bucket ou d'un objet, vous pouvez remarquer un élément <Name>
supplémentaire ajouté à certaines de vos entrées. Par exemple, une entrée semblable à ce qui suit peut s'afficher :
<Entry> <Scope type="UserByEmail"> <EmailAddress>jane@gmail.com</EmailAddress> <Name>Jane</Name> </Scope> <Permission>FULL_CONTROL</Permission> </Entry>
Ces éléments <Name>
facultatifs sont renseignés dans deux cas :
Lorsque les LCA associées au bucket ou aux objets incluent
<Name>
en tant qu'élément.Lorsque vous définissez des LCA, vous pouvez choisir d'inclure l'élément
<Name>
avec vos entrées LCA. Vous pouvez indiquer n'importe quelle valeur dans l'élément<Name>
. Cloud Storage mémorise ces valeurs jusqu'à ce que la LCA soit supprimée ou remplacée. Cette approche peut être judicieuse si vous utilisez des identifiants difficiles à identifier.Lorsqu'un champ d'application
UserByEmail
ouGroupByEmail
contient un profil Google public.Si vous utilisez l'un de ces champs d'application, mais ne fournissez pas d'élément
<Name>
, Cloud Storage vérifie si l'utilisateur ou le groupe Google associé à l'adresse e-mail possède un profil Google public portant un nom public. Si c'est le cas, Cloud Storage renseigne automatiquement l'élément<Name>
avec le nom public.
Appliquer une LCA prédéfinie
Plutôt que de spécifier l'intégralité d'une liste de contrôle d'accès une entrée à la fois comme indiqué ci-dessus, vous pouvez utiliser une liste de contrôle d'accès prédéfinie qui applique automatiquement un nombre d'entrées personnalisées à un scénario spécifique. Vous pouvez appliquer une LCA prédéfinie à un bucket ou à un objet à l'aide de Google Cloud CLI, de l'API JSON ou de l'API XML.
Sur de nouveaux objets
Pour appliquer une liste de contrôle d'accès prédéfinie à un objet lors de l'importation d'un objet, procédez comme suit :
Console
Vous ne pouvez pas appliquer une LCA prédéfinie à l'aide de la console Google Cloud. Utilisez plutôt gcloud storage
.
Ligne de commande
Exécutez la commande gcloud storage cp
avec l'option --predefined-acl
:
gcloud storage cp OBJECT gs://BUCKET_NAME --predefined-acl=PREDEFINED_ACL
Par exemple, pour appliquer la LCA bucketOwnerRead
prédéfinie lors de l'importation d'un objet paris.jpg
dans un bucket example-travel-maps
, exécutez la commande suivante :
gcloud storage cp paris.jpg gs://example-travel-maps --predefined-acl=bucketOwnerRead
API REST
API JSON
Utilisez le paramètre de chaîne de requête predefinedAcl
dans une requête insert pour appliquer la LCA prédéfinie.
Par exemple, pour appliquer la LCA bucketOwnerRead
prédéfinie lors de l'importation d'un objet paris.jpg
dans un bucket example-travel-maps
, exécutez la commande suivante :
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
Utilisez l'en-tête x-goog-acl
d'une requête d'objet PUT pour appliquer la LCA prédéfinie.
Par exemple, pour appliquer la LCA bucket-owner-read
prédéfinie lors de l'importation d'un objet paris.jpg
dans un bucket example-travel-maps
, exécutez la commande suivante :
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
Sur des buckets ou des objets existants
Vous pouvez également appliquer une LCA prédéfinie à un bucket ou à un objet existant. Cette méthode est utile si vous souhaitez passer d'une LCA prédéfinie à une autre ou mettre à jour des LCA personnalisées et les configurer en tant que LCA prédéfinies.
Console
Vous ne pouvez pas appliquer une LCA prédéfinie à l'aide de la console Google Cloud. Utilisez plutôt gcloud storage
.
Ligne de commande
Exécutez la commande objects update
avec l'option --predefined-acl
:
gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --predefined-acl=PREDEFINED_ACL_NAME
Par exemple, pour appliquer la LCA private
prédéfinie à l'objet paris.jpg
dans le bucket example-travel-maps
, exécutez la commande suivante :
gcloud storage objects update gs://example-travel-maps/paris.jpg --predefined-acl=private
API REST
API JSON
Utilisez le paramètre de chaîne de requête predefinedAcl
et spécifiez une propriété acl
vide dans une requête patch pour appliquer la LCA prédéfinie.
Par exemple, pour appliquer la LCA private
prédéfinie à l'objet paris.jpg
dans le bucket example-travel-maps
, exécutez la commande suivante :
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
Utilisez l'en-tête x-goog-acl
avec le paramètre de chaîne de requête acl
dans une requête d'objet PUT, mais n'incluez pas de document XML dans votre requête.
Par exemple, pour appliquer la LCA private
prédéfinie à l'objet paris.jpg
dans le bucket example-travel-maps
, exécutez la commande suivante :
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
Définir les LCA des objets par défaut
Pour éviter de configurer des LCA chaque fois que vous créez un objet, vous pouvez définir une liste de contrôle d'accès aux objets par défaut sur un bucket. Une fois que vous avez effectué cette opération, la valeur par défaut est appliquée à chaque nouvel objet ajouté à ce bucket auquel aucune LCA n'a été explicitement appliquée. Par exemple, vous pouvez spécifier que seul un groupe d'utilisateurs donné a accès à la plupart des objets d'un bucket particulier. Vous pouvez modifier la liste de contrôle d'accès aux objets par défaut, puis ajouter des objets au bucket. La liste de contrôle d'accès aux objets par défaut que vous avez spécifiée est automatiquement appliquée à ces objets ajoutés. Toutefois, vous pouvez attribuer différentes LCA à des objets spécifiques. Dans ce cas, la LCA par défaut n'est pas appliquée à ces objets.
Pour afficher et modifier la LCA associée aux objets par défaut pour un bucket, exécutez la commande suivante :
Console
Vous ne pouvez pas définir des LCA associées à des objets par défaut à l'aide de la console Google Cloud. Utilisez plutôt gcloud storage
.
Ligne de commande
Exécutez la commande
buckets describe
avec l'option--format
pour récupérer la LCA associée aux objets par défaut pour le bucket :gcloud storage buckets describe gs://BUCKET_NAME --format="default(default_acl)"
Où
BUCKET_NAME
correspond au nom du bucket dont vous souhaitez afficher la LCA d'objets par défaut. Par exemple,my-bucket
.Exécutez la commande
buckets update
avec l'option souhaitée pour modifier la LCA associée aux objets par défaut pour le bucket :gcloud storage buckets update gs://BUCKET_NAME FLAG
Où :
BUCKET_NAME
correspond au nom du bucket dont vous souhaitez modifier la LCA d'objets par défaut. Exemple :my-bucket
.FLAG
est l'un des éléments suivants :--add-default-object-acl-grant
et une autorisation que vous souhaitez ajouter à la LCA d'objets par défaut globale pour le bucket.--default-object-acl-file
et le chemin d'accès à un fichier local qui définit une nouvelle LCA d'objets par défaut pour le bucket.--predefined-default-object-acl
et le nom d'une LCA d'objets prédéfinie que vous souhaitez utiliser pour remplacer la LCA d'objets par défaut existante pour le bucket.--remove-default-object-acl-grant
et une entité que vous souhaitez supprimer de la LCA d'objets par défaut globale pour le 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.
L'exemple suivant ajoute une liste de contrôle d'accès aux objets par défaut à un bucket :
L'exemple suivant supprime une liste de contrôle d'accès aux objets par défaut d'un bucket :
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.
L'exemple suivant affiche la LCA associée aux objets par défaut pour un bucket :
L'exemple suivant ajoute une liste de contrôle d'accès aux objets par défaut à un bucket :
L'exemple suivant supprime une liste de contrôle d'accès aux objets par défaut d'un bucket :
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.
L'exemple suivant ajoute une liste de contrôle d'accès aux objets par défaut à un bucket :
L'exemple suivant supprime une liste de contrôle d'accès aux objets par défaut d'un bucket :
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.
L'exemple suivant ajoute une liste de contrôle d'accès aux objets par défaut à un bucket :
L'exemple suivant supprime une liste de contrôle d'accès aux objets par défaut d'un bucket :
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.
L'exemple suivant ajoute une liste de contrôle d'accès aux objets par défaut à un bucket :
L'exemple suivant supprime une liste de contrôle d'accès aux objets par défaut d'un bucket :
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.
L'exemple suivant ajoute une liste de contrôle d'accès aux objets par défaut à un bucket :
L'exemple suivant supprime une liste de contrôle d'accès aux objets par défaut d'un bucket :
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.
L'exemple suivant ajoute une liste de contrôle d'accès aux objets par défaut à un bucket :
L'exemple suivant supprime une liste de contrôle d'accès aux objets par défaut d'un bucket :
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.
L'exemple suivant ajoute une liste de contrôle d'accès aux objets par défaut à un bucket :
L'exemple suivant supprime une liste de contrôle d'accès aux objets par défaut d'un bucket :
API REST
API JSON
Utilisez une requête GET pour récupérer la LCA associée aux objets par défaut : Exemple :
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?projection=full
Exécutez une requête patch pour remplacer la LCA associée aux objets par défaut. Par exemple, la requête suivante remplace la LCA associée aux objets par défaut par la LCA spécifiée dans
defacls.json
pour 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
Exemple de
defacls.json
:{ "defaultObjectAcl": [ { "email": "jane@gmail.com", "entity": "user-jane@gmail.com", "role": "READER" } ] }
API XML
Récupérez la LCA associée aux objets par défaut avec une requête
GET
limitée à votre bucket et au paramètre?defaultObjectAcl
. Exemple :curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/BUCKET_NAME?defaultObjectAcl
Exécutez une requête
PUT
limitée à votre bucket par le paramètre?defaultObjectAcl
pour remplacer la LCA associée aux objets par défaut par celle spécifiée dansacls.xml
. Exemple :curl -X PUT --data-binary @acls.xml -H "Authorization: Bearer $(gcloud auth print-access-token)" \ http://storage.googleapis.com/BUCKET_NAME?defaultObjectAcl
Exemple de
acls.xml
:<AccessControlList> <Entries> <Entry> <Permission>
FULL_CONTROL
</Permission> <Scope type="UserByEmail"> <EmailAddress>jane@gmail.com</EmailAddress> </Scope> </Entry> </Entries> </AccessControlList>
La syntaxe des LCA est décrite dans la section Configurer des listes de contrôle d'accès. Vous pouvez également spécifier une LCA prédéfinie en tant que LCA associée aux objets par défaut.
Pour configurer la liste de contrôle d'accès aux objets par défaut associée à un bucket sur une liste de contrôle d'accès prédéfinie :
Console
Vous ne pouvez pas définir des LCA associées à des objets par défaut à l'aide de la console Google Cloud. Utilisez plutôt gcloud storage
.
Ligne de commande
Exécutez la commande buckets update
avec l'option --predefined-default-object-acl
:
gcloud storage buckets update gs://BUCKET_NAME --predefined-default-object-acl=PREDEFINED_ACL
Où :
BUCKET_NAME
correspond au nom du bucket dont vous souhaitez modifier la LCA d'objets par défaut. Exemple :my-bucket
.PREDEFINED_ACL
correspond au nom d'une LCA prédéfinie valide. Par exemple,projectPrivate
.
API REST
API JSON
Exécutez une requête PUT avec le paramètre predefinedAcl
.
Exemple :
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
Exécutez une requête PUT
limitée à votre bucket avec le paramètre ?defaultObjectAcl
et l'en-tête x-goog-acl
.
Exemple :
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 concernant les objets par défaut associées aux buckets nouvellement créés :
Les exemples suivants montrent les LCA concernant les objets par défaut qui s'appliquent automatiquement aux buckets nouvellement créés lorsque vous ne spécifiez pas vos propres LCA d'objets par défaut dans le cadre de la requête. Pour voir si les LCA concernant les objets par défaut de votre bucket ont été modifiées, comparez les LCA d'objets par défaut actuelles de votre bucket aux exemples ci-dessous.
Console
Vous ne pouvez pas utiliser les LCA associées aux objets par défaut à l'aide de la console Google Cloud.
Utilisez plutôt gcloud storage
.
Ligne de commande
Dans l'exemple ci-dessous, l'ID de projet est "123412341234". Votre ID de projet sera différent.
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 REST
API JSON
Dans l'exemple ci-dessous, l'ID de projet est "123412341234". Votre ID de projet sera différent.
"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
Dans l'exemple ci-dessous, les ID de rôle de projet commencent par "00b4903a97".Vos ID de projet seront différents.
<?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>
Notez que la LCA associée aux objets par défaut pour un bucket nouvellement créé est équivalente à la LCA prédéfinie projectPrivate
.
Récupérer des listes de contrôle d'accès
Pour obtenir la liste de contrôle d'accès associée à une ressource existante, procédez comme suit :
Console
Accédez au navigateur Cloud Storage dans la console Google Cloud.
Accéder au navigateur Cloud StorageAccédez à l'objet dont vous souhaitez afficher la liste de contrôle d'accès.
Choisissez Modifier les autorisations dans le menu déroulant de l'objet.
Une boîte de dialogue d'autorisation affichant les autorisations de l'objet doit s'ouvrir.
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
Exécutez la commande
objects describe
avec l'option--format
pour récupérer la LCA associée à un objet :gcloud storage objects describe gs://BUCKET_NAME/OBJECT_NAME --format="default(acl)"
Où :
BUCKET_NAME
correspond au nom du bucket contenant l'objet dont vous souhaitez afficher la LCA. Exemple :my-bucket
.OBJECT_NAME
correspond au nom de l'objet pour lequel vous souhaitez afficher la LCA. Par exemple,paris.jpg
.
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.
L'exemple suivant permet d'obtenir une liste de contrôle d'accès associée à un objet :
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.
L'exemple suivant permet d'obtenir une liste de contrôle d'accès associée à un objet :
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.
L'exemple suivant permet d'obtenir une liste de contrôle d'accès associée à un objet :
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.
L'exemple suivant permet d'obtenir une liste de contrôle d'accès associée à un objet :
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.
L'exemple suivant permet d'obtenir une liste de contrôle d'accès associée à un objet :
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.
L'exemple suivant permet d'obtenir une liste de contrôle d'accès associée à un objet :
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.
L'exemple suivant permet d'obtenir une liste de contrôle d'accès associée à un objet :
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.
L'exemple suivant permet d'obtenir une liste de contrôle d'accès associée à un objet :
API REST
API JSON
Assurez-vous de disposer de l'autorisation
OWNER
sur l'objet.Récupérez la LCA associée à l'objet à l'aide d'une requête
GET
.La LCA associée à l'objet est renvoyée au format JSON et jointe au corps de la réponse.
Par exemple, pour renvoyer la LCA associée à l'objet paris.jpg
dans le bucket example-travel-maps
, utilisez la commande suivante :
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
Une réponse semblable aux lignes suivantes doit s'afficher :
{ "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" }, ... }
Vous pouvez également utiliser la méthode objectAccessControls
de la ressource GET
pour afficher des entrées individuelles dans une LCA associée à un objet.
API XML
Assurez-vous de disposer de l'autorisation
FULL_CONTROL
sur le bucket ou l'objet.Récupérez la LCA associée au bucket ou à l'objet à l'aide du paramètre de chaîne de requête
acl
dans une requête d'objet GET.
Les LCA sont décrites au format XML et jointes au corps de la réponse.
Par exemple, pour renvoyer la LCA associée à l'objet paris.jpg
dans le bucket example-travel-maps
, utilisez la commande suivante :
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://storage.googleapis.com/example-travel-maps/paris.jpg?acl
Une réponse semblable aux lignes suivantes doit s'afficher :
<?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>
Vous pouvez également utiliser la méthode JSON GET
de la ressource ObjectAccessControls
pour afficher une entrée de LCA spécifique.
Étapes suivantes
- Apprenez-en plus sur les LCA.
- Découvrez comment simplifier votre contrôle des accès à l'aide d'un accès uniforme au niveau du bucket.
- Découvrez les bonnes pratiques concernant l'utilisation des LCA.