Upgrade to Pro — share decks privately, control downloads, hide ads and more …

KubernetesとTerraformのセキュリティ/ガバナンス向上委員会 with OPA

saramune
November 21, 2022

KubernetesとTerraformのセキュリティ/ガバナンス向上委員会 with OPA

CNDT 2022の発表資料です。

saramune

November 21, 2022
Tweet

More Decks by saramune

Other Decks in Technology

Transcript

  1. 自己紹介 2 • 古屋 啓介 ◦ Chatwork株式会社 プロダクト本部 SRE部 ◦

    2022年2月入社 • 普段のおしごと ◦ AWSとイチャイチャ ▪ Aurora ▪ EKS ◦ ※セキュリティの専門家というわけではないです
  2. Chatworkとは 4 効率的に情報共有できる グループチャット 仕事の見える化ができる タスク管理 見落としがなくなる ファイル管理 いつでも会議ができる ビデオ/音声通話

    * BOXIL SaaS AWARD 2022「ランキング部門 コラボレーション部門賞」「ベスト評価賞 (初期設定の容易さNo.1、価格の満足度No.1)」を受賞 BOXIL「Chatwork」口コミ評価 * Nielsen NetView 及びNielsen Mobile NetView Customized Report 2022年5月度調べ月次利用者(MAU:Monthly Active User)調査。 * 調査対象はChatwork、Microsoft Teams、Slack、LINE WORKS、Skypeを含む47サービスをChatwork株式会社にて選定。
  3. Chatworkは利用者数No.1*のビジネスチャット 5 3月 リリース 10万社 突破! 20万社 突破! 導入社数 37万6000社以上!

    (2022年9月末日時点) 30万社 突破! * Nielsen NetView 及びNielsen Mobile NetView Customized Report 2022年5月度調べ月次利用者(MAU:Monthly Active User)調査。 * 調査対象はChatwork、Microsoft Teams、Slack、LINE WORKS、Skypeを含む47サービスをChatwork株式会社にて選定。
  4. Conftest、Gatekeeperについて 20 • いずれもOPA/Regoの仕組みを使ったツール • Conftest ◦ Regoを利用して以下のようなコードを検査できる ▪ Kubernetesのマニフェスト

    ▪ TerraformコードなどのHCL • Gatekeeper ◦ Kubernetes内でOPAのポリシーチェックを回す ▪ Validating Admission Webhookを利用
  5. 他社さんの事例 21 • Conftest + Gatekeeperは結構あるあるな構成 • LIFULLさんの事例 ◦ Pod

    Security Policyの代替として採用 ▪ https://www.lifull.blog/entry/2021/07/07/200000 • NIKKEIさんの記事 ◦ ハンズオンつき! ▪ https://hack.nikkei.com/blog/advent20201224/
  6. 実装 23 開発者 Policy(Rego) Gatekeeper Manifests Application Manifests EKS Push

    Admission Webhook Update CRD (Konstraint) Sync Pull CI
  7. CIでの検査フロー 25 開発者 Application Manifest (helmfile) Charts ECR EKS Push

    Build Update Push kubectl apply Sync CI Reconciliation Loop
  8. まとめ 28 • 確実なk8sマニフェスト検査ができるOPAの仕組みを採用 ◦ 意図しないコンテナの起動を防ぐ • 自動かつ柔軟な検査が可能 ◦ CIとapply時のWチェック、ポリシーの分離

    • 手をかけれるかどうかがOPA採用の見極めポイントかも ◦ 作り込みとRegoの習得が必要な点に要注意 ◦ Kyvernoとかが対抗馬か
  9. 以前のChatwork Terraform事情 42 • 開発者主体でAWSリソースを作成できなかった ◦ AWSリソース作成は権限を持つSRE部が実施する必要あり • レビューおよび実行記録の保存がしんどい ◦

    各個人のmacからterraform apply!→GitHubにぺたぺた • Terraformのバージョン管理がつらい ◦ みんなのバージョン一生揃わない(providerも)
  10. 紆余曲折 44 • Terraform Cloud ◦ 第一候補だったがIAMキー必須のためNG • GitHub Actions

    / Self-Hosted Runner ◦ 当時はプランの都合で選択できず...
  11. 新天地、Atlantis 45 • GitHub PR上でコメント駆動terraform applyできるOSS ◦ PRのコメントでplan、レビュー後apply、みたいな • Pros

    ◦ 要件はすべて満たす(PR運用、tfstate、IAMロール) • Cons ◦ 運用コスト(インフラ費、人件費)
  12. 導入してみて 51 • 開発者体験の向上 ◦ SRE部に依頼しなくてもAWSリソースが作れる • セキュリティの向上 ◦ 権限はAtlantisさんだけが持てばよい(Atlantisさんつよつよ問題はある)

    • ガバナンス(※) の向上 ◦ GitHubでplan見て、レビューしてもらって、applyできる ※ここでいうガバナンスが効いている状態とは、みんなが同じやり方・同じルール下でTerraform運用できる状態を指します
  13. まとめ 52 • 新天地、Atlantis ◦ Terraform運用のつらみ解消 • Terraform運用の開発者体験 / セキュリティ

    / ガバナンス向上に貢献 ◦ 誰でもapplyできて、セキュアで、記録が残る • Atlantisさんのお守りは考える必要アリ ◦ 良くも悪くもself-hosted
  14. まとめ 80 • Atlantis + ConftestでTerraformの検査を実施 ◦ Regoポリシーでplan結果の自動レビューを行う • Atlantis

    + infracostでコストの可視化を実施 ◦ 予期せぬコストアラートの抑止 • 仕組みで守るガードレール ◦ チェックリストや口伝に頼らない
  15. 全体のまとめ 82 • OPAを使ってセキュリティとガバナンスの向上を実現 ◦ Kubernetes: Conftest + Gatekeeper ◦

    Terraform: Atlantis + Conftest, Atlantis + infracost • ダイジなのは運用・開発者体験を損なわないこと ◦ なるべく自動化 ◦ 適切なガードレールを敷く ◦ SRE部がボトルネックにならない • Atlantisはいいぞ ◦ 知名度低い...? ◦ Terraform Cloud推しの人の話も聞いてみたい
  16. 宣伝: Chatwork SRE部のセッション 84 • ArgoCDとGitHub Actions Self Hosted Runnerを使ってリリース時間

    を1/4にした話 ◦ 11/21 15:20- ◦ Track C ◦ Ryo Sakamoto • SLO策定までの道とChaosEngineeringを使った最適解の見つけ方 ◦ 11/22 13:20- ◦ Track A ◦ Shinya Sasaki