Cette page explique comment définir des stratégies Identity and Access Management (IAM) sur des dossiers gérés afin d'obtenir un contrôle d'accès précis sur des groupes spécifiques d'objets dans un bucket.
Si vous recherchez d'autres méthodes de contrôle des accès, consultez les ressources suivantes:
Pour savoir comment contrôler l'accès à des buckets entiers et aux objets qu'ils contiennent, consultez la page Définir et gérer des stratégies IAM sur des buckets.
Pour découvrir un autre moyen de contrôler l'accès à des objets individuels dans vos buckets, consultez la page Listes de contrôle d'accès.
Pour en savoir plus sur le contrôle de l'accès aux ressources Cloud Storage, consultez la page Présentation du contrôle des accès.
Rôles requis
Pour obtenir les autorisations nécessaires pour définir et gérer les stratégies IAM pour les dossiers gérés, demandez à votre administrateur de vous attribuer le rôle IAM Administrateur de dossier Storage (roles/storage.folderAdmin
) pour le bucket qui contient les dossiers gérés.
Ce rôle contient les autorisations suivantes, requises pour définir et gérer des stratégies IAM pour les dossiers gérés :
storage.managedfolders.getIamPolicy
storage.managedfolders.setIamPolicy
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés.
Pour en savoir plus sur l'attribution de rôles pour des buckets, consultez la page Définir et gérer des stratégies IAM sur des buckets.
Définir une stratégie IAM sur un dossier géré
Console
- Dans la console Google Cloud, accédez à la page Buckets Cloud Storage.
Dans la liste des buckets, cliquez sur le nom du bucket contenant le dossier géré sur lequel vous souhaitez définir une stratégie IAM.
Sur la page Informations sur le bucket, cliquez sur l'icône Plus d'options
dans le volet Explorateur de dossiers à côté du dossier géré pour lequel vous souhaitez définir une stratégie IAM.Si vous souhaitez contrôler l'accès dans un dossier ou un dossier simulé, suivez les étapes décrites dans la section Créer un dossier géré pour activer la gestion sur le dossier ou le dossier simulé.
Cliquez sur Modifier l'accès.
Dans le volet Autorisations pour
MANAGED_FOLDER_NAME
, cliquez sur Ajouter un compte principal .Dans le champ Nouveaux comptes principaux, saisissez le compte principal pour lequel vous souhaitez accorder l'accès. Pour en savoir plus sur les comptes principaux que vous pouvez inclure, consultez la section Identifiants principaux.
Dans la section Attribuer des rôles, utilisez la liste déroulante Sélectionner un rôle pour spécifier le niveau d'accès que vous souhaitez accorder au compte principal.
Cliquez sur Enregistrer.
Ligne de commande
Créez un fichier JSON contenant les informations suivantes :
{ "bindings":[ { "role": "IAM_ROLE", "members":[ "PRINCIPAL_IDENTIFIER" ] } ] }
Où :
IAM_ROLE
correspond au rôle IAM que vous attribuez. Exemple :roles/storage.objectViewer
.PRINCIPAL_IDENTIFIER
identifie les utilisateurs auxquels vous accordez un accès au dossier géré. Par exemple,user:jane@gmail.com
. Pour obtenir la liste des formats des identifiants principaux, consultez la section Identifiants principaux.
Exécutez la commande
gcloud storage managed-folders set-iam-policy
:gcloud storage managed-folders set-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME POLICY_FILE
Où :
BUCKET_NAME
correspond au nom du bucket contenant le dossier géré auquel vous souhaitez appliquer la stratégie IAM. Exemple :my-bucket
MANAGED_FOLDER_NAME
correspond au nom du dossier géré auquel vous souhaitez appliquer la stratégie IAM. Exemple :my-managed-folder/
.POLICY_FILE
est le chemin d'accès au fichier JSON que vous avez créé à l'étape 1.
API REST
JSON
Vous devez installer et initialiser gcloud CLI afin de générer un jeton d'accès pour l'en-tête
Authorization
.Vous pouvez également créer un jeton d'accès à l'aide d'OAuth 2.0 Playground et l'inclure dans l'en-tête
Authorization
.Créez un fichier JSON contenant les informations suivantes :
{ "bindings":[ { "role": "IAM_ROLE", "members":[ "PRINCIPAL_IDENTIFIER" ] } ] }
Où :
IAM_ROLE
correspond au rôle IAM que vous attribuez. Exemple :roles/storage.objectViewer
.PRINCIPAL_IDENTIFIER
identifie les utilisateurs auxquels vous accordez un accès au dossier géré. Exemple :user:jane@gmail.com
. Pour obtenir la liste des formats des identifiants principaux, consultez la section Identifiants principaux.
Exécutez
cURL
pour appeler l'API JSON avec une requêtePUT setIamPolicy
:curl -X PUT --data-binary @POLICY_FILE \ -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ù :
POLICY_FILE
est le chemin d'accès au fichier de stratégie JSON que vous avez créé à l'étape précédente.BUCKET_NAME
correspond au nom du bucket contenant le dossier géré auquel vous souhaitez appliquer la stratégie IAM. Exemple :my-bucket
MANAGED_FOLDER_NAME
correspond au nom du dossier géré pour lequel vous souhaitez accorder l'accès au compte principal. Exemple :my-managed-folder/
Afficher la stratégie IAM pour un dossier géré
Console
- Dans la console Google Cloud, accédez à la page Buckets Cloud Storage.
Dans la liste des buckets, cliquez sur le nom du bucket contenant le dossier géré pour lequel vous souhaitez afficher les stratégies IAM.
Sur la page Informations sur le bucket, cliquez sur l'icône Plus d'options
dans le volet Explorateur de dossiers à côté du dossier géré pour lequel vous souhaitez afficher la stratégie IAM.Cliquez sur Modifier l'accès.
Le volet Autorisations pour FOLDER_NAME
affiche les autorisations sur le dossier géré, y compris le compte principal, le rôle, les rôles hérités et les conditions IAM.
Ligne de commande
Exécutez la commande gcloud storage managed-folder get-iam-policy
:
gcloud storage managed-folders get-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME
Où :
BUCKET_NAME
correspond au nom du bucket contenant le dossier géré dont vous souhaitez afficher la stratégie IAM. Par exemple,my-bucket
.MANAGED_FOLDER_NAME
correspond au nom du dossier géré dont vous souhaitez afficher la stratégie IAM. Exemple :my-managed-folder/
.
API REST
JSON
Vous devez installer et initialiser gcloud CLI afin de générer un jeton d'accès pour l'en-tête
Authorization
.Vous pouvez également créer un jeton d'accès à l'aide d'OAuth 2.0 Playground et l'inclure dans l'en-tête
Authorization
.Exécutez
cURL
pour 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/managedFolders/MANAGED_FOLDER_NAME/iam"
Où :
BUCKET_NAME
correspond au nom du bucket contenant le dossier géré dont vous souhaitez afficher la stratégie IAM. Exemple :my-bucket
MANAGED_FOLDER_NAME
correspond au nom du dossier géré dont vous souhaitez afficher la stratégie IAM. Exemple :my-managed-folder/
.
Supprimer un compte principal d'une stratégie de dossier géré
Console
- Dans la console Google Cloud, accédez à la page Buckets Cloud Storage.
Dans la liste des buckets, cliquez sur le nom du bucket contenant le dossier géré pour lequel vous souhaitez afficher les stratégies IAM.
Sur la page Informations sur le bucket, cliquez sur l'icône Plus d'options
dans le volet Explorateur de dossiers à côté du dossier géré pour lequel vous souhaitez supprimer un compte principal.Cliquez sur Modifier l'accès.
Dans le volet Autorisations pour
FOLDER_NAME
, saisissez le nom du compte principal dans le champ Filtre.Cliquez sur l'icône Supprimer
pour supprimer le rapport.
Cloud Storage supprime le compte principal de votre dossier géré.
Ligne de commande
Exécutez la commande gcloud storage managed-folder remove-iam-policy-binding
:
gcloud storage managed-folders remove-iam-policy-binding gs://BUCKET_NAME/MANAGED_FOLDER_NAME --member=PRINCIPAL_IDENTIFIER --role=IAM_ROLE
Où :
BUCKET_NAME
correspond au nom du bucket contenant le dossier géré auquel vous révoquez l'accès. Exemple :my-bucket
.MANAGED_FOLDER_NAME
correspond au nom du dossier géré dont vous souhaitez supprimer la stratégie IAM. Exemple :my-managed-folder/
.PRINCIPAL_IDENTIFIER
identifie la personne dont vous révoquez l'accès. Par exemple,user:jane@gmail.com
. Pour obtenir la liste des formats des identifiants principaux, consultez la section Identifiants principaux.IAM_ROLE
correspond au rôle IAM que vous attribuez. Exemple :roles/storage.objectViewer
.
API REST
JSON
Vous devez installer et initialiser gcloud CLI afin de générer un jeton d'accès pour l'en-tête
Authorization
.Vous pouvez également créer un jeton d'accès à l'aide d'OAuth 2.0 Playground et l'inclure dans l'en-tête
Authorization
.Obtenez la stratégie existante appliquée à votre dossier géré. Pour ce faire, exécutez
cURL
pour 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/managedFolders/MANAGED_FOLDER_NAME/iam"
Où :
BUCKET_NAME
correspond au nom du bucket contenant le dossier géré auquel vous révoquez l'accès. Exemple :my-bucket
.MANAGED_FOLDER_NAME
correspond au nom du dossier géré dont vous souhaitez supprimer la stratégie IAM. Exemple :my-managed-folder/
.
Créez un fichier JSON contenant la stratégie récupérée à l'étape précédente.
Modifiez le fichier JSON pour supprimer le compte principal de la stratégie.
Exécutez
cURL
pour 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/managedFolders/MANAGED_FOLDER_NAME/iam"
Où :
JSON_FILE_NAME
correspond au chemin d'accès au fichier que vous avez créé à l'étape 3.BUCKET_NAME
correspond au nom du bucket contenant le dossier géré auquel vous révoquez l'accès. Exemple :my-bucket
.MANAGED_FOLDER_NAME
correspond au nom du dossier géré dont vous souhaitez supprimer la stratégie IAM. Exemple :my-managed-folder/
Utiliser des conditions IAM sur des dossiers gérés
Les sections suivantes vous expliquent comment ajouter et supprimer des conditions IAM sur vos dossiers gérés. Pour afficher les conditions IAM de vos dossiers gérés, consultez la section Afficher la stratégie IAM pour un dossier géré. Pour en savoir plus sur l'utilisation des conditions IAM avec Cloud Storage, consultez la section Conditions.
Vous devez activer l'accès uniforme au niveau du bucket sur le bucket avant d'ajouter des conditions aux dossiers gérés.
Définir une nouvelle condition dans un dossier géré
Ligne de commande
Créez un fichier JSON ou YAML qui définit la condition, y compris son
title
, la logique basée sur des attributsexpression
pour la condition et, éventuellement, unedescription
pour la condition.Notez que Cloud Storage n'accepte que les attributs date/heure, type de ressource et nom de la ressource dans l'
expression
.Exécutez la commande
gcloud storage managed-folders add-iam-policy-binding
avec l'option--condition-from-file
:
gcloud storage managed-folders add-iam-policy-binding gs://BUCKET_NAME/MANAGED_FOLDER_NAME --member=PRINCIPAL_IDENTIFIER --role=IAM_ROLE --condition-from-file=CONDITION_FILE
Où :
BUCKET_NAME
correspond au nom du bucket contenant le dossier géré auquel vous accordez l'accès au compte principal. Par exemple,my-bucket
.MANAGED_FOLDER_NAME
correspond au nom du dossier géré auquel vous accordez l'accès au compte principal. Exemple :my-managed-folder/
.PRINCIPAL_IDENTIFIER
identifie la personne à laquelle la condition s'applique. Par exemple,user:jane@gmail.com
. Pour obtenir la liste des formats des identifiants principaux, consultez la section Identifiants principaux.IAM_ROLE
correspond au rôle IAM que vous attribuez au compte principal. Exemple :roles/storage.objectViewer
.CONDITION_FILE
correspond au fichier que vous avez créé à l'étape précédente.
Vous pouvez également inclure la condition directement dans la commande avec l'option --condition
au lieu de l'option --condition-from-file
.
API REST
JSON
Vous devez installer et initialiser gcloud CLI afin de générer un jeton d'accès pour l'en-tête
Authorization
.Vous pouvez également créer un jeton d'accès à l'aide d'OAuth 2.0 Playground et l'inclure dans l'en-tête
Authorization
.Utilisez une requête
GET getIamPolicy
pour enregistrer la stratégie IAM du dossier géré dans un fichier JSON temporaire :curl \ 'https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAMEiam' \ --header 'Authorization: Bearer $(gcloud auth print-access-token)' > tmp-policy.json
Où :
BUCKET_NAME
correspond au nom du bucket contenant le dossier géré sur lequel vous souhaitez définir une condition IAM.MANAGED_FOLDER_NAME
correspond au nom du dossier géré sur lequel vous souhaitez définir une condition IAM.
Modifiez le fichier
tmp-policy.json
dans un éditeur de texte pour ajouter de nouvelles conditions aux liaisons dans la stratégie IAM :{ "version": VERSION, "bindings": [ { "role": "IAM_ROLE", "members": [ "PRINCIPAL_IDENTIFIER" ], "condition": { "title": "TITLE", "description": "DESCRIPTION", "expression": "EXPRESSION" } } ], "etag": "ETAG" }
Où :
VERSION
correspond à la version de la stratégie IAM, qui doit être 3 pour les dossiers gérés avec des conditions IAM.IAM_ROLE
correspond au rôle auquel la condition s'applique. Par exemple,roles/storage.objectViewer
.PRINCIPAL_IDENTIFIER
identifie la personne à laquelle la condition s'applique. Par exemple,user:jane@gmail.com
. Pour obtenir la liste des formats des identifiants principaux, consultez la section Identifiants principaux.TITLE
correspond au titre de la condition. Exemple :expires in 2019
.DESCRIPTION
est une description facultative de la condition. Par exemple,Permission revoked on New Year's
.EXPRESSION
est une expression logique basée sur des attributs. Exemple :request.time < timestamp(\"2019-01-01T00:00:00Z\")
. Pour plus d'exemples d'expressions, reportez-vous à la documentation de référence sur les attributs de conditions. Cloud Storage n'accepte que les attributs date/heure, type de ressource et nom de ressource.
Ne modifiez pas
ETAG
.Utilisez une requête
PUT setIamPolicy
pour définir la stratégie IAM modifiée dans le bucket :curl -X PUT --data-binary @tmp-policy.json \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFoldersMANAGED_FOLDER_NAME/iam"
Où :
BUCKET_NAME
correspond au nom du bucket contenant le dossier géré sur lequel vous souhaitez définir une condition IAM.MANAGED_FOLDER_NAME
correspond au nom du dossier géré sur lequel vous souhaitez définir une condition IAM.
Supprimer une condition d'un dossier géré
Ligne de commande
Utilisez la commande
gcloud storage managed-folders get-iam-policy
pour enregistrer la stratégie IAM du dossier géré dans un fichier JSON temporaire.gcloud storage managed-folders get-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME > tmp-policy.json
Modifiez le fichier
tmp-policy.json
dans un éditeur de texte pour supprimer des conditions de la stratégie IAM.Utilisez la commande
gcloud storage managed-folders set-iam-policy
pour définir la stratégie IAM modifiée sur le dossier géré.gcloud storage managed-folders set-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME tmp-policy.json
API REST
JSON
Vous devez installer et initialiser gcloud CLI afin de générer un jeton d'accès pour l'en-tête
Authorization
.Vous pouvez également créer un jeton d'accès à l'aide d'OAuth 2.0 Playground et l'inclure dans l'en-tête
Authorization
.Utilisez une requête
GET getIamPolicy
pour enregistrer la stratégie IAM du dossier géré dans un fichier JSON temporaire :curl \ 'https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAMEiam' \ --header 'Authorization: Bearer $(gcloud auth print-access-token)' > tmp-policy.json
Où :
BUCKET_NAME
correspond au nom du bucket contenant le dossier géré auquel vous modifiez l'accès. Exemple :my-bucket
.MANAGED_FOLDER_NAME
correspond au nom du dossier géré auquel vous modifiez l'accès. Exemple :my-managed-folder/
.
Modifiez le fichier
tmp-policy.json
dans un éditeur de texte pour supprimer des conditions de la stratégie IAM.Utilisez une requête
PUT setIamPolicy
pour définir la stratégie IAM modifiée sur le dossier géré :curl -X PUT --data-binary @tmp-policy.json \ -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_NAMEiam"
Où :
BUCKET_NAME
correspond au nom du bucket contenant le dossier géré auquel vous modifiez l'accès. Exemple :my-bucket
.MANAGED_FOLDER_NAME
correspond au nom du dossier géré auquel vous modifiez l'accès. Exemple :my-managed-folder/
.
Utiliser IAM avec des projets
Consultez la section Gérer l'accès aux projets, aux dossiers gérés et aux organisations pour savoir comment attribuer et révoquer des rôles IAM au niveau du projet et à des niveaux supérieurs.
Bonnes pratiques
Vous devez définir l'autorisation la plus faible possible donnant au compte principal l'accès requis. Par exemple, si un membre de l'équipe n'a besoin que d'afficher les dossiers gérés d'un bucket, accordez-lui le rôle d'administrateur des objets Storage (roles/storage.objectAdmin
) au lieu du rôle "Administrateur de dossier Storage" (roles/storage.folderAdmin
).
De même, s'il a besoin d'avoir le contrôle total des dossiers gérés d'un bucket, accordez-lui le rôle Administrateur de dossier Storage (roles/storage.folderAdmin
) au lieu du rôle Administrateur de l'espace de stockage (roles/storage.admin
).
Étapes suivantes
Découvrez comment partager publiquement vos données.
Consultez des exemples de partage et de collaboration spécifiques.
Découvrez les bonnes pratiques concernant l'utilisation d'IAM.
Pour résoudre les problèmes d'échec liés aux rôles et aux autorisations IAM, consultez la page Dépannage.