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.3k
サーバーレス化を支える認証認可の話
サーバレスアーキテクチャで構築する際の認証認可、アクセス制限のパターンを何となく説明しています
Takuro SASAKI
January 13, 2018
Tweet
Share
More Decks by Takuro SASAKI
See All by Takuro SASAKI
技術書を書く技術 JAWS DAYS 2024
takuros
16
5.2k
パフォーマンスとコスト制約から考えるアーキテクチャ設計(JAWSUG東京ランチLT会#4)
takuros
2
1.1k
Storage-JAWS第0回 昔話で振り返るAWSの歴史 ~ストレージ編~
takuros
1
3.5k
エンジニアとしての自分とマネージャーとしての自分の狭間で、どう成長していくのか?(AWS DevDay 2023登壇資料)
takuros
30
13k
AWSで作るデータ分析基盤サービスの選定と設計のポイント
takuros
5
6.1k
JAWSUG初心者支部 IAMの「あ」の話
takuros
4
8.5k
Security-JAWS-Speciality-Study
takuros
0
5.4k
CloudFormation StackSets with AWS Organizations
takuros
3
5.6k
AWS認定セキュリティ - 専門知識 AWSのサービスを使って楽してセキュリティ向上!!
takuros
5
5k
Other Decks in Technology
See All in Technology
2/18/25: Java meets AI: Build LLM-Powered Apps with LangChain4j
edeandrea
PRO
0
110
ユーザーストーリーマッピングから始めるアジャイルチームと並走するQA / Starting QA with User Story Mapping
katawara
0
200
エンジニアのためのドキュメント力基礎講座〜構造化思考から始めよう〜(2025/02/15jbug広島#15発表資料)
yasuoyasuo
17
6.7k
開発組織のための セキュアコーディング研修の始め方
flatt_security
3
2.3k
PL900試験から学ぶ Power Platform 基礎知識講座
kumikeyy
0
130
エンジニアの育成を支える爆速フィードバック文化
sansantech
PRO
3
1.1k
全文検索+セマンティックランカー+LLMの自然文検索サ−ビスで得られた知見
segavvy
2
100
抽象化をするということ - 具体と抽象の往復を身につける / Abstraction and concretization
soudai
16
3.6k
The Future of SEO: The Impact of AI on Search
badams
0
190
Culture Deck
optfit
0
420
バックエンドエンジニアのためのフロントエンド入門 #devsumiC
panda_program
18
7.5k
CZII - CryoET Object Identification 参加振り返り・解法共有
tattaka
0
360
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
28
8.4k
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
27
1.9k
A Philosophy of Restraint
colly
203
16k
Docker and Python
trallard
44
3.3k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
9
440
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
The World Runs on Bad Software
bkeepers
PRO
67
11k
The Language of Interfaces
destraynor
156
24k
Scaling GitHub
holman
459
140k
Optimising Largest Contentful Paint
csswizardry
34
3.1k
Music & Morning Musume
bryan
46
6.3k
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
͝੩ௌɺ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ