Autorisierte Ansichten erstellen und verwalten

In diesem Dokument wird beschrieben, wie Sie mit der Google Cloud CLI autorisierte Ansichten definieren, erstellen und andere Verwaltungsvorgänge ausführen. Bevor Sie dieses Dokument lesen, sollten Sie sich mit der Übersicht über autorisierte Ansichten vertraut machen.

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 auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierte Rolle enthält die Berechtigungen, die zum Ausführen administrativer Vorgänge für eine autorisierte Ansicht erforderlich sind. 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 auf Ebene der autorisierten Ansicht finden Sie unter IAM-Verwaltung auf Ebene der autorisierten Ansicht.

Autorisierte Ansicht erstellen

Berücksichtigen Sie beim Erstellen einer autorisierten Ansicht die Abfragen, die darauf ausgeführt werden. Lese-, Schreib- und Löschanfragen, die an eine autorisierte Ansicht gesendet werden, dürfen nur auf Daten in der autorisierten Ansicht verweisen. 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 -Autorisierte Ansicht, schlägt die Anfrage fehl.

Um zu vermeiden, dass Datenanfragen an eine autorisierte Ansicht fehlschlagen weil 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 Definitionen pro autorisierter Datenansicht 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 noch nicht für die Tabelle verwendet wird
  • INSTANCE_ID: Die permanente Kennzeichnung der Instanz, die die Tabelle enthält
  • TABLE_ID: die permanente Kennzeichnung der Tabelle, für die Sie eine autorisierte Ansicht erstellen
  • DEFINITION_FILE_PATH: der Pfad zu einer gültigen JSON-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 diesem Fall öffnet die gcloud CLI einen Editor und fordert Sie auf, Werte anzugeben.

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 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 JSON-Darstellung einer autorisierten Ansicht. Beispiele für korrekt formatierte Definitionsdateien finden Sie unter Beispiele für Definitionsdateien.

Sie können den Befehl auch ohne Definition ausführen. In diesem Fall öffnet die gcloud CLI einen Editor und fordert Sie auf, Werte anzugeben.

Optional: Wenn Sie verhindern möchten, dass die gcloud CLI eine Bestätigungsaufforderung mit dem Unterschied zwischen der aktuellen autorisierten Ansichtsstruktur und der Ansicht nach dem Commit der Aktualisierung anzeigt, hängen Sie dem Befehl das Flag --no-interactive 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 Aktualisierungsbefehl --deletion-protection hinzu.

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. Anschließend müssen Sie IAM für die autorisierten Ansichten und für die Tabellen neu konfigurieren. Weitere Informationen finden Sie unter Gelöschte 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 Kennzeichnung der autorisierten 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 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 zur Authentifizierung bei Bigtable die Standardanmeldedaten für Anwendungen ein. 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 Kennzeichnung der autorisierten Ansicht

Java

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

Richten Sie zur Authentifizierung bei Bigtable die Standardanmeldedaten für Anwendungen ein. 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