Detaillierte Zugriffssteuerung konfigurieren

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Auf dieser Seite wird beschrieben, wie Sie eine detaillierte Zugriffssteuerung für Cloud Spanner-Datenbanken konfigurieren.

Weitere Informationen finden Sie im Hilfeartikel Detaillierte Zugriffssteuerung.

Die Konfiguration einer detaillierten Zugriffssteuerung umfasst die folgenden Schritte:

  1. Datenbankrollen erstellen und Berechtigungen erteilen

  2. Optional: Rollenhierarchie mit Übernahme erstellen.

  3. IAM-Hauptkonten Zugriff auf Datenbankrollen gewähren

Nachdem Sie die Datenbankrollen konfiguriert haben, muss ein Nutzer mit fein abgestimmter Zugriffssteuerung eine Rolle auswählen, um Abfragen, DML- oder Zeilenvorgänge für die Datenbank auszuführen.

Datenbankrollen erstellen und Berechtigungen erteilen

Eine Datenbankrolle ist eine Sammlung fein abgestimmter Zugriffsberechtigungen. Sie können für jede Datenbank bis zu 100 Datenbankrollen erstellen.

Legen Sie Rollen und Rollenhierarchien in Ihrer Datenbank fest und codieren Sie sie in DDL. Wie bei anderen Schemaänderungen in Spanner empfehlen wir dringend, Schemaänderungen nicht in einem Batch, sondern in einem Batch auszugeben. Weitere Informationen finden Sie unter Häufigkeit der Schemaaktualisierungen begrenzen.

Console

So erstellen Sie eine Datenbankrolle und gewähren detaillierten Zugriffsberechtigungen:

  1. Rufen Sie in der Google Cloud Console die Seite Instanzen auf.

    Instanzen

  2. Wählen Sie die Instanz mit der Datenbank aus, für die Sie die Rolle hinzufügen möchten.

  3. Wählen Sie die Datenbank aus.

  4. Klicken Sie auf der Seite Übersicht auf DDL schreiben.

  5. Führen Sie auf der Seite DDL-Anweisungen schreiben für jede Datenbankrolle, die Sie erstellen und für die Sie Berechtigungen erteilen möchten, die folgenden Schritte aus:

    1. Geben Sie die folgende Anweisung ein, um die Rolle zu erstellen:

      CREATE ROLE ROLE_NAME;
      

    2. Geben Sie die folgende Anweisung ein, um Berechtigungen für die Rolle zu erteilen:

      GRANT PRIVILEGE_LIST ON TABLE TABLE_LIST TO ROLE ROLE_NAME;
      

      • PRIVILEGE_LIST ist eine durch Kommas getrennte Liste von Berechtigungen. Zulässige Berechtigungen sind SELECT, INSERT, UPDATE und DELETE. DELETE ist nur auf Tabellenebene zulässig.

      • TABLE_LIST ist eine durch Kommas getrennte Liste von Tabellen.

      Wenn Sie beispielsweise SELECT, INSERT und UPDATE in den Tabellen employees und contractors der Datenbankrolle hr_manager zuweisen möchten, geben Sie die folgende Anweisung ein:

      GRANT SELECT, INSERT, UPDATE ON TABLE employees, contractors TO ROLE hr_manager;
      

      Sie können einer Liste mit Rollen statt nur einer Rolle Berechtigungen erteilen.

      Sie können jede Berechtigung für einen Teil der Tabellenspalten erteilen. Beispiele finden Sie unter Detaillierte Zugriffssteuerung. Eine ausführliche Syntax für die Anweisung GRANT finden Sie unter Datendefinitionssprache von Google Standard SQL.

      Sie können eine DDL-Vorlage für die GRANT-Anweisung verwenden. Wählen Sie im Drop-down-Menü DDL-VORLAGEN die Option Datenbankrollen und dann unter Rollenberechtigungen erteilen eine Vorlage aus.

  6. Klicken Sie auf Senden.

    Wenn die DDL-Datei Fehler enthält, gibt die Google Cloud Console einen Fehler zurück.

gcloud

Verwenden Sie den Befehl gcloud spanner databases ddl update so, um eine Datenbankrolle zu erstellen und ihr detaillierte Zugriffsberechtigungen zu gewähren:

gcloud spanner databases ddl update DATABASE_NAME \
--ddl='CREATE ROLE ROLE_NAME; GRANT PRIVILEGES ON TABLE TABLES TO ROLE ROLE_NAME;'
  • PRIVILEGES ist eine durch Kommas getrennte Liste der detaillierten Berechtigungen für die Zugriffssteuerung. Zulässige Berechtigungen sind SELECT, INSERT, UPDATE und DELETE.

  • TABLES ist eine durch Kommas getrennte Liste von Tabellen.

Wenn Sie beispielsweise SELECT, INSERT und UPDATE in den Tabellen employees und contractors der Datenbankrolle hr_manager zuweisen möchten, geben Sie die folgende Anweisung ein:

GRANT SELECT, INSERT, UPDATE ON TABLE employees, contractors TO ROLE hr_manager;

Sie können einer Liste mit Rollen statt nur einer Rolle Berechtigungen erteilen.

Sie können jede Berechtigung für einen Teil der Tabellenspalten erteilen. Beispiele finden Sie unter Detaillierte Zugriffssteuerung. Eine ausführliche Syntax für die Anweisung GRANT finden Sie unter Datendefinitionssprache von Google Standard SQL.

Rollenhierarchie mit Übernahme erstellen

Sie können eine Hierarchie von Datenbankrollen erstellen, indem Sie einer anderen eine Datenbankrolle zuweisen. Untergeordnete Rollen, sogenannte Mitgliederrollen, übernehmen Berechtigungen des übergeordneten Elements.

Verwenden Sie die folgende Anweisung, um einer anderen Rolle eine Datenbankrolle zuzuweisen:

GRANT ROLE role1 TO ROLE role2;

Weitere Informationen finden Sie unter Hierarchierollen und Übernahme von Datenbanken.

Hauptkonten Zugriff auf Datenbankrollen gewähren

Mit IAM gewähren Sie Zugriff auf Datenbankrollen.

Console

So gewähren Sie einem Hauptkonto Zugriff auf Datenbankrollen:

  1. Klicken Sie auf der Seite Übersicht der Datenbank auf Infofeld ansehen, wenn das Infofeld noch nicht geöffnet ist.

  2. Klicken Sie auf HAUPTKONTO HINZUFÜGEN.

  3. Geben Sie im Bereich Hauptkonten und Rollen hinzufügen unter Neue Hauptkonten mindestens ein IAM-Hauptkonto an.

  4. Wählen Sie im Menü Rolle die Option Cloud Spanner > Detaillierter Cloud Spanner-Zugriffsnutzer aus.

    Sie müssen diese Rolle jedem Hauptkonto nur einmal zuweisen. Das Hauptkonto wird so zu einem Nutzer mit detaillierter Zugriffssteuerung.

  5. Klicken Sie auf WEITERE ROLLE HINZUFÜGEN.

  6. Wählen Sie im Menü Rolle auswählen die Option Cloud Spanner > Nutzer der Cloud Spanner-Datenbankrolle aus.

  7. Führen Sie die folgenden Schritte aus, um die IAM-Bedingung zu erstellen, die die Rollen angibt, die gewährt werden sollen.

    1. Klicken Sie auf BEDINGUNG HINZUFÜGEN.

    2. Geben Sie im Bereich Bedingung bearbeiten einen Titel und eine Beschreibung für die Bedingung ein.

      Wenn Sie eine einzelne Datenbankrolle zuweisen, sollten Sie den Rollennamen normalerweise im Titel der Bedingung angeben. Wenn Sie mehrere Rollen zuweisen, können Sie etwas zu den Rollen angeben.

    3. Klicken Sie auf BEDINGUNGSEDITOR.

    4. Geben Sie im Feld Ausdruck den folgenden Code ein:

      resource.type == "spanner.googleapis.com/DatabaseRole" &&
      resource.name.endsWith("/ROLE")
      

      Ersetzen Sie ROLE durch Ihren Rollennamen.

      Wenn Sie Zugriff auf mehr als eine Rolle gewähren möchten, fügen Sie mit dem Operator or (||) weitere Bedingungen hinzu, wie im folgenden Beispiel gezeigt:

      resource.type == "spanner.googleapis.com/DatabaseRole" &&
      (resource.name.endsWith("/ROLE1") || resource.name.endsWith("/ROLE2"))
      

      Mit diesem Code werden zwei Rollen zugewiesen. Ersetzen Sie ROLE1 und ROLE2 durch Ihre Rollennamen. Wenn Sie mehr als zwei Rollen zuweisen möchten, fügen Sie weitere oder Bedingungen hinzu.

      Sie können jeden Bedingungsausdruck verwenden, der von IAM unterstützt wird. Weitere Informationen finden Sie unter Übersicht über IAM-Bedingungen.

    5. Klicken Sie auf Speichern.

    6. Prüfen Sie im Bereich Hauptkonten hinzufügen, ob die Bedingung in der Spalte Bedingung neben dem Feld Rolle angezeigt wird.

    7. Klicken Sie auf Speichern.

      Beachten Sie im Infofeld unter Rolle/Hauptkonto, dass Cloud Spanner-Datenbankrollennutzer für jede definierte Bedingung angezeigt wird. Die Zahl in Klammern neben der Bedingung gibt die Anzahl der Hauptkonten an, denen die Datenbankrolle durch diese Bedingung gewährt wird.

    8. So korrigieren Sie Fehler in Namen oder Bedingungen von Datenbankrollen oder fügen weitere Datenbankrollen für ein Hauptkonto hinzu:

      1. Maximieren Sie den Eintrag Cloud Spanner-Datenbankrolle, der der gewünschten Bedingung entspricht.

      2. Führen Sie auf der Seite Bearbeitungsberechtigungen einen der folgenden Schritte aus:

        • Klicken Sie auf WEITERE ROLLE HINZUFÜGEN.

        • Klicken Sie zum Bearbeiten der Bedingung auf das Stiftsymbol neben dem Namen der Bedingung. Klicken Sie dann auf der Seite Bedingung bearbeiten auf Bedingungseditor und nehmen Sie die gewünschten Änderungen vor.

gcloud

So gewähren Sie einem IAM-Hauptkonto Zugriff auf Datenbankrollen:

  1. Mit dem Befehl gcloud spanner databases add-iam-policy-binding aktivieren Sie eine detaillierte Zugriffssteuerung für das Hauptkonto:

    gcloud spanner databases add-iam-policy-binding DATABASE_NAME \
    --instance=INSTANCE_NAME \
    --role=roles/spanner.fineGrainedAccessUser \
    --member=MEMBER_NAME
    
    • MEMBER_NAME ist die Kennung für das Hauptkonto. Er muss das Format user|group|serviceAccount:email oder domain:domain haben.

    • Dieser Befehl macht das Hauptkonto zu einem detaillierten Nutzer der Zugriffssteuerung. Senden Sie diesen Befehl nur einmal pro Hauptkonto.

  2. Erteilen Sie die Berechtigung zur Verwendung einer oder mehrerer Datenbankrollen mit dem Befehl gcloud spanner databases add-iam-policy-binding so:

    gcloud spanner databases add-iam-policy-binding DATABASE_NAME \
    --instance=INSTANCE_NAME \
    --role=roles/spanner.databaseRoleUser \
    --member=MEMBER_NAME \
    --condition=CONDITION
    
    • MEMBER_NAME ist die Kennung für das Hauptkonto. Er muss das Format user|group|serviceAccount:email oder domain:domain haben.

    • CONDITION ist ein IAM-Bedingungsausdruck, der die Rollen angibt, die dem Hauptkonto gewährt werden sollen.

      CONDITION hat das folgende Format:

      --condition='expression=(resource.type == "spanner.googleapis.com/DatabaseRole" && (resource.name.endsWith("/ROLE1") || resource.name.endsWith("/ROLE2"))),title=TITLE,description=DESCRIPTION'
      

      Mit diesem Code werden zwei Rollen zugewiesen. Ersetzen Sie ROLE1 und ROLE2 durch Ihre Rollennamen. Wenn Sie nur eine Datenbankrolle zuweisen möchten, löschen Sie den Ausdruck nach dem Operator ||. Wenn Sie mehr als zwei Rollen zuweisen möchten, fügen Sie mit dem Operator || weitere oder Bedingungen hinzu.

      Sie können jeden Bedingungsausdruck verwenden, der von IAM unterstützt wird. Weitere Informationen finden Sie unter Übersicht über IAM-Bedingungen.

    Im folgenden Beispiel werden dem Hauptkonto jsmith@example.com die Datenbankrollen hr_rep und hr_manager gewährt.

    gcloud spanner databases add-iam-policy-binding myDatabase \
      --instance=myInstance \
      --role=roles/spanner.databaseRoleUser \
      --member=user:jsmith@example.com \
      --condition='expression=(resource.type == "spanner.googleapis.com/DatabaseRole" && (resource.name.endsWith("/hr_rep") || resource.name.endsWith("/hr_manager"))),title=HR roles,description=Grant permissions on HR roles'
    

Hauptkonto auf detaillierte Zugriffssteuerung umstellen

So wechseln Sie ein IAM-Hauptkonto von der Zugriffssteuerung auf Datenbankebene zur detaillierten Zugriffssteuerung:

  1. Aktivieren Sie die detaillierte Zugriffssteuerung für das Hauptkonto und gewähren Sie Zugriff auf alle erforderlichen Datenbankrollen, wie unter IAM-Hauptkonten Zugriff auf Datenbankrollen gewähren beschrieben.

  2. Aktualisieren Sie alle Anwendungen, die als Hauptkonto ausgeführt werden. Geben Sie die entsprechenden Datenbankrollen in Aufrufen von Clientbibliotheksmethoden an.

  3. Alle Rollen des Hauptkontos auf IAM-Datenbankebene widerrufen. Auf diese Weise wird der Zugriff auf das Hauptkonto einer einzigen Methode zugeordnet.

    Konsole

    gcloud

    • Wenn Sie eine IAM-Rolle auf Datenbankebene widerrufen möchten, geben Sie den folgenden Befehl ein:

      gcloud spanner databases remove-iam-policy-binding DATABASE_NAME \
      --instance=INSTANCE_NAME \
      --role=roles/IAM_ROLE_NAME \
      --member=MEMBER_NAME
      
      • MEMBER_NAME ist die Kennung für das Hauptkonto. Er muss das Format user|group|serviceAccount:email oder domain:domain haben.

Datenbankrollen auflisten

Geben Sie die folgende Abfrage auf der Seite Abfrage für die Datenbank ein, um die Datenbankrollen über die Google Cloud Console aufzulisten:

  SELECT * FROM INFORMATION_SCHEMA.ROLES;

Berechtigungen für eine Datenbankrolle abrufen

Verwenden Sie die folgende Abfrage, um die Berechtigungen zu sehen, die einer Rolle für alle Tabellen gewährt wurden:

  SELECT * FROM INFORMATION_SCHEMA.TABLE_PRIVILEGES WHERE grantee = ROLE_NAME;
  

Verwenden Sie die folgende Abfrage, um die Berechtigungen zu sehen, die einer Rolle für alle Spalten zugewiesen wurden:

  SELECT * FROM INFORMATION_SCHEMA.COLUMN_PRIVILEGES WHERE grantee = ROLE_NAME;
  

Datenbankrolle löschen

Wenn Sie eine Datenbankrolle löschen, wird die Mitgliedschaft anderer Rollen für diese Rolle automatisch aufgehoben. Außerdem wird die Mitgliedschaft der Rolle in anderen Rollen aufgehoben.

Sie müssen zuerst alle Berechtigungen einer Datenbankrolle widerrufen, bevor Sie sie löschen können. Sie können eine Datenbankrolle löschen, unabhängig davon, ob Hauptkonten Berechtigungen dafür haben.

Bevor Sie eine Datenbankrolle löschen, entfernen Sie alle IAM-Richtlinienbindungen, die sich auf diese Rolle beziehen, sodass eine später mit demselben Namen erstellte Datenbankrolle diese Bindungen nicht übernimmt.

Console

So löschen Sie eine Datenbankrolle:

  1. Klicken Sie auf der Seite Übersicht der Datenbank auf DDL schreiben.

  2. Geben Sie die folgende Anweisung ein, um Berechtigungen für die Rolle zu widerrufen:

    REVOKE PRIVILEGE_LIST ON TABLE TABLE_LIST FROM ROLE ROLE_NAME;
    

    • PRIVILEGE_LIST ist eine durch Kommas getrennte Liste von Berechtigungen. Zulässige Berechtigungen sind SELECT, INSERT, UPDATE und DELETE.

    • TABLE_LIST ist eine durch Kommas getrennte Liste von Tabellen.

    Wenn Sie beispielsweise SELECT, INSERT und UPDATE für die Tabellen employees und contractors aus der Datenbankrolle hr_manager widerrufen möchten, geben Sie die folgende Anweisung ein:

    REVOKE SELECT, INSERT, UPDATE ON TABLE employees, contractors FROM ROLE hr_manager;
    
  3. Um die Rolle zu löschen, geben Sie die folgende Anweisung ein:

    DROP ROLE ROLE_NAME;
    

  4. Klicken Sie auf Senden, um die Änderungen zu übernehmen.

  5. Löschen Sie alle IAM-Bedingungen, die mit der Rolle verknüpft sind.

    1. Suchen Sie in der Liste der Rollen im Infofeld die Rolle Nutzer von Cloud Spanner-Datenbankrollen, neben der der Bedingungstitel angezeigt wird, und maximieren Sie dann die Rolle, um die Hauptkonten mit Zugriff auf die Rolle anzusehen.

    2. Klicken Sie für eines der Hauptkonten auf das Symbol Hauptkonto bearbeiten (Stift).

    3. Klicken Sie auf der Seite Berechtigungen bearbeiten auf das Symbol IAM-Bedingung bearbeiten neben der Bedingung.

    4. Klicken Sie auf der Seite Bedingung bearbeiten auf LÖSCHEN.

    5. Bestätigen Sie den Löschvorgang und klicken Sie dann auf Speichern.

gcloud

  1. Wenn Sie alle Berechtigungen für eine Rolle widerrufen und dann die Rolle löschen möchten, verwenden Sie den Befehl gcloud spanner databases ddl update so:

    gcloud spanner databases ddl update DATABASE_NAME \
    --instance=INSTANCE_NAME \
    --ddl='REVOKE PERMISSIONS ON TABLE TABLE_NAME FROM ROLE ROLE_NAME; DROP ROLE ROLE_NAME;'
    

    Gültige Werte für PERMISSIONS sind SELECT, INSERT, UPDATE und DELETE.

  2. Verwenden Sie den Befehl gcloud spanner databases remove-iam-policy-binding so, um zugehörige IAM-Bedingungen zu löschen:

    gcloud spanner databases remove-iam-policy-binding DATABASE_NAME \
    --instance=INSTANCE_NAME \
    --role=ROLE_NAME \
    --member=MEMBER_NAME \
    --condition=CONDITION
    
    • MEMBER_NAME ist die Kennung für das Hauptkonto. Er muss das Format user|group|serviceAccount:email oder domain:domain haben.

    • CONDITION ist ein IAM-Bedingungsausdruck, der die Rollen angibt, die dem Hauptkonto gewährt werden sollen.

      CONDITION hat das folgende Format:

      --condition='expression=(resource.type == "spanner.googleapis.com/DatabaseRole" && (resource.name.endsWith("/ROLE1") || resource.name.endsWith("/ROLE2"))),title=TITLE,description=DESCRIPTION'
      

      Die gesamte Bedingungsspezifikation muss genau mit der Bedingungsspezifikation übereinstimmen, die im Befehl verwendet wurde, der die Berechtigung erteilt hat, einschließlich Titel und Beschreibung.

Weitere Informationen