Chaque fichier, dossier et Drive partagé Google Drive est associé à des ressources d'autorisations. Chaque ressource identifie l'autorisation pour un type
spécifique (utilisateur, groupe, domaine, tout le monde) et role
, comme "commentateur" ou "lecteur". 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 permet aux membres d'un groupe spécifique (type=group
) d'ajouter des commentaires à un fichier (role=commenter
).
Pour obtenir la liste complète des rôles et des opérations autorisées par chacun, consultez la page Rôles et autorisations.
Scénarios de partage de ressources Drive
Il existe cinq types de scénarios de partage:
Pour partager un fichier dans Mon Drive, l'utilisateur doit disposer de
role=writer
ou derole=owner
.Si la valeur booléenne
writersCanShare
est définie surFalse
pour le fichier, l'utilisateur doit avoirrole=owner
.Si l'utilisateur disposant de
role=writer
dispose 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 la section Définir une date d'expiration pour limiter l'accès aux fichiers.
Pour partager un dossier dans Mon Drive, l'utilisateur doit disposer des autorisations suivantes :
role=writer
ourole=owner
.Si la valeur booléenne
writersCanShare
est définie surFalse
pour le fichier, l'utilisateur doit disposer de la valeurrole=owner
la plus permissive.L'accès temporaire (régulé par une date et une heure d'expiration) n'est pas autorisé aux dossiers Mon Drive avec
role=writer
. Pour en savoir plus, consultez la section Définir une date d'expiration pour limiter l'accès aux fichiers.
Pour partager un fichier dans un Drive partagé, l'utilisateur doit disposer des autorisations
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
sur un Drive partagé est définie surFalse
, les utilisateurs disposant de l'autorisationrole=fileOrganizer
peuvent partager des dossiers dans ce Drive.
- Si la restriction
Pour gérer les membres du Drive partagé, l'utilisateur doit disposer de
role=organizer
. Seuls les utilisateurs et les groupes peuvent être membres de Drive partagés.
Définir une date d'expiration pour limiter l'accès aux fichiers
Lorsque vous travaillez avec des personnes sur un projet sensible, vous pouvez restreindre leur accès à certains fichiers dans Drive après une période donnée. Pour les fichiers dans Mon Drive, vous pouvez définir une date d'expiration afin de limiter ou de supprimer l'accès à ces fichiers.
Pour définir la date d'expiration:
- Utilisez la méthode
permissions.create
et définissez le champpermissions.expirationTime
(avec les autres champs obligatoires). Pour en savoir plus, consultez Créer une autorisation. - Utilisez la méthode
permissions.update
et définissez le champpermissions.expirationTime
(avec les autres champs obligatoires). Pour en savoir plus, consultez la section Modifier les autorisations.
Le champ expirationTime
indique la date et l'heure d'expiration de l'autorisation selon la méthode RFC 3339 de date et d'heure. Les délais d'expiration sont soumis aux restrictions suivantes:
- Ils ne peuvent être définis que sur des autorisations d'utilisateur et de groupe.
- L'heure doit être située dans le futur.
- La date/heure ne peut pas être postérieure de plus d'un an à la date du jour.
Pour plus d'informations sur la date d'expiration, consultez les articles suivants:
Propagation des autorisations
Les listes d'autorisations d'un dossier se propagent vers le bas, et tous les fichiers et dossiers enfants héritent des autorisations du parent. Chaque fois que des autorisations ou la hiérarchie sont modifiées, la propagation se fait 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 sur le nouveau dossier se propagent au fichier. Si le nouveau dossier attribue à l'utilisateur du fichier un nouveau rôle, tel que "rédacteur", il remplace l'ancien rôle.
À l'inverse, si un fichier hérite role=writer
d'un dossier et est déplacé vers un autre dossier qui fournit un rôle de lecteur, il hérite désormais de role=reader
.
Les autorisations héritées ne peuvent pas être supprimées pour un fichier ou un dossier dans un Drive partagé. À la place, ces autorisations doivent ê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 sous "Mon Drive" ou "Partagés avec moi".
À l'inverse, les autorisations héritées peuvent être remplacées sur un fichier ou un dossier de Mon Drive. Ainsi, si un fichier hérite role=writer
d'un dossier Mon Drive, vous pouvez définir role=reader
sur le fichier pour réduire son niveau d'autorisation.
Capacités
Au final, la ressource Autorisations ne détermine pas la capacité de l'utilisateur actuel à effectuer des actions sur un fichier ou un dossier.
Au lieu de cela, une ressource Files contient une collection de champs booléens capabilities
permettant d'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 d'autorisations de l'utilisateur actuel associée au fichier ou au dossier.
Par exemple, lorsqu'Alex se connecte à votre application et tente de partager un fichier, les autorisations sur ce fichier sont vérifiées pour son rôle. Si le rôle leur permet de partager un fichier, les capabilities
associés au fichier, tels que canShare
, sont renseignés en fonction du rôle. Si Alex souhaite partager le fichier, votre application vérifie capabilities
pour s'assurer que canShare
est défini sur true
.
Pour obtenir un exemple de récupération du fichier capabilities
, consultez Vérifier les autorisations des utilisateurs.
Créer une autorisation
Les deux champs suivants sont nécessaires lors de la création d'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 que letype
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 également à 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 par chacun, consultez la page Rôles et autorisations.
Lorsque vous créez une autorisation où type=user
ou type=group
, vous devez également fournir un emailAddress
pour lier 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 lier un domaine spécifique à l'autorisation.
Pour créer une autorisation:
- Utilisez la méthode
permissions.create
avec lefileId
pour le fichier ou le dossier associé. - Dans le corps de la requête, spécifiez
type
etrole
. - Si
type=user
outype=group
, indiquez unemailAddress
. Si la valeur esttype=domain
, fournissez undomain
.
Afficher un exemple
L'exemple de code suivant montre comment créer une autorisation. La réponse renvoie une instance d'une ressource Permission
, 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" } ] }
Response (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 de partager des éléments. Vous pouvez encourager les utilisateurs à partager des éléments avec une audience plus spécifique ou plus 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 à faciliter le partage approprié pour les utilisateurs. 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.
Accéder à la page "Audiences cibles"
Pour ce faire, vous devez être connecté à l'aide d'un compte disposant de droits de super-administrateur.
Dans la liste Audiences cibles, cliquez sur le nom de l'audience cible. Pour créer une audience cible, consultez la section Créer une audience cible.
Copiez l'ID unique à partir de l'URL de la cible:
https://admin.google.com/ac/targetaudiences/ID
.Créez une autorisation avec
type=domain
, puis définissez le champdomain
surID.audience.googledomains.com
.
Pour voir comment les utilisateurs interagissent avec les audiences cibles, consultez la section Expérience utilisateur pour le partage par lien.
Récupérer toutes les autorisations pour un fichier, un dossier ou un Drive partagé
Utilisez la méthode permissions.list
pour récupérer toutes les autorisations sur un fichier, un dossier ou un Drive partagé.
Afficher un exemple
L'exemple de code suivant montre comment obtenir toutes les autorisations. La réponse renvoie une liste d'autorisations.
Requête
GET https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions
Response (Réponse)
{
"kind": "drive#permissionList",
"permissions": [
{
"id": "PERMISSION_ID
",
"type": "user",
"kind": "drive#permission",
"role": "commenter"
}
]
}
Vérifier les autorisations des utilisateurs
Lorsque votre application ouvre un fichier, elle doit en vérifier les capacités et afficher l'interface utilisateur pour refléter les autorisations de l'utilisateur actuel. Par exemple, si l'utilisateur ne dispose pas de la fonctionnalité canComment
sur le fichier, cette option doit être désactivée dans l'interface utilisateur.
Pour en savoir plus sur capabilities
, consultez la section Fonctionnalités ci-dessus.
Pour vérifier les fonctionnalités, appelez files.get
avec fileId
et le paramètre fields
définis sur le champ capabilities
. Pour en savoir plus sur le renvoi de champs à l'aide du paramètre fields
, consultez la section Renvoyer des champs spécifiques pour un fichier.
Afficher un exemple
L'exemple de code suivant montre comment vérifier les autorisations des utilisateurs. La réponse renvoie la liste des droits 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
Response (Réponse)
{ "capabilities": { "canAcceptOwnership": false, "canAddChildren": false, "canAddMyDriveParent": false, "canChangeCopyRequiresWriterPermission": true, "canChangeSecurityUpdateEnabled": false, "canComment": true, "canCopy": true, "canDelete": true, "canDownload": true, "canEdit": true, "canListChildren": false, "canModifyContent": true, "canModifyContentRestriction": true, "canModifyLabels": true, "canMoveChildrenWithinDrive": false, "canMoveItemOutOfDrive": true, "canMoveItemWithinDrive": true, "canReadLabels": true, "canReadRevisions": true, "canRemoveChildren": false, "canRemoveMyDriveParent": true, "canRename": true, "canShare": true, "canTrash": true, "canUntrash": true } }
Déterminer la source du rôle pour les fichiers et dossiers des Drive partagés
Pour modifier le rôle sur un fichier ou un dossier, vous devez connaître la source du rôle. Pour les Drive 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 Drive partagé ou des éléments qu'il contient, appelez permissions.get
avec les paramètres fileId
, permissionId
et fields
définis sur le champ permissionDetails
. Pour trouver permissionId
, utilisez permissions.list
avec fileId
. Pour extraire le champ permissionDetails
de la requête permissions.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.
Afficher un exemple
L'exemple de code suivant montre comment déterminer la source du rôle. La réponse renvoie le permissionDetails
d'une ressource Permission
. Le champ inheritedFrom
fournit l'ID de l'élément dont 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
Response (Réponse)
{
"permissionDetails": [
{
"permissionType": "member",
"role": "commenter",
"inheritedFrom": "INHERITED_FROM_ID
",
"inherited": true
},
{
"permissionType": "file",
"role": "writer",
"inherited": false
}
]
}
Modifier les autorisations
Pour modifier les autorisations sur un fichier ou un dossier, vous pouvez modifier le rôle attribué:
Appelez
permissions.update
avec l'autorisationpermissionId
de modification et lefileId
pour le fichier, le dossier ou le Drive partagé associé. Pour trouverpermissionId
, utilisezpermissions.list
avecfileId
.Dans la requête, identifiez le nouveau
role
.
Vous pouvez accorder des autorisations sur des fichiers ou des dossiers individuels dans un Drive partagé, même si l'utilisateur ou le groupe en est déjà membre. Par exemple, Alex a role=commenter
dans le cadre de son appartenance à un Drive partagé. Cependant, votre application peut accorder à Alex le rôle role=writer
pour un fichier situé dans un Drive partagé. Dans ce cas, comme le nouveau rôle est plus permissif que celui accordé via son appartenance, la nouvelle autorisation devient le rôle effectif pour le fichier ou le dossier.
Afficher un exemple
L'exemple de code suivant montre comment passer les autorisations de commentateur à rédacteur sur un fichier ou un dossier. La réponse renvoie une instance d'une ressource Permission
.
Requête
PATCH https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions/PERMISSION_ID
{ "requests": [ { "role": "writer" } ] }
Response (Réponse)
{
"kind": "drive#permission",
"id": "PERMISSION_ID
",
"type": "user",
"role": "writer"
}
Révoquer l'accès à un fichier ou un dossier
Pour révoquer l'accès à un fichier ou à un dossier, appelez delete
avec le fileId
et le permissionId
pour supprimer l'autorisation.
Pour les éléments de "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 aux éléments enfants, le cas échéant.
Il n'est pas possible de révoquer les autorisations héritées par les éléments d'un Drive partagé. Mettez plutôt à jour ou révoquez l'autorisation sur le fichier ou le dossier parent.
L'opération delete
permet également de supprimer les autorisations directement appliquées à un fichier ou à un dossier de Drive partagé.
Afficher un exemple
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 vide. Pour vérifier que l'autorisation est supprimée, utilisez permissions.list
avec fileId
.
Requête
DELETE https://www.googleapis.com/drive/v3/files/FILE_ID
/permissions/PERMISSION_ID
Transférer la propriété d'un fichier vers un autre compte Google Workspace de la même organisation
La propriété des fichiers existants dans "Mon Drive" peut être transférée d'un compte Google Workspace à un autre compte de la même organisation. Une organisation qui possède un Drive partagé est propriétaire des fichiers qu'il contient. Par conséquent, les transferts de propriété ne sont pas compatibles avec les fichiers et les dossiers des Drive partagés. Les organisateurs d'un Drive partagé peuvent déplacer des éléments de ce Drive vers leur propre Drive, ce qui leur en transfère la propriété.
Pour transférer la propriété d'un fichier dans "Mon Drive", effectuez l'une des opérations suivantes:
Créez une autorisation de fichier en accordant à un utilisateur spécifique (
type=user
) l'accès propriétaire (role=owner
).Mettez à jour l'autorisation d'un fichier existant avec
role=owner
et transférez sa propriété à l'utilisateur spécifié (transferOwnership=true
).
Transférer la propriété d'un fichier d'un compte personnel à un autre
La propriété des fichiers peut être transférée d'un compte personnel à un autre. Toutefois, Drive ne transfère la propriété d'un fichier entre deux comptes personnels que lorsque le nouveau propriétaire potentiel accepte explicitement le transfert. Pour transférer la propriété d'un fichier d'un compte personnel à un autre:
Le propriétaire actuel lance un transfert de propriété en créant ou en mettant à jour les autorisations de fichier du nouveau propriétaire potentiel. L'autorisation doit inclure les paramètres suivants:
role=writer
,type=user
etpendingOwner=true
. Si le nouveau propriétaire crée une autorisation pour le propriétaire potentiel, une notification par e-mail lui est envoyée pour l'informer qu'il est invité à assumer la propriété du fichier.Le nouveau propriétaire accepte la demande de transfert de propriété en créant ou en mettant à jour son autorisation d'accès au fichier. L'autorisation doit inclure les paramètres suivants :
role=owner
ettransferOwnership=true
. Si le nouveau propriétaire crée une autorisation, une notification par e-mail est envoyée à l'ancien propriétaire pour lui indiquer que la propriété a été transférée.
Lorsqu'un fichier est transféré, le rôle du propriétaire précédent est remis à writer
.
Modifier plusieurs autorisations à l'aide de requêtes par lot
Nous vous recommandons vivement d'utiliser des requêtes par lot pour modifier plusieurs autorisations.
Voici un exemple de modification groupée d'autorisations avec une bibliothèque cliente.