Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Vault を基盤として整備し、 みんなに使ってもらえるようになるまで

Vault を基盤として整備し、 みんなに使ってもらえるようになるまで

Avatar for Takahiko Suzuki

Takahiko Suzuki

September 02, 2025
Tweet

Other Decks in Technology

Transcript

  1. ©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としてサービス提供開始
  2. ©Internet Initiative Japan Inc. IIJ の SRE • マルチテナント Kubernetes

    クラスタの開発・運用 • 社内クラウド環境上にKubernetesクラスタを構築 • サービス部門がKubernetesプラットフォームとして利用 • Kubernetes を利用する上で必要なシステムの開発・運用 • ロードバランサ • オブジェクトストレージ • モニタリングシステム • コンテナレジストリ • KMS • etc. 社内クラウド 連携 システム
  3. ©Internet Initiative Japan Inc. シークレットの管理に関する課題 • シークレットを格納する方法が定められていない • 仕方がないので •

    Confluenceのプライベートページ • プライベートリポジトリ • 秘密のExcelシート • セキュリティリスク • オペレーションが自動化できない →よろしくないのでシークレット管理システムの導入を検討
  4. ©Internet Initiative Japan Inc. シークレット管理システムの要件 • 社内のシークレット管理インフラとして、部門/プロジェクト問 わず利用可能 • 部門/プロジェクトにテナントを払い出す

    • オンプレ • クラウドサービスの利用は反発が強い • ましてやシークレット管理 • DR 構成 • アカウント/グループ管理を Entra ID (旧Azure AD) と連携させ たい • 他プロダクトとの連携が容易 • Terraform, Ansible, Github, Kubernetes, …
  5. ©Internet Initiative Japan Inc. KMS の選定 • 要件を満たすのは HashiCorp Vault

    Enterprise ほぼ一択 • オンプレ導入ができる • Entra ID と連携 (OIDC) できる • ネームスペースを使うとテナント毎に DB を分離できる • DR 構成もとれる • 他プロダクトとの連携もしやすい • Anisble, Terraform などは Vault API をサポート • REST API, Vault Secrets Operator, …
  6. ©Internet Initiative Japan Inc. システム構成 • 地理的に分散した DC をまたぐ DR

    replication • 1サイトあたり3台のサーバからなるクラスタ Vault Vault Vault DC1 Vault Vault Vault DC2
  7. ©Internet Initiative Japan Inc. Entity のレイアウト 目標: 同一の人/グループが複数のテナント(namespace)に同時に 所属する •

    root namespace • 人間のアカウント • EntraID と連携する外部(external)グループ • テナント (namespace) • root namespace のグループをメンバーとする内部 (internal)グループ
  8. ©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
  9. ©Internet Initiative Japan Inc. 学習コストが高い • Vault 普及の最大の障壁 • テナントの利用者が、払い出されたnamespaceを「とりあえず

    使える」状態にするまでが一苦労 • 必要な設定 • KV エンジンの有効化 • ポリシーの設定 • Entra IDとアカウントおよびグループの連携
  10. ©Internet Initiative Japan Inc. 社内への普及に向けて • トップダウンで「今日から全員Vaultを使え」というタイプの会社 ではない • コスト負担および煩雑な移行作業も必要なので、啓蒙活動は

    おこなうが利用判断・タイミングは部署/プロジェクトに委ね る • トップダウンでなければみんなが使わないほど Vault は酷い プロダクトでもない • とっつきにくいだけで、とてもよくできている
  11. ©Internet Initiative Japan Inc. 社内への普及に向けて • ボトムアップな社風 • ドキュメントがあるとわりと頑張って読んでくれる •

    興味を持つと自発的に宣伝してくれたりする • 「わかんなかったら聞いて」はどちらかというと苦手 • 前向きな気持ちで使って欲しい • 作業が必要なのでメリットを理解した方が広く適用してく れる • 自部署/プロジェクトで手柄として欲しい →興味を持った人のやる気を妨げない環境づくり
  12. ©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
  13. ©Internet Initiative Japan Inc. Vault 導入後 • 環境に関する情報(Vault内でのパスになる)もinventory内に記述 できる •

    手順が定型化でき、オペミスも減らせる • 開発環境など、要件によってはメンテナンスの(半)自動化も • この導入作業をやってくれるのは十分手柄だと思う # Vault トークンの入手。オプションは適宜。 $ vault login –method=oidc $ ansible-playbook –i inventories/ap-northeast-1-prd playbooks/all.yaml
  14. ©Internet Initiative Japan Inc. 社内への普及に向けて • ガバナンス的な観点で見がちだが、現場は現場でうれしいことが ある • 「一度頑張って導入すると楽になるのは君たちだよ」という点を

    伝える • 一度「楽になったな」というのを現場の人に実感してもらえれば、 自発的に横展開してくれる • いかに一度目の「楽になったな」を感じてもらうかが勝負
  15. ©Internet Initiative Japan Inc. 興味を持った人のやる気を妨げない環境づくり • 社内認知は頑張る • 社内勉強会、社内ブログ •

    HashiCorpさんにも協力いただきました 「あのHashiCorpのエンジニアが話をしてくれる」 • 自本部には号令をかけてもらい社内事例作り • ドキュメントはしっかり用意する • 興味が冷める前にVaultを一通り体験できるように • ドキュメントがあると面白がって触ってくれたりする • 一通りの操作を「依頼なし」でできるようにする • 手順が少し複雑でも、管理者に依頼せずに済むフローの方 が好まれる
  16. ©Internet Initiative Japan Inc. テナントの払い出し • テナント作成の際に「とりあえず触れる」レベルになる設定を 流し込む • KVシークレットエンジン

    • グループの作成, Entra ID への紐付け • ポリシーの作成 • テナント管理者グループの作成 • 内部グループの作成 • Entra IDアカウントに対応するEntityをメンバーに登録 • 管理者ポリシーの作成 • ゼロから書くより、既にある設定を変更/拡張/修正する方が敷 居が低い
  17. ©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"
  18. ©Internet Initiative Japan Inc. 社内への普及に向けて • セキュリティ対策への意識が急激に高まった • 利用部門/プロジェクト数が急増 •

    それまで利用コストの按分を嫌っていた部門/プロジェクト での利用許可が下りた、などの声も • Vault側の準備が整っていたおかげで急な増加に際して混乱 はなかった • 結果的に広く使われるようになった • 「このネットワークからも Vault 使えるようにして欲しい」とい う要望をもらうほど広く使われている
  19. ©Internet Initiative Japan Inc. まとめ • Vault Enterprise を使って Entra

    ID と連携したシークレット 管理インフラを構築 • 頑張って導入すると現場がラクになる • やる気になった人のやる気を削がないアプローチで社内への普 及を図った