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
サーバーレス化を支える認証認可の話
Search
Takuro SASAKI
January 13, 2018
Technology
15
8.5k
サーバーレス化を支える認証認可の話
サーバレスアーキテクチャで構築する際の認証認可、アクセス制限のパターンを何となく説明しています
Takuro SASAKI
January 13, 2018
Tweet
Share
More Decks by Takuro SASAKI
See All by Takuro SASAKI
技術書を書く技術 JAWS DAYS 2024
takuros
17
5.6k
パフォーマンスとコスト制約から考えるアーキテクチャ設計(JAWSUG東京ランチLT会#4)
takuros
2
1.3k
Storage-JAWS第0回 昔話で振り返るAWSの歴史 ~ストレージ編~
takuros
1
3.7k
エンジニアとしての自分とマネージャーとしての自分の狭間で、どう成長していくのか?(AWS DevDay 2023登壇資料)
takuros
32
13k
AWSで作るデータ分析基盤サービスの選定と設計のポイント
takuros
5
6.5k
JAWSUG初心者支部 IAMの「あ」の話
takuros
4
8.6k
Security-JAWS-Speciality-Study
takuros
0
5.6k
CloudFormation StackSets with AWS Organizations
takuros
3
5.8k
AWS認定セキュリティ - 専門知識 AWSのサービスを使って楽してセキュリティ向上!!
takuros
5
5.2k
Other Decks in Technology
See All in Technology
現場データから見える、開発生産性の変化コード生成AI導入・運用のリアル〜 / Changes in Development Productivity and Operational Challenges Following the Introduction of Code Generation AI
nttcom
1
430
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.8k
ソフトウェアエンジニアの生成AI活用と、これから
lycorptech_jp
PRO
0
790
Introdução a Service Mesh usando o Istio
aeciopires
1
280
ローカルLLMとLINE Botの組み合わせ その2(EVO-X2でgpt-oss-120bを利用) / LINE DC Generative AI Meetup #7
you
PRO
0
140
OSSで50の競合と戦うためにやったこと
yamadashy
3
920
AIフル活用で挑む!空間アプリ開発のリアル
taat
0
130
Azureコストと向き合った、4年半のリアル / Four and a half years of dealing with Azure costs
aeonpeople
1
250
Implementing and Evaluating a High-Level Language with WasmGC and the Wasm Component Model: Scala’s Case
tanishiking
0
170
私のMCPの使い方
tsubakimoto_s
0
120
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
43k
Introduction to Sansan Meishi Maker Development Engineer
sansan33
PRO
0
310
Featured
See All Featured
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.1k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
115
20k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
30
2.9k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Why Our Code Smells
bkeepers
PRO
340
57k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Building a Scalable Design System with Sketch
lauravandoore
463
33k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
190
55k
Into the Great Unknown - MozCon
thekraken
40
2.1k
Transcript
αʔόʔϨεԽΛࢧ͑Δ ೝূೝՄͷ /3*ωοτίϜגࣜձࣾɹ ࠤʑ +"846(͍ͨ͞·ࢧ෦ɹୈճษڧձ ʙॳΊຊͰҰ൪ૣ͍SF$BQ৽ձʙ
ࠤʑ ϫΠϯ͖ͳ"84ΤϯδχΞ CMPHIUUQCMPHUBLVSPTOFU UXJUUFS!ELGK ࣗݾհ
ͪΐͬͱએ "NB[PO8FC4FSWJDFT ۀγεςϜઃܭɾҠߦΨΠυ Ұ൪େͳࣝͱٕज़͕ʹͭ͘ IUUQBN[OUPNK0*B9 ݄ൃച։࢝ʂʂ
͏̍ͭએ "NB[PO8FC4FSWJDFT ύλʔϯผߏஙɾӡ༻ΨΠυ Ұ൪େͳࣝͱٕज़͕ʹͭ͘ IUUQBN[OUP#-J:D0 "84ͷೋ൪ʹް͍ຊ ʢେ༰ྔϖʔδʣ
·ͩ·ͩએ "NB[PO8FC4FSWJDFT ΫϥυωΠςΟϒɾΞϓϦέʔγϣϯ։ൃٕ๏ Ұ൪େͳࣝͱٕज़͕ʹͭ͘ IUUQBN[OUP3ZZ-Z "84ͷΞϓϦຊ ʢେ༰ྔϖʔδʣ
αʔόϨεΞʔΩςΫνϟͰߏங͢Δࡍͷ ೝূೝՄɺΞΫηε੍ݶͷύλʔϯΛ Կͱͳ͍ͬͯ͘·͢ ࠓͷత
αʔόϨεΞʔΩςΫνϟʁ ར༻Ͱ͖ΔਓΛ੍ݶ͍ͨ͠߹ʁ API Gateway Lambda DynamoDB ΫϥΠΞϯτ ϞόΠϧ CloudFront S3
ίϯςϯπͷ औಘ ϩδοΫ WebαΠτΛαʔόϨεԽͨ͠ྫ
ೝূೝՄͱΞΫηε੍ݶ
ᶃ*% 1BTTXPSE ར༻ऀ ᶄਖ਼ੑͷ֬ೝ ೝূہ ᶅຊਓੑͷอূ ᶆϦιʔεͷׂ αʔϏε ೝূ ʢ"VUIFOUJDBUJPOʣ
ೝՄ ʢ"VUIPSJ[BUJPOʣ ೝূͱೝՄ ࣮ࡍɺೝূೝՄ͕ηοτʹͳ͍ͬͯΔࣄ͕ଟ͍ ୭Ͱ͋Δ͔ʁ ୭͕୭ʹ ԿͷݖݶΛ༩͑Δ͔
"1*ͷੈքͰʁ τʔΫϯͷӡ༻ΛͲ͏͢Δ͔ɺ৭ʑͳઃܭํ๏͕͋Δ ೝূɾೝՄγεςϜ "1*܈ ར༻ऀ ᶃ*% 1BTTXPSE ᶄΞΫηετʔΫϯ ᶅʙϦΫΤετXJUIτʔΫϯ ॳճΞΫηεɿ*%
1BTTXPSE ೋճҎ߱ɹɿτʔΫϯ 㱺ೝূ࿈ܞʢϑΣσϨʔγϣϯʣ
*%࿈ܞٕज़ʢ0"VUI 0QFO*% 4".-ʣ 0QFO*%ೝূͷϓϩτίϧ *EFOUJUZ "VUIFOUJDBUJPO 0"VUI0QFO*%$POOFDU 0"VUIೝՄͷϓϩτίϧ اۀͷγεςϜؒ࿈ܞɺ
4".-͕ଟ͍
ͪΌΜͱΓ͍ͨਓɺ͜ΕΛಡΜͰ͍ͩ͘͞ IUUQTXXXTMJEFTIBSFOFUULVEPPBVUIPJEDBQJTFDVSJUZZV[BXBXT
ΞΫηε੍ݶ ΞΫηεݩใʹΑΔΞΫηε੍ݶ ɾ*1"EESFTT ɾϔομʔใʢϢʔβʔΤʔδΣϯτʣ ɾભҠݩʹΑΔ੍ݶʢϦϑΝϥʔʣ ɾFUD ϢʔβʔೝূʹΑΔΞΫηε੍ݶ ɾ*%ɺύεϫʔυ ɾτʔΫϯ ɾFUD
ຊਓೝূͳ͠ͰɺϦιʔεͷར༻Λ੍ݶ͢Δ͜ͱ͋Δ
"84ͷ߹ͷ࣮ݱํ๏ʁ ·ͣɺ"1*(BUFXBZͱ$PHOJUPͷ ػೳհ
$PHOJUP ೝূೝՄͷαʔϏεɻ "1*ͱ૬ੑͽͬͨΓ $PHOJUP6TFS1PPM Ϣʔβʔཧʢ%#ʣαʔϏε αΠϯΠϯɾαΠϯΞτͳͲೝূΛ୲ .'"ύεϫʔυϙϦγʔɺҰ௨Γͷػೳ͕ଗ͍ͬͯΔ $PHOJUP'FEFSBUFE*EFOUJUJFT ೝূ෦ɺ֎෦ϓϩόΠμʹҠৡɻೝՄͷαʔϏε ֎෦ϓϩόΠμͱͯ͠ɺ'BDFCPPL5XJUUFS͕ར༻Մೳ
ೝূͨ͠ϢʔβʔʹҰ࣌తͳ"84ͷར༻ݖݶΛ༩ "84454Λ؆୯ʹ͑ΔΑ͏ʹͨ͠ͷ
*EFOUJUZ1SPWJEFST 'BDFCPPL (PPHMF 5XJUUFS FUD ΫϥΠΞϯτ *% 1BTTXPSE τʔΫϯ
$PHOJUP Ұ࣌తূ໌ͷ ༩ τʔΫϯ*% Ұ࣌త ར༻ݖݶ "84ͷ ֤छϦιʔε ݖݶʹԠͯ͡ ར༻Մೳ ೝՄ ೝূ $PHOJUPͷಈ࡞Πϝʔδ
"1*(BUFXBZ 8FC"1*ͷ࡞ɾอޢɾӡ༻ͱ ެ։Λཧ͢ΔαʔϏε 3&45"1*ͷ࡞αʔϏε -BNCEB )5511SPYZ "841SPYZ -BNCEBݺͼग़͠ API Gateway
Lambda EC2 )5511SPYZ "841SPYZ AWSαʔϏε ֤छ
"1*(BUFXBZͷೝূػೳ ೝূํ๏ "*".ΞΫηεݖݶ #ΧελϜΦʔαϥΠβʔ $$PHOJUPϢʔβʔϓʔϧ API Gateway Lambda Cognito User
Pool ΫϥΠΞϯτ "*".ΞΫηεݖݶ #ΧελϜ ΦʔαϥΠβʔ $$PHOJUP Ϣʔβʔϓʔϧ
"1*(BUFXBZͷΞΫηε੍ݶ ੍ݶํ๏ "ΫϥΠΞϯτূ໌ॻ #"1*Ωʔ $ϦΫΤετͷݕূ API Gateway ΫϥΠΞϯτ "ΫϥΠΞϯτূ໌ॻ #"1*Ωʔ
vKC5ZoO1tz7WH H6dfuZdd3zq9ShZ TnJzaCNONs9v $ϦΫΤετݕূ ϔομʔɺ ຊจ etc
"1*(BUFXBZͷ*1ΞυϨεʹΑΔ੍ݶ "848"' $MPVE'SPOU 8"'ͷ*1.BUDI$POEJUJPOΛར༻ 8"'Λར༻͢ΔͨΊʹɺ$MPVE'SPOUར༻ API Gateway ΫϥΠΞϯτ WAF CloudFront
ΫϥΠΞϯτ *1.BUDI$POEJUJPOͰఆ 999:::;;;""" """:::;;;999 ̋ ❌ $MPVE'SPOU "1*(BUFXBZͱ͍͏ແବͳଆ໘
"1*(BUFXBZͷ*1ΞυϨεʹΑΔ੍ݶᶃ *".ʹΑΔ੍ݶ "1*(BUFXBZͷೝূͰɺ*".Λར༻͢Δ *".ͷ$POEJUJPOͰɺ*1੍ݶΛֻ͚Δ ར༻ऀ͕"84ϢʔβͷΈͰ͋Εखஈͷ̍ͭ API Gateway ΫϥΠΞϯτ ಛఆͷॴͷΈ༗ޮͳ伴
Ϣʔεέʔε͝ͱͷ ΞʔΩςΫνϟ $PHOJUPฤ
৽نͰαʔϏεͷ্ཱͪ͛ $PHOJUP6TFS1PPM͕͓קΊ "1*(BUFXBZͷೝূͰɺ*".Λར༻͢Δ *".ͷ$POEJUJPOͰɺ*1੍ݶΛֻ͚Δ API Gateway ΫϥΠΞϯτ Cognito User Pool
Lambda ೝূ ॲཧ
طଘͷγεςϜʹ"1*Ճ ΧελϜΦʔαϥΠβʔͰطଘ%#Λࢀর -BNCEBͰࣗલͰೝূॲཧΛ࣮ طଘγεςϜʹ*%ɾύεϫʔυͷਖ਼ੑΛ͍߹Θͤ API Gateway ΫϥΠΞϯτ ΧελϜ ΦʔαϥΠβʔ ೝূ
طଘγεςϜ ͍߹Θͤ Lambda ॲཧ
طଘγεςϜΛ$PHOJUP6TFS1PPMʹҠߦ͍ͨ͠ ͭΒ͍ $PHOJUP6TFS1PPMʹɺσʔλΠϯϙʔτػೳ͋Δ ͨͩ͠ɺύεϫʔυҠߦͰ͖ͳ͍ ύεϫʔυͷ࠶ൃߦͷΈͰɺॳճϩάΠϯ࣌มߋΛଅ͢ େنҠߦͷ࣌ʹɺͭΒ͍ ΞϓϦͷ࡞ΓࠐΈͰɺճආ͢Δํ๏͋Δͷͷɻɻɻɻ Ͳ͏ͨ͠Βྑ͍ͷͰ͠ΐ͏Ͷʁ
$PHOJUP6TFS1PPMͷσʔλΛόοΫΞοϓ͍ͨ͠ Ͱ͖ͳ͍ ݱࡏɺ6TFS1PPMͷόοΫΞοϓʗΤΫεϙʔτ͕Ͱ͖ͳ͍ σʔλ"84͕࣋ͬͯकͬͯΔͱ ඞਢͷ߹ɺ%ZOBNP%#ʹϢʔβใΛอଘ "84͞Μɺ͓ئ͍ʂʂ
8PSME8JEFͳαʔϏεͰ$PHOJUP͍͍ͨ ݱঢ়ͷ$PHOJUPϦʔδϣϯؒͰͷϨϓϦέʔγϣϯػೳͳ͠ 8PSME8JEFͰ୯Ұͷ$PHOJUPͩͱೝূͷϨΠςϯγ͕ %ZOBNP%#ΫϩεϦʔδϣϯϨϓϦέʔγϣϯͰղܾʁ ϢʔβʔσʔλΛ%ZOBNP%#ʹอଘ ඞཁͳϦʔδϣϯʹ$PHOJUP'FEFSBUFE*EFOUJUJFTΛ༻ҙ͢Δ "84͞Μɺ͓ئ͍ʂʂ
"1*(BUFXBZͰͷࠔΓࣄ ͱ͍͏͔Ξϯνύλʔϯ
4/*ඇରԠΫϥΠΞϯτʹରԠ͢Δ "1*(BUFXBZͷ4/*ϕʔεͷ44-5-4 ݹ͍ϒϥβɺϓϩάϥϜݴޠ4/*ʹରԠ͍ͯ͠ͳ͍߹ ʹͳΓ͍͢ͷɺ+BWBҎલ ରԠࡦ "1*(BUFXBZͰͳ͘ɺ-BNCEBΛݺͼग़͢ "1*(BUFXBZͷલʹɺ&-#&$Λ͓͘ ࣅͨΑ͏ͳʹɺIUUQͰ"1*(BUFXBZʹΞΫηε͍ͨ͠ͱ͔ ͲΕΠϚΠνͳͷͰɺΫϥΠΞϯτଆͷߋվ͕ྑ͍
71$Ͱར༻͍ͨ͠ "1*(BUFXBZɺ71$ʹஔग़དྷͳ͍ -BNCEBɺ71$ͰىಈՄೳ 4UFQ'VODUJPOTͱซ༻ͰτϦοΩʔͳىಈՄೳ 71$ϦϯΫ /-#Ͱɺ71$ͷϦιʔε͕ར༻Մೳ API Gateway Step Functions
Lambda Network Load Balancer VPCϦϯΫ
"1*(BUFXBZܦ༝ͰόονతॲཧΛΩοΫ͍ͨ͠ "1*(BUFXBZͷ౷߹ͷλΠϜΞτඵ όοΫΤϯυͷॲཧ͕͍߹ҙ ۩ମతʹɺόονతͳॲཧΛݺͼग़͢߹ ରԠࡦ όοΫΤϯυͱͷ౷߹Λඇಉظܕʹ͢Δ ݺͼग़͠ޭ࣌ʹɺϦΫΤετ*%Λฦ٫͢Δ ͦͦ"1*(BUFXBZ͔ΒΩοΫ͢Δඞཁ͕͋Δͷ͔ߟ͑Δ API Gateway
AWSͷ֤छϦιʔε ᶃϦΫΤετ ᶄϨεϙϯε ΫϥΠΞϯτ ᶅඇಉظݺͼग़͠
$PHOJUPɺ"1*(BUFXBZ Ԟ͕ਂ͍
ిࢠॻ੶ɺࣥචͷػӡ IUUQTUPHFUUFSDPNMJ
SF$BQ
͝੩ௌɺ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ