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
Vault を基盤として整備し、 みんなに使ってもらえるようになるまで
Search
Takahiko Suzuki
September 02, 2025
Technology
1
150
Vault を基盤として整備し、 みんなに使ってもらえるようになるまで
Takahiko Suzuki
September 02, 2025
Tweet
Share
Other Decks in Technology
See All in Technology
後進育成のしくじり〜任せるスキルとリーダーシップの両立〜
matsu0228
4
1.6k
Tomorrow graphlib, Let us use everybody
hayaosuzuki
0
160
What is BigQuery?
aizack_harks
0
120
AI時代だからこそ考える、僕らが本当につくりたいスクラムチーム / A Scrum Team we really want to create in this AI era
takaking22
6
2.9k
OCI Network Firewall 概要
oracle4engineer
PRO
1
7.7k
職種別ミートアップで社内から盛り上げる アウトプット文化の醸成と関係強化/ #DevRelKaigi
nishiuma
2
130
ユニットテストに対する考え方の変遷 / Everyone should watch his live coding
mdstoy
0
120
全てGoで作るP2P対戦ゲーム入門
ponyo877
3
1.3k
Azure Well-Architected Framework入門
tomokusaba
0
200
非同期処理実行基盤 Delayed脱出 → Solid Queue完全移行への旅路。
srockstyle
3
1.6k
"複雑なデータ処理 × 静的サイト" を両立させる、楽をするRails運用 / A low-effort Rails workflow that combines “Complex Data Processing × Static Sites”
hogelog
3
1.7k
履歴 on Rails: Bitemporal Data Modelで実現する履歴管理/history-on-rails-with-bitemporal-data-model
hypermkt
0
2k
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
BBQ
matthewcrist
89
9.8k
Automating Front-end Workflow
addyosmani
1371
200k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Gamification - CAS2011
davidbonilla
81
5.5k
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.9k
Producing Creativity
orderedlist
PRO
347
40k
How to Ace a Technical Interview
jacobian
280
23k
GraphQLの誤解/rethinking-graphql
sonatard
72
11k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Context Engineering - Making Every Token Count
addyosmani
4
170
Become a Pro
speakerdeck
PRO
29
5.5k
Transcript
©Internet Initiative Japan Inc. Vault を基盤として整備し、 みんなに使ってもらえるようになるまで 株式会社インターネットイニシアティブ ネットワークサービス事業本部 ネットワーク本部
SRE推進部 シニアエンジニア 鈴木 高彦
©Internet Initiative Japan Inc. IIJ のご紹介
©Internet Initiative Japan Inc. 国内初の「商用インターネット接続サービス」事業者です。 東証上場時 創業時オフィス IIJは、1992年に設立され翌年「日本初の商用インターネット接続サービス」の提供をはじめました。以来、IIJグループはネットワーク社会の基盤をつくり、技術力でその発 展を支えてきました。IIJは、これからもインターネットの進化を支え続けていきます。 2022年12月3日に30周年を迎えました
IIJは、高い技術力で“国内初“を創り続けています。 ➢ 1993年 国内初 商用インターネット接続サービス提供開始 ➢ 1994年 国内初 ファイアウォールサービス提供開始 ➢ 1999年 国内初 サービス品質保証制度(SLA)を導入 ➢ 1999年 国内初 IPv6の商用実験サービスを提供開始 ➢ 2003年 国内初 ルータ管理システム「IIJ SMF」を開発し特許取得 ➢ 2005年 国内初 送信ドメイン認証技術の導入を開始 ➢ 2011年 国内初 外気冷却を利用したコンテナ型データセンターを開 設 ➢ 2018年 国内初 フルMVNOとしてサービス提供開始
©Internet Initiative Japan Inc. IIJ の SRE • マルチテナント Kubernetes
クラスタの開発・運用 • 社内クラウド環境上にKubernetesクラスタを構築 • サービス部門がKubernetesプラットフォームとして利用 • Kubernetes を利用する上で必要なシステムの開発・運用 • ロードバランサ • オブジェクトストレージ • モニタリングシステム • コンテナレジストリ • KMS • etc. 社内クラウド 連携 システム
©Internet Initiative Japan Inc. 導入
©Internet Initiative Japan Inc. シークレットの管理に関する課題 • シークレットを格納する方法が定められていない • 仕方がないので •
Confluenceのプライベートページ • プライベートリポジトリ • 秘密のExcelシート • セキュリティリスク • オペレーションが自動化できない →よろしくないのでシークレット管理システムの導入を検討
©Internet Initiative Japan Inc. シークレット管理システムの要件 • 社内のシークレット管理インフラとして、部門/プロジェクト問 わず利用可能 • 部門/プロジェクトにテナントを払い出す
• オンプレ • クラウドサービスの利用は反発が強い • ましてやシークレット管理 • DR 構成 • アカウント/グループ管理を Entra ID (旧Azure AD) と連携させ たい • 他プロダクトとの連携が容易 • Terraform, Ansible, Github, Kubernetes, …
©Internet Initiative Japan Inc. KMS の選定 • 要件を満たすのは HashiCorp Vault
Enterprise ほぼ一択 • オンプレ導入ができる • Entra ID と連携 (OIDC) できる • ネームスペースを使うとテナント毎に DB を分離できる • DR 構成もとれる • 他プロダクトとの連携もしやすい • Anisble, Terraform などは Vault API をサポート • REST API, Vault Secrets Operator, …
©Internet Initiative Japan Inc. 構成
©Internet Initiative Japan Inc. システム構成 • 地理的に分散した DC をまたぐ DR
replication • 1サイトあたり3台のサーバからなるクラスタ Vault Vault Vault DC1 Vault Vault Vault DC2
©Internet Initiative Japan Inc. Entity のレイアウト 目標: 同一の人/グループが複数のテナント(namespace)に同時に 所属する •
root namespace • 人間のアカウント • EntraID と連携する外部(external)グループ • テナント (namespace) • root namespace のグループをメンバーとする内部 (internal)グループ
©Internet Initiative Japan Inc. Entra ID Group Entity のレイアウト root
namespace Vault Entra ID 人間の Entity Entity Alias External Group Tenant (namespace) Internal Group member Policy Secret Engines Entra ID User
©Internet Initiative Japan Inc. 社内への普及
©Internet Initiative Japan Inc. 学習コストが高い • Vault 普及の最大の障壁 • テナントの利用者が、払い出されたnamespaceを「とりあえず
使える」状態にするまでが一苦労 • 必要な設定 • KV エンジンの有効化 • ポリシーの設定 • Entra IDとアカウントおよびグループの連携
©Internet Initiative Japan Inc. 社内への普及に向けて • トップダウンで「今日から全員Vaultを使え」というタイプの会社 ではない • コスト負担および煩雑な移行作業も必要なので、啓蒙活動は
おこなうが利用判断・タイミングは部署/プロジェクトに委ね る • トップダウンでなければみんなが使わないほど Vault は酷い プロダクトでもない • とっつきにくいだけで、とてもよくできている
©Internet Initiative Japan Inc. 社内への普及に向けて • ボトムアップな社風 • ドキュメントがあるとわりと頑張って読んでくれる •
興味を持つと自発的に宣伝してくれたりする • 「わかんなかったら聞いて」はどちらかというと苦手 • 前向きな気持ちで使って欲しい • 作業が必要なのでメリットを理解した方が広く適用してく れる • 自部署/プロジェクトで手柄として欲しい →興味を持った人のやる気を妨げない環境づくり
©Internet Initiative Japan Inc. Vault 導入前 • Ansibleのリポジトリに入れられない情報をplaybook実行前に補う 作業が必要 •
手順書に書けないので「今回使うパスワードはどれ?」のような 混乱になりがち • パスワードが列挙されたページを見るときの後ろめたさ # 秘密のconfluenceページからパスワードを探す $ SECRET_KEY=himitsu123 # 秘密鍵を秘密のリポジトリからコピーする $ cp himitsu_repository/server.key somewhere/certs/ # 秘密のパスワードを設定ファイルに埋め込む $ vim files/secret.yaml $ ansible-playbook –i inventories/ap-northeast-1-prd playbooks/all.yaml
©Internet Initiative Japan Inc. Vault 導入後 • 環境に関する情報(Vault内でのパスになる)もinventory内に記述 できる •
手順が定型化でき、オペミスも減らせる • 開発環境など、要件によってはメンテナンスの(半)自動化も • この導入作業をやってくれるのは十分手柄だと思う # Vault トークンの入手。オプションは適宜。 $ vault login –method=oidc $ ansible-playbook –i inventories/ap-northeast-1-prd playbooks/all.yaml
©Internet Initiative Japan Inc. 社内への普及に向けて • ガバナンス的な観点で見がちだが、現場は現場でうれしいことが ある • 「一度頑張って導入すると楽になるのは君たちだよ」という点を
伝える • 一度「楽になったな」というのを現場の人に実感してもらえれば、 自発的に横展開してくれる • いかに一度目の「楽になったな」を感じてもらうかが勝負
©Internet Initiative Japan Inc. 興味を持った人のやる気を妨げない環境づくり • 社内認知は頑張る • 社内勉強会、社内ブログ •
HashiCorpさんにも協力いただきました 「あのHashiCorpのエンジニアが話をしてくれる」 • 自本部には号令をかけてもらい社内事例作り • ドキュメントはしっかり用意する • 興味が冷める前にVaultを一通り体験できるように • ドキュメントがあると面白がって触ってくれたりする • 一通りの操作を「依頼なし」でできるようにする • 手順が少し複雑でも、管理者に依頼せずに済むフローの方 が好まれる
©Internet Initiative Japan Inc. テナントの払い出し • どうしてもテナント(namespace)の払い出し申請は必要 • 他テナントとの隔離のため •
その際にできるだけのことをしてあげちゃう
©Internet Initiative Japan Inc. テナントの払い出し • テナント作成の際に「とりあえず触れる」レベルになる設定を 流し込む • KVシークレットエンジン
• グループの作成, Entra ID への紐付け • ポリシーの作成 • テナント管理者グループの作成 • 内部グループの作成 • Entra IDアカウントに対応するEntityをメンバーに登録 • 管理者ポリシーの作成 • ゼロから書くより、既にある設定を変更/拡張/修正する方が敷 居が低い
©Internet Initiative Japan Inc. テナントの払い出し • 利用者が増えるほど、テナント (namespace)の作成が大変 • YAMLで定義したテナントの設定を
Terraformで読み込み作成 • 「とりあえず触る」ための設定一 式を流し込む • YAMLならTerraform以外のツール からも扱いやすい name: sre costCenterCode: “${コスト按分用コード}" administrators: -
[email protected]
-
[email protected]
groups: - name: "members" aadGroupNames: - “IIJ-XXX-SRE" - “IIJ-XXX-PROJECT123" - name: "operators" aadGroupNames: - “IIJ-XXX-PROJECT456"
©Internet Initiative Japan Inc. 社内への普及に向けて • 狙い通り、先進的なユーザーによって使われるようになった • 問い合わせを見ても、ドキュメントをちゃんと読んでくれてい る
• 理解も徐々に進み、着々と利用者が増える状況となった
©Internet Initiative Japan Inc. 当日限り
©Internet Initiative Japan Inc. 社内への普及に向けて • セキュリティ対策への意識が急激に高まった • 利用部門/プロジェクト数が急増 •
それまで利用コストの按分を嫌っていた部門/プロジェクト での利用許可が下りた、などの声も • Vault側の準備が整っていたおかげで急な増加に際して混乱 はなかった • 結果的に広く使われるようになった • 「このネットワークからも Vault 使えるようにして欲しい」とい う要望をもらうほど広く使われている
©Internet Initiative Japan Inc. まとめ • Vault Enterprise を使って Entra
ID と連携したシークレット 管理インフラを構築 • 頑張って導入すると現場がラクになる • やる気になった人のやる気を削がないアプローチで社内への普 及を図った
©Internet Initiative Japan Inc. ご清聴ありがとうございました。