Criar e gerenciar visualizações autorizadas

Este documento descreve como definir, criar e realizar outras operações administrativas em uma visualização autorizada usando a CLI ou o console do Google Cloud. Antes de ler este documento, você precisa conhecer a Visão geral das visualizações autorizadas.

Funções exigidas

Para receber as permissões necessárias para executar operações administrativas em uma visualização autorizada, peça ao administrador para conceder a você o papel do IAM Administrador do Bigtable (roles/bigtable.admin) na tabela. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esse papel predefinido contém as permissões necessárias para realizar operações administrativas em uma visualização autorizada. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As permissões a seguir são necessárias para realizar operações administrativas em uma visualização autorizada:

  • bigtable.authorizedViews.get
  • bigtable.authorizedViews.list
  • bigtable.authorizedViews.create
  • bigtable.authorizedViews.update
  • bigtable.authorizedViews.delete
  • bigtable.authorizedViews.getIamPolicy
  • bigtable.authorizedViews.setIamPolicy
  • bigtable.authorizedViews.readRows
  • bigtable.authorizedViews.sampleRowKeys
  • bigtable.authorizedViews.mutateRows

Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.

Para saber como gerenciar papéis do IAM do Bigtable no nível da visualização autorizada, consulte Gerenciamento do IAM no nível da visualização autorizada.

Criar uma visualização autorizada

Ao criar uma visualização autorizada, considere as consultas que serão executadas nela. As solicitações de leitura, gravação e exclusão enviadas para uma visualização autorizada precisam referenciar apenas os dados que estão na visualização autorizada. Isso significa, por exemplo, que se você tentar ler, gravar ou excluir uma linha que tenha colunas na tabela que não estão na sua visualização autorizada, a solicitação falhará.

Para evitar uma situação em que as solicitações de dados para uma visualização autorizada falhem porque colunas foram adicionadas à tabela que não estão na visualização autorizada, especifique um prefixo de qualificador de coluna vazio "" para um grupo de colunas.

É possível especificar até 100 parâmetros de definição por visualização autorizada.

Console

  1. Abra a lista de instâncias do Bigtable no Console do Google Cloud.

    Abrir a lista de instâncias

  2. Clique na instância que contém a tabela que você quer ter uma visualização autorizada.

  3. No painel de navegação, clique em Bigtable Studio.

  4. Clique em Criador para abrir o criador de consultas.

  5. Escolha a tabela que você quer ter acesso.

  6. Adicione cláusulas para criar uma consulta que retorne apenas os dados a que os usuários da visualização autorizada podem ter acesso.

    • As cláusulas aceitáveis para uma visualização autorizada são o prefixo de chave de linha e as colunas (qualificadores de coluna).
    • Para especificar um prefixo de qualificador de coluna, adicione um asterisco após o prefixo. Por exemplo, para incluir todas as colunas que começam com "data", insira data* no campo Colunas depois do nome da família de colunas.
    • A cláusula Limit é ignorada quando a visualização autorizada é salva.
    • Para mais informações sobre como usar o builder de consulta, consulte Criar consultas no console.
  7. Clique em Executar.

  8. Depois de verificar que o painel de resultados mostra dados que precisam ser incluídos na visualização autorizada, clique em Salvar como visualização.

  9. Insira um identificador permanente para a visualização autorizada que ainda não esteja em uso na tabela.

  10. Opcional: para salvar sem conceder acesso, clique em Salvar.

  11. Opcional: para salvar a visualização autorizada e configurar o acesso a ela, clique em Salvar e conceder acesso. Para mais informações sobre o controle de acesso, consulte Controle de acesso do Bigtable com o IAM.

    1. Adicione pelo menos uma pessoa e selecione o papel a que ela ou o grupo de pessoas precisa ser atribuído.
    2. Opcional: para conceder acesso a outros papéis, clique em Adicionar outro papel e insira o principal e o papel de cada papel adicional.
    3. Clique em Salvar.

gcloud

Execute o comando bigtable authorized-views create. Para mais informações, consulte a documentação de referência em gcloud bigtable authorized-views create.

gcloud bigtable authorized-views create AUTHORIZED_VIEW_ID \
  --instance=INSTANCE_ID \
  --table=TABLE_ID \
  --definition-file=DEFINITION_FILE_PATH

Substitua:

  • AUTHORIZED_VIEW_ID: um identificador permanente da visualização autorizada que ainda não está em uso na tabela
  • INSTANCE_ID: identificador permanente da instância que contém a tabela.
  • TABLE_ID: o identificador permanente da tabela para a qual você está criando uma visualização autorizada.
  • DEFINITION_FILE_PATH: o caminho para uma representação válida formatada em JSON de uma visualização autorizada. Para conferir exemplos de arquivos de definição formatados corretamente, consulte Exemplos de arquivos de definição.

Também é possível executar o comando sem fornecer o arquivo de definição. Nesse caso, a CLI gcloud abre um editor e solicita valores.

Para confirmar que a visualização autorizada foi criada, confira uma lista de visualizações autorizadas para a tabela.

Java

Para saber como instalar e usar a biblioteca de cliente do Bigtable, consulte Bibliotecas de cliente do Bigtable.

Para autenticar no Bigtable, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

try {
  CreateAuthorizedViewRequest request =
      CreateAuthorizedViewRequest.of(tableId, authorizedViewId)
          .setAuthorizedViewType(
              SubsetView.create()
                  .addRowPrefix("")
                  .setFamilySubsets(
                      COLUMN_FAMILY,
                      FamilySubsets.create().addQualifierPrefix(COLUMN_QUALIFIER_NAME)));
  AuthorizedView authorizedView = adminClient.createAuthorizedView(request);
  System.out.printf("AuthorizedView: %s created successfully%n", authorizedView.getId());
} catch (NotFoundException e) {
  System.err.println(
      "Failed to create an authorized view from a non-existent table: " + e.getMessage());
}

Modificar uma visualização autorizada

Console

  1. Abra a lista de instâncias do Bigtable no Console do Google Cloud.

    Abrir a lista de instâncias

  2. Clique na instância que contém a visualização autorizada.

  3. No painel de navegação, clique em Bigtable Studio.

  4. No Explorer, abra a tabela e Visualizações autorizadas.

  5. Ao lado da visualização autorizada que você quer modificar, clique no menu de ações more_vert e em Abrir.

  6. Modifique ou adicione cláusulas para criar uma consulta que retorne apenas os dados a que você quer que os usuários da visualização autorizada tenham acesso.

    • As cláusulas aceitáveis para uma visualização autorizada são o prefixo de chave de linha e as colunas (qualificadores de coluna).
    • Para especificar um prefixo de qualificador de coluna, adicione um asterisco após o prefixo. Por exemplo, para incluir todas as colunas que começam com "data", insira data* no campo Colunas depois do nome da família de colunas.
    • A cláusula Limit é ignorada quando a visualização autorizada é salva.
    • Para mais informações sobre como usar o builder de consulta, consulte Criar consultas no console.
  7. Clique em Executar.

  8. Depois de verificar que o painel de resultados mostra dados que precisam ser incluídos na visualização autorizada, clique em Salvar como visualização.

  9. Na caixa de diálogo, insira o ID da visualização autorizada que você modificou.

    A caixa de diálogo mostra uma mensagem alertando que você está substituindo a visualização autorizada.

  10. Opcional: para salvar sem conceder acesso, clique em Salvar.

  11. Opcional: para salvar a visualização autorizada e configurar o acesso a ela, clique em Salvar e conceder acesso. Para mais informações sobre o controle de acesso, consulte Controle de acesso do Bigtable com o IAM.

    1. Adicione pelo menos um participante e selecione o papel a que esse participante ou grupo de participantes precisa ser atribuído.
    2. Opcional: para conceder acesso a outros papéis, clique em Adicionar outro papel e insira o principal e o papel de cada papel adicional.
    3. Clique em Salvar.

gcloud

Modifique uma visualização autorizada usando o comando bigtable authorized-views update. Para mais informações, consulte a documentação de referência em gcloud bigtable authorized-views update.

gcloud bigtable authorized-views update AUTHORIZED_VIEW_ID \
  --instance=INSTANCE_ID \
  --table=TABLE_ID \
  --definition-file=DEFINITION_FILE_PATH

Substitua:

  • AUTHORIZED_VIEW_ID: identificador permanente da visualização autorizada.
  • INSTANCE_ID: identificador permanente da instância;
  • TABLE_ID: o identificador permanente da tabela de origem
  • DEFINITION_FILE_PATH: o caminho para uma representação válida formatada em JSON de uma visualização autorizada. Para conferir exemplos de arquivos de definição formatados corretamente, consulte Exemplos de arquivos de definição.

Também é possível executar o comando sem fornecer o arquivo de definição. Nesse caso, a CLI gcloud abre um editor e solicita valores.

Opcional: para impedir que a CLI gcloud mostre uma solicitação de confirmação que mostre a diferença entre a estrutura de visualização autorizada atual e depois que a atualização for confirmada, anexe a flag --no-interactive ao comando.

Java

Para saber como instalar e usar a biblioteca de cliente do Bigtable, consulte Bibliotecas de cliente do Bigtable.

Para autenticar no Bigtable, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

try {
  // Update to an authorized view permitting everything.
  UpdateAuthorizedViewRequest request =
      UpdateAuthorizedViewRequest.of(tableId, authorizedViewId)
          .setAuthorizedViewType(
              SubsetView.create()
                  .addRowPrefix("")
                  .setFamilySubsets(
                      COLUMN_FAMILY, FamilySubsets.create().addQualifierPrefix("")));
  AuthorizedView authorizedView = adminClient.updateAuthorizedView(request);
  System.out.printf("AuthorizedView: %s updated successfully%n", authorizedView.getId());
} catch (NotFoundException e) {
  System.err.println("Failed to modify a non-existent authorized view: " + e.getMessage());
}

Ativar ou desativar a proteção contra exclusão

Para ativar a proteção contra exclusão de uma visualização autorizada, adicione --deletion-protection ao comando de atualização.

Para desativar a proteção contra exclusão, adicione no-deletion-protection ao comando de atualização.

Excluir uma visualização autorizada

Se você excluir uma tabela, todas as visualizações autorizadas dela também serão excluídas.

Não é possível desfazer a exclusão de uma visualização autorizada. No entanto, se você excluir uma tabela e depois desfazer a exclusão, todas as visualizações autorizadas dela serão restauradas. Em seguida, reconfigure o IAM para as visualizações autorizadas e as tabelas. Para mais detalhes, consulte Desfazer a exclusão de uma tabela.

Console

  1. Abra a lista de instâncias do Bigtable no Console do Google Cloud.

    Abrir a lista de instâncias

  2. Clique na instância que contém a visualização autorizada.

  3. No painel de navegação, clique em Bigtable Studio.

  4. No Explorer, abra a tabela e Visualizações autorizadas.

  5. Ao lado da visualização autorizada que você quer excluir, clique no menu de ações more_vert e em Excluir.

gcloud

Exclua uma visualização autorizada usando o comando bigtable instances tables authorized-views delete. Para mais informações, consulte a documentação de referência em gcloud bigtable authorized-views delete.

gcloud bigtable authorized-views delete AUTHORIZED_VIEW_ID \
  --instance=INSTANCE_ID \
  --table=TABLE_ID

Substitua:

  • AUTHORIZED_VIEW_ID: identificador permanente da visualização autorizada.
  • INSTANCE_ID: identificador permanente da instância;
  • TABLE_ID: o identificador permanente da tabela de origem

Opcional: para impedir que a CLI gcloud mostre uma solicitação de confirmação exigindo que você confirme ou cancele a exclusão, anexe a flag --nointeractive ao comando.

Java

Para saber como instalar e usar a biblioteca de cliente do Bigtable, consulte Bibliotecas de cliente do Bigtable.

Para autenticar no Bigtable, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

try {
  adminClient.deleteAuthorizedView(tableId, authorizedViewId);
  System.out.printf("AuthorizedView: %s deleted successfully%n", authorizedViewId);
} catch (NotFoundException e) {
  System.err.println("Failed to delete a non-existent authorized view: " + e.getMessage());
}

Conferir uma lista de visualizações autorizadas para uma tabela

Console

  1. Abra a lista de instâncias do Bigtable no Console do Google Cloud.

    Abrir a lista de instâncias

  2. Clique na instância que contém a visualização autorizada.

  3. No painel de navegação, clique em Bigtable Studio.

  4. No Explorer, abra a tabela e Visualizações autorizadas.

gcloud

Execute o comando bigtable authorized-views list. Para mais informações, consulte a documentação de referência em gcloud bigtable authorized-views list.

gcloud bigtable authorized-views list \
  --instance=INSTANCE_ID \
  --table=TABLE_ID

Substitua:

  • INSTANCE_ID: identificador permanente da instância;
  • TABLE_ID: identificador permanente da tabela;

Java

Para saber como instalar e usar a biblioteca de cliente do Bigtable, consulte Bibliotecas de cliente do Bigtable.

Para autenticar no Bigtable, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

List<String> authorizedViewIds = new ArrayList<>();
try {
  authorizedViewIds = adminClient.listAuthorizedViews(tableId);
  for (String authorizedViewId : authorizedViewIds) {
    System.out.println(authorizedViewId);
  }
} catch (NotFoundException e) {
  System.err.println(
      "Failed to list authorized views from a non-existent table: " + e.getMessage());
}

Conferir detalhes sobre uma visualização autorizada

Console

  1. Abra a lista de instâncias do Bigtable no Console do Google Cloud.

    Abrir a lista de instâncias

  2. Clique na instância que contém a visualização autorizada.

  3. No painel de navegação, clique em Bigtable Studio.

  4. No Explorer, abra a tabela e Visualizações autorizadas.

  5. Ao lado da visualização autorizada que você quer acessar, clique no menu de ações more_vert e em Abrir.

gcloud

Para conferir detalhes sobre uma visualização autorizada, execute o comando bigtable instances tables authorized-views describe. Para mais informações, consulte a documentação de referência em gcloud bigtable authorized-views describe.

gcloud bigtable authorized-views describe \
–-instance=INSTANCE_ID \
–-table=TABLE_ID \
AUTHORIZED_VIEW_ID

Substitua:

  • INSTANCE_ID: identificador permanente da instância;
  • TABLE_ID: identificador permanente da tabela;
  • AUTHORIZED_VIEW_ID: o identificador permanente da visualização autorizada.

Java

Para saber como instalar e usar a biblioteca de cliente do Bigtable, consulte Bibliotecas de cliente do Bigtable.

Para autenticar no Bigtable, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

AuthorizedView authorizedView = null;
try {
  authorizedView = adminClient.getAuthorizedView(tableId, authorizedViewId);
  SubsetView subsetView = (SubsetView) authorizedView.getAuthorizedViewType();

  for (ByteString rowPrefix : subsetView.getRowPrefixes()) {
    System.out.printf("Row Prefix: %s%n", rowPrefix.toStringUtf8());
  }
  for (Map.Entry<String, FamilySubsets> entry : subsetView.getFamilySubsets().entrySet()) {
    for (ByteString qualifierPrefix : entry.getValue().getQualifierPrefixes()) {
      System.out.printf(
          "Column Family: %s, Qualifier Prefix: %s%n",
          entry.getKey(), qualifierPrefix.toStringUtf8());
    }
    for (ByteString qualifier : entry.getValue().getQualifiers()) {
      System.out.printf(
          "Column Family: %s, Qualifier: %s%n", entry.getKey(), qualifier.toStringUtf8());
    }
  }
} catch (NotFoundException e) {
  System.err.println(
      "Failed to retrieve metadata from a non-existent authorized view: " + e.getMessage());
}

Conceder acesso a uma visualização autorizada

Para mais informações sobre o controle de acesso, consulte Controle de acesso do Bigtable com o IAM.

Console

  1. Abra a lista de instâncias do Bigtable no Console do Google Cloud.

    Abrir a lista de instâncias

  2. Clique na instância que contém a visualização autorizada.

  3. No painel de navegação, clique em Bigtable Studio.

  4. No painel "Explorer", abra a tabela e Visualizações autorizadas.

  5. Ao lado do nome da visualização autorizada, clique no menu de ação more_vert e em Conceder acesso.

  6. Adicione pelo menos um participante e selecione o papel a que esse participante ou grupo de participantes precisa ser atribuído.

  7. Opcional: para conceder acesso a outros papéis, clique em Adicionar outro papel e insira o principal e o papel de cada papel adicional.

  8. Clique em Salvar.

gcloud

Para conceder acesso a uma visualização autorizada, use o comando bigtable authorized-views add-iam-policy-binding. Para mais informações, consulte a documentação de referência em gcloud bigtable authorized-views add-iam-policy-binding.

gcloud bigtable authorized-views add-iam-policy-binding AUTH_VIEW_ID \
--instance=INSTANCE_ID --table=TABLE_ID \
--member=PRINCIPAL --role=ROLE

Substitua:

  • AUTH_VIEW_ID: o ID da visualização autorizada
  • TABLE_ID: o ID da tabela da qual a visualização autorizada faz parte.
  • INSTANCE_ID: a instância que contém a tabela.
  • PRINCIPAL: o principal (usuário) a quem você quer conceder acesso, por exemplo, user:222larabrown@gmail.com
  • ROLE: o papel que você está concedendo, como roles/bigtable.viewer.

A seguir