Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up
for free
Ansible Vault for CIOps
Keke
July 30, 2019
Technology
1
730
Ansible Vault for CIOps
Keke
July 30, 2019
Tweet
Share
More Decks by Keke
See All by Keke
keisukeyamashita
10
2.4k
keisukeyamashita
3
570
keisukeyamashita
1
260
keisukeyamashita
8
5.1k
keisukeyamashita
0
86
keisukeyamashita
2
580
keisukeyamashita
3
870
keisukeyamashita
1
1.4k
keisukeyamashita
1
1.8k
Other Decks in Technology
See All in Technology
sei88888
0
440
gamella
0
290
sat
8
7.4k
oracle4engineer
9
6.2k
aamine
4
940
shwars
0
110
mabuchin
1
100
miura55
0
180
finengine
0
280
hacker2202
0
110
legalforce
PRO
0
200
miyamotok
0
100
Featured
See All Featured
orderedlist
PRO
330
36k
cherdarchuk
73
270k
rocio
155
11k
danielanewman
2
560
maltzj
502
36k
marktimemedia
7
460
keavy
108
14k
dotmariusz
94
5.5k
jakevdp
776
200k
mongodb
23
3.9k
colly
188
14k
jrom
116
7.2k
Transcript
2019/07/30 ANSIBLE NIGHT LT ANSIBLE VAULT FOR CIOPS Keke Twitter:
@_k_e_k_e
$ WHOIAM KEISUKE YAMASHITA TWITTER: @_k_e_k_e 新卒で Merpay.inc SRE Team
Chaos Engineering, Cashless are my main interest
ANSIBLE VAULT シークレットを Encrypt ・Decrypt できるCLI ツール
PRESENTATION AGENDA 皆さんに伝えたいこと CIOps というContinuous Delivery のパターン Ansible Vault を使ったCIOps
運⽤のTips
場所に応じた最⼩限の権限をつけよう どこになんの権限が必要であるかを考えて権限付与 万が⼀のケースを考えよう 例: VM に⼊られるとprintenv などを使って簡単にパスワー ドを取れる CLI ツールとしてAnsible
Vault は便利 CI とローカルでEncrypt ・Decrypt するには使い勝⼿がいい TAKEAWAY FOR CIOPS
None
None
CIOPS って?
継続的デリバリーの主なPOINT AUTOMATION リリース作業をなくす。 ヒューマンエラーを防ぐ。 GET FEEDBACK すぐデプロイをして、ユーザーに価値を届ける。 バグを⾒つけるまでの時間を短縮。 ACCERATE WITH
MICROSERVICE マイクロサービス アーキテクチャに伴い、デプロイ数の急増するので スケールさせるには継続的デリバリーが必要。
WHATS CIOPS?
WHATS CIOPS? CD の⼀つのパターン deploy trigger push
WHATS CIOPS? CD の⼀つのパターン deploy trigger push Deploy by CI
WHATS CIOPS? CD の⼀つのパターン deploy trigger push Some secrets Deploy
by CI
どうやってCIOPS のために SECRET 管理するの?
$ cat .env DB_USER: root DB_PASS: tsuyoi_password_ni_sitene DB_NAME: master EXTERNAL_ACCESS_TOKEN:
gaibu_ni_access_suru_token
1. RAW SECRETS 管理
RAW SECRETS 管理 1. $ git push deploy trigger push
RAW SECRETS 管理 1. $ git push deploy trigger push
RAW SECRETS ON GITHUB PROS & CONS SECRET へ 誰でもアクセスできる
Github が漏出したら 終わり コミットに永遠に残り Revoke するのが難しい
2. CI でSERECT 管理
2. CI でSERECT 管理
2. CI 上でSERECT 管理 Git にはSerect は載せない $ echo ".env"
>> .gitignore
2. CI 上でSERECT 管理 config deploy trigger push
2. CI 上でSERECT 管理 CI に設定 ( この例ではCircleCI)
SEALED SECRETS ON CI PROS & CONS 何かしらの⽅法で Dev にPassword
を 渡さないといけない CI にPassword の 漏洩リスクあり Git には Secret はない Password 変更があると CI も変更しないといけない
3. SEALED SECRECT によるCIOPS secrets write Admin Dev Dev Dev
Dev Dev Read
3. SEALED SECRECT によるCIOPS
3. SEALED SECRECT によるCIOPS
3. SEALED SECRECT によるCIOPS deploy trigger push deploy trigger Encrypt
Decrypt config password password password
SECRETS ON CI PROS & CONS 何かしらの⽅法で Sercet を共有しないといけない CI
に漏洩リスクあり Git に漏洩リスクはなく デプロイできる
3. SEALED SECRECT によるCIOPS password write Admin Dev Dev Dev
Dev Dev Read
ANSIBLE VAULT
ANSIBLE VAULT シークレットを Encrypt ・Decrypt できるCLI ツール
$ cat .env DB_USER: root DB_PASS: tsuyoi_password_ni_sitene DB_NAME: master EXTERNAL_ACCESS_TOKEN:
gaibu_ni_access_suru_token
Encrypt 1. $ ansible-vault encrypt .env.yml => New Vault password:
[ パスワード⼊れる] => Confirm Vault password: [ 再度パスワード⼊れる] $ANSIBLE_VAULT;1.1;AES256 62663931376163656235343237376235636664303733643139346565326633336664643938333164 6635393466386336383133316262343033363838373939380a343339346136353935303938373937 38386664323865633431313430666532303731346361346331656565643236386435366535346239 ....
2. Decrypt $ ansible-vault decrypt .env.yml => New Vault password:
[ パスワード⼊れる] => Confirm Vault password: [ 再度パスワード⼊れる] DB_USER: root DB_PASS: tsuyoi_password_ni_sitene DB_NAME: master EXTERNAL_ACCESS_TOKEN: gaibu_ni_access_suru_token
3. SEALED SECRECT によるCIOPS Encrypt password $ ansible-vault encrypt .env.yml
3. SEALED SECRECT によるCIOPS push Encrypt password
3. SEALED SECRECT によるCIOPS trigger push trigger Encrypt Decrypt config
password password password $ ansible-vault decrypt .env.yml
3. SEALED SECRECT によるCIOPS deploy trigger push deploy trigger Encrypt
Decrypt config password password password
$ ssh -p 64535 100.xxx.yyy.zzz <= ノードに⼊る $ printenv DB_NAME=master
DB_PASSWORD=tsuyoi_password_ni_sitene DB_USER=root EXTERNAL_ACCESS_TOKEN=gaibu_ni_access_suru_token
4. DECRYPT IN APPLICATION
4. DECRYPT IN APPLICATION deploy trigger push deploy trigger IAM
secrets IAM secrets secrets IAM secrets Authn/z keys
3. SEALED SECRECT によるCIOPS deploy trigger push deploy trigger IAM
secrets IAM secrets secrets IAM secrets Authn/z keys Deploy KMS
$ cat .env.dev.yml $ ansible-vault encrypt .env.dev.yml --out .env.dev.yml.enc .
--vault-password-file=<(echo "password")
$ STAGE="prod" $ ansible-vault encrypt .env.$STAGE.yml --out .env.$STAGE.yml.enc - -vault-password-file=<(echo
$PASSWORD)
HASHICORP VAULT Secret を管理するためのソフ トウェア。最近、 Kubernetes と合わせて使わ れるケースが多い。 GOOGLE BERGLAS
Google Cloud Storage と Cloud KMS での SealedSecret BITNAME SEALED SECRETS Kubernetes 上でDecrypt で きるSealedSecret を実現する コントローラー Compare
場所に応じた最⼩限の権限をつけよう どこになんの権限が必要であるかを考えて権限付与 万が⼀のケースを考えよう 例: VM に⼊られるとprintenv などを使って簡単にパスワー ドを取れる CLI ツールとしてAnsible
Vault は便利 CI とローカルでEncrypt ・Decrypt するには使い勝⼿がいい TAKEAWAY FOR CIOPS
THANK YOU