Proteggere i contenuti dei file

L'API Google Drive supporta diversi modi per impedire la modifica dei file, tra cui: limitazione dei contenuti dei file e vietare l'opzione di download, stampa o copia .

Impostare i file come di sola lettura con limitazioni dei contenuti di Drive

Puoi aggiungere una limitazione dei contenuti a un file di Google Drive per impedire agli utenti di: nel seguente modo:

  • Modifica del titolo
  • Modifiche ai contenuti
  • Caricamento di una revisione
  • Aggiunta o modifica di commenti

L'applicazione di limitazioni dei contenuti è un meccanismo che consente la visualizzazione dei contenuti di un L'elemento di Drive deve essere reso di sola lettura senza modificare il relativo accedere alle autorizzazioni. Ciò significa non è una limitazione di accesso. Gli utenti non possono modificare i contenuti del file, operazioni sono comunque consentite in base al livello di accesso (ad esempio, un utente con l'accesso in modifica può comunque spostare un elemento o modificarne le impostazioni di condivisione).

Per aggiungere o rimuovere una limitazione dei contenuti su un file in Drive, un utente devono avere i valori associati autorizzazioni. Per un file o una cartella in Il mio Drive o un Drive condiviso con capabilities.canModifyEditorContentRestriction, devi avere role=writer assegnati. Per un file o una cartella in Il mio Drive o su un Drive condiviso con una limitazione dei contenuti di ownerRestricted, devi essere il proprietario del file o avere role=organizer. Per visualizzare un elemento con una limitazione dei contenuti, gli utenti devono avere role=reader o superiore. Per un elenco completo dei ruoli, vedi Ruoli e autorizzazioni. Per modificare le autorizzazioni per un file, vedi Modificare le autorizzazioni.

Puoi utilizzare il campo booleano contentRestrictions.readOnly nella Risorsa files da impostare una limitazione dei contenuti. Tieni presente che l'impostazione di una limitazione dei contenuti per un elemento sovrascriverà quello esistente.

Scenari relativi alle limitazioni dei contenuti

Una limitazione dei contenuti di un elemento di Drive segnala agli utenti che contenuti non devono essere modificati. I motivi possono essere i seguenti:

  • Sospensione del lavoro su un documento collaborativo durante i periodi di revisione o di controllo.
  • Impostazione di un elemento sullo stato "Conclusa", ad esempio "Approvato".
  • Impedire modifiche durante una riunione sensibile.
  • Proibizione di modifiche esterne ai flussi di lavoro gestiti da sistemi automatici.
  • Limitazione delle modifiche da parte di Google Apps Script e dei componenti aggiuntivi di Google Workspace.
  • Evitare modifiche accidentali a un documento.

Tieni presente che sebbene le limitazioni dei contenuti contribuiscano alla gestione dei contenuti, ha lo scopo di impedire agli utenti con autorizzazioni sufficienti di continuare a lavorare su molto utile. Inoltre, non è un modo per creare un record immutabile. Poiché le limitazioni dei contenuti di Drive sono modificabili, di un elemento non garantisce che quell'elemento non venga mai modificato.

Gestire i file con limitazioni dei contenuti

Documenti Google, Fogli Google e Presentazioni Google, nonché tutti gli altri file, possono includere limitazioni dei contenuti.

Una limitazione dei contenuti di un elemento impedisce di modificare il titolo e i contenuti, tra cui:

  • Commenti e suggerimenti (su Documenti, Fogli, slide e file binari).
  • Revisioni di un file binario
  • Testo e formattazione in Documenti
  • Testo o formule in Fogli, un layout di Fogli, e istanze in Fogli
  • Tutti i contenuti di Presentazioni, nonché l'ordine e il numero di slide

Alcuni tipi di file non possono includere una limitazione dei contenuti. Ecco alcuni esempi:

Aggiungi una limitazione dei contenuti

Per aggiungere una limitazione dei contenuti dei file, utilizza la files.update con il metodo Campo contentRestrictions.readOnly impostato su true. Aggiungi un elemento reason facoltativo per perché stai aggiungendo la limitazione, ad esempio "Contratto definitivo". Le seguenti esempio di codice mostra come aggiungere una limitazione dei contenuti:

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;
  }
}

Sostituisci FILE_ID con il valore fileId del file da modificare modificare.

Quando esegui il codice campione, il file presenta limitazioni relative ai contenuti e mostra il simbolo di un lucchetto () viene visualizzato accanto al nome del file all'interno di l'interfaccia utente di Google Drive (UI). La è ora di sola lettura.

Un file con una limitazione dei contenuti all'interno di un elenco di file di Drive.
Figura 1. Un file con una limitazione dei contenuti all'interno di un elenco di file di Drive.

Rimuovere una limitazione dei contenuti

Per rimuovere una limitazione dei contenuti di un file, utilizza il metodo files.update con Campo contentRestrictions.readOnly impostato su false. Il seguente esempio di codice mostra come rimuovere una limitazione dei contenuti:

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;
  }
}

Sostituisci FILE_ID con il valore fileId del file da modificare modificare.

Quando esegui il codice campione, il file non è più soggetto a limitazioni per i contenuti.

Puoi anche utilizzare la UI di Drive per rimuovere una limitazione dei contenuti e consentire la modifica dei contenuti (se disponi delle autorizzazioni corrette). Esistono due metodi opzioni per farlo:

  1. In Drive, fai clic con il tasto destro del mouse sul file con una limitazione dei contenuti e fai clic su Sblocca .

    Rimuovi una limitazione dei contenuti dei file all'interno di un elenco di file di Drive.
    Figura 2. Rimuovi una limitazione dei contenuti dei file all'interno di un elenco di file di Drive.
  2. Apri il file con una limitazione dei contenuti e fai clic su (Modalità di blocco) > Sblocca file.

    Rimuovi una limitazione dei contenuti di un file all'interno di un documento.
    Figura 3. Rimuovi una limitazione dei contenuti di un file all'interno di un documento.

Verificare la presenza di una limitazione dei contenuti

Per verificare l'eventuale presenza di una limitazione dei contenuti, utilizza la files.get con il metodo contentRestrictions campo restituito. Il seguente esempio di codice mostra come Controllare lo stato di una limitazione dei contenuti:

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;
  }
}

Sostituisci FILE_ID con il valore fileId del file da modificare verifica.

Quando esegui il codice campione, il metodo restituisce un ContentRestriction risorsa, se presente.

Aggiungere una limitazione dei contenuti che solo il proprietario del file può modificare

Per aggiungere una limitazione dei contenuti dei file in modo che solo i proprietari dei file possano attivare/disattivare il meccanismo: utilizza il metodo files.update con il campo booleano contentRestrictions.ownerRestricted impostato su true. La l'esempio di codice riportato di seguito mostra come aggiungere una limitazione dei contenuti per i proprietari dei file solo:

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;
  }
}

Sostituisci FILE_ID con il valore fileId del file da modificare modificare.

Quando esegui il codice campione, il file è soggetto a limitazioni per i contenuti e solo il file i proprietari possono rimuoverla. Se sei il proprietario del file, viene visualizzato un simbolo di lucchetto attivo () accanto al nome del file all'interno della sezione Interfaccia utente di Drive (UI). Se non sei il proprietario, il simbolo del lucchetto è attenuato.

Per rimuovere il flag ownerRestricted, utilizza il metodo files.update con il Campo contentRestrictions.ownerRestricted impostato su false.

Funzionalità relative alla limitazione dei contenuti

Una risorsa files contiene un raccolta di campi capabilities booleani utilizzati per indicare se un'azione che possono essere eseguiti su un file.

Le limitazioni dei contenuti includono i seguenti capabilities:

Per ulteriori informazioni, vedi Funzionalità.

Per un esempio di recupero del file capabilities, consulta Verifica dell'utente autorizzazioni.

Impedire agli utenti di scaricare, stampare o copiare il file

Puoi limitare il modo in cui gli utenti con autorizzazioni role=commenter o role=reader possono scaricare, stampare e copiare file all'interno di Drive, Documenti, Fogli e Presentazioni.

Per rimuovere le opzioni per scaricare, stampare e copiare i file, utilizza la files.update con il metodo Campo booleano copyRequiresWriterPermission impostato su true.