CNDO2021 Open Policy Agent
by
Taisei Ito
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
Open Policy Agentで社内の コード統一する夢を見る CloudNative Days Spring 2021 ONLINE Taisei Ito
Slide 2
Slide 2 text
2 自己紹介 ● 伊藤 太斉(Taisei Ito) ○ @kaedemalu(Twitter, Github) ○ Future Corporation ■ Technology Innovation Group / DX Unit ○ コンサルタント&インフラエンジニア ○ #GCP # AWS #Terraform #Ansible ● Community ○ GCPUG Shonan Organizer ○ CloudNative Days Committee
Slide 3
Slide 3 text
今の社内のロール ● エンジニア ○ インフラ〜ミドルウェアのチューニング ○ 顧客のSRE(的な動き) ○ 社内のOSS活用推進(コミットなど) ○ インフラのIaC化 ● ブログ運営 3
Slide 4
Slide 4 text
今の社内のロール ● エンジニア ○ インフラ〜ミドルウェアのチューニング ○ 顧客のSRE(的な動き) ○ 社内のOSS活用推進(コミットなど) ○ インフラのIaC化 ● ブログ運営 4
Slide 5
Slide 5 text
IaCのメリット ● 再現性が保てる ● コードがパラメータシート ○ ドキュメントよりメンテナンスしやすい ● 可搬性がある ● 比較的読みやすい&入門しやすい 5
Slide 6
Slide 6 text
IaCのメリット(特に社内) 6 プロジェクトA Terraform
Slide 7
Slide 7 text
IaCのメリット(特に社内) 7 プロジェクトA Terraform プロジェクトB
Slide 8
Slide 8 text
IaCのメリット(特に社内) 8 プロジェクトA Terraform プロジェクトB Terraform
Slide 9
Slide 9 text
IaCのメリット(特に社内) 9 プロジェクトA Terraform プロジェクトB Terraform 展開可能!
Slide 10
Slide 10 text
生まれる流派 ● Terraform ○ Module vs. Workspaces ○ Monorepo vs. Multirepo ● Ansible ○ ini vs. YAML 10
Slide 11
Slide 11 text
起こりうること① 11 プロジェクトA Terraform プロジェクトB Terraform 規約A 規約B
Slide 12
Slide 12 text
起こりうること① 12 プロジェクトA プロジェクトB 規約A 規約B Terraform Terraform
Slide 13
Slide 13 text
起こりうること① 13 プロジェクトA プロジェクトB 規約A 規約B Terraform Terraform 流派が違う!
Slide 14
Slide 14 text
起こりうること② 14 プロジェクトA Terraform プロジェクトB Terraform 規約A 規約B
Slide 15
Slide 15 text
プロジェクトA Terraform プロジェクトB Terraform 起こりうること② 15 規約A 規約B
Slide 16
Slide 16 text
プロジェクトA Terraform プロジェクトB Terraform 起こりうること② 16 規約A 規約B 異なる可能性
Slide 17
Slide 17 text
社内標準化が必要 ● 将来的を見据えた取り組みが必要 ○ PJ間での展開 ○ メンバーのインプット負荷の軽減 ○ 人による癖をなくす 17
Slide 18
Slide 18 text
これまでフューチャーは 18 引用:Javaコーディング規約
Slide 19
Slide 19 text
Terraform版を作りたい 19
Slide 20
Slide 20 text
いや、 20
Slide 21
Slide 21 text
作らないといけない(と思った) (使命感) 21
Slide 22
Slide 22 text
今回のトピック ● Open Policy Agentについて ● 実際にTerraformのコード評価に使う ● 将来的に行いたいこと 22
Slide 23
Slide 23 text
Open Policy Agentについて 1
Slide 24
Slide 24 text
Open Policy Agent(OPA)について ● OSSで開発 ● CNCFのGraduated Project(になった🎉) ● Policy as Codeを実現するツール ○ Regoという独自のポリシー記述言語 ○ Kubernetes以外にも制約なく汎用的に利用できる 24
Slide 25
Slide 25 text
Open Policy Agent(OPA)について 25 引用:Policy as Codeを実現するOpen Policy Agentに憧れて。ポリシーコードで API仕様をLintする
Slide 26
Slide 26 text
Policy as Codeの技術選定 ● Sentinel ○ HashiCorp社が開発したPaCツール ○ Terraform Cloudで利用できる(有償) ● OPA ○ 先に上げた通り ○ OSSのツール 26
Slide 27
Slide 27 text
Policy as Codeの技術選定 ● Sentinel ○ HashiCorp社が開発したPaCツール ○ Terraform Cloudで利用できる(有償) ● OPA ○ 先に上げた通り ○ OSSのツール 27
Slide 28
Slide 28 text
Policy as Codeの技術選定 ● Sentinel ○ HashiCorp社が開発したPaCツール ○ Terraform Cloudで利用できる(有償) ● OPA ○ 先に上げた通り ○ OSSのツール 28 利用の幅が広い
Slide 29
Slide 29 text
実際に動かす 2
Slide 30
Slide 30 text
デモやります 30
Slide 31
Slide 31 text
Rego ● Terraformのリソース名を制御する 31
Slide 32
Slide 32 text
Terraform ● EC2を2台作成するコード 32 OKとしたい NGとしたい
Slide 33
Slide 33 text
ステップ① Plan結果をバイナリ化 ● terraform plan -out tfplan.binary で保存 33
Slide 34
Slide 34 text
ステップ② バイナリからJSON変換 ● tf show -json tfplan.binary | jq . > tfplan.json 34
Slide 35
Slide 35 text
ステップ③ Regoで評価する ● opa eval --format json --data test.rego \ --input tfplan.json "data.test.lint" 35 mail-instanceはNG web_instanceはOKになった ハイフン区切りは制御できる
Slide 36
Slide 36 text
所感とこれから 3
Slide 37
Slide 37 text
OPAができること ● リソースの制限という意味のポリシー ○ インスタンスタイプ ○ リージョン ○ タグ ○ etc... 37
Slide 38
Slide 38 text
OPAができないこと ● Terraform自体の構文チェック ○ Terraformで利用するリソース名はできる ○ ファイルごと規約としてコードにはできない 38
Slide 39
Slide 39 text
まずはドキュメンテーション ● こういったサイトも参考にしながら。。 39 引用:Terraform Best Practices
Slide 40
Slide 40 text
まとめ ● インフラの横展開を進めるにあたり、コードが大事 ○ インフラの構成→Terraform, Ansible ○ IaCのポリシー制御→OPA, Sentinel ● OSSで利用できる方が幅広く対応できる ● コードの平和を守るにはOPAだけでなく、複合的に制御 することが大事そう 40
Slide 41
Slide 41 text
宣伝 4
Slide 42
Slide 42 text
42 フューチャーについて ● 大崎にあるITコンサル会社 ● 経営戦略から実装、運用までを全てこなす ● ベンダーニュートラルの考え方 ● 「ないものは作る」
Slide 43
Slide 43 text
43 こんな人がいます ● Real World HTTPの著者 ● Vue.jsのコミッター ● Apache Software Foundationのボードメンバー ● OSS「Vuls」の作成者
Slide 44
Slide 44 text
44 ブログも出しています
Slide 45
Slide 45 text
- fin -