Slide 1

Slide 1 text

Vault on Kubernetes gotoken @kennygt51

Slide 2

Slide 2 text

自己紹介 gotoken Twitter:@kennygt51 経歴:  SIerで運用SE(5年)   → Webの会社でインフラエンジニア(0.5年) 業務内容:  既存インフラのコンテナ化・クラウド化

Slide 3

Slide 3 text

アジェンダ ・Vaultとは ・Vault Architecture ・Kubernetes上に構築する ・デプロイ時に秘匿情報を環境変数に展開する

Slide 4

Slide 4 text

Vaultとは

Slide 5

Slide 5 text

Vaultとは ・HashiCorp社の秘匿情報管理ソフトウェア ・Dynamic Secretsなど、様々な秘匿情報管理機能を持つ ・クライアント/サーバ型で動作する ・クライアントで秘匿情報の保存や取得コマンドを実行 ・秘匿情報自体はサーバに保存 ・ユースケースとしては、サービス(秘匿情報)が多数ある場合、namespaceを跨ぐ秘 匿情報の共有が必要な場合、audit loggingなど

Slide 6

Slide 6 text

Vault Architecture

Slide 7

Slide 7 text

Client Vault storage backend Vault server Vault Architecture Seal / Unseal ・クライアント/サーバモデル ・Vault CLI / HTTP API でアクセス ・Storage Backendに暗号化したデータを保存 詳細は以下 https://www.vaultproject.io/docs/internals/architecture.html https://www.kennys.tech/read-vault-architecture/

Slide 8

Slide 8 text

Kubernetes上に構築する

Slide 9

Slide 9 text

・Deployment ・Cluster IP Service ・AWS KMS(Auto-unsealing) ・DynamoDB(Storage Backend)

Slide 10

Slide 10 text

デプロイ時に秘匿情報を環境変数に展開する

Slide 11

Slide 11 text

envconsul ・consul / vaultから集めた環境変数と共に、サブプロセスを起動するツール

Slide 12

Slide 12 text

# envconsul \ > -config="./config.hcl" \ > -secret="secret/myapp/config" \ > env 2019/07/20 05:11:57.423996 looking at vault secret/myapp/config ・・・ secret_myapp_config_username=appuser # envconsul -secret secret/common_app -secret secret/a_app bundle exec rails s ユースケース ・特定のpath配下の秘匿情報を環境変数として展開し、アプリケーションを起動 ・pathベースでの、アクセスコントロール(運用模索中。。) 使い方

Slide 13

Slide 13 text

ご清聴ありがとうございました @kennygt51