Для этого ответа я предполагаю, что вы работаете в Google Compute Engine. Ответ такого же типа будет применяться к функциям App Engine, Containers, Kubernetes и Cloud.
У меня такой вопрос - если файл загружен напрямую в
папка src / main / resources для приложения, которое работает в Google
Облачная платформа, это значительный риск для безопасности?
Это угроза безопасности и очень плохая практика безопасности. Многие известные компании были взломаны с учетными данными, хранящимися в исходном коде.
Насколько легко было бы хакеру получить доступ к файлу?
Неизвестно. Существует много различных типов нарушений. Если хакер получает доступ к вашему экземпляру в оболочке, у вас серьезные проблемы. Если хакер получает доступ к корневой оболочке, он может сделать практически все, что захочет.
Если это риск, то какова безопасная альтернатива этому подходу?
Рекомендации по обеспечению безопасности в отношении учетных данных: не храните учетные данные в исходном коде или на ваших вычислительных ресурсах.
Обычно вы получаете доступ к своим учетным данным с сервера метаданных Compute Engine. Эти учетные данные создаются Google Cloud при запуске вашего экземпляра. Вы можете управлять этими разрешениями в консоли Google в разделе «Области доступа к облачному API» ИЛИ через служебную учетную запись, указанную для ВМ.
Однако в G-Suite вам необходимо создать делегированные учетные данные. Я не рекомендую смешивать учетные данные, используемые вашей виртуальной машиной, с учетными данными, используемыми для G-Suite. Это означает, что вам по-прежнему нужен доступ к учетным данным в формате Json (или P12 для устаревших приложений).
Поскольку в соответствии с рекомендациями по обеспечению безопасности эти учетные данные не хранятся в исходном коде или в экземпляре, их необходимо надежно хранить в другом месте, к которому можно получить безопасный доступ. Одним из вариантов является Google Cloud Storage. Присвойте своему экземпляру область облачного хранилища, доступную только для чтения, чтобы вы могли читать JSON-файл учетных данных из облачного хранилища. Читайте учетные данные, используя ваш SDK, непосредственно в память и не включайте дисковые операции или утилиты, такие как gsutil
. Я рекомендую вам создать отдельную корзину для привилегированных файлов, таких как учетные данные.
Обратите внимание, что вы используете несколько учетных данных. 1) учетные данные, хранящиеся на сервере метаданных Google. 2) учетные данные, которые вы загружаете из облачного хранилища. 3) делегированные учетные данные, которые вы создаете для доступа к G-Suite и другим приложениям Google.
Первый набор учетных данных (Application Default Credentials - ADC) используется для обычного облачного доступа, включая чтение второго набора учетных данных из облачного хранилища. Третий набор создан в вашем программном обеспечении.
Учетные данные, которые вы храните в облачном хранилище, не нуждаются ни в каких привилегиях, кроме делегирования в рамках всего домена. Привилегии добавляются через области действия при создании учетных данных G-Suite (учетные данные # 3).
Примечание. Не сохраняйте адрес электронной почты, используемый для делегированных учетных данных, в исходном коде. Сохраните это в другом файле Json в облачном хранилище.