«Не встраивать секреты, связанные с аутентификацией, в исходный код» - часто можно услышать . Итак, я использую Службу управления ключами и Secret Manager .
Но тогда, как мне правильно получить доступ к секретам, хранящимся там из виртуальной машины Compute Engine и из моей локальной среды разработки?
Я могу подумать о:
Доступ к секретам с использованием учетных данных учетной записи службы по умолчанию , но как мне получить доступ к секретам в локальной среде разработки и внутри моих локальных Docker контейнеров (ie за пределами Compute Engine)?
Доступ к секретам с использованием пользовательской учетной записи службы , но затем мне нужно где-то сохранить ключ JSON и получить к нему доступ из мой код Для этого у меня есть два варианта:
2.1. Сохраните его с исходным кодом, чтобы он был на компьютере разработчика и в контейнере Docker. Но тогда это идет вразрез с вступительным заявлением «Не вставляйте секреты ... в исходный код» . Плохая идея.
2.2. Храните его где-нибудь на моей машине разработчика. Но тогда как мой Docker контейнер получает к нему доступ? Я мог бы предоставить ключ как Docker секрет, но разве это не было бы снова "встраиванием в исходный код" ? После запуска контейнера на моей виртуальной машине мне нужно было бы предоставить этот секрет откуда-то, и снова вернуться к вопросу о том, как секрет поступает на виртуальную машину.
I Знайте, что Учетные данные приложения по умолчанию (AD C) могут попытаться использовать вариант 2, а затем откатиться на вариант 1 - но как мне решить конфликт из варианта 2? Где должны находиться учетные данные учетной записи службы, чтобы они были доступны как для локального разработчика, так и для локального контейнера, а не для , встроенного в исходный код ?