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.4k
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
Grafana Meetup Japan Vol. 6
kaedemalu
1
580
Cloudflare Meetup Nagano Vol.3
kaedemalu
0
82
Cloudflare Meetup Nagano Vol.2
kaedemalu
0
1.7k
20220214_Future Tech Night
kaedemalu
0
2.4k
20210910_nyle
kaedemalu
0
1k
20210827 Future Tech Night
kaedemalu
0
4.4k
20210210 Terraform meetup ONLINE
kaedemalu
0
670
Future Talk Night 20201118
kaedemalu
0
230
20201114 GCPUG Shonan
kaedemalu
0
460
Other Decks in Technology
See All in Technology
QAエンジニアがプロダクト専任で チームの中に入ると。。。?/登壇資料(杉森 太樹)
hacobu
PRO
0
190
隙間ツール開発のすすめ / PHP Conference Fukuoka 2025
meihei3
0
350
Lazy Constant - finalフィールドの遅延初期化
skrb
0
130
AIでテストプロセスを自動化しよう251113.pdf
sakatakazunori
0
110
コード1ミリもわからないけど Claude CodeでFigjamプラグインを作った話
abokadotyann
1
160
ubuntu-latest から ubuntu-slim へ移行しよう!コスト削減うれしい~!
asumikam
0
470
3年ぶりの re:Invent 今年の意気込みと前回の振り返り
kazzpapa3
0
200
LINE公式アカウントの技術スタックと開発の裏側
lycorptech_jp
PRO
0
350
フライトコントローラPX4の中身(制御器)を覗いてみた
santana_hammer
1
140
Flutterで実装する実践的な攻撃対策とセキュリティ向上
fujikinaga
1
340
旧から新へ: 大規模ウェブクローラの Perl から Go への移行 / YAPC::Fukuoka 2025
motemen
2
760
AIと自動化がもたらす業務効率化の実例: 反社チェック等の調査・業務プロセス自動化
enpipi
0
110
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
Music & Morning Musume
bryan
46
6.9k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Fireside Chat
paigeccino
41
3.7k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Facilitating Awesome Meetings
lara
57
6.6k
Git: the NoSQL Database
bkeepers
PRO
432
66k
The Cult of Friendly URLs
andyhume
79
6.7k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
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 -