Какой правильный формат private_key при использовании его в качестве переменной среды?
Я пытаюсь использовать private_key
для некоторых клиентских библиотек nodejs службы GCP, например, @google-cloud/pubsub
, @google-cloud/trace-agent
я получил private_key
из учетных данных службы JSON файл, как это:
Я пытаюсь использовать его в качестве переменной среды для облачной функции.
.env.yaml
:
И используйте это так:
// ...
credentials: {
private_key: envs.private_key,
client_email: envs.client_email
},
projectId: envs.X_GOOGLE_GCLOUD_PROJECT
Но получил ошибку:
Ошибка: ошибка:0906D06C: процедуры PEM:PEM_read_bio: нет начальной строки
Я проверяю логи в стекдрайвере, вот private_key
переменная окружения я получил:
Я думаю, это формат private_key
не является правильным. Это, вероятно, вызвано символом новой строки \n
, Итак, какой правильный формат при использовании private_key
нравится?
2 ответа
Установка ключа в файле.env.yaml не очень хорошая идея. Действительно, вы сможете зафиксировать его в git, возможно, в публичном репозитории, и вы установите его в виде простого текста в качестве переменной среды вашей функции.
Будет лучше, если вы установите файл в корзину и загрузите его во время выполнения. Кстати, вы не будете держать в секрете в файлах проекта.
Другое решение - зашифровать ключом kms и расшифровать его во время выполнения. На этот раз у вас все еще есть секрет в файлах вашего проекта, но в зашифрованном виде.
Но зачем вам нужен другой сервисный аккаунт? Этого на функции не хватает?
GCLOUD_KEY='{"private_key_id":"XXX", "private_key":"YYY",
"client_email":"ZZZ@ZZZ.COM", "client_id":"ABC123",
"type":"service_account"}'