Ограничить роль пользователя учетной записи службы условиями IAM

# #google-cloud-platform #google-iam

Вопрос:

Я хотел бы предоставить Service Account User роль определенному идентификатору, но только для учетных записей служб, имя которых начинается с заданного префикса. Возможно ли это сделать с помощью условий IAM?

Я попробовал выполнить следующее условие

 {
    "expression": "resource.name.startsWith("projects/-/serviceAccounts/prefix-")",
    "title": "test-condition"
}
 

и это не работает, в то время как при удалении prefix- это происходит (но, очевидно, нежелательно).

Возможно, мне следует вместо этого использовать выражение на основе запроса, но неясно, как выглядит запрос, поскольку actAs его нет среди документированных вызовов API, и я также не могу найти эти запросы в журнале облачного аудита.

ОБНОВЛЕНИЕ: я только что понял, что actAs ожидает следующую форму resource.name :

 projects/{PROJECT_ID}/serviceAccounts/{UNIQUE_ID}
 

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

Комментарии:

1. Я думаю, ты не можешь. Но вы можете предоставить роль непосредственно на уровне учетной записи службы, а не на уровне проекта с условием IAM. Не должно ли быть проще? Или, может быть, вы хотите автоматически применять это разрешение в случае создания новой учетной записи службы, не предоставляя никаких разрешений непосредственно для вновь созданной учетной записи службы.

2. Да, проблема, которую мы пытаемся преодолеть с помощью этого, состоит в том, чтобы избежать дополнительных затрат на управление, связанных с предоставлением его для каждого отдельного SA (которых у нас много, поэтому без дополнительной автоматизации обойтись невозможно). Так что я все равно хотел бы найти условия, которые могли бы сработать.

3. В настоящее время это невозможно, однако в настоящее время выполняется запрос функции для разрешения сопоставления регулярных выражений в ресурсе для условий PIT

4. Спасибо @Eduardo — не могли бы вы уточнить, как это поможет в этом случае? Поскольку resource.name в actAs вызове API (который, возможно, является частным API на серверной части Google?) отправляет числовой идентификатор SA и, следовательно, не подходит для сопоставления с регулярным выражением.