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
Cloudflare Meetup Nagano Vol.3
kaedemalu
0
64
Cloudflare Meetup Nagano Vol.2
kaedemalu
0
1.5k
20220214_Future Tech Night
kaedemalu
0
2.3k
20210910_nyle
kaedemalu
0
970
20210827 Future Tech Night
kaedemalu
0
4.4k
20210210 Terraform meetup ONLINE
kaedemalu
0
650
Future Talk Night 20201118
kaedemalu
0
220
20201114 GCPUG Shonan
kaedemalu
0
450
Future New Graduate Session
kaedemalu
0
79
Other Decks in Technology
See All in Technology
american aa airlines®️ USA Contact Numbers: Complete 2025 Support Guide
aaguide
0
390
cdk initで生成されるあのファイル達は何なのか/cdk-init-generated-files
tomoki10
0
110
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
54
21k
React開発にStorybookとCopilotを導入して、爆速でUIを編集・確認する方法
yu_kod
1
300
fukabori.fm 出張版: 売上高617億円と高稼働率を陰で支えた社内ツール開発のあれこれ話 / 20250704 Yoshimasa Iwase & Tomoo Morikawa
shift_evolve
PRO
2
8.1k
United Airlines Customer Service– Call 1-833-341-3142 Now!
airhelp
0
170
ゼロからはじめる採用広報
yutadayo
3
990
「クラウドコスト絶対削減」を支える技術—FinOpsを超えた徹底的なクラウドコスト削減の実践論
delta_tech
4
180
shake-upを科学する
rsakata
7
800
開発生産性を組織全体の「生産性」へ! 部門間連携の壁を越える実践的ステップ
sudo5in5k
3
7.5k
SREの次のキャリアの道しるべ 〜SREがマネジメントレイヤーに挑戦して、 気づいたこととTips〜
coconala_engineer
1
160
VS CodeとGitHub Copilotで爆速開発!アップデートの波に乗るおさらい会 / Rapid Development with VS Code and GitHub Copilot: Catch the Latest Wave
yamachu
2
190
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Code Review Best Practice
trishagee
69
19k
For a Future-Friendly Web
brad_frost
179
9.8k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.4k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Side Projects
sachag
455
42k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.4k
Testing 201, or: Great Expectations
jmmastey
43
7.6k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.3k
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 -