Настройка прав доступа к секрету, созданному Yandex Connection Manager, для пользователя Yandex Managed Service for PostgreSQL
Вы можете получить пароль пользователя Managed Service for PostgreSQL из секрета Yandex Lockbox. Это можно сделать через Yandex Cloud CLI. Для этого сервисному аккаунту, под которым вы авторизованы в Yandex Cloud CLI, нужно настроить права доступа к секрету пользователя. Информацию о секрете, необходимую для настройки прав, можно получить из подключения Connection Manager.
Чтобы настроить права доступа к секрету пользователя:
- Создайте необходимую инфраструктуру и настройте права доступа к секрету пользователя.
- Получите пароль пользователя из секрета.
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVEилиTRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
- Кластер Managed Service for PostgreSQL: использование выделенных хостам вычислительных ресурсов, объем хранилища и резервных копий (см. тарифы Managed Service for PostgreSQL).
- Публичные IP-адреса, если для хостов кластера включен публичный доступ (см. тарифы Virtual Private Cloud).
Использование Connection Manager, а также секретов Yandex Lockbox, созданных с его помощью, не тарифицируется.
Настройте права доступа к секрету пользователя Managed Service for PostgreSQL
-
Если у вас еще нет Terraform, установите его.
-
Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
-
Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
.Важно
Требуется провайдер Yandex версии не ниже
0.160.0. Если в конфигурации версия провайдера не указана явно, Terraform автоматически загрузит последнюю совместимую версию. -
Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.
-
Скачайте в ту же рабочую директорию файл конфигурации conn-man-secret-access.tf
.В этом файле описаны:
- кластер Managed Service for PostgreSQL;
- настройка прав сервисного аккаунта для доступа к секрету пользователя Managed Service for PostgreSQL;
- получение идентификатора подключения и идентификатора секрета.
-
Укажите в конфигурационном файле следующие параметры:
network_id— идентификатор сети для кластера;subnet_id— идентификатор подсети в зоне доступностиru-central1-aдля кластера;pg_cluster_version— версия PostgreSQL;pg_cluster_name— имя кластера;pg_cluster_db— имя базы данных в кластере;pg_cluster_username— имя пользователя в кластере;pg_cluster_password— пароль пользователя;lockbox_sa_id— идентификатор сервисного аккаунта, для которого будет настроен доступ к секрету.
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
-
После применения конфигурации Terraform выведет идентификаторы подключения и секрета.
Пример вывода:
Outputs: connection_id = "a59v09bb8907********" connection_info = "e6q2rjghh9bc********"Сохраните идентификатор секрета
connection_info, он понадобится для получения пароля пользователя.
Получите пароль пользователя из секрета Yandex Lockbox
-
Аутентифицируйтесь в Yandex Cloud CLI от имени сервисного аккаунта с помощью авторизованного ключа.
-
Получите пароль пользователя из секрета и сохраните его в переменную
PASSWORD:CLIPASSWORD=$(yc lockbox payload get <идентификатор_секрета> \ --format json \ | jq -r '.entries[] | select(.key=="postgresql_password") | .text_value') -
Чтобы посмотреть сохраненный пароль, выполните команду:
echo "$PASSWORD"
Удалите созданные ресурсы
Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:
-
В терминале перейдите в директорию с планом инфраструктуры.
Важно
Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.
-
Удалите ресурсы:
-
Выполните команду:
terraform destroy -
Подтвердите удаление ресурсов и дождитесь завершения операции.
Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.
-