Минимальная роль разрешения Azure для написания секрета хранилища ключей, определенного для конкретного хранилища и даже для определенных секретных имен (или подстановочного символа) - PullRequest
0 голосов
/ 18 июня 2019

Я хочу получить служебную учетную запись / принципал, который имеет минимальные привилегии, чтобы быть как можно более узким. Нужно написать новые / обновленные секреты в конкретное хранилище ключей Azure. Итак, я хочу создать настраиваемую роль для этого и назначить эту роль учетной записи службы. Мне удалось найти достаточно документации, чтобы понять, что мне нужна роль, например:

{
  "Name": "Vault-Secret-Write",
  "Description": "Allow writing new secrets to a particular Key Vault",
  "Actions": [ "Microsoft.KeyVault/vaults/secrets/write" ],
  "AssignableScopes": [ "MAGIC-GOES-HERE" ]
}

Мне не удалось найти документацию, которая помогла бы мне определить, какой должна быть область действия. Как упомянуто выше, оно должно быть как можно более узким и указывать, по крайней мере, на конкретное хранилище ключей и даже секреты, совпадающие с подстановочным знаком (например, keyprefix *).

1 Ответ

3 голосов
/ 18 июня 2019

Ваше решение неверно.

Ключ Azure защищен плоскостью управления (Access control (IAM)) и плоскостью данных (Access policies), secrets управляется плоскостью данных. Даже если вы дадите owner / your custom rbac role своему пользователю / субъекту обслуживания в плоскости управления, это не позволит вам получить доступ к секрету в keyvault.

Чтобы решить вашу проблему, вам не нужно предоставлять роль RBAC, просто перейдите к Access policies в вашем наборе ключей, добавьте своего пользователя / участника службы с правильным разрешением. В вашем случае дайте Set секретное разрешение вашему пользователю / сервис-субъекту, тогда у него будет только Set секретное разрешение для keyvault.

enter image description here

Более подробную информацию о безопасном доступе к хранилищу ключей можно найти по этой ссылке .

Помимо , если вы хотите протестировать свое решение, просто укажите AssignableScopes, как показано ниже, тогда вы сможете добавить своего пользователя / участника службы в качестве пользовательской роли в Access control (IAM) из твой ключ Затем вы можете протестировать его для создания / обновления секрета без настройки политики доступа , вы получите Запрещенную ошибку.

"AssignableScopes": [
    "/subscriptions/{subscription id}/resourceGroups/{resource group name}/providers/Microsoft.KeyVault/vaults/{keyvault name}"
  ]
...