Управление доступом к кластеру Managed Service for Kubernetes
Чтобы предоставить субъекту доступ к кластеру, назначьте ему роль на кластер.
Получить список ролей, назначенных на кластер
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>
. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name
или --folder-id
.
-
Получите список кластеров в каталоге по умолчанию, выполнив команду:
yc managed-kubernetes cluster list
-
Получите список ролей, назначенных на кластер, выполнив команду:
yc managed-kubernetes cluster list-access-bindings <имя_или_идентификатор_кластера>
Назначить роль
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>
. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для назначения роли на кластер:
yc managed-kubernetes cluster add-access-binding --help
-
Назначьте роль, выполнив команду:
yc managed-kubernetes cluster add-access-binding <имя_или_идентификатор_кластера> \ --role <идентификатор_роли> \ --subject <тип_субъекта>:<идентификатор_субъекта>
Где:
-
--role
— идентификатор назначаемой роли. -
--subject
— тип и идентификатор субъекта, которому назначается роль, в формате:<тип_субъекта>:<идентификатор_субъекта>
.Например:
serviceAccount:aje6p030************
,userAccount:aje8tj79************
,system:allAuthenticatedUsers
.
Допустимые типы субъектов:
-
userAccount
— аккаунт на Яндексе, добавленный в Yandex Cloud, или аккаунт из пула пользователей. -
serviceAccount
— сервисный аккаунт, созданный в Yandex Cloud. -
federatedUser
— аккаунт пользователя федерации удостоверений. -
group
— группа пользователей Yandex Identity Hub. -
system
— публичная группа пользователей.Допустимые значения идентификатора субъекта:
allAuthenticatedUsers
— все пользователи, прошедшие аутентификацию.allUsers
— любой пользователь, прохождение аутентификации не требуется.
Подробнее о типах субъектов см. в разделе Субъект, которому назначается роль.
-
-
Проверьте список ролей, назначенных на кластер, выполнив команду:
yc managed-kubernetes cluster list-access-bindings <имя_или_идентификатор_кластера>
Важно
Не используйте ресурс yandex_kubernetes_cluster_iam_member
для назначения ролей, которые управляются ресурсом yandex_kubernetes_cluster_iam_binding
.
-
Откройте актуальный конфигурационный файл с описанием кластера Managed Service for Kubernetes.
О том, как создать такой файл, см. в разделе Создание кластера Managed Service for Kubernetes.
-
Добавьте описание ресурса:
resource "yandex_kubernetes_cluster_iam_member" "<локальное_имя_ресурса>" { cluster_id = "<идентификатор_кластера>" role = "<идентификатор_роли>" member = "<тип_субъекта>:<идентификатор_субъекта>" }
Где:
-
cluster_id
— идентификатор кластера. -
role
— идентификатор назначаемой роли. -
member
— тип и идентификатор субъекта, которому назначается роль, в формате:<тип_субъекта>:<идентификатор_субъекта>
.Например:
serviceAccount:${yandex_iam_service_account.k8s_sa.id}
,userAccount:ajerq94v************
,system:allAuthenticatedUsers
.
Допустимые типы субъектов:
-
userAccount
— аккаунт на Яндексе, добавленный в Yandex Cloud, или аккаунт из пула пользователей. -
serviceAccount
— сервисный аккаунт, созданный в Yandex Cloud. -
federatedUser
— аккаунт пользователя федерации удостоверений. -
group
— группа пользователей Yandex Identity Hub. -
system
— публичная группа пользователей.Допустимые значения идентификатора субъекта:
allAuthenticatedUsers
— все пользователи, прошедшие аутентификацию.allUsers
— любой пользователь, прохождение аутентификации не требуется.
Подробнее о типах субъектов см. в разделе Субъект, которому назначается роль.
-
-
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
Подробнее см. в документации провайдера Terraform
. -
-
Проверьте список ролей, назначенных на кластер, выполнив команду CLI:
yc managed-kubernetes cluster list-access-bindings <имя_или_идентификатор_кластера>
Назначить несколько ролей
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>
. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name
или --folder-id
.
Внимание
Команда set-access-bindings
удаляет все назначенные на кластер роли и задает новые.
-
Посмотрите список ролей, назначенных на кластер, выполнив команду:
yc managed-kubernetes cluster list-access-bindings <имя_или_идентификатор_кластера>
-
Посмотрите описание команды CLI для назначения ролей на кластер:
yc managed-kubernetes cluster set-access-bindings --help
-
Назначьте роли, выполнив команду:
yc managed-kubernetes cluster set-access-bindings <имя_или_идентификатор_кластера> \ --access-binding role=<идентификатор_роли_1>,subject=<тип_субъекта>:<идентификатор_субъекта_1> \ --access-binding role=<идентификатор_роли_2>,subject=<тип_субъекта>:<идентификатор_субъекта_2>
Где
--access-binding
— назначает роль субъекту. Вы можете назначить несколько ролей одновременно, описав каждую в отдельном параметре--access-binding
.-
role
— идентификатор назначаемой роли. -
subject
— тип и идентификатор субъекта, которому назначается роль, в формате:<тип_субъекта>:<идентификатор_субъекта>
.Например:
serviceAccount:aje6p030************
,userAccount:aje8tj79************
,system:allAuthenticatedUsers
.
Допустимые типы субъектов:
-
userAccount
— аккаунт на Яндексе, добавленный в Yandex Cloud, или аккаунт из пула пользователей. -
serviceAccount
— сервисный аккаунт, созданный в Yandex Cloud. -
federatedUser
— аккаунт пользователя федерации удостоверений. -
group
— группа пользователей Yandex Identity Hub. -
system
— публичная группа пользователей.Допустимые значения идентификатора субъекта:
allAuthenticatedUsers
— все пользователи, прошедшие аутентификацию.allUsers
— любой пользователь, прохождение аутентификации не требуется.
Подробнее о типах субъектов см. в разделе Субъект, которому назначается роль.
-
Важно
Не используйте ресурс yandex_kubernetes_cluster_iam_member
для назначения ролей, которые управляются ресурсом yandex_kubernetes_cluster_iam_binding
.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Добавьте описание ресурсов:
resource "yandex_kubernetes_cluster_iam_member" "<локальное_имя_ресурса_1>" { cluster_id = "<идентификатор_кластера>" role = "<идентификатор_роли_1>" member = "<тип_субъекта>:<идентификатор_субъекта>" } resource "yandex_kubernetes_cluster_iam_member" "<локальное_имя_ресурса_2>" { cluster_id = "<идентификатор_кластера>" role = "<идентификатор_роли_2>" member = "<тип_субъекта>:<идентификатор_субъекта>" }
Где:
-
cluster_id
— идентификатор кластера. -
role
— идентификатор назначаемой роли. -
member
— тип и идентификатор субъекта, которому назначается роль, в формате:<тип_субъекта>:<идентификатор_субъекта>
.Например:
serviceAccount:${yandex_iam_service_account.k8s_sa.id}
,userAccount:ajerq94v************
,system:allAuthenticatedUsers
.
Допустимые типы субъектов:
-
userAccount
— аккаунт на Яндексе, добавленный в Yandex Cloud, или аккаунт из пула пользователей. -
serviceAccount
— сервисный аккаунт, созданный в Yandex Cloud. -
federatedUser
— аккаунт пользователя федерации удостоверений. -
group
— группа пользователей Yandex Identity Hub. -
system
— публичная группа пользователей.Допустимые значения идентификатора субъекта:
allAuthenticatedUsers
— все пользователи, прошедшие аутентификацию.allUsers
— любой пользователь, прохождение аутентификации не требуется.
Подробнее о типах субъектов см. в разделе Субъект, которому назначается роль.
-
-
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
Подробнее см. в документации провайдера Terraform
. -
-
Проверьте список ролей, назначенных на кластер, выполнив команду CLI:
yc managed-kubernetes cluster list-access-bindings <имя_или_идентификатор_кластера>
Отозвать роль
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>
. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name
или --folder-id
.
-
Посмотрите список ролей, назначенных на кластер, выполнив команду:
yc managed-kubernetes cluster list-access-bindings <имя_или_идентификатор_кластера>
-
Посмотрите описание команды CLI для отзыва роли на кластер:
yc managed-kubernetes cluster remove-access-binding --help
-
Отзовите роль, выполнив команду:
yc managed-kubernetes cluster remove-access-binding <имя_или_идентификатор_кластера> \ --role <идентификатор_роли> \ --subject <тип_субъекта>:<идентификатор_субъекта>
Где:
-
--role
— идентификатор отзываемой роли. -
--subject
— тип и идентификатор субъекта, которому назначена роль, в формате:<тип_субъекта>:<идентификатор_субъекта>
.Например:
serviceAccount:aje6p030************
,userAccount:aje8tj79************
,system:allAuthenticatedUsers
.
Допустимые типы субъектов:
-
userAccount
— аккаунт на Яндексе, добавленный в Yandex Cloud, или аккаунт из пула пользователей. -
serviceAccount
— сервисный аккаунт, созданный в Yandex Cloud. -
federatedUser
— аккаунт пользователя федерации удостоверений. -
group
— группа пользователей Yandex Identity Hub. -
system
— публичная группа пользователей.Допустимые значения идентификатора субъекта:
allAuthenticatedUsers
— все пользователи, прошедшие аутентификацию.allUsers
— любой пользователь, прохождение аутентификации не требуется.
Подробнее о типах субъектов см. в разделе Субъект, которому назначается роль.
-
Важно
Не используйте ресурс yandex_kubernetes_cluster_iam_member
для назначения ролей, которые управляются ресурсом yandex_kubernetes_cluster_iam_binding
.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Найдите описание ресурса с ролью, которую вы хотите отозвать, и удалите его:
resource "yandex_kubernetes_cluster_iam_member" "<локальное_имя_ресурса>" { cluster_id = "<идентификатор_кластера>" role = "<идентификатор_роли>" member = "<тип_субъекта>:<идентификатор_субъекта>" }
-
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
Подробнее см. в документации провайдера Terraform
. -
-
Проверьте список ролей, назначенных на кластер, выполнив команду CLI:
yc managed-kubernetes cluster list-access-bindings <имя_или_идентификатор_кластера>