Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
HashiCorp VaultとTKG(TCE)でSecretを良い感じに管理する
Search
Kazuto Kusama
June 26, 2022
Technology
540
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
HashiCorp VaultとTKG(TCE)でSecretを良い感じに管理する
ツナカン(TUNA-JP Conference) #3 で話した資料です。
Kazuto Kusama
June 26, 2022
More Decks by Kazuto Kusama
See All by Kazuto Kusama
自宅LLMの話
jacopen
1
730
プラットフォームエンジニアリングはAI時代の開発者をどう救うのか
jacopen
9
5.4k
OpenClawで回す組織運営
jacopen
3
1.2k
SREの仕事を自動化する際にやっておきたい5つのポイント
jacopen
6
1.6k
AI時代のインシデント対応 〜時代を切り抜ける、組織アーキテクチャ〜
jacopen
4
400
AI時代の開発とPlatform Engineeringについて考える
jacopen
0
250
AI によってシステム障害が増える!? ~AI エージェント時代だからこそ必要な、インシデントとの向き合い方~
jacopen
4
410
インシデント対応に必要となるAIの利用パターンとPagerDutyの関係
jacopen
0
430
今日からはじめるプラットフォームエンジニアリング
jacopen
8
5.2k
Other Decks in Technology
See All in Technology
AIチャットの改善から見えた、良いAI体験とは / What Constitutes a Good AI Experience: Insights from Improving AI Chat
kubode
0
130
「勝手に広まる」人気 AI エージェントを爆速で作ろう!(AWS Summit Japan 2026講演資料)
minorun365
PRO
10
2.6k
データレイクの「見えない問題」を可視化する
sansantech
PRO
1
220
toB プロダクトから見たWAF
tokai235
0
250
Lightning近況報告
kozy4324
0
230
Zenoh on Zephyr on LiteX
takasehideki
2
130
AIに障害切り分けを全部やってもらった。 。 。 。
estie
0
260
#エンジニアBooks 30分でわかる 「技術記事を書く技術」 / engineer-books 2026-06-30
jnchito
1
130
製造現場での生成AIの活用、およびエージェントAIの実装のあり方、AVEVAの取り組み
iotcomjpadmin
0
180
AI-DLCを “そのまま導入しなかった”話 ~組織に合わせてアジャストした 私たちの実践共有~
hiroramos4
PRO
1
440
5分でわかる Amazon Connect_20260608
hwangbyeonghun
0
130
Hatena Engineer Seminar 37 jj1uzh
jj1uzh
0
150
Featured
See All Featured
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
370
AI: The stuff that nobody shows you
jnunemaker
PRO
8
740
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
How STYLIGHT went responsive
nonsquared
100
6.2k
Fireside Chat
paigeccino
42
4k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
620
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
450
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
260
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Transcript
Copyright © 2021 HashiCorp HashiCorp VaultとTKG(TCE)で Secretを良い感じに管理する
Copyright © 2021 HashiCorp 草間一人 Sr. Solutions Engineer @jacopen Kazuto
Kusama
Secretってありますよね kind: Secret apiVersion: v1 data: username: YWRtaW4= password: MWYyZDFlMmU2N2Rm
metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: { ... } creationTimestamp: 2016-01-22T18:41:56Z name: mysecret namespace: default resourceVersion: "164619" uid: cfee02d6-c137-11e5-8d73-42010af00002 type: Opaque
Secretってありますよね kind: Secret apiVersion: v1 data: username: YWRtaW4= password: MWYyZDFlMmU2N2Rm
metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: { ... } creationTimestamp: 2016-01-22T18:41:56Z name: mysecret namespace: default resourceVersion: "164619" uid: cfee02d6-c137-11e5-8d73-42010af00002 type: Opaque “admin” “1f2d1e2e67df” Base64エンコードされているだけ。Git等に入れるのはNG
せっかくGitOpsにしたのに Secret Secret
せっかくGitOpsにしたのに Secret Secret 間違えてgitに コミットしちゃった! あの鍵って誰が 管理してるの?
Secretのジレンマ ▪ Secretが大事なことは誰もが分かってる ▪ だから既存の自動化フローには載せず、特別対応 – 一部の人だけが手元で厳重に管理 – 権限を絞ったプライベートリポジトリで管理 –
権限を絞ったSpreadsheetで管理 ▪ しかしこの特別対応こそが、Secret Sprawlを生みセキュリティを低 下させる – 人間が把握できる範囲には限界がある – 人間はミスをする
ちゃんと管理しましょう!
こういう管理ができればいい 信頼できる シークレット 管理基盤
アイデンティティベースの シークレットと暗号化の管理システム OSSで提供されているほか、商用版のVault EnterpriseやHCP VaultというManaged Serviceも あります。
こうなる
僕たちが欲しいもの シークレットを”ちゃん と管理”できること
僕たちが欲しいもの 暗号化され安全に 管理されている 追加・削除がすぐ出 来る
僕たちが欲しいもの 誰が使っているか を特定できる 利用者ごとにポリ シーを設定出来る Admin アプリ
僕たちが欲しいもの 安全に 使える 効率的に 使える
k8sに限らず、ありとあらゆるケースで活用可能 今回はk8s+Vaultの組み合わせを中心に紹介
利用方法 or or Server ここで集中管理
利用方法 or or Server CLI GUI API Interface Client Admin
アプリ CI/CD さまざまな人/システムが、さま ざまな方法でアクセス
デプロイ方法 Helmを使ってk8sの中に セットアップ
デプロイ方法 k8sの外に建てたVaultと連携
デプロイ方法 HCP VaultだとHashiCorp ManagedなVaultが使える
認証 Otka JWT/OIDC LDAP Azure AD AWS IAM GitHub Token
etc… AppRole Kubernetes TLS Certs
シンプルな例 - KV Secrets Engine GUIもしくはCLIでVaultに値を保存 vault kv put kv/secret/path
foo=bar or GUI CLI foo=bar
Kubernetesを経由してアプリに渡す foo=bar アプリ vault-agent foo=bar foo=bar init-container or Sidecar
Kubernetesを経由してアプリに渡す Vault Agent InjectorをKubernetes 上にセットアップ。Helmでインストー ル可能 Mutating webhookでPodにInit containerやSidecarを追加してくれ る
CODE EDITOR {{- with secret "internal/data/database/config" -}} postgresql://{{ .Data.data.username }}:{{
.Data.data.password }}@postgres:5432/wizard {{- end -}}
CODE EDITOR spec: template: metadata: annotations: vault.hashicorp.com/agent-inject: "true" vault.hashicorp.com/agent-inject-status: "update"
vault.hashicorp.com/role: "internal-app" vault.hashicorp.com/agent-inject-secret-database-config.txt: "internal/data/database/config" vault.hashicorp.com/agent-inject-template-database-config.txt: | {{- with secret "internal/data/database/config" -}} postgresql://{{ .Data.data.username }}:{{ .Data.data.password }}@postgres:5432/wizard {{- end -}}
TERMINAL > kubectl exec payroll --container payroll \ -- cat
/vault/secrets/database-config.txt postgresql://db-readonly-user:db-secret-password@postgres:5432/wizard Render されたTemplate
Kubernetesを経由してアプリに渡す (CSI Provider) foo=bar アプリ CSI Provider foo=bar foo=bar ボリュームとして
Podにマウント
Kubernetesを経由してアプリに渡す (CSI Provider)
Kubernetesを経由してアプリに渡す (Kubernetes External Secrets) https://github.com/external-secrets/external-secrets External Secrets Controller Secrets foo=bar
foo=bar kube-apiserver External Secrets
External Secrets Operator ▪ 前述のKubernetes External Secrets (KES)は メンテナンスモードに ▪
後継のExternal Secrets Operatorが登場 – https://github.com/external-secrets/external-secrets – Vaultにも対応 – まだ試したことないので誰か教えてください
証明書まわりの機能
PKI ルート認証局 X.509証明書 • Vault を中間認証局として設定 • 認証や暗号化通信に必要な署名済みの X.509証明書を動的に発行 X.509証明書
Signed X.509証明書 Lease Lease Application A Application B 中間認証局
PKI ルート認証局 X.509証明書 Signed Application A Application B 中間認証局 Certificates
Secret Certificates Secret
Tanzuならではの活用
こいつの扱いに困る! tanzu management-cluster create -f management.yaml
consul-template Vault上の secrets/tkg/clusters/workload から値を持ってくる それをBase64エンコードする
consul-template consul-template -template "/tmp/template.yaml:/tmp/cluster.yaml" -once
紹介しきれないので まずは触ってみて! $ vault server -dev
Thank You
[email protected]
www.hashicorp.com