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
HashiCorp Japan Tech Update HashiDays 2023 Reca...
Search
hayata.shimizu
July 07, 2023
Technology
2
740
HashiCorp Japan Tech Update HashiDays 2023 Recap User Session
I talked about our experience in implementing TerraformCloud OPA.
hayata.shimizu
July 07, 2023
Tweet
Share
Other Decks in Technology
See All in Technology
I tried the newly introduced certification "Applied Skills" on Microsoft Learn
mappie_kochi
0
150
テストコードの品質を客観的な数値で担保しよう〜Mutation Testのすすめ〜
ysknsid25
12
3.2k
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
2
240
軽いノリで"自動化"に取り組んではいけないという話
tetsuyaooooo
1
500
OPENLOGI Company Profile
hr01
0
54k
Oracle Database 23ai 新機能#4 Real Application Clusters
oracle4engineer
PRO
0
160
O'Reilly Superstream: Building a RAG App to Chat with Your Data
pamelafox
0
120
kube-vipとkube-proxy置き換えCiliumを積んだ究極のK3sクラスタを建てる
logica0419
4
210
【shownet.conf_】ShowNet 2024 ~ Inter * Network ~
shownet
PRO
0
520
LINEヤフー新卒採用 コーディングテスト解説 実装問題編
lycorp_recruit_jp
1
12k
【shownet.conf_】ShowNet x 宇宙ネットワーク
shownet
PRO
0
410
【shownet.conf_】AI技術とUX監視の応用でShowNetの基盤を支えるモニタリングシステム
shownet
PRO
0
380
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
19
2.9k
10 Git Anti Patterns You Should be Aware of
lemiorhan
653
59k
Designing for humans not robots
tammielis
249
25k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
4
120
The Art of Programming - Codeland 2020
erikaheidi
51
13k
Adopting Sorbet at Scale
ufuk
73
9k
For a Future-Friendly Web
brad_frost
174
9.3k
Visualization
eitanlees
143
15k
Designing on Purpose - Digital PM Summit 2013
jponch
114
6.9k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.8k
Robots, Beer and Maslow
schacon
PRO
157
8.2k
Transcript
Money Forward with Terraform Cloud OPA HashiCorp Japan Tech Update
HashiDays 2023 Recap
2022/04 - Now Money Forward, inc. サービス基盤本部インフラ部Platformグループ所属 全社で利用されるサービス提供基盤の運用/開発。AWS 上で構築されたk8sを中心とした基盤 自己紹介
- 清水 速太 (Shimizu Hayata) 2017/04 - 2022/03 AP Communications Co., Ltd. NW/SVエンジニアとして勤務。 物理NW機器の運用からキャリアを始め、運用自動化 /CICD/IaC/クラウドを経験 2
今日話すこと サービス基盤本部について OPAとは OPA導入の理由 OPAを導入してみて 3
サービス基盤本部 について 4
About us (Money Forward) 5
About us (サービス基盤本部) 「プラットフォームを作る」 6
About us (サービス提供基盤) 7
OPAとは 8
OPAとは Policy-based control for cloud native environments 出典: Cloud Native
Computing Foundation 汎用ポリシーエンジンとポリシー定義言語 9
OPAとは Policy as Code • Sandboxing • Codification • Version
Control • Testing • Automation 出典: HashiCorp https://docs.hashicorp.com/sentinel/concepts/policy-as-code 10
Terraform & OPA OPA on Terraform Cloud 11
OPA導入の理由 12
OPA導入契機 SG障害 13 RDS障害 インフラコスト
OPA導入契機 • AWS SecurityGroupでインシデント発生 • AWS SGのQuota ◦ SGの設定可能なRule数の上限:
60 • SGのRule数上限を超えてApply ◦ AWS APIの制約上、SG削除->SG再作成が正常な動き ◦ 再作成がクォータ上限で失敗 • SGにRuleが存在しない。サービス不通となる障害。 SG障害 14 概要
OPA導入契機 • AWS SecurityGroupでインシデント発生 • AWS SGのQuota ◦ SGの設定可能なRule数の上限:
60 • SGのRule数上限を超えてApply ◦ AWS APIの制約上、SG削除->SG再作成が正常な動き ◦ 再作成がクォータ上限で失敗 • SGにRuleが存在しない。サービス不通となる障害。 SG障害 15 概要
OPA導入契機 • AWS SecurityGroupでインシデント発生 • AWS SGのQuota ◦ SGの設定可能なRule数の上限:
60 • SGのRule数上限を超えてApply ◦ AWS APIの制約上、SG削除->SG再作成が正常な動き ◦ 再作成がクォータ上限で失敗 • SGにRuleが存在しない。サービス不通となる障害。 SG障害 16 概要
OPA導入契機 • AWS SecurityGroupでインシデント発生 • AWS SGのQuota ◦ SGの設定可能なRule数の上限:
60 • SGのRule数上限を超えてApply ◦ AWS APIの制約上、SG削除->SG再作成が正常な動き ◦ 再作成がクォータ上限で失敗 • SGにRuleが存在しない。サービス不通となる障害。 SG障害 17 概要
OPA導入契機 • Quota上限値を超えていないことを確認してからApply すること SG障害 18 対策
OPA導入契機 • AWS RDSでインシデント発生 ◦ engine_version = x.y.z ◦
auto_minor_version_upgrade = true • AWSとTerraformでengine_versionに差分発生 • 差分状態でApplyするとダウングレード ◦ ダウングレードはインスタンス削除 ->再作成 ◦ データ不整合で再作成に失敗 • インスタンスが不在となり、障害。 RDS障害 19 ※要検証ですが修正されている可能性あり 概要
OPA導入契機 • AWS RDSでインシデント発生 ◦ engine_version = x.y.z ◦
auto_minor_version_upgrade = true • AWSとTerraformでengine_versionに差分発生 • 差分状態でApplyするとダウングレード ◦ ダウングレードはインスタンス削除 ->再作成 ◦ データ不整合で再作成に失敗 • インスタンスが不在となり、障害。 RDS障害 20 ※要検証ですが修正されている可能性あり 概要
OPA導入契機 • AWS RDSでインシデント発生 ◦ engine_version = x.y.z ◦
auto_minor_version_upgrade = true • AWSとTerraformでengine_versionに差分発生 • 差分状態でApplyするとダウングレード ◦ ダウングレードはインスタンス削除 ->再作成 ◦ データ不整合で再作成に失敗 • インスタンスが不在となり、障害。 RDS障害 21 ※要検証ですが修正されている可能性あり 概要
OPA導入契機 • AWS RDSでインシデント発生 ◦ engine_version = x.y.z ◦
auto_minor_version_upgrade = true • AWSとTerraformでengine_versionに差分発生 • 差分状態でApplyするとダウングレード ◦ ダウングレードはインスタンス削除 ->再作成 ◦ データ不整合で再作成に失敗 • インスタンスが不在となり、障害。 RDS障害 22 ※要検証ですが修正されている可能性あり 概要
以下の設定を強制 • deletion_protection = true • ignore_changes = [engine_version]
OPA導入契機 RDS障害 23 対策
OPA導入契機 • サービス基盤本部が全事業部のインフラコストを持って いる。 • 会社の成長と比例して部のコストが膨らんでいく。 • 事業部がどれだけインフラにコストを使っているかを把
握できないため、コスト意識が薄れていく。 インフラコスト 24 概要
OPA導入契機 AWS provider default_tags の設定を強制 インフラコスト 25 対策
実行方法検討 人間が確認するの!? 26
ツールの検討 • Terraformの書き方を制限したい • 違反した状態でApplyを禁止したい • ツールの運用をしたくない ツールの要件 27
ツールの検討 TerraformCloud Policy の OPAにしました • Terraform以外にも対象を広げることができる 28
時系列 2022/09 RDS障害発生 2021/? SG障害発生 2022/10 インフラコスト調査開始 2022/10 OPA導入決定 29
時系列 2022/09 RDS障害発生 2021/? SG障害発生 2022/10 インフラコスト調査開始 2022/10 OPA導入決定 2022/10/31
OPA(SG)導入 2022/11/16 OPA(RDS)導入 2022/11/28 OPA(Cost)導入 30
事象の共通項 ? コスト 障害 31
事象の共通項 恐怖 32
恐怖 • 削減の判断ができないコスト • 深夜だからよかったものの、日中帯に起きていたら ... • Platformの信頼性→サービスの信頼性→企業の評価 33 何を
恐怖 に感じていたのか
恐怖 • 削減の判断ができないコスト • 深夜だからよかったものの、日中帯に起きていたら ... • Platformの信頼性→サービスの信頼性→企業の評価 34
恐怖 恐怖 感じたことありませんか? 35
OPAを導入してみて 36
導入してよかったと感じた点 恐怖からの解放 37
導入してよかったと感じた点 よかった点 • policyを管理したいがためにTerraform versionを最 新化できた • これまで各人の知識に偏っていたレビューポイントが明 確化された 38
• 一時的なポリシー解除が難しい。 ◦ whitelist方式でリソース名を追記し、解除する方式を採用 ◦ 本来の変更に加え、 whitelistの追加・削除の変更が必要で手間がかかる •
OPA設定がコード化されておらず、Adminが更新する必要がある。 ◦ Terraform CloudではOPAの設定すらもコード化が可能。 (Policy as Code as Code) ◦ issueとして積まれているので早めに対応したい • Policyに対するテストが組めていない ◦ Policy自体のtestをCIに組み込むことでより良い Policyを維持する 課題に感じている点 39
OPA導入の苦労した点① エラー表示が小さく、詳細な説明を残せない。 40
OPA導入の苦労した点① Policyに対してコードを発行し、別途用意するドキュメント誘導。 エンジニアの理解度や納得度が向上 Terraform Plan結果の画面がスッキリ • Code • Doc URL
• Resource name • denyの理由 • denyの回避方法 • Policy設定の背景 41
OPA導入の苦労した点② Lifecycle ignore_changesに対するアプローチ 「ignore_changesが設定されていること」 42
OPA導入の苦労した点② ignore_changesあり ignore_changesなし ignore_changesなし ignore_changesを扱う場合は、直接 before/afterを参照する 43
まとめ
我々のOPA導入のきっかけは「恐怖」。 皆さんも少しでもTerraformの運用で恐怖を感じたことありませんか? ぜひ、Policy導入の検討を! まとめ 45
46
Appendix 47
今日の資料 48
過去の発表や資料 • 「TerraformのCI/CD - monorepoとTerraform Cloud」 ◦ HashiTalk 2021 ◦
Makita Riki youtube SpeakerDeck 49
過去の発表や資料 • 「組織と事業の急拡大に立ち向かうためのマルチテナントAmazon EKS クラスタ/マ ルチアカウントアーキテクチャ」 ◦ AWS Summit Online
2020 ◦ Ogasawara Junya SpeakerDeck 50