Creare e gestire le viste autorizzate

Questo documento descrive come definire, creare ed eseguire altre operazioni amministrative su una visualizzazione autorizzata utilizzando l'interfaccia a riga di comando Google Cloud. Prima di leggi questo documento, dovresti avere familiarità con la Panoramica di viste autorizzate.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie eseguire operazioni amministrative su una vista autorizzata , chiedi all'amministratore di concederti Ruolo IAM Amministratore Bigtable (roles/bigtable.admin) su la tabella sottostante di Google. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo predefinito contiene le autorizzazioni necessarie per effettuare operazioni amministrative in una visualizzazione autorizzata. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

Le seguenti autorizzazioni sono necessarie per: eseguire operazioni amministrative su una vista autorizzata

  • 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

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Scopri come gestire i ruoli IAM di Bigtable nella visualizzazione autorizzata vedi IAM a livello di vista autorizzato dei modelli.

Crea una vista autorizzata

Quando crei una vista autorizzata, considera le query che verranno eseguirlo. Le richieste di lettura, scrittura ed eliminazione inviate a un deve fare riferimento solo ai dati presenti nella vista autorizzata. Ciò significa, ad esempio, che se tenti di leggere, scrivere o eliminare una riga con colonne nella tabella che non sono nella visualizzazione autorizzata, la richiesta non va a buon fine.

Evitare che le richieste di dati a una vista autorizzata non vadano a buon fine perché sono state aggiunte alla tabella colonne che non si trovano vista autorizzata, puoi specificare un prefisso vuoto del qualificatore di colonna "" per una famiglia di colonne.

Puoi specificare fino a 100 parametri di definizione per vista autorizzata.

gcloud

Esegui il comando bigtable authorized-views create.

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

Sostituisci quanto segue:

  • AUTHORIZED_VIEW_ID: un identificatore permanente per il valore vista autorizzata che non è già in uso per la tabella
  • INSTANCE_ID: l'identificatore permanente dell'istanza che contiene la tabella
  • TABLE_ID: l'identificatore permanente della tabella che stai creando una vista autorizzata
  • DEFINITION_FILE_PATH: il percorso di una rappresentazione in formato JSON valida di una visualizzazione autorizzata. Per esempi di file di definizione formattati correttamente, consulta Esempi di file di definizione.

Puoi anche eseguire il comando senza fornire il file di definizione. In questo case study, l'interfaccia a riga di comando gcloud apre un editor e richiede i valori.

Per verificare che la vista autorizzata sia stata creata, ottieni un elenco delle viste autorizzate per la tabella.

Java

Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client Bigtable.

Per autenticarti a Bigtable, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.

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

Modificare una vista autorizzata

gcloud

Modifica una vista autorizzata utilizzando il comando bigtable authorized-views update.

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

Sostituisci quanto segue:

  • AUTHORIZED_VIEW_ID: l'identificatore permanente per la vista autorizzata
  • INSTANCE_ID: l'identificatore permanente dell'istanza
  • TABLE_ID: l'identificatore permanente della tabella di origine
  • DEFINITION_FILE_PATH: il percorso di una rappresentazione in formato JSON valida di una visualizzazione autorizzata. Per esempi di come file di definizione formattati, consulta la sezione File di definizione esempi.

Puoi anche eseguire il comando senza fornire il file di definizione. In questo case study, l'interfaccia a riga di comando gcloud apre un editor e richiede i valori.

(Facoltativo) Per impedire a gcloud CLI di visualizzare una richiesta di conferma che mostra la differenza tra la struttura della vista autorizzata corrente e quella dopo l'applicazione dell'aggiornamento, aggiungi il flag --no-interactive al comando.

Java

Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client Bigtable.

Per eseguire l'autenticazione su Bigtable, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.

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

Attivare o disattivare la protezione da eliminazione

Per attivare la protezione da eliminazione per una vista autorizzata, aggiungi --deletion-protection al comando di aggiornamento.

Per disattivare la protezione dall'eliminazione, aggiungi no-deletion-protection al comando di aggiornamento.

Eliminare una vista autorizzata

Se elimini una tabella, vengono eliminate anche tutte le visualizzazioni autorizzate della tabella.

Se elimini una visualizzazione autorizzata, non puoi annullarne l'eliminazione. Tuttavia, se elimini una tabella e poi annulli l'eliminazione, tutte le visualizzazioni autorizzate della tabella vengono ripristinate insieme alla tabella. devi quindi riconfigurare IAM per per le viste autorizzate, nonché per le tabelle. Per maggiori dettagli, vedi Annullare l'eliminazione una tabella.

gcloud

Elimina una visualizzazione autorizzata utilizzando il comando bigtable instances tables authorized-views delete.

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

Sostituisci quanto segue:

  • AUTHORIZED_VIEW_ID: l'identificatore permanente per la vista autorizzata
  • INSTANCE_ID: l'identificatore permanente dell'istanza
  • TABLE_ID: l'identificatore permanente della tabella di origine

(Facoltativo) Per impedire a gcloud CLI di visualizzare una conferma che richiede la conferma o l'annullamento dell'eliminazione, aggiungi il --nointeractive al comando.

Java

Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client Bigtable.

Per autenticarti a Bigtable, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.

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

Ottieni un elenco delle viste autorizzate per una tabella

gcloud

Esegui il comando bigtable authorized-views list:

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

Sostituisci quanto segue:

  • INSTANCE_ID: l'identificatore permanente dell'istanza
  • TABLE_ID: l'identificatore permanente della tabella

Java

Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client Bigtable.

Per eseguire l'autenticazione su Bigtable, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.

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

Visualizzare i dettagli di una vista autorizzata

gcloud

Per visualizzare i dettagli di una visualizzazione autorizzata, esegui il comando bigtable instances tables authorized-views describe:

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

Sostituisci quanto segue:

  • INSTANCE_ID: l'identificatore permanente dell'istanza
  • TABLE_ID: l'identificatore permanente della tabella
  • AUTHORIZED_VIEW_ID: l'identificatore permanente del valore vista autorizzata

Java

Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client Bigtable.

Per eseguire l'autenticazione su Bigtable, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.

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

Passaggi successivi