Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
KubernetesとTerraformのセキュリティ/ガバナンス向上委員会 with OPA
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
saramune
November 21, 2022
Technology
1.8k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
KubernetesとTerraformのセキュリティ/ガバナンス向上委員会 with OPA
CNDT 2022の発表資料です。
saramune
November 21, 2022
More Decks by saramune
See All by saramune
EKS Auto Modeなにそれおいしいの?
saramune
0
200
self-hosted runnersでAWSコスト削減?
saramune
0
190
業務効率向上としての分割キーボード
saramune
0
240
インフラ観点で見るセキュリティ〜4Cモデルに倣って〜
saramune
0
160
適材適所
saramune
1
140
ChatworkのSRE部って実は 半分くらいPlatform Engineering部かもしれない
saramune
0
800
週刊AWSキャッチアップ(2024/03/25週)
saramune
0
190
なんでもかんでもコンテナ化すればいいってもんでもないけど なんでもかんでもコンテナ化したらスッキリしました
saramune
2
490
ACKを活用して 使い捨てAWS検証環境を構築している話
saramune
0
1.5k
Other Decks in Technology
See All in Technology
いまさら聞けない人のためのAIコーディング入門
devops_vtj
0
120
運用を見据えたAIエージェント設計実践
amacbee
1
3.2k
Databricks 月刊サービスアップデート 2026年05月号
tyosi1212
0
210
会社紹介資料 / Sansan Company Profile
sansan33
PRO
18
420k
Microsoft Build Keynoteふりかえり
tomokusaba
0
100
LLMと共に進化するプロセスを目指して
ymatsuwitter
12
3.6k
Socrates × Looker 〜セマンティックレイヤーで進化するデータ分析エージェント〜
hanon52_
0
330
AI Adaptable なテストを整える工夫 / Ways to Make Your Tests AI-Adaptable
bitkey
PRO
3
220
「速く作る」から「正しく作る」へ ─ 生成AI時代の開発フロー改革の ロードマップと実行 ─
starfish719
0
8.6k
OCI Oracle AI Database Services新機能アップデート(2026/03-2026/05)
oracle4engineer
PRO
0
290
タクシーアプリ『GO』の実践的データ活用
mot_techtalk
3
170
Djangoユーザが知っ得なPostgreSQL機能 - 設計の選択肢を増やす / Djang-use-PostgreSQL
soudai
PRO
0
200
Featured
See All Featured
Context Engineering - Making Every Token Count
addyosmani
9
950
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
140
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
170
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
190
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
220
The Spectacular Lies of Maps
axbom
PRO
1
790
Prompt Engineering for Job Search
mfonobong
0
330
Transcript
© Chatwork KubernetesとTerraformの セキュリティ/ガバナンス向上委員会 with OPA 2022年11月21日 SRE部 古屋 啓介
Chatwork株式会社
自己紹介 2 • 古屋 啓介 ◦ Chatwork株式会社 プロダクト本部 SRE部 ◦
2022年2月入社 • 普段のおしごと ◦ AWSとイチャイチャ ▪ Aurora ▪ EKS ◦ ※セキュリティの専門家というわけではないです
会社概要 3 会社名 Chatwork株式会社 代表取締役CEO 山本 正喜 従業員数 304名(2022年9月末日時点) 所在地
東京、大阪、ベトナム、台湾 設立 2004年11月11日
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株式会社にて選定。
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株式会社にて選定。
Chatworkの構成(ざっくり) 6
Kubernetesのセキュリティ向上について Terraformの安全な運用について AWSリソース作成のガードレールについて 1 2 3 AGENDA アジェンダ
Kubernetesのセキュリティ向上について 1
Kubernetesのセキュリティ 大丈夫ですか?
Kubernetesのセキュリティ 大丈夫ですか?
クラウドネイティブセキュリティの4C 11 • Kubernetesのドキュメントによると ◦ コード ◦ コンテナ ◦ クラスター
◦ クラウド https://kubernetes.io/ja/docs/concepts/security/overview/
コンテナに関する懸念事項 12 • さらに詳細に ◦ コンテナの脆弱性スキャンとOS依存のセキュリティ ◦ イメージの署名と実施 ◦ 特権ユーザーを許可しない
https://kubernetes.io/ja/docs/concepts/security/overview/
コンテナに関する懸念事項 13 • さらに詳細に ◦ コンテナの脆弱性スキャンとOS依存のセキュリティ ◦ イメージの署名と実施 ◦ 特権ユーザーを許可しない
https://kubernetes.io/ja/docs/concepts/security/overview/
コンテナに関する懸念事項 14 • さらに詳細に ◦ コンテナの脆弱性スキャンとOS依存のセキュリティ ◦ イメージの署名と実施 ◦ 特権ユーザーを許可しない
https://kubernetes.io/ja/docs/concepts/security/overview/ 意図しないコンテナを起動させない
ChatworkのKubernetes無法地帯問題(言い過ぎ) 15 • 悪意のあるコンテナがデプロイされる危険性があった ◦ 起動するコンテナイメージを検査できていなかった うわっ...弊社のKubernetes、無法地帯すぎ...?
マニフェストレベルでデプロイ可能なイメージの制約をかけたい 16 • いつどこで? ◦ マニフェストファイルのCI時 ◦ Kubernetes内部(kubectl apply時、apply以外のリソース生成時) 開発者
Application Manifest (helmfile) Charts ECR EKS Push Build Update Push kubectl apply Sync CI Reconciliation Loop
Open Policy Agent(OPA)を採用 17 • 先述の両方のタイミングで対応可能なツール ◦ ConftestでCI時の検査 ◦ GateKeeperでKubernetes内部から検査
OPAとは 18 • CNCFでホストされるオープンソースで汎用的なポリシーエンジン ◦ Regoという言語でポリシーを表現 ◦ Input(JSON)をPolicy(Rego)で検査するAPIを提供する
Regoとは 19 • OPAで利用するポリシー記述言語 • 普段使ってない脳みそが使われる感じがする ◦ 独特の書き味があって学習ハードルは高め ◦ Masayoshi
MIZUTANIさんのZenn記事にお世話になりました ▪ https://zenn.dev/mizutani/books/d2f1440cfbba94
Conftest、Gatekeeperについて 20 • いずれもOPA/Regoの仕組みを使ったツール • Conftest ◦ Regoを利用して以下のようなコードを検査できる ▪ Kubernetesのマニフェスト
▪ TerraformコードなどのHCL • Gatekeeper ◦ Kubernetes内でOPAのポリシーチェックを回す ▪ Validating Admission Webhookを利用
他社さんの事例 21 • Conftest + Gatekeeperは結構あるあるな構成 • LIFULLさんの事例 ◦ Pod
Security Policyの代替として採用 ▪ https://www.lifull.blog/entry/2021/07/07/200000 • NIKKEIさんの記事 ◦ ハンズオンつき! ▪ https://hack.nikkei.com/blog/advent20201224/
運用戦略 22 • ポリシー専用のリポジトリを用意 ◦ ポリシーと検査の仕組みを密結合にしたくない • ポリシーの適用を完全自動化 ◦ ポリシーが更新されればCIとGatekeeperそれぞれに反映
◦ Gatekeeper用のCRD生成にはKonstraintを利用
実装 23 開発者 Policy(Rego) Gatekeeper Manifests Application Manifests EKS Push
Admission Webhook Update CRD (Konstraint) Sync Pull CI
Kubernetes内部での検査フロー 24 開発者 Policy(Rego) Gatekeeper Manifests EKS Push Admission Webhook
Update CRD (Konstraint) Sync
CIでの検査フロー 25 開発者 Application Manifest (helmfile) Charts ECR EKS Push
Build Update Push kubectl apply Sync CI Reconciliation Loop
CIでの検査フロー 26 開発者 Policy(Rego) Application Manifests Push Pull CI
検査内容 27 • 現時点 ◦ コンテナイメージ名チェック ▪ 特定の命名規則に則っているイメージ名のみ起動を許可 • これから
◦ その他穴埋め ▪ (その気になれば)色々できちゃうので仕組みで防ぐ
まとめ 28 • 確実なk8sマニフェスト検査ができるOPAの仕組みを採用 ◦ 意図しないコンテナの起動を防ぐ • 自動かつ柔軟な検査が可能 ◦ CIとapply時のWチェック、ポリシーの分離
• 手をかけれるかどうかがOPA採用の見極めポイントかも ◦ 作り込みとRegoの習得が必要な点に要注意 ◦ Kyvernoとかが対抗馬か
参考文献 29 PairsにおけるEKSセキュリティの取り組み OPAの話も含め広範囲のセキュリティ対策について触れら れていてすごく参考になります OPA/Rego入門 再掲
Terraformの安全な運用について 2
Terraform、どうやって 運用してますか?
Terraform、どうやって運用してますか? 32
Chatworkでは... 33 SQSが欲しいな... 開発チーム
Chatworkでは... 34 SQSが欲しいな... SQS 1つお願いします! 開発チーム
Chatworkでは... 35 SQS 1つ入りまーす SRE部
Chatworkでは... 36 SQS 1つ入りまーす SRE部 .tf書いてpush
Chatworkでは... 37 SQS 1つ入りまーす SRE部 .tf書いてpush terraform planして
Chatworkでは... 38 SQS 1つ入りまーす SRE部 .tf書いてpush terraform planして plan結果をPRに添付
Chatworkでは... 39 SQS 1つ入りまーす SRE部 .tf書いてpush terraform planして SRE部でレビューして plan結果をPRに添付
Chatworkでは... 40 SQS 1つ入りまーす SRE部 .tf書いてpush terraform planして SRE部でレビューして terraform
apply plan結果をPRに添付
Chatworkでは... 41 SQS 1つ入りまーす SRE部 .tf書いてpush terraform planして SRE部でレビューして terraform
apply apply結果を... plan結果をPRに添付
以前のChatwork Terraform事情 42 • 開発者主体でAWSリソースを作成できなかった ◦ AWSリソース作成は権限を持つSRE部が実施する必要あり • レビューおよび実行記録の保存がしんどい ◦
各個人のmacからterraform apply!→GitHubにぺたぺた • Terraformのバージョン管理がつらい ◦ みんなのバージョン一生揃わない(providerも)
新天地を求めて 43 • 要件 ◦ 開発者が実行可能かつPR上で運用できるスタイルにしたい ◦ tfstateをリモート管理したい ◦ 権限はIAMロール運用としたい
紆余曲折 44 • Terraform Cloud ◦ 第一候補だったがIAMキー必須のためNG • GitHub Actions
/ Self-Hosted Runner ◦ 当時はプランの都合で選択できず...
新天地、Atlantis 45 • GitHub PR上でコメント駆動terraform applyできるOSS ◦ PRのコメントでplan、レビュー後apply、みたいな • Pros
◦ 要件はすべて満たす(PR運用、tfstate、IAMロール) • Cons ◦ 運用コスト(インフラ費、人件費)
The Atlantis Workflow 46 https://www.runatlantis.io/
The Atlantis Workflow 47 https://www.runatlantis.io/
The Atlantis Workflow 48 https://www.runatlantis.io/
The Atlantis Workflow 49 https://www.runatlantis.io/
運用 50 EKS terraform apply terraform apply 開発者 Terraform atlantis
apply pull
導入してみて 51 • 開発者体験の向上 ◦ SRE部に依頼しなくてもAWSリソースが作れる • セキュリティの向上 ◦ 権限はAtlantisさんだけが持てばよい(Atlantisさんつよつよ問題はある)
• ガバナンス(※) の向上 ◦ GitHubでplan見て、レビューしてもらって、applyできる ※ここでいうガバナンスが効いている状態とは、みんなが同じやり方・同じルール下でTerraform運用できる状態を指します
まとめ 52 • 新天地、Atlantis ◦ Terraform運用のつらみ解消 • Terraform運用の開発者体験 / セキュリティ
/ ガバナンス向上に貢献 ◦ 誰でもapplyできて、セキュアで、記録が残る • Atlantisさんのお守りは考える必要アリ ◦ 良くも悪くもself-hosted
AWSリソース作成のガードレールについて 3
こんな経験、ありませんか?
異常発生! 55
わんわん! 56
SRE部、出動! 57 DynamoDBのWCUがサチってるな... 特にサービス影響は出てなさそうだけど... 開発のひとに聞いてみるか...
SRE部、出動! 58 DynamoDBのWCUがサチってるな... 特にサービス影響は出てなさそうだけど... 開発のひとに聞いてみるか...
いやちょっとまて... 59 DynamoDBのWCUがサチってるな... 特にサービス影響は出てなさそうだけど... 開発のひとに聞いてみるか...
SRE部でワンクッション挟む意味 is ...? 60 SRE部 開発チームA 開発チームB
あるべき姿 61 SRE部 開発チームA 開発チームB (必要なら)
課題 62 • そもそも管理チーム不明なAWSリソースがいっぱいある...
お掃除だ! 63
タグ付けだ! 64 管理: 開発チームA 管理: 開発チームB
やらないといけないこと 65 開発メンバ漏れなく周知 新しく入った人への啓蒙
想定されること 66 人は忘れる生き物 口伝の漏れ
仕組みで解決したい 67 • 要件 ◦ AWSリソースをどのチームが管理しているのかをタグで明確にしたい ◦ タグがない場合はAtlantisでリソース作成をブロックしたい
そこでAtlantis + Conftest 68 • できること ◦ Terraformのplan結果をOPAの仕組みで検査 ◦ ポリシー違反であればapply不可
https://www.runatlantis.io/docs/policy-checking.html
やってみた 69 • やること ◦ Atlantisサーバでpolicy_checkを有効化 ◦ Regoを書く(脳みそこねこね) ◦ Atlantisにポリシーを入れる
できた 70 チーム名を明記するタグがないと怒られる
これから 71 • Gatekeeper側と同じような仕組みにしたい ◦ ポリシーの分離と反映の自動化 • 他のポリシー導入検討 ◦ IAMの強い権限がないか、etc...
こんな経験、ありませんか? OPA関係ないけどおまけ
なんかAWSの請求めっちゃ増えてる! 73
Atlantisさん、最近なにか作りました? 74
Atlantisさん、最近なにか作りました? 75 EC2をxx台ほど...
Atlantisさん、最近なにか作りました? 76 EC2をxx台ほど... あー、それかぁ...
必要なら仕方ないけど、作る前にある程度料金を見れないかな... 77
そこでAtlantis + infracost 78 • できること ◦ Terraformのplan結果からある程度の利用料金の増減を予測 https://www.infracost.io/docs/integrations/atlantis/
期待できること 79 あ、これ思ったより料金高いな... 削減できないか考えよう • Atlantisのplan結果(infracost)を見て...
まとめ 80 • Atlantis + ConftestでTerraformの検査を実施 ◦ Regoポリシーでplan結果の自動レビューを行う • Atlantis
+ infracostでコストの可視化を実施 ◦ 予期せぬコストアラートの抑止 • 仕組みで守るガードレール ◦ チェックリストや口伝に頼らない
Kubernetesのセキュリティ向上について Terraformの安全な運用について AWSリソース作成のガードレールについて 1 2 3 AGENDA アジェンダ
全体のまとめ 82 • OPAを使ってセキュリティとガバナンスの向上を実現 ◦ Kubernetes: Conftest + Gatekeeper ◦
Terraform: Atlantis + Conftest, Atlantis + infracost • ダイジなのは運用・開発者体験を損なわないこと ◦ なるべく自動化 ◦ 適切なガードレールを敷く ◦ SRE部がボトルネックにならない • Atlantisはいいぞ ◦ 知名度低い...? ◦ Terraform Cloud推しの人の話も聞いてみたい
宣伝: 採用募集 83
宣伝: 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
働くをもっと楽しく、創造的に