Eine Richtlinie für die Identitäts- und Zugriffsverwaltung (Identity and Access Management, IAM), die Zugriffssteuerungen für Google Cloud-Ressourcen festlegt.
Eine Policy ist eine Sammlung von bindings. Eine binding-Bindung bindet ein oder mehrere members oder Hauptkonten an eine einzelne role. Hauptkonten können Nutzerkonten, Dienstkonten, Google-Gruppen und Domains sein (z. B. G Suite). Eine role ist eine benannte Liste von Berechtigungen. Jede role kann eine vordefinierte IAM-Rolle oder eine vom Nutzer erstellte benutzerdefinierte Rolle sein.
Für einige Arten von Google Cloud-Ressourcen kann ein binding auch eine condition angeben. Dies ist ein logischer Ausdruck, der den Zugriff auf eine Ressource nur zulässt, wenn der Ausdruck true ergibt. Eine Bedingung kann Beschränkungen basierend auf Attributen der Anfrage, der Ressource oder beiden hinzufügen. Welche Ressourcen Bedingungen in ihren IAM-Richtlinien unterstützen, erfahren Sie in der IAM-Dokumentation.
Gültige Werte sind 0, 1 und 3. Anfragen mit einem ungültigen Wert werden abgelehnt.
Jeder Vorgang, der sich auf bedingte Rollenbindungen auswirkt, muss die Version 3 angeben. Diese Anforderung gilt für die folgenden Vorgänge:
Eine Richtlinie abrufen, die eine bedingte Rollenbindung enthält
Einer Richtlinie eine bedingte Rollenbindung hinzufügen
Eine bedingte Rollenbindung in einer Richtlinie ändern
Eine Rollenbindung mit oder ohne Bedingung aus einer Richtlinie entfernen, die Bedingungen enthält
Wichtig: Wenn Sie IAM-Bedingungen verwenden, müssen Sie das Feld etag bei jedem Aufruf von setIamPolicy einfügen. Wenn Sie dieses Feld nicht angeben, ermöglicht IAM das Überschreiben einer Richtlinie der Version 3 mit einer Richtlinie der Version 1. Alle Bedingungen in der Richtlinie der Version 3 gehen dann verloren.
Wenn eine Richtlinie keine Bedingungen enthält, geben Vorgänge für diese Richtlinie möglicherweise eine gültige Version an oder das Feld wird ohne Festlegung gelassen.
Welche Ressourcen Bedingungen in ihren IAM-Richtlinien unterstützen, erfahren Sie in der IAM-Dokumentation.
Verbindet eine Liste von members oder Hauptkonten mit einer role. Optional können Sie eine condition angeben, die bestimmt, wie und wann bindings angewendet werden. Jede der bindings muss mindestens ein Hauptkonto enthalten.
Die bindings in einem Policy können auf bis zu 1.500 Hauptkonten verweisen. Maximal 250 dieser Hauptkonten können Google-Gruppen sein. Jedes Vorkommen eines Hauptkontos wird auf diese Limits angerechnet. Wenn beispielsweise bindings 50 verschiedene Rollen zu user:alice@example.com und keinem anderen Hauptkonto zuweist, können Sie dem bindings in Policy weitere 1.450 Hauptkonten hinzufügen.
etag wird für eine optimistische Nebenläufigkeitserkennung verwendet, mit der verhindert werden kann, dass sich gleichzeitige Aktualisierungen einer Richtlinie gegenseitig überschreiben. Die Verwendung des etag im Zyklus von Lesen/Ändern/Schreiben zur Ausführung von Richtlinienaktualisierungen wird ausdrücklich empfohlen, um Race-Bedingungen zu vermeiden: Als Antwort auf getIamPolicy wird ein etag zurückgegeben. Es wird erwartet, dass Systeme dieses ETag in die Anforderung an setIamPolicy aufnehmen, damit ihre Änderung auf dieselbe Richtlinienversion angewendet wird.
Wichtig: Wenn Sie IAM-Bedingungen verwenden, müssen Sie das Feld etag bei jedem Aufruf von setIamPolicy einfügen. Wenn Sie dieses Feld nicht angeben, ermöglicht IAM das Überschreiben einer Richtlinie der Version 3 mit einer Richtlinie der Version 1. Alle Bedingungen in der Richtlinie der Version 3 gehen dann verloren.
Ein base64-codierter String.
Bindung
Ordnet members oder Hauptkonten mit einer role zu.
Rolle, die der Liste der members oder Hauptkonten zugewiesen ist. Beispiel: roles/viewer, roles/editor oder roles/owner.
Eine Übersicht über die IAM-Rollen und -Berechtigungen finden Sie in der IAM-Dokumentation. Eine Liste der verfügbaren vordefinierten Rollen finden Sie hier.
members[]
string
Gibt die Hauptkonten an, die Zugriff auf eine Google Cloud-Ressource anfordern. members kann die folgenden Werte haben:
allUsers: eine spezielle Kennung für alle Identitäten im Internet, ob mit oder ohne Google-Konto
allAuthenticatedUsers: eine spezielle Kennung für alle Identitäten im Internet, ob mit oder ohne Google-Konto Enthält keine Identitäten, die von externen Identitätsanbietern (IdPs) über die Identitätsföderation stammen.
user:{emailid}: eine E-Mail-Adresse, die für ein bestimmtes Google-Konto steht. Beispiel: alice@example.com
serviceAccount:{emailid}: eine E-Mail-Adresse, die für ein Google-Dienstkonto steht. Beispiel: my-other-app@appspot.gserviceaccount.com.
serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: Eine Kennzeichnung für ein Kubernetes-Dienstkonto. Beispiel: my-project.svc.id.goog[my-namespace/my-kubernetes-sa]
group:{emailid}: eine E-Mail-Adresse, die für eine Google-Gruppe steht. Beispiel: admins@example.com.
domain:{domain}: die G Suite-Domain (primäre Domain), die alle Nutzer dieser Domain repräsentiert. Beispiel: google.comoder example.com
principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}: Einzelne Identität im Workforce Identity-Pool.
principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{groupId}: Alle Workforce-Identitäten in einer Gruppe.
principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}: Alle Workforce-Identitäten mit einem bestimmten Attributwert.
principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*: Alle Identitäten in einem Workforce Identity-Pool.
principal://iam.googleapis.com/projects/{projectNumber}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}: Einzelne Identität im Workload Identity-Pool.
principalSet://iam.googleapis.com/projects/{projectNumber}/locations/global/workloadIdentityPools/{pool_id}/group/{groupId}: Eine Workload Identity-Poolgruppe.
principalSet://iam.googleapis.com/projects/{projectNumber}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}: Alle Identitäten in einem Workload Identity-Pool mit einem bestimmten Attribut.
principalSet://iam.googleapis.com/projects/{projectNumber}/locations/global/workloadIdentityPools/{pool_id}/*: Alle Identitäten in einem Workload Identity-Pool.
deleted:user:{emailid}?uid={uniqueid}: eine E-Mail-Adresse mit einer eindeutigen ID für einen Nutzer, der kürzlich gelöscht wurde. Beispiel: alice@example.com?uid=123456789012345678901. Wenn der Nutzer wiederhergestellt wird, wird dieser Wert in user:{emailid} geändert und der wiederhergestellte Nutzer behält die Rolle in der Bindung bei.
deleted:serviceAccount:{emailid}?uid={uniqueid}: eine E-Mail-Adresse mit einer eindeutigen ID für ein Dienstkonto, das kürzlich gelöscht wurde. Beispiel: my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. Wenn das Dienstkonto wiederhergestellt wird, wird dieser Wert in serviceAccount:{emailid} geändert und das wiederhergestellte Dienstkonto behält die Rolle in der Bindung bei.
deleted:group:{emailid}?uid={uniqueid}: eine E-Mail-Adresse mit einer eindeutigen ID für eine kürzlich gelöschte Google-Gruppe. Beispiel: admins@example.com?uid=123456789012345678901. Wenn die Gruppe wiederhergestellt wird, wird dieser Wert in group:{emailid} geändert und die wiederhergestellte Gruppe behält die Rolle in der Bindung.
deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}: Gelöschte einzelne Identität im Workforce Identity-Pool. Beispiel: deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value.
Wenn die Bedingung true ergibt, gilt diese Bindung für die aktuelle Anfrage.
Wenn die Bedingung false ergibt, gilt diese Bindung nicht für die aktuelle Anfrage. Eine andere Rollenbindung könnte jedoch einem oder mehreren der Hauptkonten in dieser Bindung die gleiche Rolle zuweisen.
Welche Ressourcen Bedingungen in ihren IAM-Richtlinien unterstützen, erfahren Sie in der IAM-Dokumentation.
Expr
Stellt einen Textausdruck in der CEL-Syntax (Common Expression Language) dar. CEL ist eine C-ähnliche Sprache für Ausdrücke. Weitere Informationen zur Syntax und Semantik von CEL finden Sie unter https://github.com/google/cel-spec.
Beispiel (Vergleich):
title: "Summary size limit"
description: "Determines if a summary is less than 100 chars"
expression: "document.summary.size() < 100"
Beispiel (Gleichheit):
title: "Requestor is owner"
description: "Determines if requestor is the document owner"
expression: "document.owner == request.auth.claims.email"
Beispiel (Logik):
title: "Public documents"
description: "Determine whether the document should be publicly visible"
expression: "document.type != 'private' && document.type != 'internal'"
Beispiel (Datenbearbeitung):
title: "Notification string"
description: "Create a notification string with a timestamp."
expression: "'New message received at ' + string(document.create_time)"
Die genauen Variablen und Funktionen, auf die in einem Ausdruck verwiesen werden kann, werden durch den Dienst bestimmt, der den Ausdruck auswertet. Weitere Informationen finden Sie in der Dokumentation zum Dienst.
Textdarstellung eines Ausdrucks in der Common Expression Language-Syntax.
title
string
Optional. Titel für den Ausdruck, d. h. ein kurzer String, der seinen Zweck beschreibt. Diese Funktion kann z. B. in UIs verwendet werden, in denen die Eingabe von Ausdrücken zulässig ist.
description
string
Optional. Beschreibung des Ausdrucks. Dies ist ein längerer Text, der den Ausdruck beschreibt, z. B. wenn der Mauszeiger darauf bewegt wird.
location
string
Optional. String, der den Speicherort des Ausdrucks für Error Reporting angibt, z.B. ein Dateiname und eine Position in der Datei.
AuditConfig
Legt die Audit-Konfiguration für einen Dienst fest. Die Konfiguration bestimmt, welche Berechtigungstypen protokolliert werden und welche Identitäten ggf. von der Protokollierung ausgenommen sind. Ein AuditConfig muss mindestens ein AuditLogConfigs enthalten.
Wenn AuditConfigs sowohl für allServices als auch für einen bestimmten Dienst vorhanden sind, wird für diesen Dienst eine Vereinigungsmenge der beiden AuditConfigs verwendet: Die im jeweiligen AuditConfig angegebenen Logtypen (log_types) werden aktiviert und die angegebenen Mitglieder (exempted_members) werden im jeweiligen AuditConfig ausgenommen.
Für sampleservice aktiviert diese Richtlinie das Logging von DATA_READ, DATA_WRITE und ADMIN_READ. Außerdem werden jose@example.com vom DATA_READ-Logging und aliya@example.com vom DATA_WRITE-Logging ausgenommen.
Gibt einen Dienst an, der für das Audit-Logging aktiviert wird. Beispiele: storage.googleapis.com, cloudsql.googleapis.com. allServices ist ein spezieller Wert, der alle Dienste umfasst.
Der Protokolltyp, der von dieser Konfiguration aktiviert wird.
exemptedMembers[]
string
Legt die Identitäten fest, die vom Logging für diesen Berechtigungstyp ausgenommen werden. Entspricht dem Format von Binding.members.
LogType
Die Liste der gültigen Berechtigungstypen, für die Protokollierung konfiguriert werden kann. Admin-Schreibvorgänge werden immer protokolliert und sind nicht konfigurierbar.
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Schwer verständlich","hardToUnderstand","thumb-down"],["Informationen oder Beispielcode falsch","incorrectInformationOrSampleCode","thumb-down"],["Benötigte Informationen/Beispiele nicht gefunden","missingTheInformationSamplesINeed","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2024-06-28 (UTC)."],[[["\u003cp\u003eIAM policies manage access control for Google Cloud resources through a collection of bindings.\u003c/p\u003e\n"],["\u003cp\u003eA binding in an IAM policy links one or more principals (members like users, groups, or service accounts) to a specific role, granting them the associated permissions.\u003c/p\u003e\n"],["\u003cp\u003eIAM policies can include conditions, which are logical expressions that restrict access to a resource based on request or resource attributes and only if it is true.\u003c/p\u003e\n"],["\u003cp\u003eAudit configurations within a policy define which permission types are logged and which identities are exempt from logging.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eetag\u003c/code\u003e field is essential for managing policy versions and preventing simultaneous updates from overwriting each other, especially when using IAM Conditions.\u003c/p\u003e\n"]]],[],null,["# Policy\n\n- [JSON representation](#SCHEMA_REPRESENTATION)\n- [Binding](#Binding)\n - [JSON representation](#Binding.SCHEMA_REPRESENTATION)\n- [Expr](#Expr)\n - [JSON representation](#Expr.SCHEMA_REPRESENTATION)\n- [AuditConfig](#AuditConfig)\n - [JSON representation](#AuditConfig.SCHEMA_REPRESENTATION)\n- [AuditLogConfig](#AuditLogConfig)\n - [JSON representation](#AuditLogConfig.SCHEMA_REPRESENTATION)\n- [LogType](#LogType)\n\nAn Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources.\n\nA `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role.\n\nFor some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).\n\n**JSON example:** \n\n {\n \"bindings\": [\n {\n \"role\": \"roles/resourcemanager.organizationAdmin\",\n \"members\": [\n \"user:mike@example.com\",\n \"group:admins@example.com\",\n \"domain:google.com\",\n \"serviceAccount:my-project-id@appspot.gserviceaccount.com\"\n ]\n },\n {\n \"role\": \"roles/resourcemanager.organizationViewer\",\n \"members\": [\n \"user:eve@example.com\"\n ],\n \"condition\": {\n \"title\": \"expirable access\",\n \"description\": \"Does not grant access after Sep 2020\",\n \"expression\": \"request.time \u003c timestamp('2020-10-01T00:00:00.000Z')\",\n }\n }\n ],\n \"etag\": \"BwWWja0YfJA=\",\n \"version\": 3\n }\n\n**YAML example:** \n\n bindings:\n - members:\n - user:mike@example.com\n - group:admins@example.com\n - domain:google.com\n - serviceAccount:my-project-id@appspot.gserviceaccount.com\n role: roles/resourcemanager.organizationAdmin\n - members:\n - user:eve@example.com\n role: roles/resourcemanager.organizationViewer\n condition:\n title: expirable access\n description: Does not grant access after Sep 2020\n expression: request.time \u003c timestamp('2020-10-01T00:00:00.000Z')\n etag: BwWWja0YfJA=\n version: 3\n\nFor a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).\n\nBinding\n-------\n\nAssociates `members`, or principals, with a `role`.\n\nExpr\n----\n\nRepresents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at \u003chttps://github.com/google/cel-spec\u003e.\n\nExample (Comparison): \n\n title: \"Summary size limit\"\n description: \"Determines if a summary is less than 100 chars\"\n expression: \"document.summary.size() \u003c 100\"\n\nExample (Equality): \n\n title: \"Requestor is owner\"\n description: \"Determines if requestor is the document owner\"\n expression: \"document.owner == request.auth.claims.email\"\n\nExample (Logic): \n\n title: \"Public documents\"\n description: \"Determine whether the document should be publicly visible\"\n expression: \"document.type != 'private' && document.type != 'internal'\"\n\nExample (Data Manipulation): \n\n title: \"Notification string\"\n description: \"Create a notification string with a timestamp.\"\n expression: \"'New message received at ' + string(document.create_time)\"\n\nThe exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.\n\nAuditConfig\n-----------\n\nSpecifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exemptedMembers in each AuditLogConfig are exempted.\n\nExample Policy with multiple AuditConfigs: \n\n {\n \"auditConfigs\": [\n {\n \"service\": \"allServices\",\n \"auditLogConfigs\": [\n {\n \"logType\": \"DATA_READ\",\n \"exemptedMembers\": [\n \"user:jose@example.com\"\n ]\n },\n {\n \"logType\": \"DATA_WRITE\"\n },\n {\n \"logType\": \"ADMIN_READ\"\n }\n ]\n },\n {\n \"service\": \"sampleservice.googleapis.com\",\n \"auditLogConfigs\": [\n {\n \"logType\": \"DATA_READ\"\n },\n {\n \"logType\": \"DATA_WRITE\",\n \"exemptedMembers\": [\n \"user:aliya@example.com\"\n ]\n }\n ]\n }\n ]\n }\n\nFor sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.\n\nAuditLogConfig\n--------------\n\nProvides the configuration for logging a type of permissions. Example: \n\n {\n \"auditLogConfigs\": [\n {\n \"logType\": \"DATA_READ\",\n \"exemptedMembers\": [\n \"user:jose@example.com\"\n ]\n },\n {\n \"logType\": \"DATA_WRITE\"\n }\n ]\n }\n\nThis enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting [jose@example.com](mailto:jose@example.com) from DATA_READ logging.\n\nLogType\n-------\n\nThe list of valid permission types for which logging can be configured. Admin writes are always logged, and are not configurable."]]