Yandex Cloud
Поиск
Связаться с экспертомПопробовать бесплатно
  • Кейсы
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
  • Marketplace
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Акции и free tier
  • Кейсы
  • Документация
  • Блог
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ООО «Яндекс.Облако»
Практические руководства
    • Все руководства
    • Самостоятельное развертывание веб-интерфейса Apache Kafka®
    • Обновление кластера Managed Service for Apache Kafka® с ZooKeeper на KRaft
    • Миграция БД из стороннего кластера Apache Kafka® в Managed Service for Apache Kafka®
    • Перенос данных между кластерами Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for MySQL® в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for MySQL® в Managed Service for Apache Kafka® с помощью Debezium
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Debezium
    • Поставка данных из Managed Service for YDB в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for Apache Kafka® в Managed Service for ClickHouse® с помощью Data Transfer
    • Поставка данных из Managed Service for Apache Kafka® в Yandex MPP Analytics for PostgreSQL с помощью Data Transfer
    • Поставка данных из Managed Service for Apache Kafka® в Yandex StoreDoc с помощью Data Transfer
    • Поставка данных из Managed Service for Apache Kafka® в Managed Service for MySQL® с помощью Data Transfer
    • Поставка данных из Managed Service for Apache Kafka® в Managed Service for OpenSearch с помощью Data Transfer
    • Поставка данных из Managed Service for Apache Kafka® в Managed Service for PostgreSQL с помощью Data Transfer
    • Поставка данных из Managed Service for Apache Kafka® в Managed Service for YDB с помощью Data Transfer
    • Поставка данных из Managed Service for Apache Kafka® в Data Streams с помощью Data Transfer
    • Поставка данных из Data Streams в Managed Service for YDB с помощью Data Transfer
    • Поставка данных из Data Streams в Managed Service for Apache Kafka® с помощью Data Transfer
    • Захват изменений YDB и поставка в YDS
    • Настройка Kafka Connect для работы с кластером Managed Service for Apache Kafka®
    • Синхронизация топиков Apache Kafka® в Object Storage без использования интернета
    • Отслеживание потери сообщений в топике Apache Kafka®
    • Автоматизация задач Query с помощью Managed Service for Apache Airflow™
    • Отправка запросов к API Yandex Cloud через Yandex Cloud Python SDK
    • Настройка SMTP-сервера для отправки уведомлений по электронной почте
    • Добавление данных в БД ClickHouse®
    • Миграция данных в Managed Service for ClickHouse® средствами ClickHouse®
    • Миграция данных в Managed Service for ClickHouse® при помощи Data Transfer
    • Поставка данных из Managed Service for MySQL® в Managed Service for ClickHouse® с помощью Data Transfer
    • Асинхронная репликация данных из PostgreSQL в ClickHouse®
    • Обмен данными между Managed Service for ClickHouse® и Yandex Data Processing
    • Настройка Managed Service for ClickHouse® для Graphite
    • Получение данных из Managed Service for Apache Kafka® в Managed Service for ClickHouse®
    • Получение данных из Managed Service for Apache Kafka® в ksqlDB
    • Получение данных из RabbitMQ в Managed Service for ClickHouse®
    • Сохранение потока данных Data Streams в Managed Service for ClickHouse®
    • Асинхронная репликация данных из Яндекс Метрика в ClickHouse® с помощью Data Transfer
    • Использование гибридного хранилища в Managed Service for ClickHouse®
    • Шардирование таблиц Managed Service for ClickHouse®
    • Загрузка данных из Яндекс Директ в витрину Managed Service for ClickHouse® с использованием Cloud Functions, Object Storage и Data Transfer
    • Загрузка данных из Object Storage в Managed Service for ClickHouse® с помощью Data Transfer
    • Миграция данных со сменой хранилища из Managed Service for OpenSearch в Managed Service for ClickHouse® с помощью Data Transfer
    • Загрузка данных из Managed Service for YDB в Managed Service for ClickHouse® с помощью Data Transfer
    • Интеграция Yandex Managed Service for ClickHouse® с Microsoft SQL Server через ClickHouse® JDBC Bridge
    • Миграция базы данных из Google BigQuery в Managed Service for ClickHouse®
    • Интеграция Yandex Managed Service for ClickHouse® с Oracle через ClickHouse® JDBC Bridge
    • Настройка Cloud DNS для доступа к кластеру Managed Service for ClickHouse® из других облачных сетей
    • Миграция кластера Yandex Data Processing с HDFS в другую зону доступности
    • Импорт данных из Managed Service for MySQL® в Yandex Data Processing с помощью Sqoop
    • Импорт данных из Managed Service for PostgreSQL в Yandex Data Processing с помощью Sqoop
    • Монтирование бакетов Object Storage к файловой системе хостов Yandex Data Processing
    • Работа с топиками Apache Kafka® с помощью Yandex Data Processing
    • Автоматизация работы с Yandex Data Processing с помощью Managed Service for Apache Airflow™
    • Совместная работа с таблицами Yandex Data Processing с использованием Apache Hive™ Metastore
    • Перенос метаданных между кластерами Yandex Data Processing с помощью Apache Hive™ Metastore
    • Импорт данных из Object Storage, обработка и экспорт в Managed Service for ClickHouse®
    • Миграция коллекций из стороннего кластера MongoDB в Yandex StoreDoc
    • Миграция данных в Yandex StoreDoc
    • Миграция кластера Yandex StoreDoc с версии 4.4 на 6.0
    • Шардирование коллекций Yandex StoreDoc
    • Анализ производительности и оптимизация Yandex StoreDoc
    • Анализ производительности и оптимизация Managed Service for MySQL®
    • Синхронизация данных из стороннего кластера MySQL® в Managed Service for MySQL® с помощью Data Transfer
    • Миграция БД из Managed Service for MySQL® в сторонний кластер MySQL®
    • Миграция БД из Managed Service for MySQL® в Object Storage с помощью Data Transfer
    • Перенос данных из Object Storage в Managed Service for MySQL® с использованием Data Transfer
    • Поставка данных из Managed Service for MySQL® в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for MySQL® в Managed Service for Apache Kafka® с помощью Debezium
    • Миграция БД из Managed Service for MySQL® в Managed Service for YDB с помощью Data Transfer
    • Захват изменений MySQL® и поставка в YDS
    • Миграция данных из Managed Service for MySQL® в Managed Service for PostgreSQL с помощью Data Transfer
    • Миграция данных из AWS RDS for PostgreSQL в Managed Service for PostgreSQL с помощью Data Transfer
    • Миграция данных из Managed Service for MySQL® в Yandex MPP Analytics for PostgreSQL с помощью Data Transfer
    • Настройка политики индексов в Managed Service for OpenSearch
    • Миграция данных в Managed Service for OpenSearch из стороннего кластера OpenSearch с помощью Data Transfer
    • Загрузка данных из Managed Service for OpenSearch в Object Storage с помощью Data Transfer
    • Миграция данных из Managed Service for OpenSearch в Managed Service for YDB с помощью Data Transfer
    • Копирование данных из Managed Service for OpenSearch в Yandex MPP Analytics for PostgreSQL с помощью Yandex Data Transfer
    • Миграция данных из Managed Service for PostgreSQL в Managed Service for OpenSearch с помощью Data Transfer
    • Аутентификация в OpenSearch Dashboards кластера Managed Service for OpenSearch с помощью Keycloak
    • Использование плагина yandex-lemmer в Managed Service for OpenSearch
    • Создание кластера PostgreSQL для «1С:Предприятия»
    • Поиск проблем с производительностью кластера Managed Service for PostgreSQL
    • Анализ производительности и оптимизация Managed Service for PostgreSQL
    • Логическая репликация PostgreSQL
    • Миграция БД из стороннего кластера PostgreSQL в Managed Service for PostgreSQL
    • Миграция БД из Managed Service for PostgreSQL
    • Миграция кластера Managed Service for PostgreSQL на другую версию
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Debezium
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for YDB с помощью Data Transfer
    • Миграция БД из Managed Service for PostgreSQL в Object Storage
    • Перенос данных из Object Storage в Managed Service for PostgreSQL с использованием Data Transfer
    • Захват изменений PostgreSQL и поставка в YDS
    • Миграция данных из Managed Service for PostgreSQL в Managed Service for MySQL® с помощью Data Transfer
    • Миграция данных из Managed Service for PostgreSQL в Managed Service for OpenSearch с помощью Data Transfer
    • Решение проблем с сортировкой строк в PostgreSQL после обновления glibc
    • Использование секрета Yandex Lockbox в PySpark-задании для подключения к Yandex Managed Service for PostgreSQL
    • Настройка прав доступа к секрету, созданному Connection Manager, для пользователя Managed Service for PostgreSQL
    • Миграция БД из Greenplum® в ClickHouse®
    • Миграция БД из Greenplum® в PostgreSQL
    • Выгрузка данных Greenplum® в холодное хранилище Object Storage
    • Загрузка данных из Object Storage в Yandex MPP Analytics for PostgreSQL с помощью Data Transfer
    • Копирование данных из Managed Service for OpenSearch в Yandex MPP Analytics for PostgreSQL с помощью Yandex Data Transfer
    • Создание внешней таблицы на базе таблицы из бакета Object Storage с помощью конфигурационного файла
    • Получение данных из внешних источников с помощью именованных запросов в Greenplum®
    • Миграция БД из стороннего кластера Valkey™ в Yandex Managed Service for Valkey™
    • Использование кластера Yandex Managed Service for Valkey™ в качестве хранилища сессий PHP
    • Загрузка данных из Object Storage в Managed Service for YDB с помощью Data Transfer
    • Загрузка данных из Managed Service for YDB в Object Storage с помощью Data Transfer
    • Обработка аудитных логов Audit Trails
    • Обработка логов Cloud Logging
    • Обработка потока изменений Debezium
    • Анализ данных с помощью Jupyter
    • Обработка файлов детализации в сервисе Yandex Cloud Billing
    • Ввод данных в системы хранения
    • Умная обработка логов
    • Передача данных в микросервисных архитектурах
    • Миграция данных в Object Storage с помощью Data Transfer
    • Миграция данных из стороннего кластера Greenplum® или PostgreSQL в Yandex MPP Analytics for PostgreSQL с помощью Data Transfer
    • Миграция кластера Yandex StoreDoc
    • Миграция кластера MySQL®
    • Миграция на сторонний кластер MySQL®
    • Миграция кластера PostgreSQL
    • Создание реестра схем для поставки данных в формате Debezium CDC из Apache Kafka®
    • Автоматизация работы с помощью Yandex Managed Service for Apache Airflow™
    • Работа с таблицей в Object Storage из PySpark-задания
    • Интеграция Yandex Managed Service for Apache Spark™ и Apache Hive™ Metastore
    • Запуск PySpark-задания с помощью Yandex Managed Service for Apache Airflow™
    • Использование Yandex Object Storage в Yandex Managed Service for Apache Spark™
    • Использование секрета Yandex Lockbox в PySpark-задании для подключения к Yandex Managed Service for PostgreSQL
    • Запуск PySpark-задания в Yandex Managed Service for YTsaurus

В этой статье:

  • Перед началом работы
  • Необходимые платные ресурсы
  • Подготовьте инфраструктуру
  • Настройте права доступа к секрету пользователя Managed Service for PostgreSQL
  • Подготовьте PySpark-задание
  • Запустите задание и проверьте результат
  • Удалите созданные ресурсы
  1. Построение Data Platform
  2. Использование секрета Yandex Lockbox в PySpark-задании для подключения к Yandex Managed Service for PostgreSQL

Использование секрета Yandex Lockbox в PySpark-задании для подключения к Yandex Managed Service for PostgreSQL

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 11 марта 2026 г.
  • Перед началом работы
    • Необходимые платные ресурсы
  • Подготовьте инфраструктуру
  • Настройте права доступа к секрету пользователя Managed Service for PostgreSQL
  • Подготовьте PySpark-задание
  • Запустите задание и проверьте результат
  • Удалите созданные ресурсы

Вы можете использовать секрет Yandex Lockbox для подключения к кластеру Yandex Managed Service for PostgreSQL из PySpark-задания в Yandex Managed Service for Apache Spark™. Для этого сервисному аккаунту кластера Yandex Managed Service for Apache Spark™ необходимо предоставить доступ к секрету. Секрет создается сервисом Yandex Connection Manager автоматически при создании пользователя Managed Service for PostgreSQL.

Для PySpark-задания используется Python-скрипт, который хранится в бакете Yandex Object Storage. Скрипт получает пароль пользователя из секрета и использует его для подключения к кластеру Managed Service for PostgreSQL.

Чтобы получить информацию из секрета и подключиться к кластеру Managed Service for PostgreSQL, выполните следующие действия:

  1. Подготовьте инфраструктуру.
  2. Настройте права доступа к секрету пользователя.
  3. Подготовьте PySpark-задание.
  4. Запустите задание и проверьте результат.

Если созданные ресурсы вам больше не нужны, удалите их.

Перед началом работыПеред началом работы

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

Необходимые платные ресурсыНеобходимые платные ресурсы

  • Кластер Yandex Managed Service for Apache Spark™: вычислительные ресурсы компонентов кластера (см. тарифы Yandex Managed Service for Apache Spark™).
  • Кластер Managed Service for PostgreSQL: использование выделенных хостам вычислительных ресурсов, объем хранилища и резервных копий (см. тарифы Managed Service for PostgreSQL).
  • Бакет Object Storage: использование хранилища и выполнение операций с данными (см. тарифы Object Storage).
  • NAT-шлюз: почасовое использование шлюза и исходящий через него трафик (см. тарифы Virtual Private Cloud).
  • Публичные IP-адреса, если для хостов кластера включен публичный доступ (см. тарифы Virtual Private Cloud).

Использование секретов Yandex Lockbox, созданных с помощью Connection Manager, не тарифицируется.

Подготовьте инфраструктуруПодготовьте инфраструктуру

  1. Создайте сервисный аккаунт spark-agent и назначьте ему роли:

    • managed-spark.integrationProvider — для взаимодействия Yandex Managed Service for Apache Spark™ с другими сервисами;
    • storage.editor — для доступа к файлу с PySpark-заданием в бакете Object Storage.
  2. Создайте бакет.

  3. Предоставьте разрешение READ для сервисного аккаунта spark-agent на созданный бакет.

  4. Создайте облачную сеть с именем spark-network.

    Вместе с ней автоматически будут созданы три подсети в разных зонах доступности.

  5. В сети spark-network создайте группу безопасности spark-sg для кластера Yandex Managed Service for Apache Spark™, разрешающую исходящие TCP-подключения:

    • на порт 6432 для подключения к PostgreSQL;
    • на порт 443 для скачивания Maven-пакетов.
  6. В сети spark-network создайте группу безопасности pg-sg для кластера Managed Service for PostgreSQL, разрешающую входящие TCP-подключения на порт 6432.

  7. Создайте кластер Yandex Managed Service for Apache Spark™ со следующими настройками:

    • Сервисный аккаунт — spark-agent.
    • Сеть — spark-network.
    • Группа безопасности — spark-sg.
  8. Настройте NAT-шлюз для подсети, в которой создан кластер Yandex Managed Service for Apache Spark™. NAT-шлюз нужен для скачивания JDBC-драйвера PostgreSQL из Maven-репозитория.

  9. Создайте кластер Managed Service for PostgreSQL со следующими настройками:

    • Сеть — spark-network.
    • Группа безопасности — pg-sg.

Настройте права доступа к секрету пользователя Managed Service for PostgreSQLНастройте права доступа к секрету пользователя Managed Service for PostgreSQL

Консоль управления
CLI
  1. В консоли управления перейдите в каталог, в котором создана необходимая инфраструктура.

  2. Перейдите в сервис Managed Service for PostgreSQL.

  3. Нажмите на имя нужного кластера и выберите вкладку Пользователи.

  4. Нажмите на идентификатор подключения в строке нужного пользователя.

    Откроется страница подключения Connection Manager для выбранного пользователя.

  5. На открывшейся странице нажмите на идентификатор секрета.

    Откроется страница секрета Yandex Lockbox, который хранит пароль пользователя PostgreSQL.

  6. На панели слева выберите раздел Права доступа и нажмите кнопку Назначить роли.

  7. Выберите сервисный аккаунт spark-agent, которому будет предоставлен доступ к секрету.

  8. Нажмите кнопку Добавить роль и выберите lockbox.payloadViewer.

  9. Нажмите кнопку Сохранить.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

Чтобы настроить права доступа к секрету пользователя Managed Service for PostgreSQL:

  1. Получите идентификатор секрета из подключения Connection Manager:

    yc metadata-hub connection-manager connection list \
      --mdb-cluster-id <идентификатор_кластера_PostgreSQL>
    

    Идентификатор кластера можно получить со списком кластеров в каталоге.

  2. Настройте права доступа к секрету пользователя:

    yc lockbox secret add-access-binding <идентификатор_секрета> \
      --role lockbox.payloadViewer \
      --service-account-name spark-agent 
    

    Сервисному аккаунту spark-agent будет предоставлен доступ к секрету пользователя Managed Service for PostgreSQL.

Подготовьте PySpark-заданиеПодготовьте PySpark-задание

  1. Создайте локально файл с именем job-mpg-connection-with-secret.py и скопируйте в него скрипт:

    job-mpg-connection-with-secret.py
    import json
    import os
    import urllib.request
    from pyspark.sql import SparkSession
    
    def get_secret(secret_id: str) -> dict:
        """Получение секрета из Yandex Lockbox."""
        # Получение IAM-токена через metadata service
        metadata_host = os.environ.get("YC_METADATA_ADDR", "169.254.169.254")
        token_url = f"http://{metadata_host}/computeMetadata/v1/instance/service-accounts/default/token"
    
        req = urllib.request.Request(token_url)
        req.add_header("Metadata-Flavor", "Google")
        with urllib.request.urlopen(req, timeout=10) as resp:
            token = json.loads(resp.read())["access_token"]
    
        # Получение секрета Yandex Lockbox
        secret_url = f"https://payload.lockbox.api.cloud.yandex.net/lockbox/v1/secrets/{secret_id}/payload"
        req = urllib.request.Request(secret_url)
        req.add_header("Authorization", f"Bearer {token}")
        with urllib.request.urlopen(req, timeout=30) as resp:
            payload = json.loads(resp.read())
            return {e["key"]: e["textValue"] for e in payload["entries"]}
    
    
    # Использование функции получения секрета
    secrets = get_secret("<идентификатор_секрета>")
    
    # Инициализация Spark сессии
    spark = SparkSession.builder.appName("db-reader").getOrCreate()
    
    # Подключение к кластеру Managed Service for PostgreSQL
    df = spark.read \
        .format("jdbc") \
        .option("url", f"jdbc:postgresql://<FQDN_хоста>:6432/<имя_БД>") \
        .option("driver", "org.postgresql.Driver") \
        .option("user", "<имя_пользователя>") \
        .option("password", secrets["postgresql_password"]) \
        .option("dbtable", "<имя_таблицы>") \
        .load()
    
    # Вывод первых 20 строк таблицы
    df.show()
    
  2. Укажите в файле скрипта следующие параметры:

    • идентификатор секрета;
    • FQDN хоста для подключения к кластеру Managed Service for PostgreSQL;
    • имя базы данных;
    • имя таблицы.

Запустите задание и проверьте результатЗапустите задание и проверьте результат

Консоль управления
CLI
  1. Загрузите в бакет файл job-mpg-connection-with-secret.py.

  2. В кластере Yandex Managed Service for Apache Spark™ создайте задание со следующими параметрами:

    • Тип задания — PySpark.
    • Main python файл – s3a://<имя_бакета>/job-mpg-connection-with-secret.py.
    • Пакеты — org.postgresql:postgresql:42.7.3.
  3. Дождитесь, когда созданное PySpark-задание перейдет в статус Done.

  4. Получите логи выполнения задания.

    В логах задания будет показан вывод строк таблицы, указанной в скрипте.

  1. Загрузите в бакет файл job-mpg-connection-with-secret.py:

    yc storage s3api put-object \
      --body <путь_к_локальному_файлу> \
      --bucket <имя_бакета> \
      --key "job-mpg-connection-with-secret.py"
    
  2. Запустите задание:

    yc managed-spark job create-pyspark \
      --cluster-id <идентификатор_кластера> \
      --name "<имя_задания>" \
      --main-python-file-uri s3a://<имя_бакета>/job-mpg-connection-with-secret.py \
      --packages org.postgresql:postgresql:42.7.3
    

    Идентификатор кластера можно получить со списком кластеров в каталоге.

    Команда вернет идентификатор задания. Сохраните его, он понадобится для получения логов выполнения задания.

  3. Получите логи выполнения задания:

    yc managed-spark job log <идентификатор_задания> \
      --cluster-id <идентификатор_кластера>
    

    В логах задания будет показан вывод строк таблицы, указанной в скрипте.

Удалите созданные ресурсыУдалите созданные ресурсы

Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:

  1. Кластер Yandex Managed Service for Apache Spark™.
  2. Кластер Managed Service for PostgreSQL.
  3. Бакет Object Storage. Перед удалением бакета удалите из него все объекты.
  4. NAT-шлюз.

Была ли статья полезна?

Предыдущая
Решение проблем с сортировкой строк в PostgreSQL после обновления glibc
Следующая
Настройка прав доступа к секрету, созданному Connection Manager, для пользователя Managed Service for PostgreSQL
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ООО «Яндекс.Облако»