مع مرور الوقت ، تغيرت أدوات CI / CD ، وتضاعف عدد المشاريع والبيئات ومواقع التخزين الرئيسية ، وزاد مستوى القلق من أن مفتاحًا قديمًا في مكان ما. حسنًا ، هذا يكفي بالفعل ... هل يمكنني فقط ترك المفاتيح في المستودع؟ اتضح ، نعم ، يمكنك ذلك. وهذا ترتيب من حيث الحجم أكثر ملاءمة من أي شيء قمت به من قبل.
دعنا نتخطى القصة المفجعة للمشاكل التي نواجهها جميعًا عندما يتعلق الأمر بجميع أنواع الأسرار في المشاريع ونصل مباشرة إلى النقطة.
الأهداف
- , /
- , ,
- CI ,
- .
: encrypt.sh decrypt.sh.
encrypt.sh :
#!/bin/bash
# sh encrypt.sh <./path/to/file.js> <environment> <password>
LOCAL_IP_REMOVED='Y'
if [[ $2 == 'local' ]]; then
read -p "You are encrypting local environment. \
Did you remove your local ip address from configs? Y/n" LOCAL_IP_REMOVED
fi
if [[ $LOCAL_IP_REMOVED != 'Y' ]]; then
echo "Well, go on and remove it then! Aborting encryiption"
exit 1
fi
echo "encrypting $1"
openssl enc -aes-128-cbc -a -salt -pass pass:$3 -in $1 -out $1.${2}-enc -md md5
echo "done"
decrypt.sh :
#!/bin/bash
# sh decrypt.sh <environment> <password>
echo "decrypting $1 environment"
for file in $(find . -not -path "*/node_modules/*" -name "*.$1-enc")
do
echo "decrypting $file to ${file//.$1-enc}"
openssl enc -aes-128-cbc -a -d -salt -pass pass:$2 -in $file -out "${file//.$1-enc}" -md md5
done
if [[ $1 == 'local' ]]; then
LOCAL_IP=`ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'`
echo "Also replacing localhost with your local machine ip: $LOCAL_IP"
# optionally, add logic to replace "localhost" with your machine IP
sed -i '' "s|localhost|$LOCAL_IP|g" './src/env.js'
fi
, . .env, env.js .
.gitignore.
encrypt.sh:
sh encrypt.sh ./src/env.js <environment> <very_secure_password>
. ./src/env.js.production-enc.

أنصحك بالبدء بثلاث environmentقواطع: local، staging، production.
تكمن خصوصية localالبيئة في أنه decrypt.shيمكن أيضًا استبدال البرنامج النصي localhostفي التكوينات بعنوان IP المحلي لجهاز الكمبيوتر الخاص بك. هذا ضروري ، على سبيل المثال ، في تطوير الأجهزة المحمولة ، عندما يكون من الضروري للهاتف الذكي الاتصال بخادم محلي.
شكرا للاهتمام!