Предисловие
Чтобы иметь возможность использовать его, вы должны сначала это понять. Мне лень рисовать картинки, поэтому я могу рисовать фотографии из больших ребят в Интернете. Структура Springcloud, как показано на рисунке:
Сценарии применения архитектуры микросервиса:
1. Системный раздел, несколько подсистем
2. Каждая подсистема может развернуть несколько приложений, а балансировка нагрузки между приложениями реализована
3. Требуется центр регистрации услуг, и все услуги зарегистрированы в регистрационном центре. Балансировка нагрузки также достигается с использованием определенных стратегий для услуг, зарегистрированных в регистрационном центре.
4. Все клиенты получают доступ к бэкэнд -сервисам через один и тот же адрес шлюза. Благодаря конфигурации маршрутизации шлюз определяет, какая служба обрабатывает запрос на URL. Балансировка нагрузки также используется при пересылке запросов на службу.
5. Иногда службы также должны получить доступ к друг другу. Например, есть пользовательский модуль, и другие службы должны получить пользовательские данные пользовательских служб при обработке некоторых услуг.
6. Необходим автоматический выключатель для обработки тайм -аутов и ошибок во время службы с своевременным образом, чтобы предотвратить парализованную систему из -за проблем с одной из услуг.
7. Функция мониторинга также необходима для мониторинга времени, затрачиваемого на каждый сервисный вызов и т. Д.
введение
В архитектуре микросервиса мы обычно принимаем метод организации DevOps, чтобы снизить огромные затраты, вызванные коммуникацией между командами для ускорения возможностей доставки приложений для микросервиса. Это делает онлайн -информацию, изначально контролируемую командой по эксплуатации и техническому обслуживанию, передаваемой членам организации MicroService для себя, что будет включать в себя большой объем конфиденциальной информации, такой как учетная запись базы данных и пароль. Очевидно, что это очень опасно, если мы напрямую сохраняем конфиденциальную информацию в открытом виде в файле конфигурации приложения MicroService. В ответ на эту проблему Spring Cloud Config дает возможность шифровать и расшифровать свойства для защиты информации в файле конфигурации. Например, следующий пример:
spring.datasource.username = didispring.datasource.password = {cipher} dba6505baa81d78bd08799d8d4429de499bd4c2053c05f029e7cfbf143695f5bВ облачной конфигурации Spring контент помечается как зашифрованное значение с помощью префикса {шифра} перед значением атрибута. Когда клиент MicroService загружает конфигурацию, центр конфигурации автоматически расшифрует значение с префиксом {шифра}. Благодаря реализации этого механизма команда по эксплуатации и техническому обслуживанию может безопасно дать зашифрованные ресурсы онлайн -информации команде MicroService, не беспокоясь о утечке этой конфиденциальной информации. Давайте представим, как использовать эту функцию в центре конфигурации.
Предварительные условия для использования
При использовании функции шифрования и дешифрования Spring Count Config существует необходимая предпосылка, на которую мы должны обратить внимание. Чтобы включить эту функцию, нам необходимо установить неограниченную версию JCE (неограниченная прочность на расширение криптографии Java) во время выполнения центра конфигурации. Хотя функция JCE доступна в JRE, используется версия по умолчанию с ограничением длины. Мы можем скачать его с официального сайта Oracle. Это сжатый пакет. После декомпрессии вы можете увидеть следующие три файла:
Readme.txtlocal_policy.jarus_export_policy.jar
Нам нужно скопировать файлы local_policy.jar и us_export_policy.jar в каталог $ java_home/jre/lib/security, чтобы перезаписать исходный контент по умолчанию. На этом этапе подготовка к шифрованию и дешифрованию завершена.
Связанные конечные точки
После завершения установки JCE вы можете попытаться запустить центр конфигурации. В консоли будут выведены некоторые конечные точки, специфичные для центра конфигурации, в основном, включая:
Вы можете попробовать получить доступ к конечной точке /incrypt /status через запрос GET, и мы получим следующее:
{«Описание»: «Ключ не был установлен для службы шифрования», «Статус»: «no_key»}Этот возврат указывает на то, что функция шифрования текущего центра конфигурации еще не может быть использована, поскольку соответствующий ключ не настроен для службы шифрования.
Ключ конфигурации
Мы можем напрямую указать информацию о ключе (ключ симметрии) в файле конфигурации через свойство encrypt.key, например:
Encrypt.Key = DidSpace
После добавления вышеуказанной информации о конфигурации перезапустите центр конфигурации и доступ к конечной точке Encrypt /Status. Мы получим следующий контент:
{"Статус": "ОК"}В настоящее время функция шифрования и дешифрования в нашем центре конфигурации готова к использованию. С таким же успехом вы можете получить доступ к конечным точкам /Encrypt и /Decrypt для функций шифрования и дешифрования. Обратите внимание, что обе конечные точки являются запросами POST, а информация о шифровании и дешифровании должна быть отправлена через тело запроса. Например, взяв команду Curl в качестве примера, мы можем вызвать конечные точки шифрования и дешифрования следующими способами:
$ curl localhost: 7001/incrypt -d didispace3c70a809bfa24ab88bcb5e1df51cb9e4dd4b8fec88301eb7a18177f1769c849e9c9f29400c920480be2c9940ae28c7c9f29400c920480be2c9940ae28c7c7f29400c920480be2c9940ae28c7c7f29400c920480be2c9940ae28c7c7f29400c920480be2c9940ae28c7 Localhost: 7001/decrypt -d 3C70A809BFA24AB88BCB5E1DF51CB9E4DD4B8FEC88301EB7A18177F1769C849A9C9F29400C920480BE2C99406AE28C7DIPSIPP
Здесь мы используем симметричное шифрование, чтобы указать метод реализации ключа путем настройки параметра Encrypt.Key. Этот метод относительно прост в реализации, и требуется только один параметр. Кроме того, мы также можем использовать переменную среды Encrypt_key, чтобы настроить ее, чтобы позволить ключевой информации храниться внешне.
Асимметричное шифрование
Центр конфигурации Spring Cloud Config может не только использовать шифрование симметрии, но и асимметричное шифрование (например, пары клавиш RSA). Хотя ключевая генерация и конфигурация асимметричного шифрования являются относительно сложными, оно обладает более высокой безопасностью. Ниже давайте подробно рассмотрим, как использовать асимметричное шифрование.
Во -первых, нам нужно генерировать пару клавиш через инструмент Keytool. KeyTool - это ключ и инструмент управления сертификатами в JDK. Это позволяет пользователям управлять своими собственными парами общественного/частного ключа и связанными с соответствующими сертификатами для (через цифровую подпись) самоотверждение (пользователя аутентифицирует себя для других пользователей/сервисов) или сервисов целостности данных и аутентификации. Этот инструмент включен в версии после JDK 1.4, а его местоположение: %Java_Home %/bin/keytool.exe.
Конкретные команды для генерации ключа следующие:
$ keytool -genkeypair -алис config -server -keyalg rsa -keystore config -server.keystore
Введите пароль хранилища ключа:
Введите новый пароль еще раз:
Как ваше имя и фамилия?
[Неизвестно]: Zhaiyongchao
Как называется ваша организационная единица?
[Неизвестно]: Компания
Как называется ваша организация?
[Неизвестно]: организация
Как называется ваш город или регион?
[Неизвестно]: город
Как называется ваша провинция/город/автономный регион?
[Неизвестно]: провинция
Что такое код страны с двумя буквами для этого подразделения?
[Неизвестно]: Китай
Является ли CN = Zhaiyongchao, OU = компания, O = организация, L = город, ST = провинция, C = Китай правильно?
[Нет]: yВведите пароль ключа для <config-server>
(Если пароль такой же, как и хранилище ключа, нажмите Enter):
Введите новый пароль еще раз:
Кроме того, если мы не хотим вводить эту информацию о приглашении на шаг, мы можем использовать -dname, чтобы указать его непосредственно, в то время как пароль и пароль ключа и пароль ключа можно указать непосредственно с использованием -storpass и -keypass. Следовательно, мы можем напрямую создать тот же магазин ключей, что и вышеупомянутая команда, в рамках следующей команды:
$ keytool -genkeypair -alias config -server -keyalg rsa / -dname "cn = zhaiyongchao, ou = company, o = организация, L = город, ST = провинция, C = Китай" / -Keypass 222222 / -KeyStore Config -server.KeyStore / -storePpass 111111 /
По умолчанию ключ, созданный вышеупомянутой командой, действителен только в течение 90 дней. Если мы хотим настроить период его достоверности, мы можем сделать это, добавив параметр -vality. Например, мы можем продлить период достоверности ключа на один год по следующей команде:
$ keytool -genkeypair -alias config -server -keyalg rsa / -dname "cn = zhaiyongchao, ou = company, o = организация, L = город, ST = провинция, C = Китай" / -Keypass 222222 / -KeyStore Config -server.keyStore / -storeppass 111111 / -validess 365 /
Вышеуказанные три метода генерации команд в конечном итоге генерируют файл config-server.keystore в текущем каталоге выполнения команды. Затем нам нужно сохранить его в месте в файловой системе центра конфигурации, например, поместить его в текущий каталог пользователей, а затем добавить соответствующую информацию о конфигурации в центр конфигурации:
encrypt.key store.location = file: // $ {user.home} /config-server.keystoreencrypt.key-store.alias=config-serverencrypt.key store.password=111111111111111111111111-nomЕсли мы разместим Config-server.KeyStore в каталоге SRC/Main/Resource в центре конфигурации, мы также можем настроить его напрямую, как это: Encrypt.Keystore.location = config-server.keyStore. Кроме того, информация о конфигурации асимметричного шифрования также может быть настроена с помощью переменных среды, и их соответствующие конкретные имена переменных следующие:
Encrypt_key_store_locationencrypt_key_store_aliasencrypt_key_store_passwordencrypt_key_store_secret
Настройка информации, связанной с клавишами, с помощью переменных среды может обеспечить лучшую безопасность, поэтому для нас это хороший выбор хранить конфиденциальную информацию о пароле в переменных среды в центре конфигурации.
Суммировать
Вышеуказанное - все содержание этой статьи. Я надеюсь, что содержание этой статьи имеет определенную справочную ценность для каждого обучения или работы. Если у вас есть какие -либо вопросы, вы можете оставить сообщение для общения. Спасибо за поддержку Wulin.com.