# #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 и, следовательно, не подходит для сопоставления с регулярным выражением.