Настройка прав доступа к симметричному ключу шифрования
Вы можете предоставить пользователю, сервисному аккаунту или группе пользователей доступ к симметричному ключу. Для этого назначьте роли на ключ. Чтобы выбрать нужные, узнайте, какие роли действуют в сервисе.
Назначить роль
- В консоли управления
выберите каталог, в котором находится секрет. - Перейдите
в сервис Key Management Service. - На панели слева выберите
Симметричные ключи. - Нажмите на имя нужного ключа.
- Перейдите в раздел Права доступа и нажмите кнопку Назначить роли.
- Выберите группу, пользователя или сервисный аккаунт, которым нужно предоставить доступ к ключу.
- Нажмите кнопку
Добавить роль и выберите необходимые роли. - Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля 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 <роль> \ --subject <тип_субъекта>:<идентификатор_субъекта>Где:
-
--id— идентификатор симметричного ключа. -
--role— назначаемая роль. -
--subject— обозначение субъекта, которому назначается роль.Обозначения субъектов
Для обозначения субъекта используется параметр
--subjectсо значением в формате<тип_субъекта>:<идентификатор>. Для некоторых типов субъектов в Yandex Cloud CLI вместо--subjectдоступны отдельные параметры, в которых достаточно указать имя или идентификатор субъекта без типа. Возможные обозначения субъектов и соответствующие параметры CLI:Тип субъекта
Обозначение субъекта
Параметр Yandex Cloud CLI
userAccountuserAccount:<идентификатор_пользователя>--user-account-idили--user-yandex-loginserviceAccountserviceAccount:<идентификатор_сервисного_аккаунта>--service-account-idили--service-account-namefederatedUserfederatedUser:<идентификатор_пользователя>--user-account-idgroupgroup:<идентификатор_группы>--group-memberssystemsystem:allAuthenticatedUsers(группа
All authenticated users)--all-authenticated-userssystem:allUsers(группа
All users)—
system:group:organization:<идентификатор_организации>:users(группа
All users in organization X)--organization-userssystem:group:federation:<идентификатор_федерации>:users(группа
All users in federation N)--federation-userssystem:group:userpool:<идентификатор_пула>:users(группа
All users in userpool P)—
-
Terraform
Terraform распространяется под лицензией Business Source License
Подробная информация о ресурсах провайдера в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, аутентифицируйтесь соответствующим способом.
Чтобы назначить роль на симметричный ключ шифрования с помощью Terraform:
-
Опишите в конфигурационном файле Terraform параметры ресурсов, которые необходимо создать:
resource "yandex_kms_symmetric_key_iam_member" "key-viewers" { symmetric_encryption_key_id = "<идентификатор_ключа>" role = "<роль>" member = "<тип_субъекта>:<идентификатор_субъекта>" }Где:
-
symmetric_encryption_key_id— идентификатор симметричного ключа шифрования. -
role— назначаемая роль. -
member— обозначение субъекта, которому назначается роль.Обозначения субъектов
Для обозначения субъекта используется комбинация типа и уникального идентификатора —
<тип_субъекта>:<идентификатор>. Возможные обозначения субъектов:Тип субъекта
Обозначение субъекта
userAccountuserAccount:<идентификатор_пользователя>serviceAccountserviceAccount:<идентификатор_сервисного_аккаунта>federatedUserfederatedUser:<идентификатор_пользователя>groupgroup:<идентификатор_группы>systemsystem:allAuthenticatedUsers(группа
All authenticated users)system:allUsers(группа
All users)system:group:organization:<идентификатор_организации>:users(группа
All users in organization X)system:group:federation:<идентификатор_федерации>:users(группа
All users in federation N)system:group:userpool:<идентификатор_пула>:users(группа
All users in userpool P)
Подробнее о параметрах ресурса
yandex_kms_symmetric_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.Обозначения субъектов
Для обозначения субъекта используется комбинация типа и уникального идентификатора в полях запроса
subject.typeиsubject.id. Возможные комбинации:subject.type
subject.id
userAccount<идентификатор_пользователя>serviceAccount<идентификатор_сервисного_аккаунта>federatedUser<идентификатор_пользователя>group<идентификатор_группы>systemallAuthenticatedUsers(группа
All authenticated users)allUsers(группа
All users)group:organization:<идентификатор_организации>:users(группа
All users in organization X)group:federation:<идентификатор_федерации>:users(группа
All users in federation N)group:userpool:<идентификатор_пула>:users(группа
All users in userpool P)
Назначить несколько ролей
- В консоли управления
выберите каталог, в котором находится секрет. - Перейдите
в сервис Key Management Service. - На панели слева выберите
Симметричные ключи. - Нажмите на имя нужного ключа.
- Перейдите в раздел Права доступа и нажмите кнопку Назначить роли.
- Выберите группу, пользователя или сервисный аккаунт, которым нужно предоставить доступ к ключу.
- Нажмите кнопку
Добавить роль и выберите необходимые роли. - Нажмите кнопку Сохранить.
Внимание
Команда set-access-bindings для назначения нескольких ролей полностью перезаписывает права доступа к ресурсу. Все текущие роли на ресурс будут удалены.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля 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=<роль>,subject=<тип_субъекта>:<идентификатор_субъекта>Где:
-
--id— идентификатор симметричного ключа. -
--access-binding— назначаемая роль и обозначение субъекта, которому назначается роль.Обозначения субъектов
Для обозначения субъекта используется параметр
--subjectсо значением в формате<тип_субъекта>:<идентификатор>. Для некоторых типов субъектов в Yandex Cloud CLI вместо--subjectдоступны отдельные параметры, в которых достаточно указать имя или идентификатор субъекта без типа. Возможные обозначения субъектов и соответствующие параметры CLI:Тип субъекта
Обозначение субъекта
Параметр Yandex Cloud CLI
userAccountuserAccount:<идентификатор_пользователя>--user-account-idили--user-yandex-loginserviceAccountserviceAccount:<идентификатор_сервисного_аккаунта>--service-account-idили--service-account-namefederatedUserfederatedUser:<идентификатор_пользователя>--user-account-idgroupgroup:<идентификатор_группы>--group-memberssystemsystem:allAuthenticatedUsers(группа
All authenticated users)--all-authenticated-userssystem:allUsers(группа
All users)—
system:group:organization:<идентификатор_организации>:users(группа
All users in organization X)--organization-userssystem:group:federation:<идентификатор_федерации>:users(группа
All users in federation N)--federation-userssystem:group:userpool:<идентификатор_пула>:users(группа
All users in userpool P)—
Для каждой роли передайте отдельный параметр
--access-binding. Пример:yc kms symmetric-key set-access-bindings \ --id <идентификатор_ключа> \ --access-binding role=<роль1>,subject=<тип_субъекта>:<идентификатор_субъекта> \ --access-binding role=<роль2>,subject=<тип_субъекта>:<идентификатор_субъекта> \ --access-binding role=<роль3>,subject=<тип_субъекта>:<идентификатор_субъекта> -
Terraform
Terraform распространяется под лицензией Business Source License
Подробная информация о ресурсах провайдера в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, аутентифицируйтесь соответствующим способом.
Чтобы назначить несколько ролей на симметричный ключ шифрования с помощью Terraform:
-
Опишите в конфигурационном файле Terraform параметры ресурсов, которые необходимо создать:
# Роль 1 resource "yandex_kms_symmetric_key_iam_member" "key-viewers" { symmetric_encryption_key_id = "<идентификатор_ключа>" role = "<роль_1>" member = "<тип_субъекта>:<идентификатор_субъекта>" } # Роль 2 resource "yandex_kms_symmetric_key_iam_member" "key-editors" { symmetric_encryption_key_id = "<идентификатор_ключа>" role = "<роль_2>" member = "<тип_субъекта>:<идентификатор_субъекта>" }Где:
-
symmetric_encryption_key_id— идентификатор симметричного ключа шифрования. -
role— назначаемая роль. -
member— обозначение субъекта, которому назначается роль.Обозначения субъектов
Для обозначения субъекта используется комбинация типа и уникального идентификатора —
<тип_субъекта>:<идентификатор>. Возможные обозначения субъектов:Тип субъекта
Обозначение субъекта
userAccountuserAccount:<идентификатор_пользователя>serviceAccountserviceAccount:<идентификатор_сервисного_аккаунта>federatedUserfederatedUser:<идентификатор_пользователя>groupgroup:<идентификатор_группы>systemsystem:allAuthenticatedUsers(группа
All authenticated users)system:allUsers(группа
All users)system:group:organization:<идентификатор_организации>:users(группа
All users in organization X)system:group:federation:<идентификатор_федерации>:users(группа
All users in federation N)system:group:userpool:<идентификатор_пула>:users(группа
All users in userpool P)
Подробнее о параметрах ресурса
yandex_kms_symmetric_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.Обозначения субъектов
Для обозначения субъекта используется комбинация типа и уникального идентификатора в полях запроса
subject.typeиsubject.id. Возможные комбинации:subject.type
subject.id
userAccount<идентификатор_пользователя>serviceAccount<идентификатор_сервисного_аккаунта>federatedUser<идентификатор_пользователя>group<идентификатор_группы>systemallAuthenticatedUsers(группа
All authenticated users)allUsers(группа
All users)group:organization:<идентификатор_организации>:users(группа
All users in organization X)group:federation:<идентификатор_федерации>:users(группа
All users in federation N)group:userpool:<идентификатор_пула>:users(группа
All users in userpool P)