Сервисные подключения — это безопасный способ интеграции ваших проектов SourceCraft с ресурсами Yandex Cloud.
Сервисные подключения позволяют изнутри процессов СI/CD вашего репозитория SourceCraft получить доступ к API Yandex Cloud. Например, вы можете запросить секрет из Yandex Lockbox, загрузить файлы в бакет Yandex Object Storage, развернуть виртуальную машину в Yandex Compute Cloud и прочее.
При этом вам не требуется хранить в секретах репозитория и тем более в коде каких-либо долгоживущих токенов или ключей доступа. Аутентификация в Yandex Cloud осуществляется с помощью короткоживущего IAM-токена Yandex Identity and Access Management, который запрашивается внутри каждого конкретного задания CI/CD.
На странице организации в разделе Настройки перейдите в секцию Сервисные Подключения.
Нажмите Новое Сервисное Подключение.
В открывшемся окне:
В блоке Базовая информация укажите имя сервисного подключения, например default-service-connection, опционально добавьте описание.
В блоке Область применения выберите, для каких репозиториев и веток будет доступно сервисное подключение.
В блоке Настройки Yandex Cloud выберите:
Каталог, к ресурсам которого вы хотите настроить доступ из SourceCraft.
Сервисный аккаунт, созданный ранее.
Совет
Чтобы повторно запросить список облаков, каталогов и сервисных аккаунтов из Yandex Cloud, нажмите Синхронизировать. Это может быть полезно, если параллельно с созданием сервисного подключения вы создали каталог или сервисный аккаунт.
Нажмите Создать Сервисное Подключение.
Дождитесь окончания операции. На открывшейся странице будут представлены детали сервисного подключения, а также содержание блоков tokens и env для дальнейшей интеграции в CI/CD.
На вкладке Домой в секции Ваша мастерская перейдите в раздел Репозитории и выберите репозиторий.
На странице репозитория в разделе Код перейдите в секцию Ветки.
Выберите ветку для внесения изменений.
Откройте файл .sourcecraft/ci.yaml.
В правом верхнем углу нажмите Редактировать.
Добавьте в конфигурацию CI/CD полученные ранее блоки tokens и env.
Вы можете получить IAM-токен с помощью готового кубика от команды SourceCraft. Ниже приведен пример конфигурации CI/CD, в которой IAM-токен используется при аутентификации в Yandex Cloud CLI для получения списка функций Cloud Functions.
tokens:# Произвольное имя токена.<имя_токена>:# Имя сервисного подключения, созданного ранее.service_connection:<имя_сервисного_подключения># Область запроса доступа:# org — все репозитории.# repo — конкретный репозиторий.# ref — ветка или тег.scope:repoworkflows:test-workflow:tasks:-name:sample-taskcubes:# Кубик обменивает токен SourceCraft на IAM-токен Yandex Cloud# и сохраняет его в переменную IAM_TOKEN в блоке outputs.-name:get-iam-tokenenv:ID_TOKEN:${{tokens.<имя_токена>.id_token}}YC_SA_ID:${{tokens.<имя_токена>.service_account_id}}# Также вы можете получить идентификаторы каталога и облака# YC_FOLDER_ID: ${{ tokens.<имя_токена>.folder_id }}# YC_CLOUD_ID: ${{ tokens.<имя_токена>.cloud_id }}image:cr.yandex/sourcecraft/yc-iam:latest# Кубик с предустановленным Yandex Cloud CLI забирает из outputs # переменную IAM_TOKEN и использует ее для получения списка функций Cloud Functions.-name:get-functionsenv:# Подставьте в блок для получения значений outputs имя кубика с# IAM-токеном, например get-iam-token.YC_IAM_TOKEN:${{cubes.<имя_кубика_с_IAM-токеном>.outputs.IAM_TOKEN}}YC_FOLDER_ID:${{tokens.<имя_токена>.folder_id}}image:name:cr.yandex/sourcecraft/yc-cli:latestentrypoint:""script:-|
yc config set folder-id $YC_FOLDER_ID
yc serverless function list
on:push:test-workflow
Совет
Вы можете взаимодействовать с Yandex Cloud напрямую через API или воспользоваться следующими инструментами:
Yandex Cloud CLI — для аутентификации передайте IAM-токен в переменную окружения YC_IAM_TOKEN, а в командах используйте параметры --cloud-id и --folder-id с указанием идентификаторов облака и каталога.
Terraform — для аутентификации передайте IAM-токен в переменную окружения YC_TOKEN, в переменные окружения YC_CLOUD_ID и YC_FOLDER_ID передайте идентификаторы облака и каталога.
В правом верхнем углу нажмите Сохранить изменения.
В открывшемся окне настройте параметры внесения изменений:
В поле Сообщение об изменениях укажите комментарий, который опишет внесенные изменения.
В блоке Ветка изменений выберите, в какую ветку внести изменения. При необходимости создайте новую ветку.
В блоке Действие после сохранения изменений выберите, как внести изменения: с помощью коммита или предложения изменений.
Подтвердите внесение изменений.
Если вы решили внести изменения через предложение изменений, завершите его создание.
Проверьте работу сервисного подключения
На странице репозитория в разделе Код перейдите в секцию Автоматизации.
Выберите запущенный рабочий процесс.
На открывшейся странице будут отображены задания рабочего процесса, шаги задания — кубики, а также статусы и результаты выполнения.
В правом нижнем углу кубика get-functions нажмите .
Пример логов выполнения кубика get-functions:
+----------------------+--------+----------------------+--------+
| ID | NAME | FOLDER ID | STATUS |
+----------------------+--------+----------------------+--------+
| d4e5l4qjepst******** | test-1 | b1gveg9vude9******** | ACTIVE |
+----------------------+--------+----------------------+--------+
Совет
Срок жизни IAM-токена составляет 12 часов. Однако в целях безопасности рекомендуется досрочно прекращать его действие после использования. Подробнее см. на странице Отзыв IAM-токена.