Creare e gestire le viste autorizzate

Questo documento descrive come definire, creare ed eseguire altre operazioni amministrative su una vista autorizzata utilizzando Google Cloud CLI o la consoleGoogle Cloud . Prima di leggere questo documento, dovresti acquisire familiarità con la Panoramica delle viste autorizzate.

Ruoli obbligatori

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

Questo ruolo predefinito contiene le autorizzazioni necessarie per eseguire operazioni amministrative su una vista autorizzata . Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per eseguire operazioni amministrative su una vista 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 Bigtable a livello di vista autorizzata, consulta la sezione Gestione IAM a livello di vista autorizzata.

Creare una vista autorizzata

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

Per evitare una situazione in cui le richieste di dati a una vista autorizzata non vadano a buon fine perché sono state aggiunte alla tabella colonne non presenti nella vista autorizzata, puoi specificare un prefisso 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 che contiene la tabella di cui vuoi una visualizzazione autorizzata.

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

  4. Fai clic su Builder per aprire Query Builder.

  5. Scegli la tabella di cui vuoi visualizzare una versione autorizzata.

  6. Aggiungi clausole per creare una query che restituisca solo i dati a cui vuoi che gli utenti con accesso alla visualizzazione 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 qualificatore di 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 saperne di più 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 poi configurare l'accesso, fai clic su Salva e concedi l'accesso. Per saperne di più sul controllo dell'accesso, consulta Controllo dell'controllo dell'accesso 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 ruoli aggiuntivi, 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 vista autorizzata non ancora in uso per la tabella
  • INSTANCE_ID: l'identificatore permanente dell'istanza che contiene la tabella
  • TABLE_ID: l'identificatore permanente della tabella per cui stai creando una vista autorizzata
  • DEFINITION_FILE_PATH: il percorso di una rappresentazione formattata in JSON valido di una vista 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, gcloud CLI apre un editor e ti chiede 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 la sezione Librerie client Bigtable.

Per eseguire l'autenticazione in Bigtable, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi 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 che contiene la vista autorizzata.

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

  4. In Explorer, espandi la tabella e Viste autorizzate.

  5. Accanto alla vista autorizzata che vuoi modificare, fai clic sul menu delle azioni more_vert, quindi fai clic su Apri.

  6. Modifica o aggiungi clausole per creare una query che restituisca solo i dati a cui vuoi che gli utenti della visualizzazione 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 qualificatore di 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 saperne di più 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.

    La finestra di dialogo mostra 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 poi configurare l'accesso, fai clic su Salva e concedi l'accesso. Per saperne di più sul controllo dell'accesso, consulta Controllo dell'controllo dell'accesso 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 ruoli aggiuntivi, 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 formattata in JSON valido di una vista 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, gcloud CLI apre un editor e ti chiede i valori.

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

Java

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

Per eseguire l'autenticazione in Bigtable, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi 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 contro l'eliminazione per una visualizzazione autorizzata, modifica il file JSON che definisce la visualizzazione autorizzata impostando il flag deletionProtection su true.

Per disattivare la protezione dall'eliminazione, modifica il file JSON che definisce la vista autorizzata impostando il flag deletionProtection su false.

Finalizza le modifiche alla visualizzazione autorizzata eseguendo il comando bigtable authorized-views update con il nome del file JSON aggiornato. Per maggiori informazioni, consulta la documentazione di riferimento all'indirizzo gcloud bigtable authorized-views update.

Elimina una vista autorizzata

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

Se elimini una visualizzazione autorizzata, non puoi annullare l'eliminazione. Tuttavia, se elimini una tabella e poi la ripristini, tutte le visualizzazioni autorizzate della tabella vengono ripristinate insieme alla tabella. Dopodiché devi riconfigurare IAM per le viste autorizzate e per le tabelle. Per maggiori dettagli, vedi Recuperare una tabella eliminata.

Console

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

    Apri l'elenco delle istanze

  2. Fai clic sull'istanza che contiene la vista autorizzata.

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

  4. In Explorer, espandi la tabella e Viste autorizzate.

  5. Accanto alla visualizzazione autorizzata che vuoi eliminare, fai clic sul menu azione more_vert, quindi fai clic 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 la sezione Librerie client Bigtable.

Per eseguire l'autenticazione in Bigtable, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi 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 che contiene la vista autorizzata.

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

  4. In Explorer, espandi la tabella e Viste 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 la sezione Librerie client Bigtable.

Per eseguire l'autenticazione in Bigtable, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi 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 che contiene la vista autorizzata.

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

  4. In Explorer, espandi la tabella e Viste autorizzate.

  5. Accanto alla vista autorizzata che vuoi visualizzare, fai clic sul menu delle azioni more_vert, quindi fai clic 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 la sezione Librerie client Bigtable.

Per eseguire l'autenticazione in Bigtable, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi 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 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 che contiene la vista autorizzata.

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

  4. Nel riquadro dell'esploratore, espandi la tabella e Viste autorizzate.

  5. Accanto al nome della vista autorizzata, fai clic sul menu delle azioni more_vert, quindi fai clic su Concedi 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 ruoli aggiuntivi, fai clic su Aggiungi un altro ruolo, quindi 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 a cui si riferisce la vista autorizzata
  • INSTANCE_ID: l'istanza che contiene la tabella
  • PRINCIPAL: l'entità (utente) a cui vuoi concedere l'accesso, ad esempio user:222larabrown@gmail.com
  • ROLE: il ruolo che stai concedendo, ad esempio roles/bigtable.reader.

Passaggi successivi