Я разрабатываю приложение node.js, которое размещено на heroku. Имея безрадостный опыт фиксации проекта с учетными данными на github, а затем участия в некоторых некорректных действиях по майнингу криптовалюты с моими ключами api, теперь я очень осторожен в том, как раскрыть свои учетные данные публично.

Большинство онлайн-платформ, в том числе позволяют нам управлять нашими собственными переменными среды и использовать их значения в нашем приложении, чтобы предотвратить раскрытие наших учетных данных ненужным сторонам. В heroku мы можем сохранить наши переменные env как пару ключ-значение.

Но когда нам нужно использовать сервисы Google Cloud Platform (GCP), все становится сложно, потому что учетные данные GCP сохраняются в файле json. Мы не можем напрямую использовать этот json-файл в heroku, но некоторые умные люди придумывают несколько разных способов преодолеть это препятствие перед ними.

Когда я делаю это для своего проекта, я нашел разные способы, которые использовали другие, но только одно решение кажется более безопасным и простым для понимания. Это было из ответа @nwkeely на статью. Здесь я объясню это более подробно.

Перед тем, как начать, вы должны иметь с собой ключевые файлы gcp (файл json). Если у вас их еще не было, вы можете прочитать более подробную информацию здесь. Ваш файл key.json должен выглядеть, как показано ниже.

{
“type”: “service_account”,
“project_id”: “your project id”,
“private_key_id”: “your private key id”,
“private_key”: “your private key”,
.............
}

В этом решении мы следуем обычному шаблону, но немного хитрым способом. Мы сохраняем наш объект json как переменную среды и программно создаем файл json на сервере.

Шаг 1

Сначала создайте переменную среды с именем «GCP_CRED» и скопируйте и вставьте в нее содержимое файла key.json (объект json). Это сохранит наш объект json в виде строки. (Вы можете создавать / просматривать / редактировать переменные среды в разделе настроек.)

Затем мы должны сохранить желаемое имя также для ключевого файла json, который будет сгенерирован на сервере как переменная окружения. Здесь я называю его «GCP_KEY_FILE» и определяю его значение как «./gcpconfig.json».

Шаг 2

Теперь нам нужно написать скрипт для генерации нашего json-файла на сервере. Для этого сначала создайте файл с именем «gcpSetup.js» и скопируйте и вставьте этот код.

var fs=require(‘fs’);
fs.writeFile(process.env.GCP_KEY_FILE, process.env.GCP_CRED, (err) => {});

Здесь мы даем инструкцию создать файл с именем «./gcpconfig.json» и записать в него значение, хранящееся в переменной GCP_CRED.

Шаг 3

Наконец, мы должны дать инструкцию для запуска файла «gcpSetup.js» при настройке проекта. Итак, если вам нужно установить настраиваемый модуль или запустить что-либо до того, как NPM выполнит его установку, вы можете настроить его с помощью атрибута «preinstall» в файле package.json. Просто измените свойство скрипта следующим образом.

“scripts” : {
 “preinstall” : “node gcpSetup.js”
 }

Теперь вы готовы к работе ... развернуть приложение ..