Секреты репозитория действий GitHub и способы защиты события отправки репозитория client_payload Реестр контейнеров Azure
Есть ли способ безопасно передавать данные между репозиториями с помощью client_payload
в событии отправки репозитория?
Я создаю событие отправки репозитория для конвейера CI между двумя моими репозиториями. Мое первое репо использует Terraform в действии GitHub для создания облачных ресурсов Azure, а затем, как предполагается, принимает выходные данные для адреса сервера, имени пользователя и пароля моего ресурса реестра контейнеров, созданного с использованием моегоazure.tf
сценарий.
На последнем этапе моего действия GitHub в первом репо он выполняет запрос POST curl
чтобы уведомить мое второе репо о создании начальных облачных ресурсов для реестра контейнеров Azure (ACR). Теперь можно безопасно создавать образы контейнеров из моего второго репо и отправлять их в ACR.
Моя проблема с client_payload
будучи отправленным на мое второе репо, он использует небезопасный необработанный json, который будет раскрывать пароль, что наиболее важно, и другую информацию в выходной строке моих текущих заданий CI в рамках действия GitHub во втором репо.
Вот почему я хотел бы понять, есть ли способ безопасно передавать данные между репозиториями с помощью client_payload
?
curl --location --request POST 'https://api.github.com/repos/ME_SECOND_REPO_WITH_THE_CONTAINERS/dispatches' \
--header 'Accept: application/vnd.github.everest-preview+json' \
--header 'Authorization: token <MY_PAT>' \
--header 'Content-Type: application/json' \
--data-raw '{
"event_type": "MY_EVENT_TYPE",
"client_payload": {
"login_server": "UNSECURE_VALUE",
"username": "UNSECURE_VALUE",
"password": "UNSECURE_VALUE"
}
}'
1 ответ
Секреты организации
Github Action недавно запустил так называемые секреты организации. Это был бы лучший способ обработки учетных данных учетной записи службы (при условии, что вы используете учетные записи служб).
Запуск рабочего процесса вручную
Если у вас нет настройки учетной записи службы, тогда последняя workflow_dispatch
предложение может быть лучше.
Рабочий процесс
on:
workflow_dispatch:
inputs:
logLevel:
description: 'Log level'
required: true
default: 'warning'
tags:
description: 'Test scenario tags'
Измененный рабочий процесс будет похож на
on:
workflow_dispatch:
inputs:
login_server:
description: 'login server'
required: true
default: "xx.xx.xx.xx"
username:
description: 'username'
required: true
password:
description: 'password'
required: true
И вы можете использовать доступ к ним как
${{github.event.inputs.login_server}}
${{github.event.inputs.username}}
${{github.event.inputs.password}}
РЕДАКТИРОВАТЬ: чтобы включить некоторый уровень обфускации