Ansible Vault for CIOps

46fdd2ebc85d68659b83d5eb5c6a49aa?s=47 Keke
July 30, 2019

Ansible Vault for CIOps

46fdd2ebc85d68659b83d5eb5c6a49aa?s=128

Keke

July 30, 2019
Tweet

Transcript

  1. 2019/07/30 ANSIBLE NIGHT LT ANSIBLE VAULT FOR CIOPS Keke Twitter:

    @_k_e_k_e
  2. $ WHOIAM KEISUKE YAMASHITA TWITTER: @_k_e_k_e 新卒で Merpay.inc SRE Team

    Chaos Engineering, Cashless are my main interest
  3. ANSIBLE VAULT シークレットを Encrypt ・Decrypt できるCLI ツール

  4. PRESENTATION AGENDA 皆さんに伝えたいこと CIOps というContinuous Delivery のパターン Ansible Vault を使ったCIOps

    運⽤のTips
  5. 場所に応じた最⼩限の権限をつけよう どこになんの権限が必要であるかを考えて権限付与 万が⼀のケースを考えよう 例: VM に⼊られるとprintenv などを使って簡単にパスワー ドを取れる CLI ツールとしてAnsible

    Vault は便利 CI とローカルでEncrypt ・Decrypt するには使い勝⼿がいい TAKEAWAY FOR CIOPS
  6. None
  7. None
  8. CIOPS って?

  9. 継続的デリバリーの主なPOINT AUTOMATION リリース作業をなくす。 ヒューマンエラーを防ぐ。 GET FEEDBACK すぐデプロイをして、ユーザーに価値を届ける。 バグを⾒つけるまでの時間を短縮。 ACCERATE WITH

    MICROSERVICE マイクロサービス アーキテクチャに伴い、デプロイ数の急増するので スケールさせるには継続的デリバリーが必要。
  10. WHATS CIOPS?

  11. WHATS CIOPS? CD の⼀つのパターン deploy trigger push

  12. WHATS CIOPS? CD の⼀つのパターン deploy trigger push Deploy by CI

  13. WHATS CIOPS? CD の⼀つのパターン deploy trigger push Some secrets Deploy

    by CI
  14. どうやってCIOPS のために SECRET 管理するの?

  15. $ cat .env DB_USER: root DB_PASS: tsuyoi_password_ni_sitene DB_NAME: master EXTERNAL_ACCESS_TOKEN:

    gaibu_ni_access_suru_token
  16. 1. RAW SECRETS 管理

  17. RAW SECRETS 管理 1. $ git push deploy trigger push

  18. RAW SECRETS 管理 1. $ git push deploy trigger push

  19. RAW SECRETS ON GITHUB PROS & CONS SECRET へ 誰でもアクセスできる

    Github が漏出したら 終わり コミットに永遠に残り Revoke するのが難しい
  20. 2. CI でSERECT 管理

  21. 2. CI でSERECT 管理

  22. 2. CI 上でSERECT 管理 Git にはSerect は載せない $ echo ".env"

    >> .gitignore
  23. 2. CI 上でSERECT 管理 config deploy trigger push

  24. 2. CI 上でSERECT 管理 CI に設定 ( この例ではCircleCI)

  25. SEALED SECRETS ON CI PROS & CONS 何かしらの⽅法で Dev にPassword

    を 渡さないといけない CI にPassword の 漏洩リスクあり Git には Secret はない Password 変更があると CI も変更しないといけない
  26. 3. SEALED SECRECT によるCIOPS secrets write Admin Dev Dev Dev

    Dev Dev Read
  27. 3. SEALED SECRECT によるCIOPS

  28. 3. SEALED SECRECT によるCIOPS

  29. 3. SEALED SECRECT によるCIOPS deploy trigger push deploy trigger Encrypt

    Decrypt config password password password
  30. SECRETS ON CI PROS & CONS 何かしらの⽅法で Sercet を共有しないといけない CI

    に漏洩リスクあり Git に漏洩リスクはなく デプロイできる
  31. 3. SEALED SECRECT によるCIOPS password write Admin Dev Dev Dev

    Dev Dev Read
  32. ANSIBLE VAULT

  33. ANSIBLE VAULT シークレットを Encrypt ・Decrypt できるCLI ツール

  34. $ cat .env DB_USER: root DB_PASS: tsuyoi_password_ni_sitene DB_NAME: master EXTERNAL_ACCESS_TOKEN:

    gaibu_ni_access_suru_token
  35. Encrypt 1. $ ansible-vault encrypt .env.yml => New Vault password:

    [ パスワード⼊れる] => Confirm Vault password: [ 再度パスワード⼊れる] $ANSIBLE_VAULT;1.1;AES256 62663931376163656235343237376235636664303733643139346565326633336664643938333164 6635393466386336383133316262343033363838373939380a343339346136353935303938373937 38386664323865633431313430666532303731346361346331656565643236386435366535346239 ....
  36. 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
  37. 3. SEALED SECRECT によるCIOPS Encrypt password $ ansible-vault encrypt .env.yml

  38. 3. SEALED SECRECT によるCIOPS push Encrypt password

  39. 3. SEALED SECRECT によるCIOPS trigger push trigger Encrypt Decrypt config

    password password password $ ansible-vault decrypt .env.yml
  40. 3. SEALED SECRECT によるCIOPS deploy trigger push deploy trigger Encrypt

    Decrypt config password password password
  41. $ 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
  42. 4. DECRYPT IN APPLICATION

  43. 4. DECRYPT IN APPLICATION deploy trigger push deploy trigger IAM

    secrets IAM secrets secrets IAM secrets Authn/z keys
  44. 3. SEALED SECRECT によるCIOPS deploy trigger push deploy trigger IAM

    secrets IAM secrets secrets IAM secrets Authn/z keys Deploy KMS
  45. $ cat .env.dev.yml $ ansible-vault encrypt .env.dev.yml --out .env.dev.yml.enc .

    --vault-password-file=<(echo "password")
  46. $ STAGE="prod" $ ansible-vault encrypt .env.$STAGE.yml --out .env.$STAGE.yml.enc - -vault-password-file=<(echo

    $PASSWORD)
  47. HASHICORP VAULT Secret を管理するためのソフ トウェア。最近、 Kubernetes と合わせて使わ れるケースが多い。 GOOGLE BERGLAS

    Google Cloud Storage と Cloud KMS での SealedSecret BITNAME SEALED SECRETS Kubernetes 上でDecrypt で きるSealedSecret を実現する コントローラー Compare
  48. 場所に応じた最⼩限の権限をつけよう どこになんの権限が必要であるかを考えて権限付与 万が⼀のケースを考えよう 例: VM に⼊られるとprintenv などを使って簡単にパスワー ドを取れる CLI ツールとしてAnsible

    Vault は便利 CI とローカルでEncrypt ・Decrypt するには使い勝⼿がいい TAKEAWAY FOR CIOPS
  49. THANK YOU