プロダクションキーをGitリポジトリに直接保存します

画像



時が経つにつれ、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.



, :





私は3で開始することをアドバイスenvironment秒:localstagingproduction



クセlocal環境は、スクリプトがあることdecrypt.shも置き換えることができlocalhost、コンピュータのローカルIPを使用してコンフィグで。これは、たとえばモバイル開発で、スマートフォンがローカルサーバーに接続する必要がある場合に必要です。



ご清聴ありがとうございました!




All Articles