Управление доступом к кластеру Managed Service for PostgreSQL
Вы можете предоставить пользователю или сервисному аккаунту роль для доступа к конкретному кластеру.
Таким образом, вы можете гранулярно назначать разные роли на конкретные кластеры для разных пользователей и сервисных аккаунтов.
Получить список ролей, назначенных на кластер
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
-
Получите список кластеров в каталоге по умолчанию, выполнив команду:
yc managed-postgresql cluster list -
Получите список ролей, назначенных на кластер, выполнив команду:
yc managed-postgresql cluster list-access-bindings <имя_или_идентификатор_кластера>
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.ListAccessBindings и выполните запрос, например, с помощью cURL
:curl \ --request GET \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.yandexcloud.kz/managed-postgresql/v1/clusters/<идентификатор_кластера>:listAccessBindings' -
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService.ListAccessBindings и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/postgresql/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "resource_id": "<идентификатор_кластера>" }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.postgresql.v1.ClusterService.ListAccessBindings -
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Назначить роль
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
-
Посмотрите описание команды CLI для назначения роли на кластер:
yc managed-postgresql cluster add-access-binding --help -
Назначьте роль, выполнив команду:
yc managed-postgresql cluster add-access-binding <имя_или_идентификатор_кластера> \ --role <роль> \ --subject <тип_субъекта>:<идентификатор_субъекта>Где:
-
--role— назначаемая роль, напримерmanaged-postgresql.editor. -
--subject— тип и идентификатор субъекта, которому назначается роль, в формате:<тип_субъекта>:<идентификатор_субъекта>.Например:
serviceAccount:aje6p030************,userAccount:aje8tj79************,system:allAuthenticatedUsers.
Допустимые типы субъектов:
-
userAccount— аккаунт на Яндексе, добавленный в Yandex Cloud, или аккаунт из пула пользователей. -
serviceAccount— сервисный аккаунт, созданный в Yandex Cloud. -
federatedUser— аккаунт пользователя федерации удостоверений. -
system— публичная группа пользователей.Допустимые значения идентификатора субъекта:
allAuthenticatedUsers— все пользователи, прошедшие аутентификацию.allUsers— любой пользователь, прохождение аутентификации не требуется.group:organization:<идентификатор_организации>:users— все пользователи указанной организации.group:federation:<идентификатор_федерации>:users— все пользователи указанной федерации удостоверений.
Подробнее о типах субъектов см. в разделе Субъект, которому назначается роль.
-
-
Проверьте список ролей, назначенных на кластер, выполнив команду:
yc managed-postgresql cluster list-access-bindings <имя_или_идентификатор_кластера>
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.UpdateAccessBindings и выполните запрос, например, с помощью cURL
:curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.yandexcloud.kz/managed-postgresql/v1/clusters/<идентификатор_кластера>:updateAccessBindings' \ --data '{ "access_binding_deltas": [ { "action": "ADD", "access_binding": { "role_id": "<роль>", "subject": { "id": "<идентификатор_субъекта>", "type": "<тип_субъекта>" } } } ] }'Где:
-
access_binding_deltas.roleId— назначаемая роль, напримерmanaged-postgresql.editor. -
access_binding_deltas.subject.id— идентификатор субъекта, которому назначается роль. -
access_binding_deltas.subject.type— тип субъекта, которому назначается роль.Допустимые типы субъектов:
-
userAccount— аккаунт на Яндексе, добавленный в Yandex Cloud, или аккаунт из пула пользователей. -
serviceAccount— сервисный аккаунт, созданный в Yandex Cloud. -
federatedUser— аккаунт пользователя федерации удостоверений. -
system— публичная группа пользователей.Допустимые значения идентификатора субъекта:
allAuthenticatedUsers— все пользователи, прошедшие аутентификацию.allUsers— любой пользователь, прохождение аутентификации не требуется.group:organization:<идентификатор_организации>:users— все пользователи указанной организации.group:federation:<идентификатор_федерации>:users— все пользователи указанной федерации удостоверений.
Подробнее о типах субъектов см. в разделе Субъект, которому назначается роль.
-
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService.UpdateAccessBindings и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/postgresql/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "resource_id": "<идентификатор_кластера>", "access_binding_deltas": [ { "action": "ADD", "access_binding": { "role_id": "<роль>", "subject": { "id": "<идентификатор_субъекта>", "type": "<тип_субъекта>" } } } ] }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.postgresql.v1.ClusterService.UpdateAccessBindingsГде:
-
resource_id— идентификатор кластера. -
access_binding_deltas.roleId— назначаемая роль, напримерmanaged-postgresql.editor. -
access_binding_deltas.subject.id— идентификатор субъекта, которому назначается роль. -
access_binding_deltas.subject.type— тип субъекта, которому назначается роль.Допустимые типы субъектов:
-
userAccount— аккаунт на Яндексе, добавленный в Yandex Cloud, или аккаунт из пула пользователей. -
serviceAccount— сервисный аккаунт, созданный в Yandex Cloud. -
federatedUser— аккаунт пользователя федерации удостоверений. -
system— публичная группа пользователей.Допустимые значения идентификатора субъекта:
allAuthenticatedUsers— все пользователи, прошедшие аутентификацию.allUsers— любой пользователь, прохождение аутентификации не требуется.group:organization:<идентификатор_организации>:users— все пользователи указанной организации.group:federation:<идентификатор_федерации>:users— все пользователи указанной федерации удостоверений.
Подробнее о типах субъектов см. в разделе Субъект, которому назначается роль.
-
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Назначить несколько ролей
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Внимание
Команда set-access-bindings удаляет все назначенные на кластер роли и задает новые.
-
Посмотрите список ролей, назначенных на кластер, выполнив команду:
yc managed-postgresql cluster list-access-bindings <имя_или_идентификатор_кластера> -
Посмотрите описание команды CLI для назначения ролей на кластер:
yc managed-postgresql cluster set-access-bindings --help -
Назначьте роли, выполнив команду:
yc managed-postgresql cluster set-access-bindings <имя_или_идентификатор_кластера> \ --access-binding role=<роль>,subject=<тип_субъекта>:<идентификатор_субъекта_1> \ --access-binding role=<роль>,subject=<тип_субъекта>:<идентификатор_субъекта_2>Где
--access-binding— назначает роль субъекту. Вы можете назначить несколько ролей одновременно, описав каждую в отдельном параметре--access-binding.-
role— назначаемая роль, напримерmanaged-postgresql.editor. -
subject— тип и идентификатор субъекта, которому назначается роль, в формате:<тип_субъекта>:<идентификатор_субъекта>.Например:
serviceAccount:aje6p030************,userAccount:aje8tj79************,system:allAuthenticatedUsers.
Допустимые типы субъектов:
-
userAccount— аккаунт на Яндексе, добавленный в Yandex Cloud, или аккаунт из пула пользователей. -
serviceAccount— сервисный аккаунт, созданный в Yandex Cloud. -
federatedUser— аккаунт пользователя федерации удостоверений. -
system— публичная группа пользователей.Допустимые значения идентификатора субъекта:
allAuthenticatedUsers— все пользователи, прошедшие аутентификацию.allUsers— любой пользователь, прохождение аутентификации не требуется.group:organization:<идентификатор_организации>:users— все пользователи указанной организации.group:federation:<идентификатор_федерации>:users— все пользователи указанной федерации удостоверений.
Подробнее о типах субъектов см. в разделе Субъект, которому назначается роль.
-
Внимание
Метод setAccessBindings перезаписывает права доступа к ресурсу. Все текущие роли на ресурс будут удалены.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.SetAccessBindings и выполните запрос, например, с помощью cURL
:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.yandexcloud.kz/managed-postgresql/v1/clusters/<идентификатор_кластера>:setAccessBindings' \ --data '{ "accessBindings": [ { "roleId": "<роль>", "subject": { "id": "<идентификатор_субъекта_1>", "type": "<тип_субъекта>" } }, { "roleId": "<роль>", "subject": { "id": "<идентификатор_субъекта_2>", "type": "<тип_субъекта>" } }, ... { "roleId": "<роль>", "subject": { "id": "<идентификатор_субъекта_N>", "type": "<тип_субъекта>" } } ] }'Где:
-
accessBindings.roleId— назначаемая роль, напримерmanaged-postgresql.editor. -
accessBindings.subject.id— идентификатор субъекта, которому назначается роль. -
accessBindings.subject.type— тип субъекта, которому назначается роль.Допустимые типы субъектов:
-
userAccount— аккаунт на Яндексе, добавленный в Yandex Cloud, или аккаунт из пула пользователей. -
serviceAccount— сервисный аккаунт, созданный в Yandex Cloud. -
federatedUser— аккаунт пользователя федерации удостоверений. -
system— публичная группа пользователей.Допустимые значения идентификатора субъекта:
allAuthenticatedUsers— все пользователи, прошедшие аутентификацию.allUsers— любой пользователь, прохождение аутентификации не требуется.group:organization:<идентификатор_организации>:users— все пользователи указанной организации.group:federation:<идентификатор_федерации>:users— все пользователи указанной федерации удостоверений.
Подробнее о типах субъектов см. в разделе Субъект, которому назначается роль.
-
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Внимание
Вызов ClusterService.SetAccessBindings полностью перезаписывает права доступа к ресурсу. Все текущие роли на ресурс будут удалены.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService.SetAccessBindings и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/postgresql/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "resource_id": "<идентификатор_кластера>", "accessBindings": [ { "roleId": "<роль>", "subject": { "id": "<идентификатор_субъекта_1>", "type": "<тип_субъекта>" } }, { "roleId": "<роль>", "subject": { "id": "<идентификатор_субъекта_2>", "type": "<тип_субъекта>" } }, ... { "roleId": "<роль>", "subject": { "id": "<идентификатор_субъекта_N>", "type": "<тип_субъекта>" } } ] }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.postgresql.v1.ClusterService.SetAccessBindingsГде:
-
resource_id— идентификатор кластера. -
accessBindings.roleId— назначаемая роль, напримерmanaged-postgresql.editor. -
accessBindings.subject.id— идентификатор субъекта, которому назначается роль. -
accessBindings.subject.type— тип субъекта, которому назначается роль.Допустимые типы субъектов:
-
userAccount— аккаунт на Яндексе, добавленный в Yandex Cloud, или аккаунт из пула пользователей. -
serviceAccount— сервисный аккаунт, созданный в Yandex Cloud. -
federatedUser— аккаунт пользователя федерации удостоверений. -
system— публичная группа пользователей.Допустимые значения идентификатора субъекта:
allAuthenticatedUsers— все пользователи, прошедшие аутентификацию.allUsers— любой пользователь, прохождение аутентификации не требуется.group:organization:<идентификатор_организации>:users— все пользователи указанной организации.group:federation:<идентификатор_федерации>:users— все пользователи указанной федерации удостоверений.
Подробнее о типах субъектов см. в разделе Субъект, которому назначается роль.
-
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Отозвать роль
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
-
Посмотрите список ролей, назначенных на кластер, выполнив команду:
yc managed-postgresql cluster list-access-bindings <имя_или_идентификатор_кластера> -
Посмотрите описание команды CLI для отзыва роли на кластер:
yc managed-postgresql cluster remove-access-binding --help -
Отзовите роль, выполнив команду:
yc managed-postgresql cluster remove-access-binding <имя_или_идентификатор_кластера> \ --role <роль> \ --subject <тип_субъекта>:<идентификатор_субъекта>Где:
-
--role— отзываемая роль, напримерmanaged-postgresql.editor. -
--subject— тип и идентификатор субъекта, которому назначена роль, в формате:<тип_субъекта>:<идентификатор_субъекта>.Например:
serviceAccount:aje6p030************,userAccount:aje8tj79************,system:allAuthenticatedUsers.
Допустимые типы субъектов:
-
userAccount— аккаунт на Яндексе, добавленный в Yandex Cloud, или аккаунт из пула пользователей. -
serviceAccount— сервисный аккаунт, созданный в Yandex Cloud. -
federatedUser— аккаунт пользователя федерации удостоверений. -
system— публичная группа пользователей.Допустимые значения идентификатора субъекта:
allAuthenticatedUsers— все пользователи, прошедшие аутентификацию.allUsers— любой пользователь, прохождение аутентификации не требуется.group:organization:<идентификатор_организации>:users— все пользователи указанной организации.group:federation:<идентификатор_федерации>:users— все пользователи указанной федерации удостоверений.
Подробнее о типах субъектов см. в разделе Субъект, которому назначается роль.
-
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.UpdateAccessBindings и выполните запрос, например, с помощью cURL
:curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.yandexcloud.kz/managed-postgresql/v1/clusters/<идентификатор_кластера>:updateAccessBindings' \ --data '{ "access_binding_deltas": [ { "action": "REMOVE", "access_binding": { "role_id": "<роль>", "subject": { "id": "<идентификатор_субъекта>", "type": "<тип_субъекта>" } } } ] }'Где:
-
access_binding_deltas.roleId— назначаемая роль, напримерmanaged-postgresql.editor. -
access_binding_deltas.subject.id— идентификатор субъекта, которому назначается роль. -
access_binding_deltas.subject.type— тип субъекта, которому назначается роль.Допустимые типы субъектов:
-
userAccount— аккаунт на Яндексе, добавленный в Yandex Cloud, или аккаунт из пула пользователей. -
serviceAccount— сервисный аккаунт, созданный в Yandex Cloud. -
federatedUser— аккаунт пользователя федерации удостоверений. -
system— публичная группа пользователей.Допустимые значения идентификатора субъекта:
allAuthenticatedUsers— все пользователи, прошедшие аутентификацию.allUsers— любой пользователь, прохождение аутентификации не требуется.group:organization:<идентификатор_организации>:users— все пользователи указанной организации.group:federation:<идентификатор_федерации>:users— все пользователи указанной федерации удостоверений.
Подробнее о типах субъектов см. в разделе Субъект, которому назначается роль.
-
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService.UpdateAccessBindings и выполните запрос, например, с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/postgresql/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "resource_id": "<идентификатор_кластера>", "access_binding_deltas": [ { "action": "REMOVE", "access_binding": { "role_id": "<роль>", "subject": { "id": "<идентификатор_субъекта>", "type": "<тип_субъекта>" } } } ] }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.postgresql.v1.ClusterService.UpdateAccessBindingsГде:
-
resource_id— идентификатор кластера. -
access_binding_deltas.roleId— назначаемая роль, напримерmanaged-postgresql.editor. -
access_binding_deltas.subject.id— идентификатор субъекта, которому назначается роль. -
access_binding_deltas.subject.type— тип субъекта, которому назначается роль.Допустимые типы субъектов:
-
userAccount— аккаунт на Яндексе, добавленный в Yandex Cloud, или аккаунт из пула пользователей. -
serviceAccount— сервисный аккаунт, созданный в Yandex Cloud. -
federatedUser— аккаунт пользователя федерации удостоверений. -
system— публичная группа пользователей.Допустимые значения идентификатора субъекта:
allAuthenticatedUsers— все пользователи, прошедшие аутентификацию.allUsers— любой пользователь, прохождение аутентификации не требуется.group:organization:<идентификатор_организации>:users— все пользователи указанной организации.group:federation:<идентификатор_федерации>:users— все пользователи указанной федерации удостоверений.
Подробнее о типах субъектов см. в разделе Субъект, которому назначается роль.
-
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Примеры
Добавить сервисному аккаунту доступ к управлению кластером
Чтобы сервисный аккаунт мог просматривать информацию обо всех кластерах Managed Service for PostgreSQL в каталоге, но изменять ресурсы только конкретного кластера, выдайте ему роль managed-postgresql.viewer на каталог и роль managed-postgresql.editor на этот кластер:
-
Назначьте роль на каталог:
yc resource-manager folder add-access-binding <имя_или_идентификатор_каталога> \ --role managed-postgresql.viewer \ --subject=serviceAccount:<идентификатор_сервисного_аккаунта> -
Назначьте роли на кластер:
yc managed-postgresql cluster add-access-bindings <имя_или_идентификатор_кластера> \ --access-binding role=managed-postgresql.editor,subject=serviceAccount:<идентификатор_сервисного_аккаунта> -
Проверьте список ролей, назначенных на кластер:
yc managed-postgresql cluster list-access-bindings <имя_или_идентификатор_кластера>
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Назначьте роль на каталог:
curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://resource-manager.api.yandexcloud.kz/resource-manager/v1/folders/<идентификатор_каталога>:updateAccessBindings' \ --data '{ "access_binding_deltas": [ { "action": "ADD", "access_binding": { "role_id": "managed-postgresql.viewer", "subject": { "id": "<идентификатор_сервисного_аккаунта>", "type": "serviceAccount" } } } ] }'Где
access_binding_deltas.subject.id— идентификатор сервисного аккаунта, которому назначается роль. -
Воспользуйтесь методом Cluster.UpdateAccessBindings и выполните запрос, например, с помощью cURL
:curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.yandexcloud.kz/managed-postgresql/v1/clusters/<идентификатор_кластера>:updateAccessBindings' \ --data '{ "access_binding_deltas": [ { "action": "ADD", "access_binding": { "role_id": "managed-postgresql.editor", "subject": { "id": "<идентификатор_сервисного_аккаунта>", "type": "serviceAccount" } } } ] }'Где
access_binding_deltas.subject.id— идентификатор сервисного аккаунта, которому назначается роль. -
Проверьте список ролей, назначенных на каталог:
curl \ --request GET \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://resource-manager.api.yandexcloud.kz/resource-manager/v1/folders/<идентификатор_каталога>:updateAccessBindings' -
Проверьте список ролей, назначенных на кластер:
curl \ --request GET \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.yandexcloud.kz/managed-postgresql/v1/clusters/<идентификатор_кластера>:listAccessBindings'
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Назначьте роль на каталог:
grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/resourcemanager/v1/folder_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "resource_id": "<идентификатор_кластера>", "access_binding_deltas": [ { "action": "ADD", "access_binding": { "role_id": "managed-postgresql.viewer", "subject": { "id": "<идентификатор_ссервисного_аккаунта>", "type": "serviceAccount" } } } ] }' \ resource-manager.api.yandexcloud.kz:443 \ yandex.cloud.resourcemanager.v1.FolderService.UpdateAccessBindingsГде
access_binding_deltas.subject.id— идентификатор сервисного аккаунта, которому назначается роль. -
Назначьте роль на кластер:
grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/postgresql/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "resource_id": "<идентификатор_кластера>", "access_binding_deltas": [ { "action": "ADD", "access_binding": { "role_id": "managed-postgresql.editor", "subject": { "id": "<идентификатор_ссервисного_аккаунта>", "type": "serviceAccount" } } } ] }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.postgresql.v1.ClusterService.UpdateAccessBindingsГде
access_binding_deltas.subject.id— идентификатор сервисного аккаунта, которому назначается роль. -
Проверьте список ролей, назначенных на каталог:
grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/resourcemanager/v1/folder_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "resource_id": "<идентификатор_каталога>" }' \ resource-manager.api.yandexcloud.kz:443 \ yandex.cloud.resourcemanager.v1.FolderService.ListAccessBindings -
Проверьте список ролей, назначенных на кластер:
grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/postgresql/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "resource_id": "<идентификатор_кластера>" }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.postgresql.v1.ClusterService.ListAccessBindings