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を使った セキュアなDBアクセスの実現/Secure DB ac...
Search
Yokoyama Tatsuo
March 20, 2021
Technology
0
1.9k
HashiCorp Vaultを使った セキュアなDBアクセスの実現/Secure DB access with HashiCorp Vault
JAWSDAYS2021
Yokoyama Tatsuo
March 20, 2021
Tweet
Share
More Decks by Yokoyama Tatsuo
See All by Yokoyama Tatsuo
SREとその組織類型
tatsuo48
13
3.4k
AWS Fargateでお手軽開発ブランチデプロイ/Easy development branch deployment with AWS Fargate
tatsuo48
0
110
Terraformのレポジトリ、 ディレクトリ構成どうする?/Terraform repository, directory structure What should I do?
tatsuo48
6
3.1k
インフラエンジニアとアプリ開発
tatsuo48
0
180
Other Decks in Technology
See All in Technology
なぜインフラコードのモジュール化は難しいのか - アプリケーションコードとの本質的な違いから考える
mizzy
51
16k
ある編集者のこれまでとこれから —— 開発者コミュニティと歩んだ四半世紀
inao
4
2.6k
AIと自動化がもたらす業務効率化の実例: 反社チェック等の調査・業務プロセス自動化
enpipi
0
470
「もっと正確に、もっと効率的に」ANDPADの写真書き込み機能における、 現場の声を形にしたエンハンス
andpad
0
100
AWS オブザーバビリティサービスアップデート
o11yfes2023
0
100
Redux → Recoil → Zustand → useSyncExternalStore: 状態管理の10年とReact本来の姿
zozotech
PRO
14
7.5k
機密情報の漏洩を防げ! Webフロントエンド開発で意識すべき漏洩パターンとその対策
mizdra
PRO
9
3.2k
内部品質・フロー効率・コミュニケーションコストを悪化させ現場を苦しめかねない16の組織設計アンチパターン[超簡易版] / 16 Organization Design Anti-Patterns for Software Development
mtx2s
2
350
エンジニアにとってコードと並んで重要な「データ」のお話 - データが動くとコードが見える:関数型=データフロー入門
ismk
0
510
Dart and Flutter MCP serverで実現する AI駆動E2Eテスト整備と自動操作
yukisakai1225
0
460
今、MySQLのバックアップを作り直すとしたら何がどう良いのかを考える旅
yoku0825
0
300
[CV勉強会@関東 ICCV2025 読み会] World4Drive: End-to-End Autonomous Driving via Intention-aware Physical Latent World Model (Zheng+, ICCV 2025)
abemii
0
170
Featured
See All Featured
Designing for humans not robots
tammielis
254
26k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.3k
The Cost Of JavaScript in 2023
addyosmani
55
9.2k
Speed Design
sergeychernyshev
32
1.2k
Rails Girls Zürich Keynote
gr2m
95
14k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
Raft: Consensus for Rubyists
vanstee
140
7.2k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Visualization
eitanlees
150
16k
The Pragmatic Product Professional
lauravandoore
36
7k
Transcript
HashiCorp Vaultを使った セキュアなDBアクセスの実現 横山達男(@tatsuo4848) | 2021/03/20
本セッションのターゲット • RDSのパスワード管理に悩んでいる方 • HashiCorp Vaultでどんなことができるのか興味がある方
小田原にあるHameeから来ました!
自己紹介 twitterアカウント:@tatsuo4848 GitHubアカウント:tatsuo48 ~ これまでの経歴 ~ 拝承系SIer(インフラエンジニア、お客様サポート) ⬇ 株式会社みんなのウェディング(インフラエンジニア、SRE) ⬇
Hamee株式会社(SRE、TechLead) 三度の飯よりAWSが好き
Hameeについて
Hameeについて
Hameeについて
Next Engineの機能
Next Engineのシステム構成 メイン機能 Platform API アプリ アプリ アプリ アプリ アプリ
アプリ
Next Engineのシステム構成 メイン機能 Platform API アプリ アプリ アプリ アプリ アプリ
アプリ AWSで運用中
Next Engineのシステム構成 メイン機能 Platform API アプリ アプリ アプリ アプリ アプリ
アプリ AWSで運用予定 (さくらインターネットから移行中 ) AWSで運用中
Next Engineのシステム構成 メイン機能 Platform API アプリ アプリ アプリ アプリ アプリ
アプリ
Next Engineのシステム構成(移行完了後) メイン機能 Platform API アプリ アプリ アプリ アプリ アプリ
アプリ Auroraクラスター
メイン機能 Next Engineのシステム構成(移行完了後) Platform API アプリ アプリ アプリ アプリ アプリ
アプリ Auroraクラスター Auroraクラスター Auroraクラスター Auroraクラスター
メイン機能 Next Engineのシステム構成(移行完了後) Platform API アプリ アプリ アプリ アプリ アプリ
アプリ Auroraクラスター Auroraクラスター Auroraクラスター Auroraクラスター Auroraクラスター Auroraクラスター Auroraクラスター Auroraクラスター Auroraクラスター
増え続けるDBインスタンスの ユーザ管理をどうする?
課題 • サービス成長と共に増えつづけるDBインスタンスのユーザ管理をどうする? ◦ 問い合わせ対応などで開発者ごとのDBユーザ発行は必須!
課題 • サービス成長と共に増えつづけるDBインスタンスのユーザ管理をどうする? ◦ 共通ユーザを作成 ▪ 定期的なパスワードローテーションが必要 ▪ パスワードの安全な共有方法が必要
課題 • サービス成長と共に増えつづけるDBインスタンスのユーザ管理をどうする? ◦ 共通ユーザを作成 ▪ 定期的なパスワードローテーションが必要 ▪ パスワードの安全な共有方法が必要 ◦
開発者ごとにDBユーザを作成 ▪ 定期的なパスワードローテーションが必要 ▪ 入社、退社時の作業コストが大
どちらの手段も一長一短
HashiCorp Vaultで解決!
HashiCorp Vaultで解決! • IAM認証情報を元にRDSの期限付きユーザを発行する仕組みを構築 ◦ パスワードローテーション不要 ◦ パスワード共有方法も考えなくていい ◦ 入社退社時にIAMの更新対応は元から必要なので新規コストは発生せず
全体構成図
HashiCorp Vaultについて
HashiCorp Vaultについて • Terraformで有名なHashiCorp社が開発したプロダクト • 機密情報管理 • 以下を行ってくれる ◦ 任意の認証基盤(Auth
Methods)を使った認証 ◦ ポリシー(Policies)に基づき機密情報(Secrets Engines)へのアクセスを認可 • Dynamic Secretsという動的な機密情報生成の仕組み
認証と認可 • めちゃくちゃわかりやすい記事がありますのでそちらをお読みください ◦ 出典:DevelopersIO,よくわかる認証と認可 ◦ https://dev.classmethod.jp/articles/authentication-and-authorization/
認証と認可 • めちゃくちゃわかりやすい記事がありますのでそちらをお読みください ◦ 出典:DevelopersIO,よくわかる認証と認可 ◦ https://dev.classmethod.jp/articles/authentication-and-authorization/ • 認証は「通信の相手が誰(何)であるかを確認すること」 •
認可は「とある特定の条件に対して、リソースアクセスの権限を与えること」
認証と認可(HashiCorp Vaultの場合)
認証と認可(HashiCorp Vaultの場合) 認証は「認証情報を元に、認証基盤に正しい通信相手か確認すること」
認証と認可(HashiCorp Vaultの場合) 認証は「認証情報を元に、認証基盤に正しい通信相手か確認すること」 認可は「認証が通ったユーザに、ポリシーに基づいて機密情報へのアクセス権限を与えること」
Dynamic Secrets • 通常の機密情報(Secrets Engines)はVault内に暗号化して保存 • Dynamic Secretsは少し特殊 ◦ アクセスのたびに自動で生成される
Dynamic Secrets アクセスのたびに自動でIAMユーザが作成される 設定したTTLが切れた際のIAMユーザ削除までVaultが責任を持って実施
認証にIAM、SecretsEngineにRDS
構成図
認証にIAM • AWS SSOログイン後、接続したいDBが存在するアカウントに設定した IAMロールのCredentials を取得
認証にIAM • Credentialsを使って署名した、署名済みリクエスト (sts:GetCallerIdentityRequest)を渡す
認証にIAM • 署名済みリクエストをIAMのエンドポイントに送り、どのロールの Credentialsで署名したのか?を 確認
認証にIAM • 認証完了!
SecretsEngineにRDS • 正しいトークンが付与されたリクエストをなげる
SecretsEngineにRDS • 認証済みユーザに対して何が認可できるか?をポリシーで確認 ◦ 対象となるRDSインスタンス ◦ 発行するDBユーザの権限
SecretsEngineにRDS • DBユーザ/パスワードを作成する
SecretsEngineにRDS • DBユーザ/パスワードをレスポンスとして返す
DBアクセスについて
Vaultは認証、認可のみ • VaultによってDBの一時ユーザ/パスワードを入手 • プライベートサブネットに配置したRDSに安全に接続する仕組みが必要 • 開発者はSequelProなどのGUIツールが使いたい ◦ SSMを使って踏み台インスタンスを用意するだけではだめ ◦
SSHトンネリングが必要
SSM with SSH • SSMを使ってSSH接続 • SSH接続なのでSCPもSSHトンネリングもできる! • ssm-userではなく、任意のユーザでSSH接続させられるのでルート権限も渡さずに済 む
まとめ
全体構成図
まとめと今後の展望 • まとめ ◦ VaultとIAMを組み合わせることでセキュアなDBアクセスの仕組みを実現 • 今後の展望 ◦ EC2によるDB踏み台がいらない構成にしてみたい! ▪
Fargate踏み台やってみたいな〜
最後に宣伝!
積極採用中です! • 採用ページ ◦ https://recruit.hamee.co.jp/odawara • 珍しい福利厚生 ◦ 小田原手当 ▪
小田原周辺地域に居住する正社員に対し、月2万円を支給! ◦ いざ!小田原 ▪ 正社員の新幹線・特急電車・飛行機・船・高速バスでの通勤OK
ご静聴ありがとうございました!
None