Настройка прав доступа к симметричному ключу шифрования
Вы можете предоставить пользователю, сервисному аккаунту или группе пользователей доступ к симметричному ключу. Для этого назначьте роли на ключ. Чтобы выбрать нужные, узнайте, какие роли действуют в сервисе.
Назначить роль
- В консоли управления
выберите каталог, в котором находится секрет. - В списке сервисов выберите Key Management Service.
- На панели слева выберите
Симметричные ключи. - Нажмите на имя нужного ключа.
- Перейдите в раздел
Права доступа и нажмите кнопку Назначить роли. - Выберите группу, пользователя или сервисный аккаунт, которым нужно предоставить доступ к ключу.
- Нажмите кнопку
Добавить роль и выберите необходимые роли. - Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>
. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name
или --folder-id
.
Чтобы назначить роль на симметричный ключ:
-
Посмотрите описание команды CLI для назначения роли:
yc kms symmetric-key add-access-binding --help
-
Получите список симметричных ключей вместе с их идентификаторами:
yc kms symmetric-key list
-
Получите идентификатор пользователя, сервисного аккаунта или группы пользователей, которым назначаете роль.
-
С помощью одной из команд ниже назначьте роль:
-
Пользователю:
yc kms symmetric-key add-access-binding \ --id <идентификатор_ключа> \ --role <роль> \ --user-account-id <идентификатор_пользователя>
-
Федеративному пользователю:
yc kms symmetric-key add-access-binding \ --id <идентификатор_ключа> \ --role <роль> \ --subject federatedUser:<идентификатор_пользователя>
-
Сервисному аккаунту:
yc kms symmetric-key add-access-binding \ --id <идентификатор_ключа> \ --role <роль> \ --service-account-id <идентификатор_сервисного_аккаунта>
-
Группе пользователей:
yc kms symmetric-key add-access-binding \ --id <идентификатор_ключа> \ --role <роль> \ --subject group:<идентификатор_группы>
-
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы назначить роль на симметричный ключ шифрования с помощью Terraform:
-
Опишите в конфигурационном файле Terraform параметры ресурсов, которые необходимо создать:
resource "yandex_kms_symmetric_encryption_key_iam_member" "key-viewers" { symmetric_encryption_key_id = "<идентификатор_ключа>" role = "<роль>" members = ["<тип_субъекта>:<идентификатор_субъекта>","<тип_субъекта>:<идентификатор_субъекта>"] }
Где:
symmetric_encryption_key_id
— идентификатор симметричного ключа шифрования.role
— назначаемая роль.members
— список типов и идентификаторов субъектов, которым назначается роль. Указывается в форматеuserAccount:<идентификатор_пользователя>
илиserviceAccount:<идентификатор_сервисного_аккаунта>
.
Подробнее о параметрах ресурса
yandex_kms_symmetric_encryption_key_iam_member
см. в документации провайдера . -
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
Terraform создаст все требуемые ресурсы. Проверить появление ресурсов можно с помощью команды CLI:
yc kms symmetric-key list-access-bindings <идентификатор_ключа>
-
Воспользуйтесь методом UpdateAccessBindings для ресурса SymmetricKey или вызовом gRPC API SymmetricKeyService/UpdateAccessBindings и передайте в запросе:
- Значение
ADD
в параметреaccessBindingDeltas[].action
, чтобы добавить роль. - Роль в параметре
accessBindingDeltas[].accessBinding.roleId
. - Идентификатор субъекта, на кого назначается роль, в параметре
accessBindingDeltas[].accessBinding.subject.id
. - Тип субъекта, на кого назначается роль, в параметре
accessBindingDeltas[].accessBinding.subject.type
.
Назначить несколько ролей
- В консоли управления
выберите каталог, в котором находится секрет. - В списке сервисов выберите Key Management Service.
- На панели слева выберите
Симметричные ключи. - Нажмите на имя нужного ключа.
- Перейдите в раздел
Права доступа и нажмите кнопку Назначить роли. - Выберите группу, пользователя или сервисный аккаунт, которым нужно предоставить доступ к ключу.
- Нажмите кнопку
Добавить роль и выберите необходимые роли. - Нажмите кнопку Сохранить.
Внимание
Команда set-access-bindings
для назначения нескольких ролей полностью перезаписывает права доступа к ресурсу. Все текущие роли на ресурс будут удалены.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>
. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name
или --folder-id
.
Чтобы назначить несколько ролей на симметричный ключ шифрования:
-
Убедитесь, что на симметричный ключ не назначены роли, которые вы не хотите потерять:
yc kms symmetric-key list-access-bindings \ --id <идентификатор_ключа>
-
Посмотрите описание команды CLI для назначения ролей:
yc kms symmetric-key set-access-bindings --help
-
Получите список симметричных ключей шифрования вместе с их идентификаторами:
yc kms symmetric-key list
-
Получите идентификатор пользователя, сервисного аккаунта или группы пользователей, которым назначаете роли.
-
С помощью одной из команд ниже назначьте роли:
-
Пользователю с аккаунтом на Яндексе:
yc kms symmetric-key set-access-bindings \ --id <идентификатор_ключа> \ --access-binding role=<роль>,user-account-id=<идентификатор_пользователя>
-
Федеративному пользователю:
yc kms symmetric-key set-access-bindings \ --id <идентификатор_ключа> \ --access-binding role=<роль>,subject=federatedUser:<идентификатор_пользователя>
-
Сервисному аккаунту:
yc kms symmetric-key set-access-bindings \ --id <идентификатор_ключа> \ --access-binding role=<роль>,service-account-id=<идентификатор_сервисного_аккаунта>
-
Группе пользователей:
yc kms symmetric-key set-access-bindings \ --id <идентификатор_ключа> \ --access-binding role=<роль>,subject=group:<идентификатор_группы>
Для каждой роли передайте отдельный флаг
--access-binding
. Пример:yc kms symmetric-key set-access-bindings \ --id <идентификатор_ключа> \ --access-binding role=<роль1>,service-account-id=<идентификатор_сервисного_аккаунта> \ --access-binding role=<роль2>,service-account-id=<идентификатор_сервисного_аккаунта> \ --access-binding role=<роль3>,service-account-id=<идентификатор_сервисного_аккаунта>
-
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы назначить несколько ролей на симметричный ключ шифрования с помощью Terraform:
-
Опишите в конфигурационном файле Terraform параметры ресурсов, которые необходимо создать:
# Роль 1 resource "yandex_kms_symmetric_encryption_key_iam_member" "key-viewers" { symmetric_encryption_key_id = "<идентификатор_ключа>" role = "<роль_1>" members = ["<тип_субъекта>:<идентификатор_субъекта>"] } # Роль 2 resource "yandex_kms_symmetric_encryption_key_iam_member" "key-editors" { symmetric_encryption_key_id = "<идентификатор_ключа>" role = "<роль_2>" members = ["<тип_субъекта>:<идентификатор_субъекта>"] }
Где:
symmetric_encryption_key_id
— идентификатор симметричного ключа шифрования.role
— назначаемая роль.members
— список типов и идентификаторов субъектов, которым назначается роль. Указывается в форматеuserAccount:<идентификатор_пользователя>
илиserviceAccount:<идентификатор_сервисного_аккаунта>
.
Подробнее о параметрах ресурса
yandex_kms_symmetric_encryption_key_iam_member
см. в документации провайдера . -
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
Terraform создаст все требуемые ресурсы. Проверить появление ресурсов можно с помощью команды CLI:
yc kms symmetric-key list-access-bindings <идентификатор_ключа>
-
Внимание
Метод setAccessBindings
для назначения нескольких ролей полностью перезаписывает права доступа к ресурсу. Все текущие роли на ресурс будут удалены.
Воспользуйтесь методом SetAccessBindings для ресурса SymmetricKey или вызовом gRPC API SymmetricKeyService/SetAccessBindings. Передайте в запросе массив из объектов, каждый из которых соответствует отдельной роли и содержит следующие данные:
- Роль в параметре
accessBindings[].roleId
. - Идентификатор субъекта, на кого назначаются роли, в параметре
accessBindings[].subject.id
. - Тип субъекта, на кого назначаются роли, в параметре
accessBindings[].subject.type
.