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
ALBがついに対応したmTLS認証でトラストストア、パススルーを検証してみた
Search
tessy
December 20, 2023
Technology
0
2.2k
ALBがついに対応したmTLS認証でトラストストア、パススルーを検証してみた
ALBでmTLS認証を検証
tessy
December 20, 2023
Tweet
Share
More Decks by tessy
See All by tessy
Cloudflareで取得したドメインをRoute53+ACMで管理する
tessy
0
93
EC2 AutoScalingでスケーリングポリシー設定を失敗してうまく行かなった件とその対策
tessy
0
690
TerraformでEC2 Auto Scaling構築してみた
tessy
4
880
Other Decks in Technology
See All in Technology
ガバメントクラウド先行事業中間報告を読み解く
sugiim
1
2k
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間
oracle4engineer
PRO
28
12k
組み込みLinuxの時系列
puhitaku
3
860
dev 補講: プロダクトセキュリティ / Product security overview
wa6sn
0
130
プロポーザルのつくり方 〜個人技編〜 / How to come up with proposals
ohbarye
4
290
Microsoft Intune アプリのトラブルシューティング
sophiakunii
1
350
ライブラリでしかお目にかかれない珍しい実装
mikanichinose
1
210
AI長期記憶システム構築のための LLMマルチエージェントの取り組み / Awarefy-LLM-Multi-Agent
iktakahiro
2
260
What to do after `laravel new`
mattstauffer
0
130
形式手法の 10 メートル手前 #kernelvm / Kernel VM Study Hokuriku Part 7
ytaka23
5
610
データの信頼性を支える仕組みと技術
chanyou0311
3
860
Datachain会社紹介資料(2024年11月) / Company Deck
datachain
4
17k
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
46
2.1k
How GitHub (no longer) Works
holman
310
140k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Building Applications with DynamoDB
mza
90
6.1k
A better future with KSS
kneath
238
17k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
37
1.8k
Designing on Purpose - Digital PM Summit 2013
jponch
115
6.9k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
15
2k
Thoughts on Productivity
jonyablonski
67
4.3k
Six Lessons from altMBA
skipperchong
26
3.5k
Faster Mobile Websites
deanohume
304
30k
Transcript
ALBがついに対応したmTLS認証で トラストストア、パススルー を検証してみた ⽇本IBM ⼿嶋 達也 2023/12/20
⾃⼰紹介 @tterima 取得したAWS資格 2013年4⽉〜2022年4⽉ アプリ開発チームに所属 2022年5⽉〜現在 インフラ(AWS)チームに所属 ようやくAWS経験が2年を超えました。 全冠まで残り1つ
re:Invent 2023(の直前)でALBのmTLS認証が発表されました!! https://aws.amazon.com/jp/about-aws/whats-new/2023/11/application-load-balancer-authenticate-x509-certificate-based-identities/
mTLS認証(相互TLS認証)があると 何が嬉しいのか
mTLS認証(相互TLS認証)があると何が嬉しいのか 従来設定 サーバ証明書により、サーバの真正性のみ確認 ALB 特定のデバイスのみアクセスさせたいサイトを想定します。 IDを発⾏していますが、悪意がある攻撃者にID情報が漏洩しました。 ログイン 成功
mTLS認証設定 mTLS認証により、相互の真正性を確認 ALB ログイン 失敗 mTLS認証(相互TLS認証)があると何が嬉しいのか 従来設定 サーバ証明書により、サーバの真正性のみ確認 ALB 特定のデバイスのみアクセスさせたいサイトを想定します。
IDを発⾏していますが、悪意がある攻撃者にID情報が漏洩しました。 ログイン 成功
これまでのmTLS対応 これまでmTLS認証を⾏うためには以下の通り、NLBでHTTPS要求をパススルー してApache等でクライアント認証を⾏う必要がありました。 このため、ALBのパスベースルーティングなどが困難でした。 これからは、ALBが利⽤できますね。 さらに、ALBでクライアント認証検証が可能となるため、EC2を建てる必要もなく なります。(トラストストア検証の場合) NLB Instance
構築してみよう
mTLS認証⽅式について ALBのmTLS認証には、以下の2通りの⽅式があります。 • トラストストア認証 トラストストアとしてサーバ証明書を登録し、ALBがクライアント証明書を検証する⽅式 ALB ALB Instance • パススルー認証
バックエンドにHTTPヘッダーとしてクライアント証明書パススルーする⽅式
トラストストア検証⽅式
構築 - クライアント証明書の作成 opensslコマンドでクライアント証明書を作成します。 今回はいわゆるオレオレ証明書を作成します。(本番で使⽤できません) トラストストアに登録 クライアント証明書 として利⽤
構築 ‒ ルート証明書をトラストストアとして登録 S3に先ほど作成したrootCA_cert.pemをアップロードして、 トラストストアとして登録します。 作成したトラストストアをALBと紐づけることでmTLS認証が可能です。
構築 ‒ ルート証明書をALBのトラストストアとして登録 HTTPSリスナーの設定にmTLSの設定があるため、先ほどのトラストスト アを設定します。 ALBアクセス時には固 定レスポンスを返すよ うに設定しています。
アクセス確認 クライアント証明書を指定してアクセス クライアント証明書を指定せずアクセス 無事にクライアント証明書指定時だけアクセスさせることができました。 これで悪意があるユーザからの攻撃を防ぐことが可能になります。
パススルー⽅式
構築 ‒ パススルー設定 パススルーの場合はトラストストアのような設定は不要です。 パススルーを設定するだけでバックエンドにクライアント証明書が連携されます。 今回はLambdaを作成してヘッダーの様⼦を眺めます。 参考:https://dev.classmethod.jp/articles/aws-alb-mtls-pass-through/ ALB Lambda function
アクセス確認 ‒ クライアント証明書指定 クライアント証明書を 指定 HTTPヘッダーとしてクライアント証明書が バックエンドに送信
アクセス確認 ‒ クライアント証明書未指定 クライアント証明書が格納された HTTPヘッダーが存在しない。 クライアント証明書無しでもバックエンドに送信されるため、注意が必要です。 通常はバックエンドにApacheなどを配置して正当性を検証します。
まとめ • mTLS認証をALBだけで簡単に構築できた。 • トラストストア検証はお⼿軽で、バックエンドのクライアント認証処理を オフロード可能なため、今後主流になる予感 • パススルー⽅式もサポートされているため、NLBをALBに置き換え可能