Autorisierte Ansichten erstellen und verwalten

In diesem Dokument wird beschrieben, wie Sie über die Google Cloud CLI weitere Verwaltungsvorgänge für eine autorisierte Ansicht definieren, erstellen und ausführen. Bevor Sie dieses Dokument lesen, sollten Sie sich mit der Übersicht über autorisierte Ansichten vertraut gemacht haben.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Bigtable Admin (roles/bigtable.admin) für die zugrunde liegende Tabelle zu gewähren, damit Sie die Berechtigungen erhalten, die Sie für Verwaltungsvorgänge in einer autorisierten Ansicht benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

Diese vordefinierte Rolle enthält die Berechtigungen, die erforderlich sind, um Verwaltungsvorgänge für eine autorisierte Ansicht auszufü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 auszufü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

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

Informationen zum Verwalten von Bigtable-IAM-Rollen auf Ebene der autorisierten Datenansicht finden Sie unter IAM-Verwaltung auf autorisierte Datenansichtsebene.

Autorisierte Ansicht erstellen

Berücksichtigen Sie beim Erstellen einer autorisierten Ansicht die Abfragen, die für die Ansicht ausgeführt werden. Lese-, Schreib- und Löschanfragen, die an eine autorisierte Ansicht gesendet werden, dürfen nur auf Daten verweisen, die sich in der autorisierten Ansicht befinden. Wenn Sie beispielsweise versuchen, eine Zeile mit Spalten in der Tabelle zu lesen, in sie zu schreiben oder zu löschen, die sich nicht in Ihrer autorisierten Ansicht befinden, schlägt die Anfrage fehl.

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

Sie können bis zu 100 Definitionsparameter pro autorisierte 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 Kennung für die autorisierte Ansicht, die nicht bereits für die Tabelle verwendet wird
  • INSTANCE_ID: die permanente Kennzeichnung der Instanz, die die Tabelle enthält
  • TABLE_ID: die permanente Kennung der Tabelle, für die Sie eine autorisierte Ansicht erstellen
  • DEFINITION_FILE_PATH: Der Pfad zu einer gültigen Darstellung einer autorisierten Ansicht im JSON-Format. Beispiele für richtig formatierte Definitionsdateien finden Sie unter Beispiele für Definitionsdateien.

Sie können den Befehl auch ausführen, ohne die Definitionsdatei bereitzustellen. In diesem Fall öffnet die gcloud CLI einen Editor und fordert Sie zur Eingabe von Werten auf.

Wenn Sie prüfen möchten, ob die autorisierte Ansicht erstellt wurde, rufen Sie eine Liste der autorisierten Ansichten für die Tabelle ab.

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 Kennung der autorisierten Ansicht
  • INSTANCE_ID: Die permanente Kennzeichnung der Instanz
  • TABLE_ID: die permanente Kennzeichnung der Quelltabelle
  • DEFINITION_FILE_PATH: Der Pfad zu einer gültigen Darstellung einer autorisierten Ansicht im JSON-Format. Beispiele für richtig formatierte Definitionsdateien finden Sie unter Beispiele für Definitionsdateien.

Sie können den Befehl auch ausführen, ohne die Definitionsdatei bereitzustellen. In diesem Fall öffnet die gcloud CLI einen Editor und fordert Sie zur Eingabe von Werten auf.

Optional: Wenn Sie verhindern möchten, dass die gcloud CLI eine Bestätigungsaufforderung anzeigt, in der der Unterschied zwischen der aktuellen autorisierten Ansichtsstruktur angezeigt wird, und nach dem Commit des Updates, hängen Sie das Flag --no-interactive an den Befehl an.

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

Wenn Sie den Löschschutz für eine autorisierte Ansicht aktivieren möchten, fügen Sie dem Update-Befehl --deletion-protection hinzu.

Wenn Sie den Löschschutz deaktivieren möchten, fügen Sie dem Update-Befehl no-deletion-protection hinzu.

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 eine Tabelle löschen und sie anschließend wiederherstellen, werden alle autorisierten Ansichten der Tabelle zusammen mit der Tabelle wiederhergestellt. Anschließend müssen Sie IAM für die autorisierten Ansichten und für die Tabellen neu konfigurieren. Weitere Informationen finden Sie unter Tabelle wiederherstellen.

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 Kennung der autorisierten Ansicht
  • INSTANCE_ID: Die permanente Kennzeichnung der Instanz
  • TABLE_ID: die permanente Kennzeichnung der Quelltabelle

Optional: Wenn Sie verhindern möchten, dass die gcloud CLI eine Bestätigungsaufforderung anzeigt, in der Sie das Löschen bestätigen oder abbrechen müssen, hängen Sie das Flag --nointeractive an den Befehl an.

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 der autorisierten 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 ansehen

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 Kennung der autorisierten 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