In diesem Thema wird beschrieben, wie Sie mithilfe von bedingten Rollenbindungen in Ihren Zulassungsrichtlinien 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. Datums-/Uhrzeitattribute werden von allen Google Cloud-Diensten erkannt.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Verwalten bedingter Rollenbindungen benötigen:
-
Zum Verwalten des Zugriffs auf Projekte:
Project IAM Admin (
roles/resourcemanager.projectIamAdmin
) für das Projekt -
Zum Verwalten des Zugriffs auf Ordner:
Folder Admin (
roles/resourcemanager.folderAdmin
) für den Ordner -
Zum Verwalten des Zugriffs auf Projekte, Ordner und Organisationen:
Organization Admin (
roles/resourcemanager.organizationAdmin
) für die Organisation -
Zum Verwalten des Zugriffs auf fast alle Google Cloud-Ressourcen:
Security Admin (
roles/iam.securityAdmin
) für das Projekt, den Ordner oder die Organisation, für die Sie den Zugriff verwalten möchten
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Verwalten von bedingten Rollenbindungen erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind zum Verwalten bedingter Rollenbindungen erforderlich:
-
Zum Verwalten des Zugriffs auf Projekte:
resourcemanager.projects.getIamPolicy
für das Projektresourcemanager.projects.setIamPolicy
für das Projekt
-
Zum Verwalten des Zugriffs auf Ordner:
-
resourcemanager.folders.getIamPolicy
für den Ordner -
resourcemanager.folders.setIamPolicy
für den Ordner
-
-
Zum Verwalten des Zugriffs auf Organisationen:
-
resourcemanager.organizations.getIamPolicy
für die Organisation -
resourcemanager.organizations.setIamPolicy
für die Organisation
-
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
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
Öffnen Sie in der Google Cloud Console die Seite IAM.
Suchen Sie in der Liste der Hauptkonten das gewünschte Hauptkonto und klicken Sie auf die Schaltfläche
.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.
Geben Sie im Bereich Bedingung bearbeiten einen Titel und eine optionale Beschreibung für die Bedingung ein.
Sie können einen Bedingungsausdruck entweder mit dem Tool zur Bedingungserstellung 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.
Tool zur Bedingungserstellung:
- Wählen Sie im Drop-down-Menü Bedingungstyp die Option Ablaufender Zugriff aus.
- Wählen Sie im Drop-down-Menü Operator die Option von aus.
- Klicken Sie im Drop-down-Menü Zeit auf die Schaltfläche , um einen Datums- und Uhrzeitbereich auszuwählen.
- Klicken Sie auf Speichern, um die Bedingung anzuwenden.
- Sobald der Bereich Bedingung bearbeiten geschlossen wurde, klicken Sie im Bereich Berechtigungen bearbeiten noch einmal auf Speichern, um die Zulassungsrichtlinie zu aktualisieren.
Bedingungseditor:
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")
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.
Klicken Sie auf Speichern, um die Bedingung anzuwenden.
Sobald der Bereich Bedingung bearbeiten geschlossen wurde, klicken Sie im Bereich Berechtigungen bearbeiten noch einmal auf Speichern, um die Zulassungsrichtlinie zu aktualisieren.
gcloud
Zulassungsrichtlinien werden mit dem Muster Read-Modify-Write festgelegt.
Rufen Sie mit dem Befehl gcloud projects get-iam-policy
die aktuelle Zulassungsrichtlinie für das Projekt ab. Im folgenden Beispiel wird die JSON-Version der Zulassungsrichtlinie in einen Pfad auf dem Laufwerk heruntergeladen.
Befehl:
gcloud projects get-iam-policy project-id --format=json > filepath
Das JSON-Format der Zulassungsrichtlinie 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 Zulassungsrichtlinie mit ablaufendem Zugriff zu konfigurieren. Ersetzen Sie dabei den Zeitstempel durch Ihren eigenen. Die gcloud CLI aktualisiert die Version automatisch:
{
"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 Zulassungsrichtlinie fest, indem Sie den Befehl gcloud projects set-iam-policy
ausführen:
gcloud projects set-iam-policy project-id filepath
Die neue Zulassungsrichtlinie wird angewendet und die Rollenzuweisung von travis@example.com
läuft zum angegebenen Zeitpunkt ab.
REST
Verwenden Sie das Muster read-modify-write, um den Zugriff bis zu einem bestimmten Zeitpunkt zuzulassen.
Lesen Sie zuerst die Zulassungsrichtlinie 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, wiemy-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:project-owner@example.com" ] }, { "role": "roles/iam.securityReviewer", "members": [ "user:travis@example.com" ] } ] }
Ändern Sie als Nächstes die Zulassungsrichtlinie 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 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, wiemy-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: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 Zulassungsrichtlinie:
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
Öffnen Sie in der Google Cloud Console die Seite IAM.
Suchen Sie in der Liste der Hauptkonten das gewünschte Hauptkonto und klicken Sie auf die Schaltfläche
.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.
Geben Sie im Bereich Bedingung bearbeiten einen Titel und eine optionale Beschreibung für die Bedingung ein.
Sie können einen Bedingungsausdruck entweder mit dem Tool zur Bedingungserstellung 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.
Tool zur Bedingungserstellung:
- Klicken Sie auf Hinzufügen.
- Wählen Sie im Drop-down-Menü Bedingungstyp die Option Zeit Planen Wochentag aus.
- Wählen Sie im Drop-down-Menü Operator die Option Nach oder am aus.
- Wählen Sie im Drop-down-Menü Wochentag die Option Montag aus.
- Wählen Sie im Drop-down-Menü Zeitzone auswählen die gewünschte Zeitzone aus der Liste aus.
- Stellen Sie sicher, dass der Operator und auf der linken Seite ausgewählt ist, und klicken Sie dann noch einmal auf Hinzufügen.
- Wählen Sie im Drop-down-Menü Bedingungstyp die Option Zeit Planen Wochentag aus.
- Wählen Sie im Drop-down-Menü Operator die Option Vor oder am aus.
- Wählen Sie im Drop-down-Menü Wochentag die Option Freitag aus.
- 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).
- Stellen Sie sicher, dass der Operator und auf der linken Seite ausgewählt ist, und klicken Sie dann noch einmal auf Hinzufügen.
Wählen Sie im Drop-down-Menü Bedingungstyp die Option Zeit
Planen Tageszeit aus.- Wählen Sie im Drop-down-Menü Operator die Option Nach oder am aus.
- Wählen Sie im Drop-down-Menü Tageszeit die Option 9 (9 Uhr) aus.
- Wählen Sie im Drop-down-Menü Zeitzone auswählen die gewünschte Zeitzone aus der Liste aus.
- Wählen Sie im Drop-down-Menü Bedingungstyp die Option Zeit Planen Tageszeit aus.
- 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.
- Wählen Sie im Drop-down-Menü Tageszeit die Option 17 (17 Uhr) aus.
- Wählen Sie im Drop-down-Menü Zeitzone auswählen die gewünschte Zeitzone aus der Liste aus.
- Klicken Sie auf Speichern, um die Bedingung anzuwenden.
- Sobald der Bereich Bedingung bearbeiten geschlossen wurde, klicken Sie im Bereich Berechtigungen bearbeiten noch einmal auf Speichern, um die Zulassungsrichtlinie zu aktualisieren.
Sie haben den Zugriff jetzt auf von Montag bis Freitag von 9:00 Uhr bis 17:00 Uhr festgelegt.
Bedingungseditor:
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
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.
Klicken Sie auf Speichern, um die Bedingung anzuwenden.
Sobald der Bereich Bedingung bearbeiten geschlossen wurde, klicken Sie im Bereich Berechtigungen bearbeiten noch einmal auf Speichern, um die Zulassungsrichtlinie zu aktualisieren.
gcloud
Zulassungsrichtlinien werden mit dem Muster Read-Modify-Write festgelegt.
Rufen Sie mit dem Befehl gcloud projects get-iam-policy
die aktuelle Zulassungsrichtlinie für das Projekt ab. Im folgenden Beispiel wird die JSON-Version der Zulassungsrichtlinie in einen Pfad auf dem Laufwerk heruntergeladen.
Befehl:
gcloud projects get-iam-policy project-id --format=json > filepath
Das JSON-Format der Zulassungsrichtlinie 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 Zulassungsrichtlinie mit geplantem Zugriff zu konfigurieren. Ersetzen Sie dabei den Zeitstempel durch Ihren eigenen. Die gcloud CLI aktualisiert die Version automatisch:
{
"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 Zulassungsrichtlinie fest, indem Sie den Befehl gcloud projects set-iam-policy
ausführen:
gcloud projects set-iam-policy project-id filepath
Die neue Zulassungsrichtlinie wird angewendet und die Rollenzuweisung von rita@example.com
ermöglicht den Zugriff an den angegebenen Tagen zu den angegebenen Uhrzeiten.
REST
Verwenden Sie das Muster read-modify-write, um den geplanten Zugriff zuzulassen.Lesen Sie zuerst die Zulassungsrichtlinie 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, wiemy-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:project-owner@example.com" ] }, { "role": "roles/bigquery.dataViewer", "members": [ "user:rita@example.com" ] } ] }
Ändern Sie als Nächstes die Zulassungsrichtlinie, 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 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, wiemy-project
.
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 Zulassungsrichtlinie:
Nächste Schritte
- Mehr zum Verwalten bedingter Rollenbindungen
- Informationen zum Linting von Zulassungsrichtlinien
- Mit bedingten Rollenbindungen Just-in-Time-Zugriffsrechte auf Projekte verwalten.