Creare e gestire le viste autorizzate

Questo documento descrive come definire, creare ed eseguire altre operazioni amministrative su una visualizzazione autorizzata utilizzando Google Cloud CLI o la console Google Cloud. Prima di leggere questo documento, devi conoscere la Panoramica delle visualizzazioni autorizzate.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per eseguire operazioni amministrative su una visualizzazione autorizzata, chiedi all'amministratore di concederti il ruolo IAM Amministratore Bigtable (roles/bigtable.admin) per la tabella sottostante. 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 su una vista autorizzata. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

Per eseguire operazioni amministrative su una visualizzazione autorizzata, sono necessarie le seguenti autorizzazioni:

  • 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.

Per scoprire come gestire i ruoli IAM di Bigtable a livello di visualizzazione autorizzata, consulta la sezione Gestione IAM a livello di visualizzazione autorizzata.

Creare una vista autorizzata

Quando crei una vista autorizzata, tieni conto delle query che verranno eseguite al suo interno. Le richieste di lettura, scrittura ed eliminazione inviate a una vista autorizzata devono fare riferimento solo ai dati contenuti 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.

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

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

Console

  1. Apri l'elenco delle istanze Bigtable nella console Google Cloud.

    Apri l'elenco delle istanze

  2. Fai clic sull'istanza contenente la tabella di cui vuoi avere una visualizzazione autorizzata.

  3. Nel riquadro di navigazione, fai clic su Bigtable Studio.

  4. Fai clic su Generatore per aprire Query Builder.

  5. Scegli la tabella di cui vuoi una visualizzazione autorizzata.

  6. Aggiungi clausole per creare una query che restituisca solo i dati a cui vuoi che gli utenti della vista autorizzata abbiano accesso.

    • Le clausole accettabili per una vista autorizzata sono prefisso della chiave di riga e colonne (qualificatori di colonna).
    • Per specificare un prefisso del qualificatore della colonna, aggiungi un asterisco dopo il prefisso. Ad esempio, per includere tutte le colonne che iniziano con "data", inserisci data* nel campo Colonne dopo il nome della famiglia di colonne.
    • La clausola Limit viene ignorata quando la vista autorizzata viene salvata.
    • Per ulteriori informazioni sull'utilizzo del generatore di query, consulta Creare query nella console.
  7. Fai clic su Esegui.

  8. Dopo aver verificato che il riquadro dei risultati mostri i dati che devono essere inclusi nella visualizzazione autorizzata, fai clic su Salva come visualizzazione.

  9. Inserisci un identificatore permanente per la vista autorizzata che non sia già in uso per la tabella.

  10. (Facoltativo) Per salvare senza concedere l'accesso, fai clic su Salva.

  11. (Facoltativo) Per salvare la vista autorizzata e configurare l'accesso, fai clic su Salva e concedi l'accesso. Per ulteriori informazioni sul controllo dell'accesso, consulta Controllo dell'accesso a Bigtable con IAM.

    1. Aggiungi almeno un'entità e seleziona il ruolo a cui deve essere assegnata.
    2. (Facoltativo) Per concedere l'accesso per altri ruoli, fai clic su Aggiungi un altro ruolo, quindi inserisci l'entità e il ruolo per ogni ruolo aggiuntivo.
    3. Fai clic su Salva.

gcloud

Esegui il comando bigtable authorized-views create. Per saperne di più, consulta la documentazione di riferimento all'indirizzo gcloud 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 la visualizzazione 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 di cui 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 caso, la CLI gcloud apre un editor e ti chiede i valori.

Per verificare che la vista autorizzata sia stata creata, ottieni un elenco di 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

Console

  1. Apri l'elenco delle istanze Bigtable nella console Google Cloud.

    Apri l'elenco delle istanze

  2. Fai clic sull'istanza contenente la vista autorizzata.

  3. Nel riquadro di navigazione, fai clic su Bigtable Studio.

  4. Nell'esploratore, espandi la tabella e Visualizzazioni autorizzate.

  5. Accanto alla visualizzazione autorizzata che vuoi modificare, fai clic sul menu di azioni more_vert e poi su Apri.

  6. Modifica o aggiungi clausole per creare una query che restituisca solo i dati a cui vuoi che gli utenti della visualizzazione autorizzati abbiano accesso.

    • Le clausole accettabili per una vista autorizzata sono prefisso della chiave di riga e colonne (qualificatori di colonna).
    • Per specificare un prefisso del qualificatore della colonna, aggiungi un asterisco dopo il prefisso. Ad esempio, per includere tutte le colonne che iniziano con "data", inserisci data* nel campo Colonne dopo il nome della famiglia di colonne.
    • La clausola Limit viene ignorata quando la vista autorizzata viene salvata.
    • Per ulteriori informazioni sull'utilizzo del generatore di query, consulta Creare query nella console.
  7. Fai clic su Esegui.

  8. Dopo aver verificato che il riquadro dei risultati mostri i dati che devono essere inclusi nella visualizzazione autorizzata, fai clic su Salva come visualizzazione.

  9. Nella finestra di dialogo, inserisci l'ID della vista autorizzata che hai modificato.

    Nella finestra di dialogo viene visualizzato un messaggio che ti avvisa che stai sovrascrivendo la visualizzazione autorizzata esistente.

  10. (Facoltativo) Per salvare senza concedere l'accesso, fai clic su Salva.

  11. (Facoltativo) Per salvare la vista autorizzata e configurare l'accesso, fai clic su Salva e concedi l'accesso. Per ulteriori informazioni sul controllo dell'accesso, consulta Controllo dell'accesso a Bigtable con IAM.

    1. Aggiungi almeno un'entità e seleziona il ruolo a cui deve essere assegnata l'entità o il gruppo di entità.
    2. (Facoltativo) Per concedere l'accesso per altri ruoli, fai clic su Aggiungi un altro ruolo, quindi inserisci l'entità e il ruolo per ogni ruolo aggiuntivo.
    3. Fai clic su Salva.

gcloud

Modifica una vista autorizzata utilizzando il comando bigtable authorized-views update. Per saperne di più, consulta la documentazione di riferimento all'indirizzo gcloud 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 della visualizzazione 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 file di definizione formattati correttamente, consulta Esempi di file di definizione.

Puoi anche eseguire il comando senza fornire il file di definizione. In questo caso, la CLI gcloud apre un editor e ti chiede 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 autenticarti a Bigtable, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare 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 viste autorizzate della tabella vengono ripristinate insieme alla tabella. Poi devi riconfigurare IAM per le viste autorizzate e per le tabelle. Per maggiori dettagli, consulta Annulla eliminazione di una tabella.

Console

  1. Apri l'elenco delle istanze Bigtable nella console Google Cloud.

    Apri l'elenco delle istanze

  2. Fai clic sull'istanza contenente la vista autorizzata.

  3. Nel riquadro di navigazione, fai clic su Bigtable Studio.

  4. Nell'esploratore, espandi la tabella e Visualizzazioni autorizzate.

  5. Accanto alla visualizzazione autorizzata che vuoi eliminare, fai clic sul menu di azioni more_vert e poi su Elimina.

gcloud

Elimina una visualizzazione autorizzata utilizzando il comando bigtable instances tables authorized-views delete. Per saperne di più, consulta la documentazione di riferimento all'indirizzo gcloud bigtable 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 della visualizzazione 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 richiesta di conferma che ti chiede di confermare o annullare l'eliminazione, aggiungi il flag --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());
}

Visualizzare un elenco delle viste autorizzate per una tabella

Console

  1. Apri l'elenco delle istanze Bigtable nella console Google Cloud.

    Apri l'elenco delle istanze

  2. Fai clic sull'istanza contenente la vista autorizzata.

  3. Nel riquadro di navigazione, fai clic su Bigtable Studio.

  4. Nell'esploratore, espandi la tabella e Visualizzazioni autorizzate.

gcloud

Esegui il comando bigtable authorized-views list. Per saperne di più, consulta la documentazione di riferimento all'indirizzo gcloud 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 autenticarti a Bigtable, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare 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 visualizzazione autorizzata

Console

  1. Apri l'elenco delle istanze Bigtable nella console Google Cloud.

    Apri l'elenco delle istanze

  2. Fai clic sull'istanza contenente la vista autorizzata.

  3. Nel riquadro di navigazione, fai clic su Bigtable Studio.

  4. Nell'esploratore, espandi la tabella e Visualizzazioni autorizzate.

  5. Accanto alla visualizzazione autorizzata che vuoi visualizzare, fai clic sul menu di azioni more_vert e poi su Apri.

gcloud

Per visualizzare i dettagli di una visualizzazione autorizzata, esegui il comando bigtable instances tables authorized-views describe. Per saperne di più, consulta la documentazione di riferimento all'indirizzo gcloud bigtable authorized-views describe.

gcloud bigtable authorized-views describe \
–-instance=INSTANCE_ID \
–-table=TABLE_ID \
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 della visualizzazione autorizzata

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.

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

Concedere l'accesso a una vista autorizzata

Per ulteriori informazioni sul controllo dell'accesso, consulta Controllo dell'accesso a Bigtable con IAM.

Console

  1. Apri l'elenco delle istanze Bigtable nella console Google Cloud.

    Apri l'elenco delle istanze

  2. Fai clic sull'istanza contenente la vista autorizzata.

  3. Nel riquadro di navigazione, fai clic su Bigtable Studio.

  4. Nel riquadro di esplorazione, espandi la tabella e le Visualizzazioni autorizzate.

  5. Accanto al nome della visualizzazione autorizzata, fai clic sul menu di azioni more_vert e poi su Concede accesso.

  6. Aggiungi almeno un'entità e seleziona il ruolo a cui deve essere assegnata l'entità o il gruppo di entità.

  7. (Facoltativo) Per concedere l'accesso per altri ruoli, fai clic su Aggiungi un altro ruolo e inserisci l'entità e il ruolo per ogni ruolo aggiuntivo.

  8. Fai clic su Salva.

gcloud

Per concedere l'accesso a una vista autorizzata, utilizza il comando bigtable authorized-views add-iam-policy-binding. Per saperne di più, consulta la documentazione di riferimento all'indirizzo 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

Sostituisci quanto segue:

  • AUTH_VIEW_ID: l'ID della vista autorizzata
  • TABLE_ID: l'ID della tabella di cui è associata la vista autorizzata
  • INSTANCE_ID: l'istanza che contiene la tabella
  • PRINCIPAL: il principale (utente) a cui vuoi concedere l'accesso, ad esempio user:222larabrown@gmail.com
  • ROLE: il ruolo che stai concedendo, ad esempio roles/bigtable.viewer.

Passaggi successivi