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
CNDO2021 Open Policy Agent
Search
Taisei Ito
March 11, 2021
Technology
1
1.3k
CNDO2021 Open Policy Agent
CloudNative Days Spring 2021 ONLINE へ登壇した時の資料
https://event.cloudnativedays.jp/cndo2021/talks/811
Taisei Ito
March 11, 2021
Tweet
Share
More Decks by Taisei Ito
See All by Taisei Ito
Cloudflare Meetup Nagano Vol.3
kaedemalu
0
41
Cloudflare Meetup Nagano Vol.2
kaedemalu
0
1.3k
20220214_Future Tech Night
kaedemalu
0
2.2k
20210910_nyle
kaedemalu
0
920
20210827 Future Tech Night
kaedemalu
0
4.3k
20210210 Terraform meetup ONLINE
kaedemalu
0
630
Future Talk Night 20201118
kaedemalu
0
200
20201114 GCPUG Shonan
kaedemalu
0
430
Future New Graduate Session
kaedemalu
0
69
Other Decks in Technology
See All in Technology
OpenID BizDay#17 KYC WG活動報告(法人) / 20250219-BizDay17-KYC-legalidentity
oidfj
0
240
レビューを増やしつつ 高評価維持するテクニック
tsuzuki817
1
710
リアルタイム分析データベースで実現する SQLベースのオブザーバビリティ
mikimatsumoto
0
1.3k
白金鉱業Meetup Vol.17_あるデータサイエンティストのデータマネジメントとの向き合い方
brainpadpr
5
740
Classmethod AI Talks(CATs) #17 司会進行スライド(2025.02.19) / classmethod-ai-talks-aka-cats_moderator-slides_vol17_2025-02-19
shinyaa31
0
120
Data-centric AI入門第6章:Data-centric AIの実践例
x_ttyszk
1
400
Goで作って学ぶWebSocket
ryuichi1208
0
160
OpenID Connect for Identity Assurance の概要と翻訳版のご紹介 / 20250219-BizDay17-OIDC4IDA-Intro
oidfj
0
270
トラシューアニマルになろう ~開発者だからこそできる、安定したサービス作りの秘訣~
jacopen
2
2k
プロダクトエンジニア構想を立ち上げ、プロダクト志向な組織への成長を続けている話 / grow into a product-oriented organization
hiro_torii
1
170
Helm , Kustomize に代わる !? 次世代 k8s パッケージマネージャー Glasskube 入門 / glasskube-entry
parupappa2929
0
250
分解して理解する Aspire
nenonaninu
1
110
Featured
See All Featured
Six Lessons from altMBA
skipperchong
27
3.6k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
1k
GitHub's CSS Performance
jonrohan
1030
460k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
46
2.3k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
193
16k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Navigating Team Friction
lara
183
15k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.2k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7.1k
A Philosophy of Restraint
colly
203
16k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
Transcript
Open Policy Agentで社内の コード統一する夢を見る CloudNative Days Spring 2021 ONLINE Taisei
Ito
2 自己紹介 • 伊藤 太斉(Taisei Ito) ◦ @kaedemalu(Twitter, Github) ◦
Future Corporation ▪ Technology Innovation Group / DX Unit ◦ コンサルタント&インフラエンジニア ◦ #GCP # AWS #Terraform #Ansible • Community ◦ GCPUG Shonan Organizer ◦ CloudNative Days Committee
今の社内のロール • エンジニア ◦ インフラ〜ミドルウェアのチューニング ◦ 顧客のSRE(的な動き) ◦ 社内のOSS活用推進(コミットなど) ◦
インフラのIaC化 • ブログ運営 3
今の社内のロール • エンジニア ◦ インフラ〜ミドルウェアのチューニング ◦ 顧客のSRE(的な動き) ◦ 社内のOSS活用推進(コミットなど) ◦
インフラのIaC化 • ブログ運営 4
IaCのメリット • 再現性が保てる • コードがパラメータシート ◦ ドキュメントよりメンテナンスしやすい • 可搬性がある •
比較的読みやすい&入門しやすい 5
IaCのメリット(特に社内) 6 プロジェクトA Terraform
IaCのメリット(特に社内) 7 プロジェクトA Terraform プロジェクトB
IaCのメリット(特に社内) 8 プロジェクトA Terraform プロジェクトB Terraform
IaCのメリット(特に社内) 9 プロジェクトA Terraform プロジェクトB Terraform 展開可能!
生まれる流派 • Terraform ◦ Module vs. Workspaces ◦ Monorepo vs.
Multirepo • Ansible ◦ ini vs. YAML 10
起こりうること① 11 プロジェクトA Terraform プロジェクトB Terraform 規約A 規約B
起こりうること① 12 プロジェクトA プロジェクトB 規約A 規約B Terraform Terraform
起こりうること① 13 プロジェクトA プロジェクトB 規約A 規約B Terraform Terraform 流派が違う!
起こりうること② 14 プロジェクトA Terraform プロジェクトB Terraform 規約A 規約B
プロジェクトA Terraform プロジェクトB Terraform 起こりうること② 15 規約A 規約B
プロジェクトA Terraform プロジェクトB Terraform 起こりうること② 16 規約A 規約B 異なる可能性
社内標準化が必要 • 将来的を見据えた取り組みが必要 ◦ PJ間での展開 ◦ メンバーのインプット負荷の軽減 ◦ 人による癖をなくす 17
これまでフューチャーは 18 引用:Javaコーディング規約
Terraform版を作りたい 19
いや、 20
作らないといけない(と思った) (使命感) 21
今回のトピック • Open Policy Agentについて • 実際にTerraformのコード評価に使う • 将来的に行いたいこと 22
Open Policy Agentについて 1
Open Policy Agent(OPA)について • OSSで開発 • CNCFのGraduated Project(になった🎉) • Policy
as Codeを実現するツール ◦ Regoという独自のポリシー記述言語 ◦ Kubernetes以外にも制約なく汎用的に利用できる 24
Open Policy Agent(OPA)について 25 引用:Policy as Codeを実現するOpen Policy Agentに憧れて。ポリシーコードで API仕様をLintする
Policy as Codeの技術選定 • Sentinel ◦ HashiCorp社が開発したPaCツール ◦ Terraform Cloudで利用できる(有償)
• OPA ◦ 先に上げた通り ◦ OSSのツール 26
Policy as Codeの技術選定 • Sentinel ◦ HashiCorp社が開発したPaCツール ◦ Terraform Cloudで利用できる(有償)
• OPA ◦ 先に上げた通り ◦ OSSのツール 27
Policy as Codeの技術選定 • Sentinel ◦ HashiCorp社が開発したPaCツール ◦ Terraform Cloudで利用できる(有償)
• OPA ◦ 先に上げた通り ◦ OSSのツール 28 利用の幅が広い
実際に動かす 2
デモやります 30
Rego • Terraformのリソース名を制御する 31
Terraform • EC2を2台作成するコード 32 OKとしたい NGとしたい
ステップ① Plan結果をバイナリ化 • terraform plan -out tfplan.binary で保存 33
ステップ② バイナリからJSON変換 • tf show -json tfplan.binary | jq .
> tfplan.json 34
ステップ③ Regoで評価する • opa eval --format json --data test.rego \
--input tfplan.json "data.test.lint" 35 mail-instanceはNG web_instanceはOKになった ハイフン区切りは制御できる
所感とこれから 3
OPAができること • リソースの制限という意味のポリシー ◦ インスタンスタイプ ◦ リージョン ◦ タグ ◦
etc... 37
OPAができないこと • Terraform自体の構文チェック ◦ Terraformで利用するリソース名はできる ◦ ファイルごと規約としてコードにはできない 38
まずはドキュメンテーション • こういったサイトも参考にしながら。。 39 引用:Terraform Best Practices
まとめ • インフラの横展開を進めるにあたり、コードが大事 ◦ インフラの構成→Terraform, Ansible ◦ IaCのポリシー制御→OPA, Sentinel •
OSSで利用できる方が幅広く対応できる • コードの平和を守るにはOPAだけでなく、複合的に制御 することが大事そう 40
宣伝 4
42 フューチャーについて • 大崎にあるITコンサル会社 • 経営戦略から実装、運用までを全てこなす • ベンダーニュートラルの考え方 • 「ないものは作る」
43 こんな人がいます • Real World HTTPの著者 • Vue.jsのコミッター • Apache
Software Foundationのボードメンバー • OSS「Vuls」の作成者
44 ブログも出しています
- fin -