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
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
250
インフラ観点で見るセキュリティ〜4Cモデルに倣って〜
saramune
0
170
適材適所
saramune
1
150
ChatworkのSRE部って実は 半分くらいPlatform Engineering部かもしれない
saramune
0
820
週刊AWSキャッチアップ(2024/03/25週)
saramune
0
190
なんでもかんでもコンテナ化すればいいってもんでもないけど なんでもかんでもコンテナ化したらスッキリしました
saramune
2
500
ACKを活用して 使い捨てAWS検証環境を構築している話
saramune
0
1.5k
Other Decks in Technology
See All in Technology
記録をかんたんに、提案をパーソナルに ── AIであすけんが目指すもの
oprstchn
0
130
「ビジネスがわかるエンジニア」とは何か?
ryooob
0
490
本当の”仕事”を手放せる未来が見えた
mu7889yoon
0
220
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
8k
AI駆動開発におけるQAエンジニアの役割事例 〜AI駆動開発の現場から〜
kobayashiyorimitsu
0
290
ループエンジニアリングでE2Eテストを実践
noriyukitakei
0
240
SRE歴2ヶ月でも開発6年の知見を活かして、チームで止まっていた環境改善を前に進めた話
a_ono
0
180
背中から、背中へ /paying forward to community
naitosatoshi
0
210
そこにあるから地図ができる~位置を示す"モノ"を愉しむ~ - Interface 2026年6月号GPS特集オフ会 / interface_202606_GPS_offline
sakaik
1
190
初めてのDatabricks勉強会
taka_aki
2
230
【FinOps】データドリブンな意思決定を目指して
z63d
3
590
Kotlin 開発のツラミを爆破した話! / Explode the difficulty of Kotlin dev!
eller86
0
140
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
A Tale of Four Properties
chriscoyier
163
24k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
The SEO Collaboration Effect
kristinabergwall1
1
500
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
For a Future-Friendly Web
brad_frost
183
10k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
270
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
150
Navigating Team Friction
lara
192
16k
Designing for humans not robots
tammielis
254
26k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
300
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
働くをもっと楽しく、創造的に