Autorisierte Ansichten erstellen und verwalten

In diesem Dokument wird beschrieben, wie Sie weitere administrative Vorgänge in einer autorisierten Ansicht mithilfe der Google Cloud CLI ausführen. Bevor Sie sollten Sie mit dem Modul Übersicht über von autorisierten Ansichten festgelegt.

Erforderliche Rollen

Um die erforderlichen Berechtigungen zu erhalten, Verwaltungsvorgänge für eine autorisierte Ansicht ausführen , bitten Sie Ihren Administrator, Ihnen IAM-Rolle Bigtable Admin (roles/bigtable.admin) für der zugrunde liegenden Tabelle . Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

Diese vordefinierte Rolle enthält Berechtigungen, die zum Verwaltungsvorgänge für eine autorisierte Ansicht ausführen . Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind erforderlich, um Verwaltungsvorgänge für eine autorisierte Ansicht ausführen :

  • 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

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Informationen zum Verwalten von Bigtable-IAM-Rollen in der autorisierten Ansicht siehe IAM auf der Ebene der autorisierten Ansicht Verwaltung von Google-Produkten.

Autorisierte Ansicht erstellen

Berücksichtigen Sie beim Erstellen einer autorisierten Ansicht die Abfragen, die gegen sie antreten. Lese-, Schreib- und Löschanfragen, die an einen autorisierte Ansicht darf nur auf Daten verweisen, die sich in der autorisierten Ansicht aus. Wenn Sie zum Beispiel versuchen, in eine Zeile schreiben oder eine Zeile löschen, die Spalten in der Tabelle enthält, die nicht in Ihrem schlägt die Anfrage fehl.

Um zu vermeiden, dass Datenanfragen an eine autorisierte Ansicht fehlschlagen weil der Tabelle Spalten hinzugefügt wurden, die nicht in der autorisierten Ansicht ausgewählt haben, können Sie ein leeres Spaltenqualifizierpräfix "" für eine Spaltenfamilie.

Sie können bis zu 100 Definitionsparameter pro autorisierter Ansicht angeben.

gcloud

Führen Sie den Befehl bigtable authorized-views create aus:

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

Ersetzen Sie Folgendes:

  • AUTHORIZED_VIEW_ID: eine permanente Kennzeichnung für die autorisierte Ansicht, die nicht bereits für die Tabelle verwendet wird
  • INSTANCE_ID: die permanente Kennzeichnung der Instanz mit der Tabelle
  • TABLE_ID: die permanente Kennzeichnung der Tabelle, die Sie ausführen Erstellen einer autorisierten Ansicht von
  • DEFINITION_FILE_PATH: Pfad zu einem gültigen JSON-Format Darstellung einer autorisierten Ansicht. Beispiele für korrekte formatierten Definitionsdateien finden Sie unter Definitionsdatei Beispiele.

Sie können den Befehl auch ohne Angabe der Definitionsdatei ausführen. In dieser öffnet die gcloud CLI einen Editor und fordert Sie zur Eingabe von Werten auf.

So bestätigen Sie, dass die autorisierte Ansicht erstellt wurde: eine Liste der autorisierten Ansichten für die Tabelle abrufen.

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für Bigtable finden Sie unter Bigtable-Clientbibliotheken

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Bigtable zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

Autorisierte Ansicht ändern

gcloud

Ändern Sie eine autorisierte Ansicht mit dem Befehl bigtable authorized-views update.

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

Ersetzen Sie Folgendes:

  • AUTHORIZED_VIEW_ID: die permanente Kennzeichnung des autorisierte Ansicht
  • INSTANCE_ID: Die permanente Kennzeichnung der Instanz
  • TABLE_ID: die permanente Kennzeichnung der Quelltabelle
  • DEFINITION_FILE_PATH: Pfad zu einem gültigen JSON-Format Darstellung einer autorisierten Ansicht. Beispiele für korrekte formatierten Definitionsdateien finden Sie unter Definitionsdatei Beispiele.

Sie können den Befehl auch ohne Angabe der Definitionsdatei ausführen. In dieser öffnet die gcloud CLI einen Editor und fordert Sie zur Eingabe von Werten auf.

Optional: So verhindern Sie, dass die gcloud CLI eine Bestätigung anzeigt Eingabeaufforderung mit dem Unterschied zwischen der aktuellen autorisierten Ansicht Struktur und hängen Sie nach dem Commit der Aktualisierung das Flag --no-interactive an. zum Befehl hinzu.

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für Bigtable finden Sie unter Bigtable-Clientbibliotheken

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Bigtable zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

Löschschutz aktivieren oder deaktivieren

Um den Löschschutz für eine autorisierte Ansicht zu aktivieren, fügen Sie --deletion-protection für den Befehl „update“.

Um den Löschschutz zu deaktivieren, fügen Sie no-deletion-protection für den Befehl „update“.

Autorisierte Ansicht löschen

Wenn Sie eine Tabelle löschen, werden auch alle autorisierten Ansichten der Tabelle gelöscht.

Wenn Sie eine autorisierte Ansicht löschen, können Sie sie nicht wiederherstellen. Wenn Sie jedoch Tabelle löschen und anschließend wiederherstellen, werden alle autorisierten Ansichten der werden zusammen mit der Tabelle wiederhergestellt. Dann müssen Sie IAM für für die autorisierten Ansichten sowie für die Tabellen. Weitere Informationen finden Sie unter Wiederherstellen eine Tabelle.

gcloud

Löschen Sie eine autorisierte Ansicht mit dem Befehl bigtable instances tables authorized-views delete.

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

Ersetzen Sie Folgendes:

  • AUTHORIZED_VIEW_ID: die permanente Kennzeichnung des autorisierte Ansicht
  • INSTANCE_ID: Die permanente Kennzeichnung der Instanz
  • TABLE_ID: die permanente Kennzeichnung der Quelltabelle

Optional: So verhindern Sie, dass die gcloud CLI eine Bestätigung anzeigt Aufforderung zum Bestätigen oder Abbrechen des Löschvorgangs, hängen Sie die --nointeractive an den Befehl.

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für Bigtable finden Sie unter Bigtable-Clientbibliotheken

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Bigtable zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

Liste autorisierter Ansichten für eine Tabelle abrufen

gcloud

Führen Sie den Befehl bigtable authorized-views list aus:

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

Ersetzen Sie Folgendes:

  • INSTANCE_ID: Die permanente Kennzeichnung der Instanz
  • TABLE_ID: Die permanente Kennzeichnung der Tabelle

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für Bigtable finden Sie unter Bigtable-Clientbibliotheken

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Bigtable zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

Details zu einer autorisierten Ansicht aufrufen

gcloud

Führen Sie den Befehl bigtable instances tables authorized-views describe aus, um Details zu einer autorisierten Ansicht abzurufen:

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

Ersetzen Sie Folgendes:

  • INSTANCE_ID: Die permanente Kennzeichnung der Instanz
  • TABLE_ID: Die permanente Kennzeichnung der Tabelle
  • AUTHORIZED_VIEW_ID: die permanente Kennzeichnung des autorisierte Ansicht

Java

Informationen zum Installieren und Verwenden der Clientbibliothek für Bigtable finden Sie unter Bigtable-Clientbibliotheken

Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Bigtable zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

Nächste Schritte