Как управлять разрешениями GCP для создания подписки и разрешить удаление только подписки, созданной этой учетной записью службы? - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь создать подписку во время выполнения приложения, код должен иметь возможность создавать подписку и очищать ее после ее завершения.

Я хочу сделать это с наименьшим возможные разрешения для учетной записи службы Я использую. На данный момент я создал настраиваемую роль и дал два доступа к роли pubsub.subscriptions.create , pubsub.subscriptions.delete.

Хотя это позволяет создавать и очищать подписку, это позволяет не только удалить текущую подписку, но и удалить ее. но также и подписки, созданные другими пользователями в том же проекте.

  1. Как я могу назначить разрешения, чтобы иметь возможность создавать подписки в Pub / Sub, удалить подписку, созданную этой учетной записью службы ?
    Другой способ выразить это: как я могу создать подписку во время выполнения и изменить только разрешение этой подписки, чтобы включить pubsub.subscriptions.delete. (с той же учетной записью службы).

  2. Есть ли способ сделать учетную запись службы администратора / редактора для ресурсов (темы, подписки, вычислительная машина и т. д. c.) создан этой учетной записью ? что-то вроде роли IAM - сделать администратора после создания ресурса.

Ссылки на документацию по теме: https://cloud.google.com/pubsub/docs/access-control

1 Ответ

1 голос
/ 07 мая 2020

Это невозможно из-за конструктивных ограничений Google IAM.

В Google IAM разрешения соответствуют 1: 1 с методами REST . Для вызова метода вызывающей стороне требуется это разрешение. Другими словами, разрешения предоставляются для методов, которые вызывают их, а не для объектов , чтобы изменять / переименовывать / удалять их, как это было бы необходимо в вашем случае. Вы ведь хотите удалить определенный объект?

Чтобы получить более детальный доступ, вам необходимо явно назначить политику с настраиваемой ролью для объекта подписки, но вряд ли вы сможете назначить настраиваемую роль Pub / Sub ниже уровня проекта.

Создатель подписки не становится «администратором» созданного объекта, как это может быть в службе управления доступом с разрешениями, назначенными для объектов. Если явное назначение политики с настраиваемой ролью для только что созданной подписки было возможно, это должно быть сделано учетной записью с ролью, которая может управлять разрешениями: например, pubsub.admin. Это означает, что вам придется предоставить эту роль своей учетной записи службы в дополнение к существующей настраиваемой роли с разрешениями pubsub.subscriptions.create и *.delete. Как только вы это сделаете, принцип наименьших привилегий станет бессмысленным.

Общие сведения о пользовательских ролях IAM

Документация Cloud IAM> Общие сведения о ролях> Роли Pub / Sub

Контроль доступа > Необходимые разрешения

Контроль доступа> Роли

...