CNDO2021 Open Policy Agent
by
Taisei Ito
×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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 -