Définir et gérer des stratégies IAM sur des dossiers gérés

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:

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

  1. Dans la console Google Cloud, accédez à la page Buckets Cloud Storage.

    Accéder à la page "Buckets"

  2. 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.

  3. 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 le dossier dont vous souhaitez contrôler l'accès est un dossier simulé, suivez les étapes décrites dans la section Créer un dossier géré pour d'abord convertir le dossier simulé en dossier géré.

  4. Cliquez sur Modifier l'accès.

  5. Dans le volet Autorisations pour MANAGED_FOLDER_NAME, cliquez sur Ajouter un compte principal.

  6. 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.

  7. 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.

  8. Cliquez sur Enregistrer.

Ligne de commande

  1. 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.

  2. 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

  1. 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.

  2. 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.

  3. Exécutez cURL pour appeler l'API JSON avec une requête PUT 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

  1. Dans la console Google Cloud, accédez à la page Buckets Cloud Storage.

    Accéder à la page "Buckets"

  2. 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.

  3. 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.

  4. 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

  1. 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.

  2. Exécutez cURL pour appeler l'API JSON avec une requête GET 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

  1. Dans la console Google Cloud, accédez à la page Buckets Cloud Storage.

    Accéder à la page "Buckets"

  2. 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.

  3. 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.

  4. Cliquez sur Modifier l'accès.

  5. Dans le volet Autorisations pour FOLDER_NAME, saisissez le nom du compte principal dans le champ Filtre.

  6. 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

  1. 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.

  2. 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ête GET 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/.

  3. Créez un fichier JSON contenant la stratégie récupérée à l'étape précédente.

  4. Modifiez le fichier JSON pour supprimer le compte principal de la stratégie.

  5. Exécutez cURL pour appeler l'API JSON avec une requête PUT 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

  1. Créez un fichier JSON ou YAML qui définit la condition, y compris son title, la logique basée sur des attributs expression pour la condition et, éventuellement, une description 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.

  2. 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

  1. 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.

  2. 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.

  3. 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.

  4. 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

  1. 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
  2. Modifiez le fichier tmp-policy.json dans un éditeur de texte pour supprimer des conditions de la stratégie IAM.

  3. 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

  1. 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.

  2. 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/.

  3. Modifiez le fichier tmp-policy.json dans un éditeur de texte pour supprimer des conditions de la stratégie IAM.

  4. 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