Скрытие чувствительных команд оболочки ruby - PullRequest
1 голос
/ 25 сентября 2019

Я использую команды fastlane и sh для расшифровки некоторых учетных данных, но кажется, что ruby ​​печатает вывод в журналах.Как скрыть конфиденциальную информацию из журналов?

cmd_decrypt = "openssl enc -aes-256-cbc -d -a -k \"#{ENV["MATCH_PASSWORD"]}\" -in #{enc_file} -out #{dec_file[0]}"

sh(cmd_decrypt)

вывод:

[09:38:15]: --------------------------------------------------------------------
[09:38:15]: Step: openssl enc -aes-256-cbc -d -a -k "PASSWORD_SHOWN!" -in /var/folders/7g/yy/T/d20190925-1304-1qv6cj1/vault/zz-out /var/folders/7g/yy/T/d20190925-1304-1qv6cj1/vault/xx
[09:38:15]: --------------------------------------------------------------------
[09:38:15]: $ openssl enc -aes-256-cbc -d -a -k "PASSWORD_SHOWN!" -in /var/folders/7g/yy/T/d20190925-1304-1qv6cj1/vault/zz -out /var/folders/7g/yy/T/d20190925-1304-1qv6cj1/vault/xx

Ответы [ 2 ]

3 голосов
/ 25 сентября 2019

Вы можете передать sh дополнительные параметры.В этом случае вы бы назвали это так:

sh(cmd_decrypt, log: false)

Документация для sh находится здесь: https://docs.fastlane.tools/actions/sh/

Вы можете получить документы для других встроенных действийздесь: https://docs.fastlane.tools/actions/

И документы для действий других плагинов здесь: https://docs.fastlane.tools/plugins/available-plugins/

1 голос
/ 25 сентября 2019

Так как у вас есть переменная окружения, почему бы просто не запустить ее?Стоит отметить, что ваш параметр -in не имеет экранирования оболочки, что обычно требуется, используя shellescape.

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

Хорошая новость заключается в том, что вы всегда можете написать скрипт-обертку для обеспечения безопасности и простоты использования, например:

#!/bin/sh
# descrypt.sh

openssl enc -aes-256-cbc -d -a -k "$MATCH_PASSWORD" -in $1 -out $2

Вы можете назвать это так:

sh('descrypt.sh', enc_file, dec_file[0])

Теперь в нем записано что-то намного тише, а также бонус.С помощью $*.

вы можете выбрать, какие аргументы передать, или даже выбросить их все.
...