Protéger le contenu d'un fichier

L'API Google Drive permet d'empêcher la modification de fichiers de plusieurs façons : restriction de contenu de fichier et interdiction de télécharger, d'imprimer et de copier .

Rendre les fichiers en lecture seule avec les restrictions de contenu Drive

Vous pouvez ajouter une restriction de contenu à un fichier Google Drive pour empêcher les utilisateurs de en procédant comme suit:

  • Modifier le titre
  • Modifier le contenu
  • Importation d'une révision
  • Ajout ou modification de commentaires

L'application de restrictions de contenu est un mécanisme qui permet au contenu Passage en lecture seule de l'élément Drive sans modifier ses les autorisations d'accès ; Cela signifie qu'il s'agit et non une restriction d'accès. Même si les utilisateurs ne peuvent pas modifier le contenu du fichier, d'autres sont toujours autorisées en fonction du niveau d'accès (par exemple, un utilisateur ayant l'accès en modification peut toujours déplacer un élément ou modifier ses paramètres de partage).

Pour ajouter ou supprimer une restriction de contenu sur un fichier dans Drive, un utilisateur doit être associé autorisations. Pour un fichier ou un dossier dans Mon Drive ou un Drive partagé avec le capabilities.canModifyEditorContentRestriction, vous devez disposer de role=writer attribuée. Pour un fichier ou un dossier de Mon Drive ou d'un Drive partagé avec une restriction de contenu ownerRestricted, vous devez être propriétaire du fichier ou avoir role=organizer Pour afficher un élément soumis à une restriction de contenu, les utilisateurs doivent avoir role=reader ou version ultérieure. Pour obtenir une liste complète des rôles, consultez la section Rôles et autorisations. Pour modifier les autorisations sur un fichier, consultez Modifiez les autorisations.

Vous pouvez utiliser le champ booléen contentRestrictions.readOnly sur la Ressource files à définir une restriction de contenu. Notez que définir une restriction de contenu pour un élément remplace la règle existante.

Scénarios de restrictions de contenu

Une restriction de contenu appliquée à un élément Drive indique aux utilisateurs que ne doit pas être modifié. Plusieurs raisons peuvent expliquer ce problème:

  • Mettre en pause le travail sur un document collaboratif pendant les périodes de révision ou d'audit
  • Définition d'un élément sur un état finalisé (par exemple, approuvé).
  • Empêcher les changements au cours d'une réunion sensible.
  • Interdire les modifications externes pour les workflows gérés par des systèmes automatisés.
  • la restriction des modifications effectuées par Google Apps Script et les modules complémentaires Google Workspace ;
  • Éviter les modifications accidentelles d'un document

Les restrictions de contenu peuvent vous aider à gérer vos contenus, vise à empêcher les utilisateurs disposant des autorisations suffisantes de continuer à travailler sur élément. De plus, il ne s'agit pas d'un moyen de créer un enregistrement immuable. Les restrictions de contenu Drive sont modifiables, donc une restriction de contenu ne garantit pas que cet élément ne sera jamais modifié.

Gérer les fichiers soumis à des restrictions de contenu

Google Docs, Google Sheets et Google Slides, ainsi que tous les autres fichiers, peut contenir des restrictions de contenu ;

Une restriction de contenu appliquée à un élément empêche la modification de son titre et de son contenu, y compris:

  • Commentaires et suggestions (sur Docs, Sheets, diapositives et fichiers binaires)
  • Révisions d'un fichier binaire
  • Texte et mise en forme dans Docs
  • du texte ou des formules dans Sheets, une mise en page Sheets, et instances dans Sheets
  • Tout le contenu dans Slides, ainsi que l'ordre et le numéro des diapositives

Certains types de fichiers ne peuvent pas contenir de restriction de contenu. Voici quelques exemples :

Ajouter une restriction de contenu

Pour ajouter une restriction de contenu de fichier, utilisez la méthode files.update avec la Champ contentRestrictions.readOnly défini sur true. Ajoutez un reason facultatif pour pourquoi vous ajoutez une restriction, par exemple "Contrat finalisé". Les éléments suivants : l'exemple de code ci-dessous montre comment ajouter une restriction de contenu:

Java

File updatedFile =
  new File()
      .setContentRestrictions(
          ImmutableList.of(new ContentRestriction().setReadOnly(true).setReason("Finalized contract."));

File response = driveService.files().update("FILE_ID", updatedFile).setFields("contentRestrictions").execute();

Python

content_restriction = {'readOnly': True, 'reason':'Finalized contract.'}

response = drive_service.files().update(fileId="FILE_ID", body = {'contentRestrictions' : [content_restriction]}, fields = "contentRestrictions").execute();

Node.js

/**
* Set a content restriction on a file.
* @return{obj} updated file
**/
async function addContentRestriction() {
  // Get credentials and build service
  // TODO (developer) - Use appropriate auth mechanism for your app

  const {GoogleAuth} = require('google-auth-library');
  const {google} = require('googleapis');

  const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
  const service = google.drive({version: 'v3', auth});
  const contentRestriction = {
    'readOnly': True,
    'reason': 'Finalized contract.',
  };
  const updatedFile = {
    'contentRestrictions': [contentRestriction],
  };
  try {
    const response = await service.files.update({
      fileId: 'FILE_ID',
      resource: updatedFile,
      fields: 'contentRestrictions',
    });
    return response;
  } catch (err) {
    // TODO (developer) - Handle error
    throw err;
  }
}

Remplacez FILE_ID par l'fileId du fichier que vous souhaitez modifier.

Lorsque vous exécutez l'exemple de code, le contenu du fichier est limité et un cadenas est affiché. () apparaît à côté du nom du fichier dans l'interface utilisateur de Google Drive (UI). La est maintenant en lecture seule.

Fichier dont le contenu fait l'objet d'une restriction dans une liste de fichiers Drive.
Figure 1. Fichier avec une restriction de contenu dans une liste de fichiers Drive.

Supprimer une restriction de contenu

Pour supprimer une restriction de contenu de fichier, utilisez la méthode files.update avec la Champ contentRestrictions.readOnly défini sur false. L'exemple de code suivant montre comment supprimer une restriction de contenu:

Java

File updatedFile =
new File()
    .setContentRestrictions(
        ImmutableList.of(new ContentRestriction().setReadOnly(false));

File response = driveService.files().update("FILE_ID", updatedFile).setFields("contentRestrictions").execute();

Python

content_restriction = {'readOnly': False}

response = drive_service.files().update(fileId="FILE_ID", body = {'contentRestrictions' : [content_restriction]}, fields = "contentRestrictions").execute();

Node.js

/**
* Remove a content restriction on a file.
* @return{obj} updated file
**/
async function removeContentRestriction() {
  // Get credentials and build service
  // TODO (developer) - Use appropriate auth mechanism for your app

  const {GoogleAuth} = require('google-auth-library');
  const {google} = require('googleapis');

  const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
  const service = google.drive({version: 'v3', auth});
  const contentRestriction = {
    'readOnly': False,
  };
  const updatedFile = {
    'contentRestrictions': [contentRestriction],
  };
  try {
    const response = await service.files.update({
      fileId: 'FILE_ID',
      resource: updatedFile,
      fields: 'contentRestrictions',
    });
    return response;
  } catch (err) {
    // TODO (developer) - Handle error
    throw err;
  }
}

Remplacez FILE_ID par l'fileId du fichier que vous souhaitez modifier.

Lorsque vous exécutez l'exemple de code, le contenu du fichier ne fait plus l'objet de restrictions.

Vous pouvez également utiliser l'interface utilisateur de Drive pour supprimer une restriction de contenu. autoriser la modification de contenu (à condition de disposer des autorisations appropriées). Il y a deux options disponibles:

  1. Dans Drive, effectuez un clic droit sur le fichier soumis à une restriction de contenu, puis effectuez un clic droit. cliquez sur Déverrouiller .

    Supprimez une restriction de contenu d'un fichier dans une liste de fichiers Drive.
    Figure 2. Supprimez une restriction de contenu d'un fichier dans une liste de fichiers Drive.
  2. Ouvrez le fichier soumis à une restriction de contenu, puis cliquez sur (mode verrouillé). > Déverrouiller le fichier.

    Supprimez une restriction de contenu d'un fichier dans un document.
    Figure 3. Supprimez une restriction liée au contenu d'un fichier dans un document.

Vérifier s'il existe une restriction de contenu

Pour vérifier si une restriction de contenu est appliquée, utilisez la files.get avec la Champ renvoyé par contentRestrictions. L'exemple de code suivant montre comment Vérifiez l'état d'une restriction de contenu:

Java

File response = driveService.files().get("FILE_ID").setFields("contentRestrictions").execute();

Python

response = drive_service.files().get(fileId="FILE_ID", fields = "contentRestrictions").execute();

Node.js

/**
* Get content restrictions on a file.
* @return{obj} updated file
**/
async function fetchContentRestrictions() {
  // Get credentials and build service
  // TODO (developer) - Use appropriate auth mechanism for your app

  const {GoogleAuth} = require('google-auth-library');
  const {google} = require('googleapis');

  const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
  const service = google.drive({version: 'v3', auth});
  try {
    const response = await service.files.get({
      fileId: 'FILE_ID',
      fields: 'contentRestrictions',
    });
    return response;
  } catch (err) {
    // TODO (developer) - Handle error
    throw err;
  }
}

Remplacez FILE_ID par l'fileId du fichier que vous souhaitez vérifier.

Lorsque vous exécutez l'exemple de code, la méthode renvoie une ContentRestriction ressource, le cas échéant.

Ajoutez une restriction de contenu que seul le propriétaire du fichier peut modifier

Pour ajouter une restriction de contenu de fichier afin que seuls les propriétaires de fichiers puissent activer/désactiver le mécanisme, utilisez la méthode files.update avec le champ booléen contentRestrictions.ownerRestricted défini sur true. La L'exemple de code suivant montre comment ajouter une restriction de contenu pour les propriétaires de fichiers. uniquement:

Java

File updatedFile =
  new File()
      .setContentRestrictions(
          ImmutableList.of(new ContentRestriction().setReadOnly(true).setOwnerRestricted(true).setReason("Finalized contract."));

File response = driveService.files().update("FILE_ID", updatedFile).setFields("contentRestrictions").execute();

Python

content_restriction = {'readOnly': True, 'ownerRestricted': True, 'reason':'Finalized contract.'}

response = drive_service.files().update(fileId="FILE_ID", body = {'contentRestrictions' : [content_restriction]}, fields = "contentRestrictions").execute();

Node.js

/**
* Set an owner restricted content restriction on a file.
* @return{obj} updated file
**/
async function addOwnerRestrictedContentRestriction() {
  // Get credentials and build service
  // TODO (developer) - Use appropriate auth mechanism for your app

  const {GoogleAuth} = require('google-auth-library');
  const {google} = require('googleapis');

  const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
  const service = google.drive({version: 'v3', auth});
  const contentRestriction = {
    'readOnly': True,
    'ownerRestricted': True,
    'reason': 'Finalized contract.',
  };
  const updatedFile = {
    'contentRestrictions': [contentRestriction],
  };
  try {
    const response = await service.files.update({
      fileId: 'FILE_ID',
      resource: updatedFile,
      fields: 'contentRestrictions',
    });
    return response;
  } catch (err) {
    // TODO (developer) - Handle error
    throw err;
  }
}

Remplacez FILE_ID par l'fileId du fichier que vous souhaitez modifier.

Lorsque vous exécutez l'exemple de code, le fichier est soumis à des restrictions de contenu et seul fichier propriétaires peuvent la supprimer. Si vous êtes le propriétaire du fichier, un cadenas actif () apparaît à côté du nom du fichier dans la Interface utilisateur de Drive (UI). Si vous n'êtes pas le propriétaire, le symbole en forme de cadenas est grisé.

Pour supprimer l'indicateur ownerRestricted, utilisez la méthode files.update avec la Champ contentRestrictions.ownerRestricted défini sur false.

Fonctionnalités de restriction de contenu

Une ressource files contient un collection de champs booléens capabilities permettant d'indiquer si une action sur un fichier.

Les restrictions de contenu incluent les capabilities suivants:

Pour en savoir plus, consultez Fonctionnalités.

Pour obtenir un exemple de récupération du fichier capabilities, consultez Vérifier l'utilisateur autorisations.

Empêcher les utilisateurs de télécharger, d'imprimer ou de copier votre fichier

Vous pouvez limiter la façon dont les utilisateurs disposant des autorisations role=commenter ou role=reader peuvent télécharger, imprimer et copier des fichiers dans Drive ; Docs, Sheets et Slides.

Pour supprimer les options permettant de télécharger, d'imprimer et de copier des fichiers, utilisez les files.update avec la Champ booléen copyRequiresWriterPermission défini sur true.