Bedingte Rollenbindungen verwalten

In diesem Abschnitt wird beschrieben, wie Sie bedingte Rollenbindungen zu IAM-"allow"-Richtlinien (Identity and Access Management) hinzufügen, darin ändern und daraus entfernen.

Hinweis

  • Aktivieren Sie die IAM API.

    Rollen, die zum Aktivieren von APIs erforderlich sind

    Zum Aktivieren von APIs benötigen Sie die Berechtigung serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollen

    API aktivieren

  • Lesen Sie die Übersicht über IAM Conditions, um sich mit den Grundlagen von bedingten IAM-Rollenbindungen vertraut zu machen.

  • In der Attributreferenz finden Sie Informationen zu den verschiedenen Bedingungsattributen, die in einem Ausdruck verwendet werden können.

Erforderliche Rollen

Zum Verwalten bedingter Rollenbindungen in der "allow"-Richtlinie einer Ressource benötigen Sie Berechtigungen zum Abrufen der Ressource sowie zum Abrufen und Festlegen der "allow"-Richtlinie für die Ressource. Diese Berechtigungen haben das folgende Format, wobei SERVICE der Name des Dienstes ist, zu dem die Ressource gehört, und RESOURCE_TYPE der Name des Ressourcentyps, für den Sie den Zugriff verwalten möchten:

  • SERVICE.RESOURCE_TYPE.get
  • SERVICE.RESOURCE_TYPE.getIamPolicy
  • SERVICE.RESOURCE_TYPE.setIamPolicy

Wenn Sie beispielsweise bedingte Rollenbindungen in der "allow"-Richtlinie eines Projekts verwalten möchten, benötigen Sie die folgenden Berechtigungen:

  • resourcemanager.projects.get
  • resourcemanager.projects.getIamPolicy
  • resourcemanager.projects.setIamPolicy

Bitten Sie Ihren Administrator, Ihnen eine vordefinierte oder benutzerdefinierte Rolle zuzuweisen, die die Berechtigungen enthält. Beispielsweise kann Ihr Administrator Ihnen die Rolle des Sicherheitsadministrators (roles/iam.securityAdmin) zuweisen, die Berechtigungen zum Abrufen von fast allenGoogle Cloud -Ressourcen und zum Verwalten ihrer Zulassungsrichtlinien enthält.

Einer Richtlinie eine bedingte Rollenbindung hinzufügen

Bedingte Rollenbindungen können neuen oder vorhandenen „allow“-Richtlinien hinzugefügt werden, um den Zugriff auf Google Cloud -Ressourcen genauer zu steuern. In diesem Abschnitt erfahren Sie, wie Sie mithilfe der Google Cloud Console, der Google Cloud CLI oder der REST API einer vorhandenen „allow“-Richtlinie eine einfache zeitbasierte Bedingung hinzufügen.

So fügen Sie einer vorhandenen "allow"-Richtlinie eine bedingte Rollenbindung hinzu:

Console

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

    Zur IAM-Seite

  2. Suchen Sie in der Liste der Hauptkonten das gewünschte Hauptkonto und klicken Sie auf den Button .

  3. Suchen Sie im Bereich Berechtigungen bearbeiten die gewünschte Rolle, für die Sie eine Bedingung konfigurieren möchten. Klicken Sie dann unter IAM-Bedingung (optional) auf IAM-Bedingung hinzufügen.

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

  5. Sie können einen Bedingungsausdruck entweder mit dem Builder für IAM-Bedingungen oder dem Bedingungseditor hinzufügen. Der Builder für IAM-Bedingungen bietet eine interaktive Oberfläche, in der Sie die gewünschte Bedingung, den Operator und andere Details zum Ausdruck auswählen können. Der Bedingungseditor bietet eine textbasierte Oberfläche zur manuellen Eingabe eines Ausdrucks mit der CEL-Syntax.

    Tool zur Bedingungserstellung:

    1. Wählen Sie im Drop-down-Menü Bedingungstyp die Option Ablaufender Zugriff aus.
    2. Wählen Sie im Drop-down-Menü Operator die Option von aus.
    3. Klicken Sie im Drop-down-Menü Zeit auf den Button , um einen Datums- und Uhrzeitbereich auszuwählen.
    4. Klicken Sie auf Speichern, um die Bedingung anzuwenden.
    5. Sobald der Bereich Bedingung bearbeiten geschlossen wurde, klicken Sie im Bereich Berechtigungen bearbeiten noch einmal auf Speichern, um die Zulassungsrichtlinie zu aktualisieren.

    Bedingungseditor:

    1. Klicken Sie auf den Tab Bedingungseditor und geben Sie den folgenden Ausdruck ein. Ersetzen Sie dabei den Zeitstempel durch Ihren eigenen:

      request.time < timestamp("2019-12-31T12:00:00.000Z")
    2. Nachdem Sie den Ausdruck eingegeben haben, können Sie optional die CEL-Syntax validieren, indem Sie rechts oben oberhalb des Textfeldes auf Linter ausführen klicken.

    3. Klicken Sie auf Speichern, um die Bedingung anzuwenden.

    4. Sobald der Bereich Bedingung bearbeiten geschlossen wurde, klicken Sie im Bereich Berechtigungen bearbeiten noch einmal auf Speichern, um die Zulassungsrichtlinie zu aktualisieren.

gcloud

"allow"-Richtlinien werden mit dem Muster Read-Modify-Write festgelegt.

Rufen Sie mit dem Befehl gcloud projects get-iam-policy die aktuelle "allow"-Richtlinie für das Projekt ab. Im folgenden Beispiel wird die JSON-Version der "allow"-Richtlinie in einen Pfad auf dem Laufwerk heruntergeladen.

Befehl:

gcloud projects get-iam-policy project-id --format json > file-path

Das JSON-Format der "allow"-Richtlinie wird heruntergeladen:

{
  "bindings": [
    {
      "members": [
        "user:my-user@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "group:my-group@example.com"
      ],
      "role": "roles/iam.securityReviewer"
    }
  ],
  "etag": "BwWKmjvelug=",
  "version": 1
}

Beachten Sie die aktuelle version der "allow"-Richtlinie, nämlich 1. Fügen Sie den folgenden hervorgehobenen Bedingungsausdruck hinzu, um die "allow"-Richtlinie mit ablaufendem Zugriff zu konfigurieren. Ersetzen Sie dabei den Zeitstempel durch Ihren eigenen. Die gcloud CLI aktualisiert die Version automatisch:

{
  "bindings": [
    {
      "members": [
        "user:my-user@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "group:my-group@example.com"
      ],
      "role": "roles/iam.securityReviewer",
      "condition": {
          "title": "Expires_2019",
          "description": "Expires at noon on 2019-12-31",
          "expression":
            "request.time < timestamp('2019-12-31T12:00:00Z')"
      }
    }
  ],
  "etag": "BwWKmjvelug=",
  "version": 3
}

Legen Sie als Nächstes die neue "allow"-Richtlinie fest, indem Sie den Befehl gcloud projects set-iam-policy ausführen:

gcloud projects set-iam-policy project-id file-path

Die neue "allow"-Richtlinie wird angewendet und die Rollenbindung von travis@example.com läuft zum angegebenen Zeitpunkt ab.

REST

Verwenden Sie das Muster read-modify-write, um den Zugriff bis zu einer bestimmten Zeit zuzulassen.

Lesen Sie zuerst die "allow"-Richtlinie für das Projekt:

Die Methode projects.getIamPolicy der Resource Manager API ruft die Zulassungsrichtlinie eines Projekts ab.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Google Cloud Projekt-ID. Projekt-IDs sind alphanumerische Strings, wie my-project.
  • POLICY_VERSION: Die Richtlinienversion, die zurückgegeben werden soll. Anfragen sollten die neueste Richtlinienversion angeben. Diese ist Richtlinienversion 3. Weitere Informationen finden Sie unter Richtlinienversion beim Abrufen einer Richtlinie festlegen.

HTTP-Methode und URL:

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy

JSON-Text anfordern:

{
  "options": {
    "requestedPolicyVersion": POLICY_VERSION
  }
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "version": 1,
  "etag": "BwWKmjvelug=",
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "user:my-user@example.com"
      ]
    },
    {
      "role": "roles/iam.securityReviewer",
      "members": [
        "group:my-group@example.com"
      ]
    }
  ]
}

Beachten Sie die aktuelle version der "allow"-Richtlinie, nämlich 1.

Ändern Sie als Nächstes die "allow"-Richtlinie so, dass der Zugriff bis zu einem bestimmten Zeitpunkt möglich ist. Setzen Sie dabei das Feld version auf den Wert 3:

{
  "etag": "BwWKmjvelug=",
  "version": 3,
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "user:my-user@example.com"
      ]
    },
    {
      "role": "roles/iam.securityReviewer",
      "condition": {
        "title": "Expires_2019",
        "description": "Expires at noon on 2019-12-31",
        "expression": "request.time < timestamp('2019-12-31T12:00:00Z')"
      },
      "members": [
        "group:my-group@example.com"
      ]
    }
  ]
}

Schreiben Sie anschließend die aktualisierte Zulassungsrichtlinie:

Die Methode projects.setIamPolicy der Resource Manager API legt die Zulassungsrichtlinie in der Anfrage als neue Zulassungsrichtlinie des Projekts fest.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: Ihre Google Cloud Projekt-ID. Projekt-IDs sind alphanumerische Strings, wie my-project.

HTTP-Methode und URL:

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy

JSON-Text anfordern:

{
  "policy": {
    "version": 3,
    "etag": "BwWKmjvelug=",
    "bindings": [
      {
        "role": "roles/owner",
        "members": [
          "user:my-user@example.com"
        ]
      },
      {
        "role": "roles/iam.securityReviewer",
        "members": [
          "group:my-group@example.com"
        ],
        "condition": {
          "title": "Expires_July_1_2020",
          "description": "Expires on July 1, 2020",
          "expression":
            "request.time < timestamp('2020-07-01T00:00:00.000Z')"
        }
      }
    ]
  }
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Die Antwort enthält die aktualisierte Zulassungsrichtlinie:


Vorhandene bedingte Rollenbindung ändern

Nachdem Sie eine bedingte Rollenbindung erstellt haben, können Sie den Bedingungsausdruck jederzeit ändern. In diesem Abschnitt erfahren Sie, wie Sie eine zeitbasierte Bedingung in einer vorhandenen „allow“-Richtlinie mit derGoogle Cloud console, der Google Cloud CLI und der REST API aktualisieren.

So ändern Sie eine bedingte Rollenbindung in einer vorhandenen "allow"-Richtlinie:

Console

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

    Zur IAM-Seite

  2. Suchen Sie in der Liste der Hauptkonten das gewünschte Hauptkonto und klicken Sie auf den Button .

  3. Suchen Sie im Bereich Berechtigungen bearbeiten die gewünschte Rolle, für die Sie eine Bedingung konfigurieren möchten. Klicken Sie dann unter IAM-Bedingung (optional) auf den Namen der vorhandenen Bedingung, um sie zu bearbeiten.

  4. Im Bereich Bedingung bearbeiten können Sie den vorhandenen Titel und die Beschreibung für die Bedingung beibehalten oder aktualisieren.

  5. Sie können entweder den vorhandenen Bedingungsausdruck bearbeiten oder mit dem Builder für IAM-Bedingungen oder dem Bedingungseditor einen neuen hinzufügen. Der Builder für IAM-Bedingungen bietet eine interaktive Oberfläche, in der Sie die gewünschte Bedingung, den Operator und andere Details zum Ausdruck auswählen können. Der Bedingungseditor bietet eine textbasierte Oberfläche zur manuellen Eingabe eines Ausdrucks mit der CEL-Syntax.

    Tool zur Bedingungserstellung:

    1. Fügen Sie einen neuen Bedingungsausdruck hinzu oder ändern Sie den vorhandenen Bedingungsausdruck.
    2. Klicken Sie auf Speichern, um die Bedingung anzuwenden.
    3. Sobald der Bereich Bedingung bearbeiten geschlossen wurde, klicken Sie im Bereich Berechtigungen bearbeiten noch einmal auf Speichern, um die Zulassungsrichtlinie zu aktualisieren.

    Bedingungseditor:

    1. Klicken Sie auf den Tab Bedingungseditor und fügen Sie entweder einen neuen Bedingungsausdruck hinzu oder ändern Sie den vorhandenen Bedingungsausdruck.
    2. Nachdem Sie den Ausdruck eingegeben haben, können Sie optional die CEL-Syntax validieren, indem Sie rechts oben oberhalb des Textfeldes auf Linter ausführen klicken.
    3. Klicken Sie auf Speichern, um die Bedingung anzuwenden.
    4. Sobald der Bereich Bedingung bearbeiten geschlossen wurde, klicken Sie im Bereich Berechtigungen bearbeiten noch einmal auf Speichern, um die Zulassungsrichtlinie zu aktualisieren.

gcloud

"allow"-Richtlinien werden mit dem Muster Read-Modify-Write festgelegt.

Rufen Sie mit dem Befehl gcloud projects get-iam-policy die aktuelle "allow"-Richtlinie für das Projekt ab. Im folgenden Beispiel wird die JSON-Version der "allow"-Richtlinie in einen Pfad auf dem Laufwerk heruntergeladen.

Befehl:

gcloud projects get-iam-policy project-id --format json > file-path

Das JSON-Format der "allow"-Richtlinie wird heruntergeladen:

{
  "bindings": [
    {
      "members": [
        "user:my-user@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "group:my-group@example.com"
      ],
      "role": "roles/bigquery.dataViewer",
      "condition": {
        "title": "Duration_3_months",
        "description": "Expires in 3 months on 2019-10-12",
        "expression":
          "request.time > timestamp(\"2019-07-12T07:00:00.000Z\") && request.time < timestamp(\"2019-10-12T07:00:00.000Z\")"
      }
    }