SlideShare a Scribd company logo
Copyright © 2019 HashiCorp
HashiCorp Vaultによる
シークレット管理と
データプロテクション
© 2018 HashiCorp
Networking
Connect infrastructure
and applications
Development
Run applications
Security
Secure applications and
infrastructure
Operations
Provision Infrastructure
The 4 essential
elements of
dynamic
infrastructure
2THE HASHICORP STACK
© 2018 HashiCorp
Connect
THE HASHICORP STACK
Infrastructure and
applications
Development
Run applications
Security
Secure infrastructure and
applications
Operations
Provision infrastructure
The 4 essential
elements
of distributed
infrastructure
3
アジェンダ
● HashiCorp Vaultとは
● Vaultのユースケース
○ シークレット管理
○ データプロテクション
HashiCorp Vault とは
https://www.vaultproject.io
● シークレットのライフサイクルの集中管理
● データプロテクション : API-Drivenな暗号化
● 20+ のシークレットに対応
○ Database, RabbitMQ, Public Clouds, SSH, PKI
About
Vault
500+ 顧客数
1M+ 月間ダウンロード数
10.4K+ Github スター
2T+ トランザクション
プロダクトローンチ2014
Shift to Dynamic
自社で完全に制御可能なインフラ環境上での
ペリメータセキュリティ
制御可能で信頼性の高いネットワーク
明確なネットワークペリメータセキュリティ
IPアドレスベースのセキュリティ
従来のアプローチ
自社では制御不可能な境界が曖昧な
マルチクラウド環境上でのセキュリティ
制御不可能な環境を前提とした対策
環境の境界が不明確なペリメータセキュリティ
動的でIDベースのセキュリティ
Vaultのアプローチ
シークレット発行の一般的なワークフロー
8
シークレット発行の一般的なワークフロー
9
1) Agility
シークレット発行で時間がかかり開発やリ
リースのアジリティに影響
シークレット発行の一般的なワークフロー
10
2) Security Risk
人やプロジェクト間でシークレットが
共有され、管理が不可能に
シークレット発行の一般的なワークフロー
11
3) Security Risk
アプリ間やインスタンス間でシークレットが共
有され、一つのシークレットリークが全体に影
響
シークレット発行の一般的なワークフロー
12
4) Ops Cost
全てのインスタンスでシークレットを共有してい
るため、シークレットを差し替える際にローリン
グアップグレードが必要
人的ミスによるシークレットリーク
13
spring.datasource.url = jdbc:postgresql://kabuctl.run/database
spring.datasource.username = foo
spring.datasource.password = bar
variable "access_key" { default = xxxxx }
variable "secret_key" { default = xxxxx }
apiVersion: apps/v1
kind: Deployment
~~~~
containers:
- name: subscriber
image: gcr.io/google-samples/pubsub-sample:v1
volumeMounts:
- name: google-cloud-key
mountPath: /var/secrets/google
env:
- name: GOOGLE_APPLICATION_CREDENTIALS
value: /var/secrets/google/key.json
クラウドネイティブ, DevOps, Microservices
ツール、アプリや環境
ツール、アプリや環境
重要なシークレット
重要なシークレット
運用コスト
セキュリティ
● クラウドネイティブ, DevOps, Microservices
● ツール、アプリや環境
● 重要なシークレット
運用コスト
セキュリティ
• 多くのシークレットが存在しており、セキュアに管理されていない
• シークレット管理のコストが高い
• シークレットへのアクセス管理が出来ていない
• シークレットの動的な発行やローテーションを行うのが困難である
• シークレット管理や暗号化に関するガバナンスが効いていない
• クラウド、Dynamicな環境に対応した既存のツールがない
Vault Origins
シークレット管理 データプロテクション
Vaultのユースケース
シークレット(トークン、パスワード、証明書や暗号化キー)の
中央集権的な生成、保存、提供
データ暗号化のためのシンプルなAPIと暗号化のキー管理の機能
を提供し、アプリケーションのデータをセキュアに保つ
*シークレットとは認証認可を与えるものの総称で DBクレデンシャル、クラウドの IAM、トークン、
TLS証明書、ID&パスワード、SSH Keyなどを指します
Vaultによるシークレット管理
● パスワードの使い回し
● 同一シークレットの長期利用
● アプリなどのクライアントのコンフィグに重
要なシークレットを記入
● クラウドのアカウント乱立
● シークレットのエクセル管理
● シークレットのシングルレポジトリ
● Vaultから様々なシークレットを発行
● 期限(TTL)付与しシークレットのライフサイ
クルをコントロール
● プラットフォームフリー
● 監査ログにて全てのシークレットの発行状
況やアクセス状況を把握
よくある一般的な運用 Vaultによるシークレット管理
シークレット管理の手間や、
同じシークレットを長期間利用し続ける
ことのリスク
クラウドアカウントの統制が効かない
シークレット管理を改善し、
短期間で新しいシークレットを発行
Vaultによるシークレット管理ワークフロー
Client
Backend
シークレット要
求
シークレット発行
TTL=1hour
シークレット提
供
TTL後
シークレット破棄
Token
Terminal
$ vault read database/creds/mysql-role
→ VaultがDatabaseのSQLを実行し、ユーザとパスワードを発行
$ vault read aws/creds/vpc-admin
→ VaultがAWS API実行し、IAMキーを発行
$ vault read ssh/role/otp
→ VaultがVM上でシェルを実行し、 SSHパスワードを発行
$ vault write pki_intermediate/issue/kabuctl-dot-run 
common_name="blog.kabuctl.run"
→ Vaultが認証局となり、証明書を発行
Vault Dynamic Secrets Principals
22
● あらゆる外部サービスのシークレット管理を集約し、自動化
● リクエストに応じてオンデマンドで必要最低限のTTLのシークレットを生成
● クライアントはVaultに対して最低限のアクセスレベルを有する
● 動的にシークレットを破棄する
● 全てのシークレットの全てライフサイクルは監査可能である
Secrets Management: Secret Engines
Vaultへの認証フローとポリシー
24
Client
$ curl --request POST 
http://127.0.0.1:8200/v1/auth/github/login
organization=hashicorp
team=team-a
Role: mysql-client-policy
path "mysql/*" {
capabilities = [ "read", "create", "delete"]
}
$ vault login -method=github
Vault
Token
GitHub Token
Vault Auth Method
application.properties
spring.datasource.url = jdbc:postgresql://kabuctl.run/database
spring.datasource.username = foo
spring.datasource.password = bar
pipeline.yml
jobs:
- name: hello-world
plan:
- task: say-hello
params:
MY_SECRET: P@$$w0rd
クライアントの変化の例
Before After
application.properties
spring:
cloud:
vault:
uri: VAULT_ADDR
token: TOKEN
mysql:
enabled: true
role: my-role
backend: database
datasource:
url: jdbc:mysql://127.0.0.1:3306
シークレット管理 データプロテクション
Vaultのユースケース
シークレット(トークン、パスワード、証明書や暗号化キー)の
中央集権的な生成、保存、提供
データ暗号化のためのシンプルなAPIと暗号化のキー管理の機能
を提供し、アプリケーションのデータをセキュアに保つ
*シークレットとは認証認可を与えるものの総称で DBクレデンシャル、クラウドの IAM、トークン、
TLS証明書、ID&パスワード、SSH Keyなどを指します
● アプリ毎にロジックを作成
● 鍵ローテーションの運用が決まっていな
い
● 暗号化ロジックの開発者に依存したメン
テナンス
● HSMを利用していてコストが高い
● VaultによるHTTP APIで暗号化が可能
(機能追加が簡単)
● 鍵の運用やローテーションも考慮不要
(Vaultが対応)
● 複数の暗号化ロジックから選択可能
● ソフトウェアなのでスケーラブル
よくある一般的な運用 Vaultによる暗号化
暗号化の手法や品質が開発者に依存、
キーの管理コストが高い、
もしくはそもそも管理されていない
APIドリブンな安全で高品質な暗号化、
キーのライフサイクル管理を Vaultに委託
Vaultによる個人情報などのデータ暗号化
HashiCorp Vault 紹介
HashiCorp Vault 紹介
アプリはVaultにデー
タを転送し、Vaultが
暗号化する
Vaultによって暗号され
たデータがデータストア
に保存される
データストアから取得した暗号化
されたアプリデータをVaultによっ
て復号化し、アプリに提供する
Write Read
アプリデータ
暗号化された
アプリデータ
アプリデータ
暗号化されたデータ
暗号化されたデータ
復号化されたデータ
Encryption as a Service
Vault
Enterprise
機能名 概要
DR Replication
Vaultクラスター間でトークン、シークレットやキーを含めたレプリケーションを
し可用性を向上
Performance Replication
Vaultクラスター間でシークレットなどをレプリケーションし、複数クラスタで
リードを処理しパフォーマンスを向上
Performance Standby 1クラスタ内で複数のリードノードを立てパフォーマンスを向上
Control Groups
Response Wrapping Tokenにアクセスする際に認証フローを入れセキュ
リティを向上
HSM Auto-unseal Hardware Security Moduleによる自動unseal
Replication Filters
クラスタ間でレプリケーションするデータの条件を指定してフィルタリングをす
る
Policy as Code (Sentinel) SentinelによるVault APIコール等に関するポリシーの設定
Multi Factor Authentication Vaultへの多要素の認証
Key takeaways
● Vaultで運用コストを抑えつつより強固なセキュリティを
○ マルチクラウドやダイナミックな環境のシークレット管理ならVault !
○ アプリに透過的なAPI-Driveな暗号化やキー管理ならVault !!
Performance Standby
EnterpriseOSS
ActiveStandby Standby
read
write
read
write
read
write
ActivePerf Standby Perf
Standby
read
write
read
write
read
write
Cluster Cluster
DR Replication
Vault Active cluster
(Primary cluster)
Vault Standby Cluster
(Secondary)
Token, configuration, Secretな
どのレプリケーション
Vault Standby cluster
Performance Replication
Vault Active cluster
(Primary cluster)
Vault Perf Standby cluster
(Secondary cluster)
Vault Perf Standby cluster
(Secondarymary cluster)
read read read
write write write
Configuration
Secrets
Configuration
Secrets
Configuration
Secrets
転送 転送
複製 複製
DR ReplicationとPerformance Replication
Header DR Replication Performance Replication
プライマリクラスタのコングレーションのミラーリング Yes Yes
認証やシークレットエンジンなどのプライマリのバックエンドの
コンフィグのミラーリング
Yes Yes
リースやトークンまたはプライマリクラスタとインタラクションを
しているユーザのミラーリング
Yes
No.
セカンダリクラスタは独自のデータを持つため、セカ
ンダリがプロモーションするときにアプリやサイド認
証をし、新しいプライマリから再度リースやトークンを
取得する
セカンダリクラスタがリクエストを処理できるか Yes Yes
Policy as Code (Sentinel)
● 通常のACLの設定に加えてVaultの安全性を保つためにより高度で柔軟な設
定を実現する
○ Role Governing Policies (RGPs)
■ 特定のトークンやIDに関連付けるポリシー
○ Endpoint Governing Policies (EGPs)
■ Vaultの特定のエンドポイントに関連付けるポリシー
4時間以内に生成された
トークンのみ許可する
LDAPログイン時にMFAを
必ず要求し、10.20.0.0/16
からのクライアントのみアク
セスを許可する
指定したデータに対して変
更を加える際に、
指定したMFAで
認証されたsysopsの
クライアントであることを確
認する
HashiCorp Vault 紹介

More Related Content

PDF
AWSのログ管理ベストプラクティス
PDF
DockerとPodmanの比較
PDF
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PDF
OpenStack超入門シリーズ いまさら聞けないSwiftの使い方
PDF
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
PDF
Vacuum徹底解説
PDF
Fluentdのお勧めシステム構成パターン
PDF
SQL大量発行処理をいかにして高速化するか
AWSのログ管理ベストプラクティス
DockerとPodmanの比較
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
OpenStack超入門シリーズ いまさら聞けないSwiftの使い方
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Vacuum徹底解説
Fluentdのお勧めシステム構成パターン
SQL大量発行処理をいかにして高速化するか

What's hot (20)

PPTX
Dockerからcontainerdへの移行
PDF
deep dive distributed tracing
PDF
DBスキーマもバージョン管理したい!
PDF
Infrastructure as Code (IaC) 談義 2022
PDF
Snowflake Architecture and Performance
PDF
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
PDF
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
PDF
containerdの概要と最近の機能
PDF
[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送
PPTX
BuildKitによる高速でセキュアなイメージビルド
PDF
例外設計における大罪
PPTX
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
PDF
実装して理解するLINE LoginとOpenID Connect入門
PPTX
Docker Tokyo
PPTX
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
PDF
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
PDF
Serverless時代のJavaについて
PDF
DevOps with Database on AWS
PDF
Best Practices for Running PostgreSQL on AWS
PDF
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
deep dive distributed tracing
DBスキーマもバージョン管理したい!
Infrastructure as Code (IaC) 談義 2022
Snowflake Architecture and Performance
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
containerdの概要と最近の機能
[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送
BuildKitによる高速でセキュアなイメージビルド
例外設計における大罪
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
実装して理解するLINE LoginとOpenID Connect入門
Docker Tokyo
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
Serverless時代のJavaについて
DevOps with Database on AWS
Best Practices for Running PostgreSQL on AWS
Dockerからcontainerdへの移行
Ad

Similar to HashiCorp Vault 紹介 (9)

PPTX
Terraform with Bitbucket pipeline
PDF
楽天における安全な秘匿情報管理への道のり
PDF
Vault の鍵管理機構
PPTX
Azure SecOps! Azure Key Vaultを用いたクラウドのキー管理
PPTX
vault meetup #1 IaCでvaultを10倍楽しく運用する方法
PPTX
Azure Key Vault
PPTX
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
PDF
CSI Driverを開発し自社プライベートクラウドにより適した安全なKubernetes Secrets管理を実現した話
PPTX
FIWARE アーキテクチャの保護 - FIWARE WednesdayWebinars
Terraform with Bitbucket pipeline
楽天における安全な秘匿情報管理への道のり
Vault の鍵管理機構
Azure SecOps! Azure Key Vaultを用いたクラウドのキー管理
vault meetup #1 IaCでvaultを10倍楽しく運用する方法
Azure Key Vault
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
CSI Driverを開発し自社プライベートクラウドにより適した安全なKubernetes Secrets管理を実現した話
FIWARE アーキテクチャの保護 - FIWARE WednesdayWebinars
Ad

HashiCorp Vault 紹介