Crie e faça a gestão de vistas autorizadas

Este documento descreve como definir, criar e realizar outras operações administrativas numa vista autorizada através da CLI Google Cloud ou da Google Cloud consola. Antes de ler este documento, deve conhecer a Vista geral das visualizações autorizadas.

Funções necessárias

Para receber as autorizações de que precisa para realizar operações administrativas numa vista autorizada , peça ao seu administrador para lhe conceder a função de IAM Administrador do Bigtable (roles/bigtable.admin) na tabela subjacente . Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Esta função predefinida contém as autorizações necessárias para realizar operações administrativas numa vista autorizada . Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:

Autorizações necessárias

São necessárias as seguintes autorizações para realizar operações administrativas numa vista 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

Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

Para saber como gerir as funções de IAM do Bigtable ao nível da visualização autorizada, consulte o artigo Gestão de IAM ao nível da visualização autorizada.

Crie uma vista autorizada

Quando cria uma visualização autorizada, tenha em atenção as consultas que vão ser executadas em relação à mesma. Os pedidos de leitura, escrita e eliminação enviados para uma vista autorizada têm de fazer referência apenas a dados que se encontram na vista autorizada. Isto significa, por exemplo, que se tentar ler, escrever ou eliminar uma linha que tenha colunas na tabela que não estejam na sua vista autorizada, o pedido falha.

Para evitar uma situação em que os pedidos de dados a uma vista autorizada falham porque foram adicionadas colunas à tabela que não estão na vista autorizada, pode especificar um prefixo de qualificador de coluna vazio "" para uma família de colunas.

Pode especificar até 100 parâmetros de definição por visualização autorizada.

Consola

  1. Abra a lista de instâncias do Bigtable na Google Cloud consola.

    Abra a lista de instâncias

  2. Clique na instância que contém a tabela da qual quer ter uma vista 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 da qual quer uma vista autorizada.

  6. Adicione cláusulas para criar uma consulta que devolva apenas os dados aos quais quer que os utilizadores da vista autorizada tenham acesso.

    • As cláusulas aceitáveis para uma visualização autorizada são row key prefix e columns (qualificadores de colunas).
    • Para especificar um prefixo qualificador de coluna, adicione um asterisco após o prefixo. Por exemplo, para incluir todas as colunas que começam por "data", introduza data* no campo Colunas após o nome da família de colunas.
    • A cláusula Limit é ignorada quando a vista autorizada é guardada.
    • Para mais informações sobre a utilização do criador de consultas, consulte o artigo Crie consultas na consola.
  7. Clique em Executar.

  8. Depois de verificar que o painel de resultados mostra os dados que devem ser incluídos na vista autorizada, clique em Guardar como vista.

  9. Introduza um identificador permanente para a vista autorizada que ainda não esteja em utilização para a tabela.

  10. Opcional: para guardar sem conceder acesso, clique em Guardar.

  11. Opcional: para guardar a vista autorizada e, em seguida, configurar o acesso para a mesma, clique em Guardar e conceder acesso. Para mais informações sobre o controlo de acesso, consulte o artigo Controlo de acesso do Bigtable com a IAM.

    1. Adicione, pelo menos, um principal e selecione a função à qual esse principal ou grupo de principais deve ser atribuído.
    2. Opcional: para conceder acesso a funções adicionais, clique em Adicionar outra função e, de seguida, introduza o principal e a função para cada função adicional.
    3. Clique em Guardar.

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 o seguinte:

  • AUTHORIZED_VIEW_ID: um identificador permanente para a vista autorizada que ainda não está a ser usado para a tabela
  • INSTANCE_ID: o identificador permanente da instância que contém a tabela
  • TABLE_ID: o identificador permanente dessa tabela da qual está a criar uma vista autorizada
  • DEFINITION_FILE_PATH: o caminho para uma representação formatada em JSON válida de uma visualização autorizada. Para ver exemplos de ficheiros de definição formatados corretamente, consulte os exemplos de ficheiros de definição.

Também pode executar o comando sem fornecer o ficheiro de definição. Neste caso, a CLI gcloud abre um editor e pede-lhe valores.

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

Java

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

Para se autenticar no Bigtable, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure 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());
}

Modifique uma vista autorizada

Consola

  1. Abra a lista de instâncias do Bigtable na Google Cloud consola.

    Abra 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 explorador, expanda a tabela e Visualizações autorizadas.

  5. Junto à vista autorizada que quer modificar, clique no menu de ações more_vert e, de seguida, clique em Abrir.

  6. Modificar ou adicionar cláusulas para criar uma consulta que devolva apenas os dados aos quais quer que os utilizadores da vista autorizada tenham acesso.

    • As cláusulas aceitáveis para uma visualização autorizada são row key prefix e columns (qualificadores de colunas).
    • Para especificar um prefixo qualificador de coluna, adicione um asterisco após o prefixo. Por exemplo, para incluir todas as colunas que começam por "data", introduza data* no campo Colunas após o nome da família de colunas.
    • A cláusula Limit é ignorada quando a vista autorizada é guardada.
    • Para mais informações sobre a utilização do criador de consultas, consulte o artigo Crie consultas na consola.
  7. Clique em Executar.

  8. Depois de verificar que o painel de resultados mostra os dados que devem ser incluídos na vista autorizada, clique em Guardar como vista.

  9. Na caixa de diálogo, introduza o ID da vista autorizada que modificou.

    A caixa de diálogo apresenta uma mensagem de aviso a indicar que está a substituir a vista autorizada existente.

  10. Opcional: para guardar sem conceder acesso, clique em Guardar.

  11. Opcional: para guardar a vista autorizada e, em seguida, configurar o acesso para a mesma, clique em Guardar e conceder acesso. Para mais informações sobre o controlo de acesso, consulte o artigo Controlo de acesso do Bigtable com a IAM.

    1. Adicione, pelo menos, um principal e selecione a função à qual esse principal ou grupo de principais deve ser atribuído.
    2. Opcional: para conceder acesso a funções adicionais, clique em Adicionar outra função e, de seguida, introduza o principal e a função para cada função adicional.
    3. Clique em Guardar.

gcloud

Modifique uma vista autorizada através do 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 o seguinte:

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

Também pode executar o comando sem fornecer o ficheiro de definição. Neste caso, a CLI gcloud abre um editor e pede-lhe valores.

Opcional: para impedir que a CLI gcloud apresente um pedido de confirmação que mostre a diferença entre a estrutura de visualização autorizada atual e após a confirmação da atualização, anexe a flag --no-interactive ao comando.

Java

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

Para se autenticar no Bigtable, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure 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());
}

Ative ou desative a proteção contra eliminação

Para ativar a proteção contra eliminação para uma vista autorizada, modifique o ficheiro JSON que define a vista autorizada definindo a flag deletionProtection como true.

Para desativar a proteção contra eliminação, modifique o ficheiro JSON que define a sua visualização autorizada definindo a flag deletionProtection como false.

Finalize as alterações à sua vista autorizada executando o comando bigtable authorized-views update com o nome do ficheiro JSON atualizado. Para mais informações, consulte a documentação de referência em gcloud bigtable authorized-views update.

Elimine uma visualização autorizada

Se eliminar uma tabela, todas as vistas autorizadas da tabela também são eliminadas.

Se eliminar uma vista autorizada, não pode anular a eliminação. No entanto, se eliminar uma tabela e, em seguida, anular a eliminação, todas as vistas autorizadas da tabela são restauradas juntamente com a tabela. Em seguida, tem de reconfigurar a IAM para as visualizações autorizadas, bem como para as tabelas. Para obter detalhes, consulte o artigo Anule a eliminação de uma tabela.

Consola

  1. Abra a lista de instâncias do Bigtable na Google Cloud consola.

    Abra 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 explorador, expanda a tabela e Visualizações autorizadas.

  5. Junto à vista autorizada que quer eliminar, clique no menu de ações more_vert e, de seguida, clique em Eliminar.

gcloud

Elimine uma visualização autorizada através do 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 o seguinte:

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

Opcional: para impedir que a CLI gcloud apresente um pedido de confirmação que exija a confirmação ou o cancelamento da eliminação, acrescente a flag --nointeractive ao comando.

Java

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

Para se autenticar no Bigtable, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure 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());
}

Aceda a uma lista de vistas autorizadas para uma tabela

Consola

  1. Abra a lista de instâncias do Bigtable na Google Cloud consola.

    Abra 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 explorador, expanda 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 o seguinte:

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

Java

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

Para se autenticar no Bigtable, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure 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());
}

Veja detalhes acerca de uma visualização autorizada

Consola

  1. Abra a lista de instâncias do Bigtable na Google Cloud consola.

    Abra 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 explorador, expanda a tabela e Visualizações autorizadas.

  5. Junto à vista autorizada que quer ver, clique no menu de ações more_vert e, de seguida, clique em Abrir.

gcloud

Para obter 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 o seguinte:

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

Java

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

Para se autenticar no Bigtable, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure 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());
}

Conceda acesso a uma vista autorizada

Para mais informações sobre o controlo de acesso, consulte o artigo Controlo de acesso do Bigtable com a IAM.

Consola

  1. Abra a lista de instâncias do Bigtable na Google Cloud consola.

    Abra 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 do explorador, expanda a tabela e Visualizações autorizadas.

  5. Junto ao nome da vista autorizada, clique no menu de ações more_vert e, de seguida, clique em Conceder acesso.

  6. Adicione, pelo menos, um principal e selecione a função à qual esse principal ou grupo de principais deve ser atribuído.

  7. Opcional: para conceder acesso a funções adicionais, clique em Adicionar outra função e, de seguida, introduza o principal e a função para cada função adicional.

  8. Clique em Guardar.

gcloud

Para conceder acesso a uma vista 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 o seguinte:

  • AUTH_VIEW_ID: o ID da vista autorizada
  • TABLE_ID: o ID da tabela da qual a vista autorizada é
  • INSTANCE_ID: a instância que contém a tabela
  • PRINCIPAL: o principal (utilizador) ao qual quer conceder acesso, como user:222larabrown@gmail.com
  • ROLE: a função que está a conceder, como roles/bigtable.reader.

O que se segue?