Richtlinie

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 bindet ein oder mehrere members an eine einzelne role. Mitglieder 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.

Optional kann eine binding eine condition angeben. Hierbei handelt es sich um einen logischen Ausdruck, der den Zugriff auf eine Ressource nur dann zulässt, wenn der Ausdruck true ergibt. Eine Bedingung kann Beschränkungen basierend auf Attributen der Anfrage, der Ressource oder beiden hinzufügen.

JSON-Beispiel:

{
  "bindings": [
    {
      "role": "roles/resourcemanager.organizationAdmin",
      "members": [
        "user:mike@example.com",
        "group:admins@example.com",
        "domain:google.com",
        "serviceAccount:my-project-id@appspot.gserviceaccount.com"
      ]
    },
    {
      "role": "roles/resourcemanager.organizationViewer",
      "members": ["user:eve@example.com"],
      "condition": {
        "title": "expirable access",
        "description": "Does not grant access after Sep 2020",
        "expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')",
      }
    }
  ],
  "etag": "BwWWja0YfJA=",
  "version": 3
}

YAML-Beispiel:

bindings:
- members:
  - user:mike@example.com
  - group:admins@example.com
  - domain:google.com
  - serviceAccount:my-project-id@appspot.gserviceaccount.com
  role: roles/resourcemanager.organizationAdmin
- members:
  - user:eve@example.com
  role: roles/resourcemanager.organizationViewer
  condition:
    title: expirable access
    description: Does not grant access after Sep 2020
    expression: request.time < timestamp('2020-10-01T00:00:00.000Z')
- etag: BwWWja0YfJA=
- version: 3

Eine Beschreibung von IAM und den entsprechenden Funktionen finden Sie in der IAM-Dokumentation.

JSON-Darstellung

{
  "version": integer,
  "bindings": [
    {
      object (Binding)
    }
  ],
  "auditConfigs": [
    {
      object (AuditConfig)
    }
  ],
  "etag": string
}
Felder
version

integer

Gibt das Format der Richtlinie an.

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.

bindings[]

object (Binding)

Verbindet eine Liste von members mit einer role. Optional können Sie ein condition angeben, das bestimmt, wie und wann bindings angewendet wird. Jeder bindings muss mindestens ein Mitglied enthalten.

auditConfigs[]

object (AuditConfig)

Legt die Konfiguration der Cloud-Audit-Protokollierung für diese Richtlinie fest.

etag

string (bytes format)

etag wird für eine optimistische Gleichzeitigkeitserkennung 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

Binding

Ordnet members zu einem role zu.

JSON-Darstellung

{
  "role": string,
  "members": [
    string
  ],
  "condition": {
    object (Expr)
  }
}
Felder
role

string

members zugewiesene Rolle. Beispiel: roles/viewer, roles/editor oder roles/owner.

members[]

string

Gibt die Identitäten an, die um Zugriff auf eine Ressource der Cloud Platform bitten. members kann die folgenden Werte annehmen:

  • 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

  • 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 Dienstkonto steht. Beispiel: my-other-app@appspot.gserviceaccount.com

  • group:{emailid}: eine E-Mail-Adresse, die für eine Google-Gruppe steht. Beispiel: admins@example.com

  • 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.

  • domain:{domain}: die G Suite-Domain (primäre Domain), die alle Nutzer dieser Domain repräsentiert. Beispiel: google.comoder example.com
condition

object (Expr)

Die Bedingung, die dieser Bindung zugeordnet ist. HINWEIS: Wird die Bedingung nicht erfüllt, ist über die aktuelle Bindung kein Nutzerzugriff zulässig. Verschiedene Bindungen und ihre Bedingungen werden unabhängig voneinander untersucht.

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.

JSON-Darstellung

{
  "expression": string,
  "title": string,
  "description": string,
  "location": string
}
Felder
expression

string

Textdarstellung eines Ausdrucks in der Common Expression Language-Syntax.

title

string

Optional Titel für den Ausdruck, d. h. eine kurze Zeichenfolge, die 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. Ein String, der in Fehlermeldungen den Speicherort des Ausdrucks angibt, z. B. einen Dateinamen 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.

Beispielrichtlinie mit mehreren AuditConfigs:

{
  "auditConfigs": [
    {
      "service": "allServices"
      "auditLogConfigs": [
        {
          "logType": "DATA_READ",
          "exemptedMembers": [
            "user:jose@example.com"
          ]
        },
        {
          "logType": "DATA_WRITE",
        },
        {
          "logType": "ADMIN_READ",
        }
      ]
    },
    {
      "service": "sampleservice.googleapis.com"
      "auditLogConfigs": [
        {
          "logType": "DATA_READ",
        },
        {
          "logType": "DATA_WRITE",
          "exemptedMembers": [
            "user:aliya@example.com"
          ]
        }
      ]
    }
  ]
}

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.

JSON-Darstellung

{
  "service": string,
  "auditLogConfigs": [
    {
      object (AuditLogConfig)
    }
  ]
}
Felder
service

string

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.

auditLogConfigs[]

object (AuditLogConfig)

Die Konfiguration des Logging für die einzelnen Berechtigungstypen.

AuditLogConfig

Konfiguriert die Protokollierung für einen Berechtigungstyp. Beispiel:

{
  "auditLogConfigs": [
    {
      "logType": "DATA_READ",
      "exemptedMembers": [
        "user:jose@example.com"
      ]
    },
    {
      "logType": "DATA_WRITE",
    }
  ]
}

Damit wird das Logging von DATA_READ und DATA_WRITE aktiviert und jose@example.com wird vom DATA_READ-Logging ausgenommen.

JSON-Darstellung

{
  "logType": enum (LogType),
  "exemptedMembers": [
    string
  ]
}
Felder
logType

enum (LogType)

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.

Enums
LOG_TYPE_UNSPECIFIED Standardfall. Sollte nicht verwendet werden.
ADMIN_READ Admin-Lesevorgänge. Beispiel: CloudIAM getIamPolicy.
DATA_WRITE Datenschreibvorgänge. Beispiel: CloudSQL Users create.
DATA_READ Datenlesevorgänge. Beispiel: CloudSQL Users list.