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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Kazuto Kusama
June 26, 2022
Technology
1
520
HashiCorp VaultとTKG(TCE)でSecretを良い感じに管理する
ツナカン(TUNA-JP Conference) #3 で話した資料です。
Kazuto Kusama
June 26, 2022
Tweet
Share
More Decks by Kazuto Kusama
See All by Kazuto Kusama
SREの仕事を自動化する際にやっておきたい5つのポイント
jacopen
6
1.3k
AI時代のインシデント対応 〜時代を切り抜ける、組織アーキテクチャ〜
jacopen
4
280
AI時代の開発とPlatform Engineeringについて考える
jacopen
0
58
AI によってシステム障害が増える!? ~AI エージェント時代だからこそ必要な、インシデントとの向き合い方~
jacopen
4
340
インシデント対応に必要となるAIの利用パターンとPagerDutyの関係
jacopen
0
280
今日からはじめるプラットフォームエンジニアリング
jacopen
8
4.5k
Platform Engineeringで クラウドの「楽しくない」を解消しよう
jacopen
8
1.6k
トラシューアニマルになろう ~開発者だからこそできる、安定したサービス作りの秘訣~
jacopen
4
6k
あなたの興味は信頼性?それとも生産性? SREとしてのキャリアに悩むみなさまに伝えたい選択肢
jacopen
7
11k
Other Decks in Technology
See All in Technology
OpenShiftでllm-dを動かそう!
jpishikawa
0
140
SREチームをどう作り、どう育てるか ― Findy横断SREのマネジメント
rvirus0817
0
360
usermode linux without MMU - fosdem2026 kernel devroom
thehajime
0
240
Embedded SREの終わりを設計する 「なんとなく」から計画的な自立支援へ
sansantech
PRO
3
2.6k
外部キー制約の知っておいて欲しいこと - RDBMSを正しく使うために必要なこと / FOREIGN KEY Night
soudai
PRO
12
5.6k
登壇駆動学習のすすめ — CfPのネタの見つけ方と書くときに意識していること
bicstone
3
130
30万人の同時アクセスに耐えたい!新サービスの盤石なリリースを支える負荷試験 / SRE Kaigi 2026
genda
4
1.4k
[CV勉強会@関東 World Model 読み会] Orbis: Overcoming Challenges of Long-Horizon Prediction in Driving World Models (Mousakhan+, NeurIPS 2025)
abemii
0
150
【Ubie】AIを活用した広告アセット「爆速」生成事例 | AI_Ops_Community_Vol.2
yoshiki_0316
1
120
pool.ntp.orgに ⾃宅サーバーで 参加してみたら...
tanyorg
0
1.4k
ECS障害を例に学ぶ、インシデント対応に備えたAIエージェントの育て方 / How to develop AI agents for incident response with ECS outage
iselegant
4
450
Claude_CodeでSEOを最適化する_AI_Ops_Community_Vol.2__マーケティングx_AIはここまで進化した.pdf
riku_423
2
610
Featured
See All Featured
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
Amusing Abliteration
ianozsvald
0
110
Writing Fast Ruby
sferik
630
62k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.8k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
230
Deep Space Network (abreviated)
tonyrice
0
67
Music & Morning Musume
bryan
47
7.1k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
72
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
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