Как я могу обрабатывать несколько учетных записей службы GCP на моем сервере Node.js? - PullRequest
0 голосов
/ 10 июля 2019

Я реализую API-интерфейс dialogflow v2 на моем сервере на базе node.js.Настройка выглядит так - мой сервер получает запрос от конечного пользователя и вызывает dialogflow v2 api, после получения ответа из диалогового потока, он отправляет ответ пользователю.

Чтобы отправить запрос в API диалогового потока, мне нужно установитьПеременная env с именем GOOGLE_APPLICATION_CREDENTIALS, которая будет указывать на файл json сгенерированного ключа учетной записи службы.

Ситуация такова, что у меня есть несколько ботов и, следовательно, несколько ключей для подключения к ним.

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

Мой вопрос -
Правильно ли этоспособ справиться с этой ситуацией?Что произойдет, если два запроса поступят одновременно, в этом случае возникнут какие-либо проблемы с смешанным совпадением или конфликтом переменной env?

Спасибо.

1 Ответ

0 голосов
/ 10 июля 2019

Я бы не менял переменную среды для каждого запроса. Как вы упомянули, аутентификация специфична для данного запроса, в то время как переменные среды должны использоваться для хранения элементов конфигурации, которые являются общими для всех запросов, выполненных в «среде».

Обычный подход заключается в индивидуальном указании путей к учетным записям служб (клиент диалогового потока может быть инициализирован путем указания пути к файлу учетной записи службы):

const sessionClient = new dialogflow.SessionsClient({
    keyFilename: '/path/to/google.json'
});

- код непосредственно из ответа https://stackoverflow.com/a/50546430. Также см. Google Документы SessionsClient .

Итак, когда приходит запрос, посмотрите на некоторые параметры запроса, чтобы определить, какую аутентификацию использовать, а затем инициализируйте клиент с путем к этому файлу аутентификации. Кроме того, само собой разумеется, но защищайте эти файлы как пароли (не передавайте их в публичное хранилище и т. Д.).

Если вы обнаружите, что управляете множеством секретов или вам необходимо часто изменять или обновлять их, вы можете обратиться к службе, которая будет обрабатывать это для вас, например, к Системе управления ключами GCP (https://cloud.google.com/kms/), которая может выполнять ротацию ключей). / управление проще в управлении. Сообщение в блоге GCP по управлению учетными записями служб .

Для небольшого проекта указание путей к файлам должно работать нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...