Proteger o conteúdo do arquivo

A API Google Drive oferece suporte a várias formas de impedir a modificação de arquivos, incluindo: restrição de conteúdo a arquivos e proibindo a opção de fazer o download, imprimir ou copiar .

Tornar os arquivos somente leitura com as restrições de conteúdo do Drive

Você pode adicionar uma restrição de conteúdo a um arquivo do Google Drive para impedir que os usuários fazendo o seguinte:

  • Modificar o título
  • Fazer edições de conteúdo
  • Como fazer upload de uma revisão
  • Adicionar ou modificar comentários

A aplicação de restrições de conteúdo é um mecanismo que permite que o conteúdo de um O item do Drive será definido como somente leitura sem alterar a permissões de acesso. Isso significa não uma restrição de acesso. Embora os usuários não possam modificar o conteúdo do arquivo, outras operações ainda são permitidas com base no nível de acesso (por exemplo, um usuário com o acesso para editar ainda pode mover um item ou alterar as configurações de compartilhamento dele).

Para adicionar ou remover uma restrição de conteúdo em um arquivo no Drive, um usuário precisam ter o conjunto de dados permissões. Para um arquivo ou uma pasta no "Meu Drive" ou um drive compartilhado com capabilities.canModifyEditorContentRestriction, você precisa ter role=writer atribuídas. Para um arquivo ou uma pasta no Meu Drive ou em um drive compartilhado com uma restrição de conteúdo ownerRestricted, você precisa ser o proprietário do arquivo ou ter role=organizer. Para acessar um item com restrição de conteúdo, os usuários devem ter role=reader ou superior. Para uma lista completa de funções, consulte Funções e do Cloud Storage. Para mudar as permissões de um arquivo, consulte Mudar permissões.

É possível usar o campo booleano contentRestrictions.readOnly na Recurso files a ser definido uma restrição de conteúdo. Definir uma restrição de conteúdo para um item substitui o atual.

Cenários de restrições de conteúdo

Uma restrição de conteúdo em um item do Drive indica aos usuários que o conteúdos não devem ser alterados. Isso pode acontecer por alguns dos seguintes motivos:

  • Pausar o trabalho em um documento colaborativo durante os períodos de revisão ou auditoria.
  • Definir um item para um estado finalizado, como aprovado.
  • Evitar alterações durante uma reunião sensível.
  • Proibir mudanças externas em fluxos de trabalho gerenciados por sistemas automatizados.
  • Restringir edições feitas pelo Google Apps Script e por complementos do Google Workspace.
  • Como evitar edições acidentais em um documento.

Observe que, embora as restrições de conteúdo ajudam a gerenciar o conteúdo, elas não são destinado a impedir que usuários com permissões suficientes continuem a trabalhar em uma do item de linha. Além disso, não é uma forma de criar um registro imutável. As restrições de conteúdo do Drive são mutáveis. Portanto, em um item não garante que ele nunca será alterado.

Gerenciar arquivos com restrições de conteúdo

Documentos, Planilhas e Apresentações Google, bem como todos os outros arquivos, podem conter restrições de conteúdo.

Uma restrição de conteúdo em um item impede alterações no título e no conteúdo dele, incluindo:

  • Comentários e sugestões (nos apps Documentos, Planilhas, Apresentações e arquivos binários)
  • Revisões de um arquivo binário
  • Texto e formatação no app Documentos
  • textos ou fórmulas no Planilhas, um layout do Planilhas, e instâncias no Planilhas
  • Todo o conteúdo das Apresentações Google, bem como a ordem e o número desliza,
.

Certos tipos de arquivo não podem ter uma restrição de conteúdo. Vejas alguns exemplos:

Adicionar uma restrição de conteúdo

Para adicionar uma restrição ao conteúdo do arquivo, use o método files.update com o Campo contentRestrictions.readOnly definido como true. Adicione um reason opcional para por que você está adicionando a restrição, como "Contrato finalizado". O seguinte exemplo de código mostra como adicionar uma restrição de conteúdo:

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

Substitua FILE_ID pelo fileId do arquivo que você quer. modificar.

Quando você executa o exemplo de código, o conteúdo do arquivo é restrito e um símbolo de bloqueio () aparece ao lado do nome do arquivo em a interface de usuário do Google Drive (UI). A agora é somente leitura.

Um arquivo com restrição de conteúdo em uma lista de arquivos do Drive.
Figura 1. Um arquivo com restrição de conteúdo em uma lista de arquivos do Drive.

Remover uma restrição de conteúdo

Para remover uma restrição de conteúdo do arquivo, use o método files.update com o O campo contentRestrictions.readOnly foi definido como false. O exemplo de código a seguir mostra como remover uma restrição de conteúdo:

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

Substitua FILE_ID pelo fileId do arquivo que você quer. modificar.

Quando você executa o exemplo de código, o conteúdo do arquivo não é mais restrito.

Você também pode usar a interface do Drive para remover uma restrição de conteúdo e permitir a edição de conteúdo, desde que você tenha as permissões corretas. Existem duas para fazer isso:

  1. No Drive, clique com o botão direito do mouse no arquivo com restrição de conteúdo e Clique em Desbloquear .

    Remova uma restrição de conteúdo em uma lista de arquivos do Drive.
    Figura 2. Remova uma restrição de conteúdo em uma lista de arquivos do Drive.
  2. Abra o arquivo com uma restrição de conteúdo e clique em (modo bloqueado) > Desbloqueie o arquivo.

    Remova uma restrição de conteúdo de arquivo em um documento.
    Figura 3. Remova uma restrição de conteúdo de arquivo em um documento.

Verificar se há uma restrição de conteúdo

Para verificar se há uma restrição de conteúdo, use o método files.get com o Campo retornado contentRestrictions. O exemplo de código a seguir mostra como Verificar o status de uma restrição de conteúdo:

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

Substitua FILE_ID pelo fileId do arquivo que você quer. verificação.

Quando você executa o exemplo de código, o método retorna uma ContentRestriction recurso, se houver.

Adicionar uma restrição de conteúdo que só o proprietário do arquivo pode modificar

Para adicionar uma restrição de conteúdo de arquivo para que apenas os proprietários possam ativar/desativar o mecanismo, use o método files.update com o campo booleano contentRestrictions.ownerRestricted definido como true. A este exemplo de código mostra como adicionar uma restrição de conteúdo para proprietários de arquivos :

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

Substitua FILE_ID pelo fileId do arquivo que você quer. modificar.

Quando você executa o exemplo de código, o conteúdo do arquivo é restrito e somente proprietários podem removê-lo. Se você for o proprietário do arquivo, um símbolo de bloqueio ativo () vai aparecer ao lado do nome do arquivo na Interface do usuário do Drive (UI). Se você não for o proprietário, o símbolo de cadeado estará esmaecido.

Para remover a sinalização ownerRestricted, use o método files.update com o Campo contentRestrictions.ownerRestricted definido como false.

Recursos de restrição de conteúdo

Um recurso files contém um coleção de campos capabilities booleanos usados para indicar se uma ação que pode ser executada em um arquivo.

As restrições de conteúdo contêm o seguinte capabilities:

Para mais informações, consulte Recursos.

Para um exemplo de recuperação do arquivo capabilities, consulte Verificar usuário do Google Cloud.

Impedir que os usuários façam o download, imprimam ou copiem o arquivo

Você pode limitar a forma como os usuários com as permissões role=commenter ou role=reader podem fazer o download, imprimir e copiar arquivos no Drive; Documentos, Planilhas e Apresentações.

Para remover as opções de fazer o download, imprimir e copiar arquivos, use o método files.update com o Campo booleano copyRequiresWriterPermission definido como true.