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
1
500
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
AI によってシステム障害が増える!? ~AI エージェント時代だからこそ必要な、インシデントとの向き合い方~
jacopen
4
240
インシデント対応に必要となるAIの利用パターンとPagerDutyの関係
jacopen
0
100
今日からはじめるプラットフォームエンジニアリング
jacopen
8
3.8k
Platform Engineeringで クラウドの「楽しくない」を解消しよう
jacopen
8
840
トラシューアニマルになろう ~開発者だからこそできる、安定したサービス作りの秘訣~
jacopen
4
5.2k
あなたの興味は信頼性?それとも生産性? SREとしてのキャリアに悩むみなさまに伝えたい選択肢
jacopen
7
9.6k
PaaSの歴史と、 アプリケーションプラットフォームのこれから
jacopen
7
2.8k
AI x インシデント管理で拡げるサービスオーナーシップ
jacopen
0
270
間違いだらけのポストモーテム - ホントに役立つレビューはこうだ!
jacopen
7
2k
Other Decks in Technology
See All in Technology
Webアプリケーションにオブザーバビリティを実装するRust入門ガイド
nwiizo
7
860
5分でカオスエンジニアリングを分かった気になろう
pandayumi
0
250
AI時代を生き抜くエンジニアキャリアの築き方 (AI-Native 時代、エンジニアという道は 「最大の挑戦の場」となる) / Building an Engineering Career to Thrive in the Age of AI (In the AI-Native Era, the Path of Engineering Becomes the Ultimate Arena of Challenge)
jeongjaesoon
0
210
ブロックテーマ時代における、テーマの CSS について考える Toro_Unit / 2025.09.13 @ Shinshu WordPress Meetup
torounit
0
130
Evolución del razonamiento matemático de GPT-4.1 a GPT-5 - Data Aventura Summit 2025 & VSCode DevDays
lauchacarro
0
210
要件定義・デザインフェーズでもAIを活用して、コミュニケーションの密度を高める
kazukihayase
0
120
「何となくテストする」を卒業するためにプロダクトが動く仕組みを理解しよう
kawabeaver
0
420
ハードウェアとソフトウェアをつなぐ全てを内製している企業の E2E テストの作り方 / How to create E2E tests for a company that builds everything connecting hardware and software in-house
bitkey
PRO
1
160
La gouvernance territoriale des données grâce à la plateforme Terreze
bluehats
0
190
Django's GeneratedField by example - DjangoCon US 2025
pauloxnet
0
150
自作JSエンジンに推しプロポーザルを実装したい!
sajikix
1
190
バイブスに「型」を!Kent Beckに学ぶ、AI時代のテスト駆動開発
amixedcolor
2
580
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.4k
Visualization
eitanlees
148
16k
BBQ
matthewcrist
89
9.8k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.9k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.6k
Statistics for Hackers
jakevdp
799
220k
Done Done
chrislema
185
16k
A designer walks into a library…
pauljervisheath
207
24k
A Modern Web Designer's Workflow
chriscoyier
696
190k
Gamification - CAS2011
davidbonilla
81
5.4k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
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