Ochrona treści pliku

Interfejs Google Drive API obsługuje kilka sposobów zapobiegania modyfikowaniu plików, w tym ograniczenie zawartości pliku i zablokowanie możliwości pobierania, drukowania lub kopiowania plików.

Ustawianie plików jako tylko do odczytu za pomocą ograniczeń treści na Dysku

Możesz dodać ograniczenie treści do pliku na Dysku Google, aby uniemożliwić użytkownikom:

  • Zmiana tytułu
  • Wprowadzanie zmian w treściach
  • Przesyłanie wersji
  • dodawanie i modyfikowanie komentarzy,

Ograniczenie treści nie jest ograniczeniem dostępu. Użytkownicy nie mogą modyfikować zawartości pliku, ale inne operacje są nadal dozwolone w zależności od poziomu dostępu. Na przykład użytkownik z dostępem do edycji może nadal przenosić element lub zmieniać jego ustawienia udostępniania.

Aby dodać lub usunąć ograniczenie dotyczące treści w pliku na Dysku, użytkownik musi mieć odpowiednie permissions. W przypadku pliku lub folderu na Moim dysku lub na dysku współdzielonym z capabilities.canModifyEditorContentRestriction musisz mieć przypisane uprawnienia role=writer. W przypadku pliku lub folderu na Moim dysku lub na dysku współdzielonym z ownerRestrictedograniczeniem treści musisz być właścicielem pliku lub mieć role=organizer. Aby wyświetlić produkt z ograniczeniem treści, użytkownicy muszą mieć ukończone role=reader lat. Pełną listę ról znajdziesz w artykule Role i uprawnienia. Aby zaktualizować uprawnienia do pliku, zapoznaj się z artykułem Aktualizowanie uprawnień.

Aby ustawić ograniczenie treści, możesz użyć pola logicznego contentRestrictions.readOnly w zasobie files. Pamiętaj, że ustawienie ograniczenia treści w przypadku produktu zastępuje dotychczasowe ograniczenie.

Scenariusze ograniczeń treści

Ograniczenie treści dotyczące elementu na Dysku sygnalizuje użytkownikom, że zawartości nie należy zmieniać. Może to być spowodowane jedną z tych przyczyn:

  • wstrzymywanie pracy nad dokumentem, nad którym pracujesz wspólnie z innymi osobami, w okresach przeglądu lub audytu;
  • Ustawienie elementu w stanie końcowym, np. zatwierdzonym.
  • Zapobieganie zmianom podczas poufnego spotkania.
  • Zakaz wprowadzania zmian zewnętrznych w przypadku przepływów pracy obsługiwanych przez systemy automatyczne.
  • Ograniczanie edycji przez Apps Script i dodatki do Google Workspace.
  • Unikanie przypadkowych zmian w dokumencie.

Pamiętaj jednak, że ograniczenia treści mogą pomóc w zarządzaniu treściami, ale nie mają na celu uniemożliwienia użytkownikom z odpowiednimi uprawnieniami dalszej pracy nad elementem. Nie jest to też sposób na utworzenie niezmienialnego rekordu. Ograniczenia dotyczące treści na Dysku można zmieniać, więc ograniczenie dotyczące treści w przypadku elementu nie gwarantuje, że element nigdy się nie zmieni.

Zarządzanie plikami z ograniczeniami dotyczącymi treści

Dokumenty, Arkusze i Prezentacje Google, a także wszystkie inne pliki mogą zawierać ograniczenia dotyczące treści.

Ograniczenie treści w przypadku produktu uniemożliwia wprowadzanie zmian w jego tytule i treści, w tym:

  • komentarze i sugestie (w Dokumentach, Arkuszach, Prezentacjach i plikach binarnych);
  • Wersje pliku binarnego
  • Tekst i formatowanie w Dokumentach
  • tekst lub formuły w Arkuszach, układ Arkuszy i instancje w Arkuszach;
  • wszystkie treści w Prezentacjach Google, a także kolejność i liczba slajdów;

Niektóre typy plików nie mogą zawierać ograniczeń dotyczących treści. Oto kilka przykładów:

Dodawanie ograniczenia treści

Aby dodać ograniczenie dotyczące treści pliku, użyj metody files.update z polem contentRestrictions.readOnly ustawionym na true. Dodaj opcjonalny reason, aby podać powód wprowadzenia ograniczenia, np. „Podpisano umowę”. Poniższy przykładowy kod pokazuje, jak dodać ograniczenie treści:

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

Zastąp symbol FILE_ID symbolem fileId pliku, który chcesz zmodyfikować.

Gdy uruchomisz przykładowy kod, plik będzie miał ograniczenia dostępu, a obok nazwy pliku w interfejsie Dysku Google pojawi się symbol blokady (). Plik jest teraz tylko do odczytu.

Plik z ograniczeniami dotyczącymi treści na liście plików na Dysku.
Rysunek 1. Plik z ograniczeniami dotyczącymi treści na liście plików na Dysku.

Usuwanie ograniczenia treści

Aby usunąć ograniczenie dotyczące treści pliku, użyj metody files.update z polem contentRestrictions.readOnly ustawionym na false. Poniższy przykładowy kod pokazuje, jak usunąć ograniczenie treści:

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

Zastąp symbol FILE_ID symbolem fileId pliku, który chcesz zmodyfikować.

Po uruchomieniu przykładowego kodu plik nie będzie już zawierać treści podlegających ograniczeniom.

Możesz też użyć interfejsu Dysku, aby usunąć ograniczenie treści i zezwolić na edytowanie treści (pod warunkiem, że masz odpowiednie uprawnienia). Możesz to zrobić na 2 sposoby:

  1. Na Dysku kliknij prawym przyciskiem myszy plik z ograniczeniem treści i wybierz Odblokuj .

    Usuwanie ograniczenia dotyczącego treści pliku na liście plików na Dysku.
    Rysunek 2. Usuwanie ograniczeń dotyczących treści pliku z listy plików na Dysku.
  2. Otwórz plik z ograniczeniem treści i kliknij (Tryb zablokowany) > Odblokuj plik.

    Usuwanie ograniczenia dotyczącego zawartości pliku w dokumencie.
    Rysunek 3. Usuń ograniczenie dotyczące treści pliku w dokumencie.

Sprawdzanie ograniczeń treści

Aby sprawdzić, czy na treści nałożono ograniczenia, użyj metody files.get z polem contentRestrictions. Poniższy przykładowy kod pokazuje, jak sprawdzić stan ograniczenia treści:

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

Zastąp symbol FILE_ID symbolem fileId pliku, który chcesz sprawdzić.

Po uruchomieniu przykładowego kodu metoda zwraca zasób ContentRestriction, jeśli jest dostępny.

Dodawanie ograniczenia treści, które może modyfikować tylko właściciel pliku

Aby dodać ograniczenie dotyczące treści pliku, tak aby tylko właściciele plików mogli włączać i wyłączać mechanizm, użyj metody files.update z polem logicznym contentRestrictions.ownerRestricted ustawionym na true. Poniższy przykładowy kod pokazuje, jak dodać ograniczenie treści tylko dla właścicieli plików:

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

Zastąp symbol FILE_ID symbolem fileId pliku, który chcesz zmodyfikować.

Gdy uruchomisz przykładowy kod, plik zostanie objęty ograniczeniami dotyczącymi treści i tylko właściciele pliku będą mogli go usunąć. Jeśli jesteś właścicielem pliku, obok nazwy pliku w interfejsie Dysku pojawi się aktywny symbol blokady (). Jeśli nie jesteś właścicielem, symbol blokady jest przyciemniony.

Aby usunąć flagę ownerRestricted, użyj metody files.update z polem contentRestrictions.ownerRestricted ustawionym na false.

Możliwości ograniczania treści

Zasób files zawiera zbiór pól logicznychcapabilities, które wskazują, czy można wykonać działanie na pliku.

Ograniczenia treści zawierają te capabilities:

  • capabilities.canModifyEditorContentRestriction: czy bieżący użytkownik może dodawać lub modyfikować ograniczenia treści.
  • capabilities.canModifyOwnerContentRestriction: czy bieżący użytkownik może dodać lub zmodyfikować ograniczenie treści właściciela.
  • capabilities.canRemoveContentRestriction: czy bieżący użytkownik może usunąć zastosowane ograniczenie treści (jeśli występuje).

Więcej informacji znajdziesz w artykule Omówienie możliwości plików.

Przykład pobierania pliku capabilities znajdziesz w artykule Pobieranie możliwości pliku.

Uniemożliwianie użytkownikom pobierania, drukowania i kopiowania pliku

Możesz ograniczyć sposoby pobierania, drukowania i kopiowania plików przez użytkowników na Dysku, w Dokumentach, Arkuszach i Prezentacjach.

Aby określić, czy użytkownik może zmienić ograniczenia pobierania pliku zastosowane przez właściciela lub organizatora, sprawdź pole logiczne capabilities.canChangeItemDownloadRestriction. Jeśli zasada capabilities.canChangeItemDownloadRestriction ma wartość true, do pliku można zastosować ograniczenia pobierania. Więcej informacji znajdziesz w artykule Informacje o możliwościach plików.

Aby zastosować ograniczenia pobierania do pliku, ustaw pole downloadRestrictions za pomocą metody files.update. Pole możesz ustawić za pomocą obiektu DownloadRestrictionsMetadata.

Obiekt DownloadRestrictionsMetadata ma 2 pola: itemDownloadRestrictioneffectiveDownloadRestrictionWithContext. Oba pola są czytelne, ale można ustawić tylko pole itemDownloadRestriction. Pole itemDownloadRestriction zwraca obiekt DownloadRestriction. Obiekt DownloadRestriction zawiera 2 osobne pola logiczne: restrictedForReadersrestrictedForWriters.

Podczas ustawiania pola itemDownloadRestriction ograniczenie pobierania pliku jest stosowane bezpośrednio przez właściciela lub organizatora. Nie uwzględnia ustawień dysku współdzielonego ani reguł zapobiegania utracie danych (DLP). Więcej informacji znajdziesz w artykule Informacje o DLP.

Jeśli zaktualizujesz pole itemDownloadRestriction, ustawiając pole restrictedForWriters na true, oznacza to, że restrictedForReaders ma wartość true. Podobnie ustawienie restrictedForWriters na truerestrictedForReaders na false jest równoznaczne z ustawieniem zarówno restrictedForWriters, jak i restrictedForReaders na true.

W przypadku pola effectiveDownloadRestrictionWithContext ograniczenie pobierania jest stosowane do pliku i uwzględnia wszystkie ustawienia ograniczeń oraz reguły DLP.

Pole effectiveDownloadRestrictionWithContext może mieć wartość restrictedForWriters lub restrictedForReaders. Jeśli w ustawieniach pliku, dysku współdzielonego lub regułach DLP (w tym tych z kontekstem) istnieją ustawienia ograniczające pobieranie lub kopiowanie dla odpowiednich ról, wartość jest ustawiona na true, w przeciwnym razie jest to false.

Zgodność wsteczna

Zalecamy używanie obiektu DownloadRestriction, aby określać, jak użytkownicy mogą pobierać, drukować i kopiować pliki.

Jeśli chcesz używać pola logicznego copyRequiresWriterPermission, funkcje odczytu i zapisu w tym polu są różne.

Pobrana wartość pola copyRequiresWriterPermission odzwierciedla, czy użytkownicy z uprawnieniami role=commenter lub role=reader mogą pobierać, drukować lub kopiować pliki na Dysku. Wartość pola odzwierciedla kombinację ustawień plików, ustawień dysku współdzielonego lub reguł DLP. Nie obejmuje to jednak oceny kontekstu w przypadku reguł DLP.

Ustawienie pola copyRequiresWriterPermission na false powoduje zaktualizowanie pól restrictedForWritersrestrictedForReaders do wartości false. Oznacza to, że ustawienia ograniczeń pobierania lub kopiowania zostaną usunięte w przypadku wszystkich użytkowników.

Pola, które kontrolują funkcje pobierania, drukowania i kopiowania

W tabeli poniżej znajdziesz listę pól zasobu files, które wpływają na funkcje pobierania, drukowania i kopiowania:

Pole Opis Wersja
capabilities.canCopy Określa, czy bieżący użytkownik może skopiować plik. wersje 2 i 3
capabilities.canDownload Określa, czy bieżący użytkownik może pobrać plik. wersje 2 i 3
capabilities.canChangeCopyRequiresWriterPermission Informacja, czy bieżący użytkownik może zmienić copyRequiresWriterPermission ograniczenie pliku. wersje 2 i 3
capabilities.canChangeItemDownloadRestriction Informacja, czy bieżący użytkownik może zmienić ograniczenie pobierania pliku. Tylko wersja 3
copyRequiresWriterPermission Określa, czy opcje kopiowania, drukowania i pobierania tego pliku mają być wyłączone dla czytelników i komentujących. wersje 2 i 3
downloadRestrictions Ograniczenia pobierania zastosowane w przypadku pliku. Tylko wersja 3