Я бы сделал это следующим образом:
Здесь вы хорошо описали зашифрованные пароли в ActiveMQ .
Сначала вам нужно подготовиться такой зашифрованный пароль. ActiveMQ имеет встроенную утилиту для этого:
Начиная с ActiveMQ 5.4.1, вы можете шифровать свои пароли и безопасно хранить их в файлах конфигурации. Чтобы зашифровать пароль, вы можете использовать только что добавленную команду шифрования, например:
$ bin/activemq encrypt --password activemq --input mypassword
...
Encrypted text: eeWjNyX6FY8Fjp3E+F6qTytV11bZItDp
Где пароль, который вы хотите зашифровать, передается с входным аргументом, а аргумент пароля является секретом, используемым шифровщиком. Аналогичным образом вы можете проверить свои пароли, например:
$ bin/activemq decrypt --password activemq --input eeWjNyX6FY8Fjp3E+F6qTytV11bZItDp
...
Decrypted text: mypassword
Примечание. Рекомендуется использовать для пароля только буквы алфавита c. Специальные символы, такие как $ / ^ &, не поддерживаются.
Следующим шагом является добавление пароля в соответствующий файл конфигурации, $ ACTIVEMQ_HOME / conf / credentials-ru c .properties по умолчанию.
activemq.username=system
activemq.password=ENC(mYRkg+4Q4hua1kvpCCI2hg==)
guest.password=ENC(Cf3Jf3tM+UrSOoaKU50od5CuBa8rxjoL)
...
jdbc.password=ENC(eeWjNyX6FY8Fjp3E+F6qTytV11bZItDp)
Возможно, вам даже не нужно перестраивать свое изображение, так как оно содержит соответствующий файл конфигурации с зашифрованным паролем. Вы можете добавить его как ConfigMap
данные в volume
. Вы можете прочитать, как это сделать здесь , поэтому я скорее избегу вставки копий из документации. В качестве альтернативы вы можете использовать секретный том . Это не самый важный момент, так как это просто способ замены вашего исходного файла конфигурации ActiveMQ в вашем Pod
вашим файлом пользовательской конфигурации, и вы, вероятно, уже знаете, как это сделать.
На стороне ActiveMQ есть еще один шаг для настройки. Этот файл конфигурации также может быть передан через ConfigMaP
, как в предыдущем примере.
Наконец, вам нужно указать загрузчику свойств шифровать переменные при загрузке свойств в память. Вместо стандартного загрузчика свойств мы будем использовать специальный (см. \ $ ACTIVEMQ_HOME / conf / activemq-security. xml) для достижения этого.
<bean id="environmentVariablesConfiguration" class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig">
<property name="algorithm" value="PBEWithMD5AndDES" />
<property name="passwordEnvName" value="ACTIVEMQ\_ENCRYPTION\_PASSWORD" />
</bean>
<bean id="configurationEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
<property name="config" ref="environmentVariablesConfiguration" />
</bean>
<bean id="propertyConfigurer" class="org.jasypt.spring31.properties.EncryptablePropertyPlaceholderConfigurer">
<constructor-arg ref="configurationEncryptor" />
<property name="location" value="file:${activemq.base}/conf/credentials-enc.properties"/>
</bean>
Таким образом, мы указали нашему ActiveMQ , чтобы загрузить encryptor password
из переменной среды ACTIVEMQ_ENCRYPTION_PASSWORD
и затем использовать ее для расшифровки паролей из credential-enc.properties file
.
Теперь давайте позаботимся о ACTIVEMQ_ENCRYPTION_PASSWORD
env var content.
Мы можем установить такую переменную окружения в нашем Pod
через Secret
. Сначала нам нужно создать один . Затем нам нужно использовать его как переменную окружения .
Надеюсь, это поможет.