Un utilisateur est propriétaire d'un dossier Mon Drive. Le dossier peut contenir plusieurs utilisateurs ayant accès à différents fichiers. Ce modèle d'accès restrictif signifie que différents utilisateurs peuvent voir différentes listes d'éléments dans le même dossier. Un utilisateur ayant accès au dossier parent Mon Drive, mais pas à un élément de ce dossier, dispose d'un accès limité. Il est donc difficile de savoir qui a accès à la hiérarchie.
À l'inverse, les fichiers d'un Drive partagé appartiennent au Drive partagé. Les Drive partagés ont un modèle étendu, de sorte que chaque utilisateur dispose de la même liste d'éléments dans le même dossier.
L'introduction des dossiers en accès limité reproduit le modèle d'accès étendu des Drive partagés à Mon Drive. Avec ce changement, les dossiers en accès limité sont la seule exception permettant de limiter l'accès à un sous-dossier spécifique dans Mon Drive et les Drive partagés.
Ce guide explique comment gérer les dossiers en accès limité et en accès étendu dans Google Drive.
À propos des dossiers en accès limité
Les dossiers en accès limité vous permettent de limiter l'accès à des utilisateurs spécifiques. Seuls les utilisateurs que vous ajoutez directement aux autorisations du dossier peuvent l'ouvrir et accéder à son contenu. Les utilisateurs disposant d'un accès hérité au dossier Mon Drive partagé ou au dossier Drive partagé (via un accès à partir d'un dossier parent) peuvent voir le dossier en accès limité dans Drive, mais ne peuvent pas l'ouvrir. Cette fonctionnalité aligne mieux le comportement de partage des éléments dans Mon Drive et les Drive partagés, ce qui vous permet d'organiser des dossiers contenant du contenu sensible à côté de contenus plus largement partagés.
Les dossiers en accès limité sont disponibles à la fois dans Mon Drive et dans les Drive partagés. Le rôle owner
dans Mon Drive et le rôle organizer
dans les Drive partagés peuvent toujours accéder aux dossiers en accès limité. Aucune autorisation particulière n'est requise pour modifier la liste des utilisateurs d'un dossier. Les rôles qui peuvent partager des dossiers peuvent mettre à jour les listes de membres. Pour en savoir plus sur les rôles et les autorisations, consultez les pages Rôles et autorisations et Présentation des disques partagés.
Notez que même si les dossiers sont un type de fichier, l'accès limité n'est pas disponible pour les fichiers.
Définir un accès limité à un dossier
Bien que les utilisateurs disposant d'autorisations directes pour les dossiers puissent accéder à un dossier en accès limité, seul le rôle owner
dans Mon Drive et le rôle organizer
dans les Drive partagés peuvent activer ou désactiver l'accès limité.
De plus, si un utilisateur disposant du rôle writer
dans Mon Drive a défini le champ booléen writersCanShare
de la ressource files
sur true
, il peut également activer ou désactiver cette fonctionnalité.
Pour limiter l'accès à un dossier, définissez le champ booléen inheritedPermissionsDisabled
de la ressource files
sur true
. Lorsque l'attribut est true
, seuls le rôle owner
, le rôle organizer
et les utilisateurs disposant d'autorisations de dossier directes peuvent y accéder.
Pour réactiver les autorisations héritées, définissez inheritedPermissionsDisabled
sur false
.
Vérifier l'autorisation de limiter l'accès à un dossier
Pour vérifier si vous pouvez limiter l'accès à un dossier, inspectez les valeurs booléennes des champs capabilities.canDisableInheritedPermissions
et capabilities.canEnableInheritedPermissions
de la ressource files
. Ces paramètres confirment si vous êtes autorisé à limiter l'accès à un dossier via le champ inheritedPermissionsDisabled
.
Pour en savoir plus sur capabilities
, consultez Comprendre les fonctionnalités des fichiers.
Lister les sous-dossiers d'un dossier en accès limité
Pour vérifier si vous pouvez lister les enfants d'un dossier, utilisez le champ booléen capabilities.canListChildren
.
La valeur renvoyée est toujours false
lorsque l'élément n'est pas un dossier ou si l'accès du demandeur au contenu du dossier a été supprimé en définissant inheritedPermissionsDisabled
sur false
.
Si votre accès au contenu du dossier a été supprimé, vous pouvez toujours accéder aux metadata du dossier à l'aide des méthodes files.get()
et files.list()
. Pour vérifier que l'accès est limité, vérifiez le corps de la réponse pour voir si l'élément est un dossier avec le type MIME application/vnd.google-apps.folder
et si le champ capabilities.canListChildren
est défini sur "false". Si vous essayez de lister les enfants d'un tel dossier, le résultat est toujours vide.
Accéder aux métadonnées d'un dossier en accès limité
Les dossiers en accès limité vous permettent d'afficher les metadata des dossiers si vous n'avez pas accès au contenu des dossiers.
Lorsque vous utilisez la ressource permissions
pour déterminer l'accès d'un utilisateur, les dossiers Mon Drive et Drive partagé qui n'autorisent que l'accès aux métadonnées contiennent les valeurs suivantes dans le corps de la réponse: inheritedPermissionsDisabled=true
et view=metadata
. Le rôle est toujours défini sur reader
. Le champ view
n'est renseigné que pour les autorisations appartenant à un view
. Pour en savoir plus, consultez la section Vues.
Pour toutes les entrées du champ permissionDetails
, le champ inherited
est défini sur true
pour indiquer que l'autorisation est héritée et qu'aucun accès direct au contenu du dossier n'a été accordé.
Pour accorder l'accès au contenu et aux métadonnées du dossier, définissez le champ inheritedPermissionsDisabled
sur false
ou mettez à jour le rôle sur reader
ou supérieur.
Enfin, si une autorisation a d'abord été limitée en désactivant l'héritage sur un dossier (inheritedPermissionsDisabled=true
), puis que l'autorisation a été ajoutée directement au dossier, les valeurs du corps de la réponse deviennent inheritedPermissionsDisabled=true
, le champ view
n'étant pas défini. Si le dossier se trouve dans un Drive partagé, la liste permissionDetails
contient une entrée dont le champ inherited
est défini sur false
pour indiquer que l'autorisation n'est pas héritée. Cette autorisation permet d'accéder au contenu et aux métadonnées du dossier, comme toute autre autorisation.
Supprimer des dossiers en accès limité
Vous pouvez supprimer des dossiers en accès limité à l'aide de la méthode files.delete()
sur la ressource files
.
Dans Mon Drive, seul le propriétaire de l'élément peut supprimer une hiérarchie de dossiers. Si un utilisateur supprime une hiérarchie contenant des dossiers en accès limité qui appartiennent à d'autres utilisateurs, ces dossiers sont déplacés vers le dossier Mon Drive du propriétaire.
Si l'utilisateur dispose du rôle owner
, l'intégralité de la hiérarchie est supprimée.
Dans les Drive partagés, le rôle organizer
peut supprimer des hiérarchies, même si elles contiennent des dossiers en accès limité. Si le rôle fileOrganizer
supprime une hiérarchie contenant des dossiers en accès limité, le résultat dépend de leur ajout en tant que fileOrganizer
sur les dossiers en accès limité. Si c'est le cas, l'ensemble de la hiérarchie est supprimé. Sinon, les dossiers en accès limité sont déplacés vers le dossier racine du Drive partagé.
À propos de l'accès étendu
L'introduction des dossiers en accès limité élargit le modèle d'accès étendu des Drive partagés à Mon Drive. Une fois le modèle d'accès déployé, l'accès à un dossier implique au moins le même niveau d'accès à tout ce qui se trouve dans cette hiérarchie de dossiers. Les dossiers en accès limité sont la seule exception qui permet de limiter l'accès à un sous-dossier spécifique dans Mon Drive et les Drive partagés. Cela signifie également que, sauf si votre dossier est en accès limité, vous ne pouvez plus supprimer l'accès hérité du dossier parent. L'API Drive renvoie alors une réponse d'erreur. Pour définir un contrôle des accès plus précis dans une hiérarchie, vous pouvez définir un accès limité au dossier.
S'adapter à l'accès étendu
Pour permettre aux développeurs de s'adapter plus facilement à l'accès étendu, plusieurs améliorations ont été apportées à l'API Google Drive:
Le champ
permissionDetails[]
de la ressourcepermissions
est désormais renseigné pour les éléments de Mon Drive. Auparavant, les champs n'étaient pas définis ou répliqués à partir du champteamDrivePermissionDetails
, le cas échéant. Seuls les champspermissionType
etinherited
de Mon Drive sont renseignés.Le champ
permissionDetails[].inherited
indique si une autorisation est héritée du parent de l'élément. Il vous permet de détecter si certains rôles (tels quereader
) sont hérités du parent et si un rôle supérieur (tel quewriter
) est accordé directement à l'élément.Lorsque vous consultez les autorisations d'un élément, le champ
permissionDetails[]
peut contenir plusieurs entrées. Le cas échéant, une entrée est associée à l'autorisation directement sur l'élément pour cette portée, puis des entrées pour les autorisations héritées ou les autorisations des membres sur l'élément.Les développeurs peuvent activer le comportement d'API d'accès étendu dans My Drive avant toute application obligatoire. Vous pouvez définir le paramètre de requête
enforceExpansiveAccess
surtrue
afin que les futures modifications apportées à l'accès étendu n'affectent pas votre application.L'activation de cette fonctionnalité signifie que l'API fonctionne de la même manière pour les éléments de My Drive que pour ceux des Drive partagés. Par exemple, toute tentative de restriction de l'accès en dessous du rôle hérité échoue lors de l'appel de
permissions.update()
. De même, un appel àpermissions.delete()
échoue si l'autorisation est héritée.
Détecter et empêcher l'accès limité
Votre application peut créer un accès limité (lorsque l'utilisateur a accès au dossier Mon Drive parent, mais pas à un fichier de ce dossier) sur vos dossiers Mon Drive lorsque vous utilisez les méthodes permissions.update()
ou permissions.delete()
.
Lorsque vous utilisez ces méthodes, vous pouvez examiner les champs de la ressource permissions
pour voir où une requête peut créer un accès limité et éviter d'envoyer de telles requêtes. Pour détecter cette situation, utilisez le champ enforceExpansiveAccess
dans votre requête.
De plus, si votre application a déjà créé un accès limité à vos dossiers, vous pouvez procéder comme suit:
Parcourez la hiérarchie des dossiers pour supprimer l'accès limité. À la place, vous devez définir un accès limité au dossier.
Si l'élément que vous essayez de ne plus partager est un fichier, vous pouvez créer un dossier intermédiaire, définir un accès limité et y déplacer le fichier.
Si vous ne souhaitez pas utiliser de dossiers en accès limité, mais que vous devez supprimer certains accès, vous pouvez déplacer le fichier vers un dossier privé (tel que le dossier racine de Mon Drive). Vous pouvez ensuite créer un raccourci vers l'emplacement d'origine de l'élément afin que les utilisateurs puissent toujours l'utiliser.
Articles associés
- Partager des fichiers, des dossiers et des disques
- Fonctionnement de l'accès aux fichiers dans les Drive partagés
- À propos des dossiers en accès limité