Policy

Политика управления идентификацией и доступом (IAM), которая определяет элементы управления доступом к ресурсам Google Cloud.

Policy — это набор bindings . binding связывает одного или нескольких members (или субъектов) с одной role . В качестве субъектов могут выступать учётные записи пользователей, учётные записи служб, группы Google и домены (например, G Suite). role — это именованный список разрешений; каждая role может быть предопределённой ролью IAM или созданной пользователем настраиваемой ролью.

Для некоторых типов ресурсов Google Cloud binding также может указывать condition — логическое выражение, разрешающее доступ к ресурсу только в том случае, если это выражение имеет значение true . Условие может накладывать ограничения на основе атрибутов запроса, ресурса или и того, и другого. Чтобы узнать, какие ресурсы поддерживают условия в своих политиках IAM, см. документацию по IAM .

Пример JSON:

    {
      "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:

    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

Описание IAM и его функций см. в документации IAM .

JSON-представление
{
  "version": integer,
  "bindings": [
    {
      object (Binding)
    }
  ],
  "etag": string
}
Поля
version

integer

Определяет формат политики.

Допустимые значения: 0 , 1 и 3 Запросы, в которых указано недопустимое значение, отклоняются.

Любая операция, влияющая на условные привязки ролей, должна указывать версию 3 Это требование применяется к следующим операциям:

  • Получение политики, включающей условную привязку ролей
  • Добавление условной привязки роли к политике
  • Изменение условной привязки роли в политике
  • Удаление любой привязки роли, с условием или без, из политики, которая включает условия

Важно: при использовании условий IAM необходимо включать поле etag при каждом вызове setIamPolicy . Если это поле пропущено, IAM позволит перезаписать политику версии 3 политикой версии 1 , и все условия политики версии 3 будут потеряны.

Если политика не содержит никаких условий, операции по этой политике могут указывать любую допустимую версию или оставлять поле неустановленным.

Чтобы узнать, какие ресурсы поддерживают условия в своих политиках IAM, см. документацию IAM .

bindings[]

object ( Binding )

Связывает список members (или субъектов) с role . При необходимости можно указать condition , определяющее, как и когда применяются bindings . Каждая bindings должна содержать хотя бы одного субъекта.

bindings в Policy могут ссылаться на до 1500 субъектов; до 250 из этих субъектов могут быть группами Google. Каждое упоминание субъекта учитывается в этих ограничениях. Например, если bindings предоставляют 50 различных ролей user:alice@example.com и не предоставляют ни одному другому субъекту, то вы можете добавить ещё 1450 субъектов к bindings в Policy .

etag

string ( bytes format)

etag используется для оптимистичного управления параллельными процессами, чтобы предотвратить перезапись одновременных обновлений политики. Настоятельно рекомендуется, чтобы системы использовали etag в цикле «чтение-изменение-запись» для обновления политики, чтобы избежать состояний гонки: etag возвращается в ответе на getIamPolicy , и ожидается, что системы добавят этот etag в запрос на setIamPolicy , чтобы гарантировать применение изменений к той же версии политики.

Важно: при использовании условий IAM необходимо включать поле etag при каждом вызове setIamPolicy . Если это поле пропущено, IAM позволит перезаписать политику версии 3 политикой версии 1 , и все условия политики версии 3 будут потеряны.

Строка в кодировке base64.