Temporären Zugriff konfigurieren

In diesem Abschnitt wird beschrieben, wie Sie mithilfe von bedingten Rollenbindungen in Ihren IAM-Richtlinien (Identity and Access Management) den temporären (ablaufenden) Zugriff auf Google Cloud-Ressourcen festlegen. Mithilfe der Datum/Uhrzeit-Attribute können Sie zeitbasierte Einschränkungen für den Zugriff auf eine bestimmte Ressource erzwingen. Sie können beispielsweise temporären Zugriff auf ein Projekt gewähren, das zu einer bestimmten Zeit oder in regelmäßigen Abständen gestartet und beendet wird.

Vorbereitung

  • Lesen Sie die Übersicht über Conditions, um die Grundlagen von bedingten IAM-Rollenbindungen zu verstehen.
  • Sehen Sie sich die Datum/Uhrzeit-Attribute an, die in einem Bedingungsausdruck verwendet werden können.
  • Die Datum/Uhrzeit-Attribute werden derzeit von allen Google Cloud-Diensten unterstützt.

Temporären Zugriff gewähren

Eine bedingte Rollenbindung kann verwendet werden, um zeitlich begrenzten Zugriff auf eine Ressource zu gewähren, sodass ein Nutzer nach dem angegebenen Ablaufdatum und der angegebenen Ablaufzeit nicht mehr auf die Ressource zugreifen kann.

Stellen Sie sich das folgende Szenario vor: Die Informationssicherheitsrichtlinie des Unternehmens ExampleCo besagt, dass kein Mitarbeiter unbegrenzten Zugriff auf Ressourcen in Produktionsprojekten haben sollte. Zuvor haben die Administratoren manuell IAM-Rollenbindungen festgelegt und gelöscht, um die Anforderungen der Entwickler zu erfüllen. Um den Verwaltungsaufwand zu reduzieren, können Mitarbeiter von ExampleCo stattdessen eine bedingte Rollenbindung mit einer Datum/Uhrzeit-Bedingung konfigurieren und somit ein Enddatum für die Bindung festlegen.

So gewähren Sie ablaufenden Zugriff auf eine Projektressource:

Console

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

    Zur Seite "IAM"

  2. Suchen Sie in der Mitgliederliste nach dem gewünschten Mitglied und klicken Sie auf die Schaltfläche .

  3. Suchen Sie im Bereich Berechtigungen bearbeiten die gewünschte Rolle, für die Sie eine Bedingung konfigurieren möchten. Klicken Sie dann unter Bedingung auf 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 anwendbare Details zum Ausdruck auswählen können. Der Bedingungseditor bietet eine textbasierte Oberfläche zur manuellen Eingabe eines Ausdrucks mit der CEL-Syntax.

    Builder für IAM-Bedingungen:

    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 die Schaltfläche , 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 Ihre IAM-Richtlinie 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("2020-07-01T00: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 Ihre IAM-Richtlinie zu aktualisieren.

gcloud

IAM-Richtlinien werden mit dem Muster read-modify-write festgelegt.

Führen Sie den Befehl gcloud projects get-iam-policy aus, um die aktuelle IAM-Richtlinie für das Projekt abzurufen. Im folgenden Beispiel wird die JSON-Version der Richtlinie in einen Pfad auf dem Laufwerk heruntergeladen.

Befehl:

gcloud projects get-iam-policy project-id --format=json > filepath

Das JSON-Format der IAM-Richtlinie wird heruntergeladen:

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

Fügen Sie den folgenden hervorgehobenen Bedingungsausdruck hinzu, um die Richtlinie mit ablaufendem Zugriff zu konfigurieren. Ersetzen Sie dabei den Zeitstempel durch Ihren eigenen. Wenn Sie nicht Version 263.0.0 oder höher des gcloud-Tools verwenden, achten Sie darauf, dass Sie den Wert version auf 3 aktualisiert haben. Wenn Sie eine neuere Version des gcloud-Tools verwenden, wird der maximale Richtlinienwert automatisch für Sie festgelegt:

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

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

gcloud projects set-iam-policy project-id filepath

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

REST API

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

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

Die Methode projects.getIamPolicy der Resource Manager API ruft die IAM-Richtlinie eines Projekts ab.

Ersetzen Sie diese Werte in den folgenden Anweisungen:

  • project-id: Ihre Google Cloud-Projekt-ID.
  • 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 in etwa folgende JSON-Antwort erhalten:

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

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

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

Schreiben Sie anschließend die aktualisierte Richtlinie:

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

Ersetzen Sie diese Werte in den folgenden Anweisungen:

  • project-id: Ihre Google Cloud-Projekt-ID.

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:project-owner@example.com"
        ]
      },
      {
        "role": "roles/iam.securityReviewer",
        "members": [
          "user:travis@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 Richtlinie.


Zugriff auf Basis von Wochentagen/Stunden verwalten

Mit einer bedingten Rollenbindung kann Zugriff auf eine Ressource gewährt werden, der auf wiederkehrender Basis auf bestimmte Wochentage oder bestimmte Stunden beschränkt ist.

Stellen Sie sich folgendes Szenario vor: Das Unternehmen ExampleCo hat ein Projekt zur Qualitätssicherung. Das gesamte Qualitätssicherungsteam benötigt zum Beenden seiner Arbeit Rollen mit einer hohen Anzahl von Berechtigungen. ExampleCo muss die für den Standort geltenden Arbeitsgesetze einhalten, die die Arbeitszeit auf Montag bis Freitag von 9:00 bis 17:00 Uhr beschränken. ExampleCo kann Datum/Uhrzeit-Bedingungen verwenden, um sicherzustellen, dass die Mitarbeiter nur während der Arbeitswoche und der geplanten Arbeitszeit auf Google Cloud zugreifen können.

So gewähren Sie nur für bestimmte Tage oder Stunden auf wiederkehrender Basis den Zugriff auf eine Projektressource:

Console

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

    Zur Seite "IAM"

  2. Suchen Sie in der Mitgliederliste nach dem gewünschten Mitglied und klicken Sie auf die Schaltfläche .

  3. Suchen Sie im Bereich Berechtigungen bearbeiten die gewünschte Rolle, für die Sie eine Bedingung konfigurieren möchten. Klicken Sie dann unter Bedingung auf 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 anwendbare Details zum Ausdruck auswählen können. Der Bedingungseditor bietet eine textbasierte Oberfläche zur manuellen Eingabe eines Ausdrucks mit der CEL-Syntax.

    Builder für IAM-Bedingungen:

    1. Klicken Sie auf Hinzufügen.
    2. Wählen Sie im Drop-down-Menü Bedingungstyp die Option Zeit  Planen  Wochentag aus.
    3. Wählen Sie im Drop-down-Menü Operator die Option Nach oder am aus.
    4. Wählen Sie im Drop-down-Menü Wochentag die Option Montag aus.
    5. Wählen Sie im Drop-down-Menü Zeitzone auswählen die gewünschte Zeitzone aus der Liste aus.
    6. Stellen Sie sicher, dass der Operator und auf der linken Seite ausgewählt ist, und klicken Sie dann noch einmal auf Hinzufügen.
    7. Wählen Sie im Drop-down-Menü Bedingungstyp die Option Zeit  Planen  Wochentag aus.
    8. Wählen Sie im Drop-down-Menü Operator die Option Vor oder am aus.
    9. Wählen Sie im Drop-down-Menü Wochentag die Option Freitag aus.
    10. Wählen Sie im Drop-down-Menü Zeitzone auswählen die gewünschte Zeitzone aus der Liste aus.

    Aktuell haben Sie den Zugriff auf Montag bis Freitag beschränkt. Jetzt konfigurieren Sie den Zugriff auf von 9:00 Uhr (09:00) bis 17:00 Uhr (17:00).

    1. Stellen Sie sicher, dass der Operator und auf der linken Seite ausgewählt ist, und klicken Sie dann noch einmal auf Hinzufügen.
    2. Wählen Sie im Drop-down-Menü Bedingungstyp die Option Zeit  Planen  Tageszeit aus.

      1. Wählen Sie im Drop-down-Menü Operator die Option Nach oder am aus.
      2. Wählen Sie im Drop-down-Menü Tageszeit die Option 9 (9 Uhr) aus.
      3. Wählen Sie im Drop-down-Menü Zeitzone auswählen die gewünschte Zeitzone aus der Liste aus.
      4. Wählen Sie im Drop-down-Menü Bedingungstyp die Option Zeit  Planen  Tageszeit aus.
      5. Wählen Sie im Drop-down-Menü Operator die Option Vor oder am aus. Für diese Auswahl wird "am" logisch als alle Zeiten von 17:00 Uhr bis 17:59 Uhr ausgewertet. Wenn Sie festlegen möchten, dass der Zugriff um 16:59 Uhr abläuft, stellen Sie die Stunde auf 16 statt 17 ein.
      6. Wählen Sie im Drop-down-Menü Tageszeit die Option 17 (17 Uhr) aus.
      7. Wählen Sie im Drop-down-Menü Zeitzone auswählen die gewünschte Zeitzone aus der Liste aus.
      8. Klicken Sie auf Speichern, um die Bedingung anzuwenden.
      9. Sobald der Bereich Bedingung bearbeiten geschlossen wurde, klicken Sie im Bereich Berechtigungen bearbeiten noch einmal auf Speichern, um Ihre IAM-Richtlinie zu aktualisieren.

      Sie haben den Zugriff jetzt auf von Montag bis Freitag von 9:00 Uhr bis 17:00 Uhr festgelegt.

      Bedingungseditor:

      1. Klicken Sie auf den Tab Bedingungseditor und geben Sie den folgenden Ausdruck ein. Ersetzen Sie dabei die Platzhalterwerte durch Ihre eigenen Werte:

        request.time.getHours("Europe/Berlin") >= 9 &&
        request.time.getHours("Europe/Berlin") <= 17 &&
        request.time.getDayOfWeek("Europe/Berlin") >= 1 &&
        request.time.getDayOfWeek("Europe/Berlin") <= 5
        
      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 Ihre IAM-Richtlinie zu aktualisieren.

gcloud

IAM-Richtlinien werden mit dem Muster read-modify-write festgelegt.

Führen Sie den Befehl gcloud projects get-iam-policy aus, um die aktuelle IAM-Richtlinie für das Projekt abzurufen. Im folgenden Beispiel wird die JSON-Version der Richtlinie in einen Pfad auf dem Laufwerk heruntergeladen.

Befehl:

gcloud projects get-iam-policy project-id --format=json > filepath

Das JSON-Format der IAM-Richtlinie wird heruntergeladen:

{
  "bindings": [
    {
      "members": [
        "user:project-owner@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "user:rita@example.com"
      ],
      "role": "roles/bigquery.dataViewer"
    }
  ],
  "etag": "BwWKmjvelug=",
  "version": 1
}

Fügen Sie den folgenden hervorgehobenen Bedingungsausdruck hinzu, um die Richtlinie mit geplantem Zugriff zu konfigurieren. Ersetzen Sie dabei den Zeitstempel durch Ihren eigenen. Wenn Sie nicht die Version 263.0.0 oder höher des gcloud-Tools verwenden, achten Sie darauf, dass Sie den Wert version auf 3 aktualisiert haben. Wenn Sie eine neuere Version des gcloud-Tools verwenden, wird der maximale Richtlinienwert automatisch für Sie festgelegt:

{
  "bindings": [
    {
      "members": [
        "user:project-owner@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "user:rita@example.com"
      ],
      "role": "roles/bigquery.dataViewer",
      "condition": {
        "title": "Business_hours",
        "description": "Business hours Monday-Friday",
        "expression": "request.time.getHours('Europe/Berlin') >= 9 && request.time.getHours('Europe/Berlin') <= 17 && request.time.getDayOfWeek('Europe/Berlin') >= 1 && request.time.getDayOfWeek('Europe/Berlin') <= 5"
      }
    }
  ],
  "etag": "BwWKmjvelug=",
  "version": 3
}

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

gcloud projects set-iam-policy project-id filepath

Die neue Richtlinie wird angewendet und die Rollenzuweisung von rita@example.com ermöglicht den Zugriff an den angegebenen Tagen zu den angegebenen Uhrzeiten.

REST API

Verwenden Sie das Muster read-modify-write, um den geplanten Zugriff zuzulassen.

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

Die Methode projects.getIamPolicy der Resource Manager API ruft die IAM-Richtlinie eines Projekts ab.

Ersetzen Sie diese Werte in den folgenden Anweisungen:

  • project-id: Ihre Google Cloud-Projekt-ID.
  • 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 in etwa folgende JSON-Antwort erhalten:

{
  "version": 1,
  "etag": "BwWKmjvelug=",
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "user:project-owner@example.com"
      ]
    },
    {
      "role": "roles/bigquery.dataViewer",
      "members": [
        "user:rita@example.com"
      ]
    }
  ]
}

Ändern Sie als Nächstes die Richtlinie, um den geplanten Zugriff zuzulassen.

Fügen Sie den folgenden hervorgehobenen Bedingungsausdruck hinzu (ersetzen Sie den Zeitstempel durch Ihren eigenen). Der Wert version muss auf 3 aktualisiert worden sein:

{
  "etag": "BwWKmjvelug=",
  "version": 3,
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "user:project-owner@example.com"
      ]
    },
    {
      "role": "roles/bigquery.dataViewer",
      "members": [
        "user:rita@example.com"
      ],
      "condition": {
        "title": "Business_hours",
        "description": "Business hours Monday-Friday",
        "expression":
          "request.time.getHours('Europe/Berlin') >= 9 &&
          request.time.getHours('Europe/Berlin') <= 17 &&
          request.time.getDayOfWeek('Europe/Berlin') >= 1 &&
          request.time.getDayOfWeek('Europe/Berlin') <= 5"
      }
    }
  ]
}

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

Ersetzen Sie diese Werte in den folgenden Anweisungen:

  • project-id: Ihre Google Cloud-Projekt-ID.

HTTP-Methode und URL:

POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy

JSON-Text anfordern:

{
  "policy": {
    "etag": "BwWKmjvelug=",
    "version": 3,
    "bindings": [
      {
        "role": "roles/owner",
        "members": [
          "user:project-owner@example.com"
        ]
      },
      {
        "role": "roles/bigquery.dataViewer",
        "members": [
          "user:rita@example.com"
        ],
        "condition": {
          "title": "Business_hours",
          "description": "Business hours Monday-Friday",
          "expression": "request.time.getHours('Europe/Berlin') >= 9 && request.time.getHours('Europe/Berlin') <= 17 && request.time.getDayOfWeek('Europe/Berlin') >= 1 && request.time.getDayOfWeek('Europe/Berlin') <= 5"
        }
      }
    ]
  }
}

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

Die Antwort enthält die aktualisierte Richtlinie.


Weitere Informationen