Chaque fichier, dossier et Drive partagé Google Drive est associé à des ressources permissions
. Chaque ressource identifie l'autorisation pour un type
(user
, group
, domain
, anyone
) et un role
(owner
, organizer
, fileOrganizer
, writer
, commenter
, reader
) spécifiques. Par exemple, un fichier peut disposer d'une autorisation accordant à un utilisateur spécifique (type=user
) un accès en lecture seule (role=reader
), tandis qu'une autre autorisation accorde aux membres d'un groupe spécifique (type=group
) la possibilité d'ajouter des commentaires à un fichier (role=commenter
).
Pour obtenir la liste complète des rôles et des opérations autorisées pour chacun d'eux, consultez Rôles et autorisations.
Fonctionnement des autorisations
Les listes d'autorisations d'un dossier sont propagées vers le bas. Tous les fichiers et dossiers enfants héritent des autorisations du parent. Chaque fois que les autorisations ou la hiérarchie sont modifiées, la propagation se produit de manière récursive dans tous les dossiers imbriqués. Par exemple, si un fichier existe dans un dossier et que ce dossier est ensuite déplacé dans un autre dossier, les autorisations du nouveau dossier sont propagées au fichier. Si le nouveau dossier accorde un nouveau rôle à l'utilisateur du fichier, tel que "Rédacteur", il remplace son ancien rôle.
À l'inverse, si un fichier hérite de role=writer
d'un dossier et est déplacé vers un autre dossier qui fournit un rôle de lecteur, le fichier hérite désormais de role=reader
.
Les autorisations héritées ne peuvent pas être supprimées d'un fichier ou d'un dossier dans un Drive partagé. Ces autorisations doivent plutôt être ajustées sur le parent direct ou indirect dont elles ont été héritées. Les autorisations héritées peuvent être supprimées des éléments situés dans "Mon Drive" ou "Partagés avec moi".
À l'inverse, les autorisations héritées peuvent être remplacées sur un fichier ou un dossier dans Mon Drive. Par conséquent, si un fichier hérite de role=writer
d'un dossier Mon Drive, vous pouvez définir role=reader
sur le fichier pour abaisser son niveau d'autorisation.
Les opérations simultanées sur les autorisations d'un même fichier ne sont pas acceptées. Seule la dernière mise à jour est appliquée.
Comprendre les fonctionnalités des fichiers
La ressource permissions
ne détermine pas en définitive la capacité de l'utilisateur actuel à effectuer des actions sur un fichier ou un dossier.
À la place, la ressource files
contient une collection de champs booléens capabilities
utilisés pour indiquer si une action peut être effectuée sur un fichier ou un dossier.
L'API Google Drive définit ces champs en fonction de la ressource permissions
de l'utilisateur actuel associée au fichier ou au dossier.
Par exemple, lorsque Alex se connecte à votre application et tente de partager un fichier, son rôle est vérifié pour déterminer les autorisations dont il dispose sur le fichier. Si le rôle lui permet de partager un fichier, les capabilities
associés au fichier, tels que canShare
, sont définis par rapport au rôle. Si Alex souhaite partager le fichier, votre application vérifie capabilities
pour s'assurer que canShare
est défini sur true
.
Obtenir les fonctionnalités des fichiers
Lorsque votre application ouvre un fichier, elle doit vérifier ses capacités et afficher l'UI en fonction des autorisations de l'utilisateur actuel. Par exemple, si l'utilisateur ne dispose pas de la fonctionnalité canComment
sur le fichier, la possibilité d'ajouter des commentaires doit être désactivée dans l'interface utilisateur.
Pour vérifier les fonctionnalités, appelez la méthode get
sur la ressource files
avec le paramètre de chemin d'accès fileId
et le paramètre fields
défini sur le champ capabilities
. Pour en savoir plus sur le renvoi de champs à l'aide du paramètre fields
, consultez Renvoyer des champs spécifiques.
L'exemple de code suivant montre comment vérifier les autorisations des utilisateurs. La réponse renvoie la liste des fonctionnalités dont dispose l'utilisateur sur le fichier. Chaque fonctionnalité correspond à une action précise qu'un utilisateur peut effectuer. Certains champs ne sont renseignés que pour les éléments des Drive partagés.
Requête
GET https://www.googleapis.com/drive/v3/files/FILE_ID
?fields=capabilities
Réponse
{ "capabilities": { "canAcceptOwnership": false, "canAddChildren": false, "canAddMyDriveParent": false, "canChangeCopyRequiresWriterPermission": true, "canChangeItemDownloadRestriction": true, "canChangeSecurityUpdateEnabled": false, "canChangeViewersCanCopyContent": true, "canComment": true, "canCopy": true, "canDelete": true, "canDisableInheritedPermissions": false, "canDownload": true, "canEdit": true, "canEnableInheritedPermissions": true, "canListChildren": false, "canModifyContent": true, "canModifyContentRestriction": true, "canModifyEditorContentRestriction": true, "canModifyOwnerContentRestriction": true, "canModifyLabels": true, "canMoveChildrenWithinDrive": false, "canMoveItemIntoTeamDrive": true, "canMoveItemOutOfDrive": true, "canMoveItemWithinDrive": true, "canReadLabels": true, "canReadRevisions": true, "canRemoveChildren": false, "canRemoveContentRestriction": false, "canRemoveMyDriveParent": true, "canRename": true, "canShare": true, "canTrash": true, "canUntrash": true } }
Scénarios de partage des ressources Drive
Il existe cinq types de scénarios de partage différents :
Pour partager un fichier dans Mon Drive, l'utilisateur doit disposer de
role=writer
ourole=owner
.Si la valeur booléenne
writersCanShare
est définie surfalse
pour le fichier, l'utilisateur doit disposer derole=owner
.Si l'utilisateur disposant de
role=writer
bénéficie d'un accès temporaire régi par une date et une heure d'expiration, il ne peut pas partager le fichier. Pour en savoir plus, consultez Définir une date d'expiration pour limiter l'accès à des fichiers.
Pour partager un dossier dans Mon Drive, l'utilisateur doit disposer de l'autorisation
role=writer
ourole=owner
.Si la valeur booléenne
writersCanShare
est définie surfalse
pour le fichier, l'utilisateur doit disposer de l'autorisationrole=owner
, qui est plus permissive.L'accès temporaire (réglementé par une date et une heure d'expiration) n'est pas autorisé pour les dossiers Mon Drive avec
role=writer
. Pour en savoir plus, consultez Définir une date d'expiration pour limiter l'accès à des fichiers.
Pour partager un fichier dans un Drive partagé, l'utilisateur doit disposer d'un accès
role=writer
,role=fileOrganizer
ourole=organizer
.- Le paramètre
writersCanShare
ne s'applique pas aux éléments des Drive partagés. Il est traité comme s'il était toujours défini surtrue
.
- Le paramètre
Pour partager un dossier dans un Drive partagé, l'utilisateur doit disposer de
role=organizer
.- Si la restriction
sharingFoldersRequiresOrganizerPermission
d'un Drive partagé est définie surfalse
, les utilisateurs disposant derole=fileOrganizer
peuvent partager des dossiers dans ce Drive partagé.
- Si la restriction
Pour gérer les membres d'un Drive partagé, l'utilisateur doit disposer du rôle
role=organizer
. Seuls les utilisateurs et les groupes peuvent être membres de Drive partagés.
Utiliser le paramètre "fields"
Si vous souhaitez spécifier les champs à renvoyer dans la réponse, vous pouvez définir le paramètre système fields
avec n'importe quelle méthode de la ressource permissions
. Si vous omettez le paramètre fields
, le serveur renvoie un ensemble de champs par défaut spécifiques à la méthode.
Par exemple, la méthode list
ne renvoie que les champs id
, type
, kind
et role
pour chaque fichier. Pour renvoyer différents champs, consultez Renvoyer des champs spécifiques.
Créer une autorisation
Les deux champs suivants sont nécessaires lorsque vous créez une autorisation :
type
:type
identifie le champ d'application de l'autorisation (user
,group
,domain
ouanyone
). Une autorisation avectype=user
s'applique à un utilisateur spécifique, tandis qu'une autorisation avectype=domain
s'applique à tous les utilisateurs d'un domaine spécifique.role
: le champrole
identifie les opérations quetype
peut effectuer. Par exemple, une autorisation avectype=user
etrole=reader
accorde à un utilisateur spécifique un accès en lecture seule au fichier ou au dossier. Une autorisation avectype=domain
etrole=commenter
permet à tous les membres du domaine d'ajouter des commentaires à un fichier. Pour obtenir la liste complète des rôles et des opérations autorisées pour chacun d'eux, consultez Rôles et autorisations.
Lorsque vous créez une autorisation avec type=user
ou type=group
, vous devez également fournir un emailAddress
pour associer l'utilisateur ou le groupe spécifique à l'autorisation.
Lorsque vous créez une autorisation où type=domain
, vous devez également fournir un domain
pour associer un domaine spécifique à l'autorisation.
Pour créer une autorisation :
- Utilisez la méthode
create
sur la ressourcepermissions
avec le paramètre de chemin d'accèsfileId
pour le fichier ou le dossier associé. - Dans le corps de la requête, spécifiez
type
etrole
. - Si la valeur est
type=user
outype=group
, indiquezemailAddress
. Sitype=domain
, indiquez undomain
.
L'exemple de code suivant montre comment créer une autorisation. La réponse renvoie une instance d'une ressource permissions
, y compris le permissionId
attribué.
Requête
POST https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions
{ "requests": [ { "type": "user", "role": "commenter", "emailAddress": "alex@altostrat.com" } ] }
Réponse
{
"kind": "drive#permission",
"id": "PERMISSION_ID
",
"type": "user",
"role": "commenter"
}
Utiliser les audiences cibles
Les audiences cibles sont des groupes de personnes, comme des services ou des équipes, que vous pouvez recommander aux utilisateurs ayant l'intention de partager des éléments. Vous pouvez encourager les utilisateurs à partager des éléments avec une audience spécifique ou restreinte plutôt qu'avec l'ensemble de votre organisation. Les audiences cibles peuvent vous aider à améliorer la sécurité et la confidentialité de vos données, et à permettre aux utilisateurs de partager des éléments de manière appropriée. Pour en savoir plus, consultez À propos des audiences cibles.
Pour utiliser les audiences cibles :
Dans la console d'administration Google, accédez à Menu > Annuaire > Audiences cibles.
Pour effectuer cette tâche, vous devez être connecté à l'aide d'un compte disposant de droits de super-administrateur.
Dans la liste des audiences cibles, cliquez sur le nom de l'audience cible. Pour créer une audience cible, consultez Créer une audience cible.
Copiez l'ID unique à partir de l'URL de l'audience cible :
https://admin.google.com/ac/targetaudiences/ID
.Créez une autorisation avec
type=domain
et définissez le champdomain
surID.audience.googledomains.com
.
Pour savoir comment les utilisateurs interagissent avec les audiences cibles, consultez Expérience utilisateur pour le partage de liens.
Obtenir une autorisation
Pour obtenir une autorisation, utilisez la méthode get
sur la ressource permissions
avec les paramètres de chemin d'accès fileId
et permissionId
. Si vous ne connaissez pas l'ID d'autorisation, vous pouvez lister toutes les autorisations à l'aide de la méthode list
.
L'exemple de code suivant montre comment obtenir une autorisation par ID. La réponse renvoie une instance d'une ressource permissions
.
Requête
GET https://www.googleapis.com/drive/v3/files/FILE_ID
/permissionsPERMISSION_ID
Réponse
{
"kind": "drive#permissionList",
"permissions": [
{
"kind": "drive#permission",
"id": "PERMISSION_ID
",
"type": "user",
"role": "commenter"
}
]
}
Lister toutes les autorisations
Pour lister les autorisations d'un fichier, d'un dossier ou d'un Drive partagé, utilisez la méthode list
sur la ressource permissions
avec le paramètre de chemin d'accès fileId
.
Transmettez les paramètres de requête suivants pour personnaliser la pagination ou filtrer les autorisations :
pageSize
: nombre maximal d'autorisations à renvoyer par page. Si ce paramètre n'est pas défini pour les fichiers d'un Drive partagé, 100 résultats au maximum sont renvoyés. Si cette valeur n'est pas définie pour les fichiers qui ne se trouvent pas dans un Drive partagé, la liste entière est renvoyée.pageToken
: jeton de page reçu d'un appel de liste précédent. Fournissez ce jeton pour récupérer la page suivante.supportsAllDrives
: indique si l'application à l'origine de la requête est compatible avec Mon Drive et les Drive partagés.useDomainAdminAccess
: défini surtrue
pour émettre la requête en tant qu'administrateur de domaine. Si le paramètrefileId
fait référence à un Drive partagé et que le demandeur est un administrateur du domaine auquel appartient le Drive partagé. Pour en savoir plus, consultez Gérer les Drive partagés en tant qu'administrateur de domaine.includePermissionsForView
: autorisations de la vue supplémentaire à inclure dans la réponse. Seule la régionpublished
est compatible.
L'exemple de code suivant montre comment obtenir toutes les autorisations. La réponse renvoie une liste des autorisations pour un fichier, un dossier ou un Drive partagé.
Requête
GET https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions
Réponse
{
"kind": "drive#permissionList",
"permissions": [
{
"id": "PERMISSION_ID
",
"type": "user",
"kind": "drive#permission",
"role": "commenter"
}
]
}
Modifier les autorisations
Pour modifier les autorisations sur un fichier ou un dossier, vous pouvez changer le rôle attribué. Pour savoir comment trouver la source d'un rôle, consultez Déterminer la source d'un rôle.
Appelez la méthode
update
sur la ressourcepermissions
avec le paramètre de chemin d'accèsfileId
défini sur le fichier, le dossier ou le Drive partagé associé, et le paramètre de chemin d'accèspermissionId
défini sur l'autorisation à modifier. Pour trouver lepermissionId
, utilisez la méthodelist
sur la ressourcepermissions
avec le paramètre de cheminfileId
.Dans la requête, identifiez le nouveau
role
.
Vous pouvez accorder des autorisations sur des fichiers ou des dossiers individuels d'un Drive partagé, même si l'utilisateur ou le groupe en est déjà membre. Par exemple, Alex dispose d'un accès role=commenter
en tant que membre d'un Drive partagé. Toutefois, votre application peut accorder à Alexrole=writer
pour un fichier dans un Drive partagé. Dans ce cas, comme le nouveau rôle est plus permissif que celui accordé par l'abonnement, la nouvelle autorisation devient le rôle effectif pour le fichier ou le dossier.
Vous pouvez appliquer des mises à jour à l'aide de la sémantique des correctifs, ce qui signifie que vous pouvez apporter des modifications partielles à une ressource. Vous devez définir explicitement les champs que vous souhaitez modifier dans votre requête. Tous les champs non inclus dans la requête conservent leurs valeurs existantes. Pour en savoir plus, consultez Utiliser des ressources partielles.
L'exemple de code suivant montre comment modifier les autorisations d'un fichier ou d'un dossier de commenter
à writer
. La réponse renvoie une instance d'une ressource permissions
.
Requête
PATCH https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions/PERMISSION_ID
{ "requests": [ { "role": "writer" } ] }
Réponse
{
"kind": "drive#permission",
"id": "PERMISSION_ID
",
"type": "user",
"role": "writer"
}
Déterminer la source du rôle
Pour modifier le rôle attribué à un fichier ou à un dossier, vous devez connaître la source du rôle. Pour les Drives partagés, la source d'un rôle peut être basée sur l'appartenance au Drive partagé, le rôle sur un dossier ou le rôle sur un fichier.
Pour déterminer la source du rôle d'un lecteur partagé ou des éléments qu'il contient, appelez la méthode get
sur la ressource permissions
avec les paramètres de chemin d'accès fileId
et permissionId
, et le paramètre fields
défini sur le champ permissionDetails
.
Pour trouver le permissionId
, utilisez la méthode list
sur la ressource permissions
avec le paramètre de chemin fileId
. Pour extraire le champ permissionDetails
de la requête list
, définissez le paramètre fields
sur permissions/permissionDetails
.
Ce champ énumère toutes les autorisations de fichier héritées et directes pour l'utilisateur, le groupe ou le domaine.
L'exemple de code suivant montre comment déterminer la source du rôle. La réponse renvoie le permissionDetails
d'une ressource permissions
. Le champ inheritedFrom
fournit l'ID de l'élément à partir duquel l'autorisation est héritée.
Requête
GET https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions/PERMISSION_ID
?fields=permissionDetails&supportsAllDrives=true
Réponse
{
"permissionDetails": [
{
"permissionType": "member",
"role": "commenter",
"inheritedFrom": "INHERITED_FROM_ID
",
"inherited": true
},
{
"permissionType": "file",
"role": "writer",
"inherited": false
}
]
}
Mettre à jour plusieurs autorisations avec des requêtes par lot
Nous vous recommandons vivement d'utiliser les requêtes par lot pour modifier plusieurs autorisations.
Voici un exemple de modification des autorisations par lot avec une bibliothèque cliente.
Java
Python
Node.js
PHP
.NET
Supprimer une autorisation
Pour révoquer l'accès à un fichier ou à un dossier, appelez la méthode delete
sur la ressource permissions
avec les paramètres de chemin d'accès fileId
et permissionId
définis sur "delete" (supprimer) pour supprimer l'autorisation.
Pour les éléments dans "Mon Drive", il est possible de supprimer une autorisation héritée. La suppression d'une autorisation héritée révoque l'accès à l'élément et à ses éléments enfants, le cas échéant.
Pour les éléments d'un Drive partagé, les autorisations héritées ne peuvent pas être révoquées. Mettez à jour ou supprimez plutôt l'autorisation sur le fichier ou le dossier parent.
La méthode delete
est également utilisée pour supprimer les autorisations appliquées directement à un fichier ou à un dossier d'un Drive partagé.
L'exemple de code suivant montre comment révoquer l'accès en supprimant un permissionId
. Si la requête aboutit, le corps de la réponse est un objet JSON vide. Pour confirmer que l'autorisation a été supprimée, utilisez la méthode list
sur la ressource permissions
avec le paramètre de chemin d'accès fileId
.
Requête
DELETE https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions/PERMISSION_ID
Définir une date d'expiration pour limiter l'accès aux fichiers
Si vous travaillez sur un projet sensible avec d'autres personnes, vous pouvez restreindre leur accès à certains fichiers dans Drive après un certain temps. Pour les fichiers dans le dossier Mon Drive, vous pouvez définir une date d'expiration afin d'en limiter l'accès ou d'y mettre fin.
Pour définir la date d'expiration :
Utilisez la méthode
create
sur la ressourcepermissions
et définissez le champexpirationTime
(ainsi que les autres champs obligatoires). Pour en savoir plus, consultez Créer une autorisation.Utilisez la méthode
update
sur la ressourcepermissions
et définissez le champexpirationTime
(ainsi que les autres champs requis). Pour en savoir plus, consultez Mettre à jour les autorisations.
Le champ expirationTime
indique la date d'expiration de l'autorisation au format RFC 3339. Les délais d'expiration sont soumis aux restrictions suivantes :
- Ils ne peuvent être définis que pour les autorisations des utilisateurs et des groupes.
- L'heure doit être située dans le futur.
- La date ne peut pas être postérieure de plus d'un an à la date du jour.
Pour en savoir plus sur la date d'expiration, consultez les articles suivants :
Articles associés
- Gérer les propositions d'accès en attente
- Gérer les dossiers en accès limité et étendu
- Transférer la propriété d'un fichier
- Protéger le contenu d'un fichier
- Accéder aux fichiers Drive partagés par lien à l'aide de clés de ressource
- Rôles et autorisations