Slide 1

Slide 1 text

Sentinel Future-Daily-Standup-Meeting Kubernetes Ecosystem Study 2019-08-26 Mano Junki

Slide 2

Slide 2 text

What is Sentinel?

Slide 3

Slide 3 text

Sentinel Sentinelは、インフラの変更が安全であることを確実にするた めに、ビジネスポリシーと規制ポリシーをコード化することで変 更範囲を制限します。infrastructure as codeとpolicy as codeを 統合することで、利用者はインフラ管理を安全に自動化できます 2017年にHashiCorpが提唱。アクセスポリシーをコードとして 記述可能にするという意味で、同社ツールが実現してきた 「Infrastructure as Code」に掛けて「Policy as Code」とした。 実現するためのツールは”Sentinel”。 https://www.publickey1.jp/blog/17/hashicorpsentinelpolicy_as_codehashiconf17.html

Slide 4

Slide 4 text

What is “Policy as a Code”?

Slide 5

Slide 5 text

Policy as a Code • Infrastructure as Codeの普及から、Terraform(HCL)や Kubernetes Menifest(YAML)などの宣言的なコンフィグの 複雑性が勃興 • これらの定義は宣言的であるので、チェックが難しい(レビュアーや規約 でガンバって後はテスト)。その割に神経質になる必要がありツラミ。 • 例えば、命名ルールや、設定された値について(k8sのレプリカ数が Staging以降は3以上であるべきなどは暗黙値化しやすい) →Policy as a Codeと呼ばれるツール

Slide 6

Slide 6 text

Usage

Slide 7

Slide 7 text

RE: Sentinel • Policy as a Codeを実現するための草分け的なツール • HashiCorpエンタープライズに入れば利用可能 • 専用のDSLでルールを記載

Slide 8

Slide 8 text

Example • ステージングが「us-east-1」リージョンにデプロイされ、本番環境が「us-west-1」にデプロイ されることを保証するSentinelポリシーの例です。 https://www.hashicorp.com/blog/why-policy-as-code

Slide 9

Slide 9 text

sentinel test sentinel test で検証

Slide 10

Slide 10 text

DevOps

Slide 11

Slide 11 text

CI • 機械的にチェックできることはルールセットを定義して、それ をもとに lint でチェックして CI で失敗させるのが効率的 • 人が意思入れしたものを、コードで宣言的に表現できる (Bastionサーバだけはプレフィスクを付ける、リソースリ ミットをこのクラスタには入れる、など)

Slide 12

Slide 12 text

(個人的)チェックしたいこと

Slide 13

Slide 13 text

(個人的)チェックしたいこと一覧 Terraformに対して • 命名規約系 • 環境数ごとのvariableがあるか(prd, stg, etc.) • GKE最大ノード数、マシンタイプ • 外部IP付与 • Firewall Ruleプロトコル(ssh, https) • Firewall Ruleの優先度(他のリソースとの依存性) • LoadBalancerに固定IPが必須(エフェメラルNG) • etc. →クリエイティブな仕事

Slide 14

Slide 14 text

まとめ

Slide 15

Slide 15 text

まとめ • SentinelはPolicy as a Codeと呼ばれる静的解析のLinter • Linterのルールには、各自ポリシーや業務ルールを組み込め、 より宣言的に、よりCI組み込みにフレンドリー • ただし、Sentinelの利用にはEnterprise*利用 * 現状、OSS版の提供は無し https://www.hashicorp.com/products/terraform/offerings

Slide 16

Slide 16 text

Thank you