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
キッチハイク社内勉強会 / 2021-03-03
Search
taogawa
April 15, 2021
Programming
1.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
キッチハイク社内勉強会 / 2021-03-03
taogawa
April 15, 2021
More Decks by taogawa
See All by taogawa
「一人でも多く、一円でも多く」 価値を届ける決済の仕組みと工夫 / 2022-11-30_10x_campfire_kanmu
taogawa
0
140
キッチハイク社内勉強会 ドメイン駆動設計のはなし / 2021-09-01
taogawa
0
1.7k
7年目を迎えたRails アプリケーションの傾向と対策/Rails Developers Meetup 2019 Day1
taogawa
8
4.3k
意図せぬレスポンスを防ぐAPI設計2つのコツ / Startup Rails #6
taogawa
0
2.8k
おいしい時間を支えるAPI設計 / Food Service Engineers Meetup #3
taogawa
1
2.7k
Other Decks in Programming
See All in Programming
OSもどきOS
arkw
0
570
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
21
6.8k
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
11
4.3k
さぁV100、メモリをお食べ・・・
nilpe
0
150
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
260
スマートグラスで並列バイブコーディング
hyshu
0
180
DynamoDBには集計系のクエリがないけどなんとかしたい
musan
1
180
Snowflake Summitでの新機能 CoCo / CoWork / snowflake-summit-2026-overall-what-new-coco
tatsuhiro
1
150
RTSPクライアントを自作してみた話
simotin13
0
620
A2UI という光を覗いてみる
satohjohn
1
140
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
710
C# and C++ Interoperability - cho-dotnetnew
harukasao
0
280
Featured
See All Featured
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
480
Balancing Empowerment & Direction
lara
6
1.2k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
360
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
600
The SEO Collaboration Effect
kristinabergwall1
1
490
Fireside Chat
paigeccino
42
4k
Side Projects
sachag
455
43k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
340
The Language of Interfaces
destraynor
162
27k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Making Projects Easy
brettharned
120
6.7k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Transcript
IAMͷ͖΄Μ 2021/3/3 ΩονϋΠΫ ࣾษڧձ
ຊͷςʔϚ
ܰࢹ͞Ε͕ͪͳ IAMͷجຊʹ͍ͭͯ ֶΜͰΈΑ͏
ΞδΣϯμ • ͡Ίʹ: IAMΛΔͱͲΜͳ͍͍͜ͱ͕͋Δͷ • IAMͲΜͳͷ͔ ◦ IAMͷʮೝূʯ ◦ IAMͷʮೝՄʯ
• IAMΛ҆શʹ͢ΔͨΊʹ • ·ͱΊ
͡Ίʹ
AWS IAM (Identity and Access Management)
• AWSϦιʔεͷΞΫηεΛ҆શʹཧ͢ΔͨΊͷαʔϏε • ϦιʔεΞΫηεͷೝূͱೝՄΛ͍࢘ͬͯΔ
• AWSͷதͰIAM༏ઌΛ͘͞Ε͕ͪͳαʔϏε(ࣗͷ؍ଌ ൣғௐ) • ͳ͔ͥɾɾɾԿઃఆ͠ͳ࣮ͯ͘ӡ༻ʹࠔΒͳ͍
• AWSͷதͰIAM༏ઌΛ͘͞Ε͕ͪͳαʔϏε(খͷ؍ଌ ൣғௐ) • ͳ͔ͥɾɾɾԿઃఆ͠ͳ࣮ͯ͘ӡ༻ʹࠔΒͳ͍ IAMʁΑ͘Θ͔Μͳ͍͚Ͳૣ͘αʔϏεϦϦʔε͠Α͏Αʂ
ͦͷઌʹ͋Δͷɾɾɾ
AWSͷෆਖ਼ར༻ʹΑΔ ߴֹٻ
ۚમతଛ͚ͩ͡Όͳ͍
اۀͷ߹େ͖ͳηΩϡϦςΟΠϯγσϯτͱͳΔ SSRF߈ܸʹΑΔCapital Oneͷݸਓใྲྀग़ʹ͍ͭͯ·ͱΊͯΈͨ https://piyolog.hatenadiary.jp/entry/2019/08/06/062154
IAMΛΔ͜ͱ ͜ͷΑ͏ͳࣄଶΛ͙ୈҰาͱ ͳΔͷͰ͢
ͰAWS৮Βͳ͍͠ɾɾɾ Δඞཁ͋Δͷʁ
͋Γ·͢ʂ
IAMΛΔ͜ͱ ϢʔβʔͷೝূɾೝՄཧ ͷΑΓΑ͍ϞσϧΛ ֶͿ͜ͱʹͭͳ͕Γ·͢
ͱ͍͏Θ͚Ͱ ݟ͍͖ͯ·͠ΐ͏
IAMͱͲΜͳͷ͔
IAMAWSϦιʔεͷೝূͱೝՄͷཧׂ͕
ೝূͱೝՄ ೝূ(Authentication) ύεϫʔυͳͲ(ޙड़)ͷखஈͰɺA͞Μ͔Ͳ͏͔ ͷಉҰੑ֬ೝΛ͢Δ ೝՄ(Authorization) A͞Μʹର͢ΔAWS্ͷϦιʔεݖݶΛ༩͢Δ
ೝূͱೝՄ ೝূ(Authentication) ຊਓ͔͠Βͳ͍ใɺ࣋ͨͳ͍ใΛར༻͠ ͯɺຊਓͱͷಉҰੑΛ֬ೝ͢Δ͜ͱ ೝՄ(Authorization) Ϧιʔεʹର͢Δར༻ݖݶΛ༩͑Δ͜ͱ
IAMͷೝূ
IAMͷʮೝূʯ • AWSͷαʔϏεར༻ʹର͢Δೝূ • IAMϢʔβʔʹର͢ΔύεϫʔυϙϦγʔͷઃఆ ◦ ύεϫʔυXจࣈҎ্ɺه߸ͷ༗ແɺ༗ޮظݶͷઃఆ • MFA(ଟཁૉೝূ) ◦
ෳͷຊਓ͔͠Βͳ͍ / ࣋ͨͳ͍ใʹΑͬͯೝূڧΛڧ͘ ͢Δ ◦ ύεϫʔυ + ຊਓͷ࣋ͭσόΠεͰੜͨ͠ίʔυ
ʮೝূʯΘ͔Γ͍͢ • ଞαʔϏεͱڞ௨ͨ֓͠೦ͰೃછΈ͕͋Δ • AWS͔ͩΒͱ͍ͬͯಛผͳཁૉͦΜͳʹ ͳ͍ • ҰൠతͳೝূཧͷϕετϓϥΫςΟε͕ ͦͷ··௨༻͢Δͱߟ͑ͯྑ͍ ◦
ύεϫʔυ͍ͷΛઃఆ ◦ ଟཁૉೝূΛ༗ޮʹ͢ΔɾɾɾͳͲ
IAMͷೝՄ
IAMͷʮೝՄʯ • AWSͷϦιʔεʹର͢Δݖݶͷ༩ ◦ ඇৗʹॊೈͰ͋ΔΏ͑ʹෳࡶͰ͋Δ ◦ IAMϢʔβʔɺIAMϙϦγʔɺIAMάϧʔϓɺIAMϩʔϧɺΦʔΨ φΠθʔγϣϯϢχοτ(OU)ͷ֓೦(ޙड़) ◦ AWSͷαʔϏε
x ͦΕͧΕͷαʔϏεͷݖݶ͕େʹ͋Δ • ͜ͷʮೝՄʯͷઃఆϛε͕ॾʑͷΠϯγσϯτͷඃΛඇৗʹਙେͳ ͷʹ͍ͯ͠Δ
ʮೝՄʯࣗମ͘͠ͳ͍ • ݖݶΛ༩͢ΔϞσϧ伴ͷΑ͏ͳͷ ◦ ΉΈͨΒʹԿͰ։͚ΒΕΔ伴Λͨ͠ Γɺ͔Γ͍͢ͱ͜Ζʹஔ͍͓͚ͯɺϚζ Πͷ͙͢Θ͔Δͣ • ͰAWSͰͦ͏͍͏͜ͱ͕·͔Γ௨ͬͯ͠· ͏ɾɾɾͳͥʁ
AWSͷʮೝՄʯͱ͖ͬͭʹ͍͘ • ༩͢Δݖݶ͕େͰ͋Δ ◦ େͳαʔϏεͷ x ͦͷݖݶͷΈ߹ Θͤ • Γ͍ͨ͜ͱʹൺͯ͠ɺΕΔ͜ͱ͕ඇৗʹଟ
͍ • ݖݶઃఆʑ͍͘͢ͳ͍ͬͯΔ͕ɺͦ ΕͰ͍͠ ◦ ӈͷΑ͏ͳJSONΛमਖ਼͢Δػձଟ ͍ { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetOpsItem", "ssm:UpdateOpsItem", "ssm:DescribeOpsItems", "ssm:CreateOpsItem", "ssm:CreateResourceDataSync", "ssm:DeleteResourceDataSync", "ssm:ListResourceDataSync", "ssm:UpdateResourceDataSync" ], "Resource": "*" } ] }
ϧʔτϢʔβʔ͍͕ͪ • AWSͷαΠϯΞοϓ࣌ʹ࡞͞ΕΔΞΧϯτ ◦ AWSͷϦιʔεͷͯ͢ͷΞΫηεݖݶΛ࣋ͭ࠷ڧͷϢʔβʔ ◦ IAMϢʔβʔͱҧ͏ • AWS͋Δ͋Δ: IAMϢʔβʔΛ࡞ΒͣɺϧʔτϢʔβʔΛͦͷ··ͬͯ
͠·͏ ◦ AWSΛ͏ਓαʔϏεΛ࡞Γ͍ͨ ◦ IAMͷઃఆΛௐͯ಄௧͕ͯ͘͠Δ→ϧʔτϢʔβʔ͏ ◦ ԿͰͰ͖Δݖݶ͔ͩΒαʔϏεΛ࡞ΔͷʹࠔΒͳ͍
ϧʔτϢʔβʔৗ༻ͷ࿏ • ͦͷ͏ͪɺϧʔτϢʔβʔ͕ͨΓલԽ͢Δ ◦ IAMϢʔβʔͰదͳݖݶ༩Λޙճ͠ʹ͢Δ ◦ ϧʔτϢʔβʔͷΞΫηεΩʔ / γʔΫϨοτΩʔΛ͏ͳͲɺة ݥͳΦϖϨʔγϣϯ͕ৗଶԽ͢Δ
• ΞΫηεΩʔ / γʔΫϨοτΩʔͦΕͦͷͷ͕ೝূใ ◦ ID / ύεϫʔυͷΈ߹Θͤͱ΄΅ಉٛ ◦ ޡͬͯϦϙδτϦʹPushͯ͠શੈքʹެ։ → ΞΧϯτ͕ୣΘΕΔ ◦ ϧʔτϢʔβʔԿͰग़དྷΔͷͰඃ͕ਙେͳͷͱͳΔ
͜͜·Ͱͷ·ͱΊ • IAM(Identity and Access Management)AWSϦιʔεͷೝূͱೝՄ ͷཧׂ͕ • ʮೝূʯຊਓͱͷಉҰੑ֬ೝ •
ʮೝՄʯϦιʔεʹର͢ΔݖݶΛ༩͑Δ͜ͱ • AWSͷ߹ɺʮೝՄʯَ͕Ͱ͋Δ ◦ ઃఆͷϋʔυϧ͕ߴ͘ޙճ͠ʹ͞Ε͕ͪ ◦ ҰํͰAWSϢʔβʔͷ૾Ҏ্ʹͳΜͰͰ͖Δ ◦ ݁Ռɺྲྀग़࣌ʹμϝʔδ͕େ͖͍
Ͱ ۩ମతʹԿΛ͢Ε͍͍ͷʁ
IAMΛ ҆શʹ͢ΔͨΊʹ
IAMηΩϡϦςΟϕετϓϥΫςΟεʹै͓͏ • AWS͕ެࣜʹग़͍ͯ͠ΔIAMͷ ϕετϓϥΫςΟεू • AWSϦιʔεͷηΩϡϦςΟ֬ อͷͨΊʹ16ͷਪࣄ߲Λڍ͛ ͍ͯΔ IUUQTEPDTBXTBNB[PODPNKB@KQ*".MBUFTU6TFS(VJEFCFTUQSBDUJDFTIUNM
·ͣখ͘͞ʮೝূʯ͔Β࢝ΊͯΈΔ • 16ݸʂʁͱͳΔ͕ɺશͯΛ͍͖ͳΓ࢝ΊΔඞཁͳ ͍ ◦ ࠷ॳ͔Βඞཁͳ͍ͷ͋Δ • ͜͏͍͏ͱ͖՝Λׂɻ·ͣʮೝূʯ͔Βͬͯ ΈΑ͏ •
ʮೝূʯͻͱΓͻͱΓͷಉҰੑ֬ೝɻͦͷ؍͔Β ਐΊͯΈΔ ◦ MFAͷ༗ޮԽ ◦ IAMϢʔβʔΛڞ༻Ͱͳ͘ɺϢʔβʔ͝ͱʹൃ ߦ͢Δ ◦ ύεϫʔυϙϦγʔͷڧԽ ◦ ΞΫηεΩʔͷແޮԽɾඇڞ༗ • ͜Ε͚ͩͰେϚγʹͳΔ ϕετϓϥΫςΟεͰͷʮೝূʯؔ࿈߲ ɾAWSΞΧϯτͷϧʔτϢʔβʔΞΫηεΩʔΛϩοΫ͢Δ ɾݸʑͷIAMϢʔβʔΛ࡞͢Δ ɾϢʔβʔͷͨΊʹڧͷߴ͍ύεϫʔυϙϦγʔΛઃఆ͢Δ ɾMFAͷ༗ޮԽ ɾΞΫηεΩʔΛڞ༗͠ͳ͍ ɾೝূใΛఆظతʹϩʔςʔγϣϯ͢Δ ɾෆཁͳೝূใͷআ ɾՃηΩϡϦςΟʹର͢ΔϙϦγʔ݅Λ༻͢Δ
͍ͭͮͯʮೝՄʯʹऔΓΜͰΈΑ͏ • ϩʔϧάϧʔϓɺϙϦγʔͳͲͷݴ༿͕ग़ͯ ͖ͨɻͳʹ͜Εʁ • ·ͣ͜ΕΒʹΛͭΉΖ͏ɻ • ඞཁͳ͚ͩͷʮೝՄʯͷ༩ʹऔΓΉ • ۩ମతʹҎԼͷ߲
◦ ࠷খݶͷಛݖΛೝΊΔ ◦ AWSཧϙϦγʔΛ༻ͨ͠ΞΫηεڐ Մͷ༻։࢝ ϕετϓϥΫςΟεͰͷʮೝՄʯؔ࿈߲ ɾIAMϢʔβʔͷΞΫηεڐՄΛׂΓͯΔͨΊʹάϧʔϓΛ͍·͢ ɾ࠷খݶͷಛݖΛೝΊΔ ɾΞΫηεϨϕϧΛ༻ͯ͠ɺIAM ΞΫηεڐՄΛ֬ೝ͢Δ ɾAWSཧϙϦγʔΛ༻ͨ͠ΞΫηεڐՄͷ༻։࢝ ɾΠϯϥΠϯϙϦγʔͰͳ͘ΧελϚʔཧϙϦγʔΛ༻͢Δ ɾAmazon EC2ΠϯελϯεͰ࣮ߦ͢ΔΞϓϦέʔγϣϯʹର͠ɺϩʔ ϧΛ༻͢Δ ɾϩʔϧΛ༻ͯ͠ΞΫηεڐՄΛҕ͢Δ
AWSͷϨʔϧʹΔ • ݖݶʁͲΕΛ͚͍͍ͭͯͷ͔͔Βͳ͍Αʂ • ͦΜͳਓͷͨΊʹAWS͕ϏϧτΠϯͷཧϙ Ϧγʔ(ݖݶͷηοτ)Λ༻ҙͯ͘͠Ε͍ͯΔ ◦ αʔϏε͝ͱʹΞΫηεݖݶ͕ύοέʔ δԽ͞Ε͍ͯΔ ◦
ݖݶΛ࠷ॳ͔Βॻ͔ͳͯ͘ࡁΈɺϋʔυ ϧ͕Լ͕Δ ◦ ͜ͷϙϦγʔʹՃ͢ΔܗͰɺݸผͷη ΩϡϦςΟϙϦγʔΛՃ͑Δͷ͕ఆੴ ϕετϓϥΫςΟεͰͷʮೝՄʯؔ࿈߲ ɾIAMϢʔβʔͷΞΫηεڐՄΛׂΓͯΔͨΊʹάϧʔϓΛ͍·͢ ɾ࠷খݶͷಛݖΛೝΊΔ ɾΞΫηεϨϕϧΛ༻ͯ͠ɺIAM ΞΫηεڐՄΛ֬ೝ͢Δ ɾAWSཧϙϦγʔΛ༻ͨ͠ΞΫηεڐՄͷ༻։࢝ ɾΠϯϥΠϯϙϦγʔͰͳ͘ΧελϚʔཧϙϦγʔΛ༻͢Δ ɾAmazon EC2ΠϯελϯεͰ࣮ߦ͢ΔΞϓϦέʔγϣϯʹର͠ɺϩʔ ϧΛ༻͢Δ ɾϩʔϧΛ༻ͯ͠ΞΫηεڐՄΛҕ͢Δ
ϢʔβʔɺϩʔϧɺάϧʔϓɺϙϦγʔΛཧղ͠Α͏ • ଓ͍ͯϢʔβʔɺϩʔϧɺάϧʔϓɺϙϦγʔͷ֓೦Λཧղ ͢Δ ◦ IAMϢʔβʔ ◦ IAMάϧʔϓ ◦ IAMϙϦγʔ
◦ IAMϩʔϧ ˔ ͜ΕΒΛཧղ͢Δ͜ͱϝϯςφϒϧͳIAMͷӡ༻ʹͭͳ͕ Δ ◦ ٯʹ͍͑ɺ͜ΕΒΛཧղ͍ͯ͠ͳͯ͘࠷ݶͷೝ Մ༩Ͱ͖Δ ▪ ϢʔβʔʹϙϦγʔΛ༩ ◦ ࠷ॳ͔Β͖ͬͪΓΖ͏ͱͯ͠࠳ં͢ΔΑΓɺ·ͣ ϝϯςφϒϧͰͳͯ͘ೝՄΛඋ͢Δ΄͏͕Α͍ Α͏ʹࢥ͏ ϕετϓϥΫςΟεͰͷʮೝՄʯؔ࿈߲ ɾIAMϢʔβʔͷΞΫηεڐՄΛׂΓͯΔͨΊʹάϧʔϓΛ͍·͢ ɾ࠷খݶͷಛݖΛೝΊΔ ɾΞΫηεϨϕϧΛ༻ͯ͠ɺIAM ΞΫηεڐՄΛ֬ೝ͢Δ ɾAWSཧϙϦγʔΛ༻ͨ͠ΞΫηεڐՄͷ༻։࢝ ɾΠϯϥΠϯϙϦγʔͰͳ͘ΧελϚʔཧϙϦγʔΛ༻͢Δ ɾAmazon EC2ΠϯελϯεͰ࣮ߦ͢ΔΞϓϦέʔγϣϯʹର͠ɺϩʔ ϧΛ༻͢Δ ɾϩʔϧΛ༻ͯ͠ΞΫηεڐՄΛҕ͢Δ
ϢʔβʔɺϩʔϧɺάϧʔϓɺϙϦγʔͷׂ • IAMϢʔβʔ ◦ AWS Λར༻͢Δ֤ར༻ऀ͚ʹ࡞͞ΕΔΞΧϯ τ • IAMάϧʔϓ ◦
ಉҰͷׂΛ࣋ͭIAM ϢʔβʔΛάϧʔϓԽ͢Δػ ೳɻIAM Ϣʔβʔಉ༷ʹΞΫηεݖݶΛ༩͢Δ͜ͱ ͕Ͱ͖Δɻ • IAMϙϦγʔ ◦ AWS ϦιʔεͷΞΫηεݖݶΛͻͱ·ͱΊʹͨ͠ ͷɻ • IAMϩʔϧ ◦ AWS αʔϏεΞϓϦέʔγϣϯ(ඇϢʔβʔ)ʹର ͯ͠AWS ͷૢ࡞ݖݶΛ༩͑ΔΈɻผΞΧϯτ ͷϢʔβʔʹ༩͢Δ͜ͱͰ͖Δɻ
IAM͔ΒೝՄཧͷϕετϓϥΫςΟεΛֶ΅͏ • IAMͷϞσϧඇৗʹΑ͘Ͱ͖͍ͯΔ • IAMϢʔβʔͰͳ͘ɺάϧʔϓʹϙϦγʔ(ݖݶͷηοτ)Λ ͨͤΔ͜ͱͰɺϢʔβʔͷҟಈ͕͋ͬͯɺϢʔβʔ͔Β άϧʔϓΛऔΓ֎͚ͩ͢Ͱ࡞ۀ͕ࡁΉɻ • ϙϦγʔ(ݖݶͷ·ͱ·Γ)ͱ༩͢Δର(Ϣʔβʔɺάϧʔ ϓɺϩʔϧ)͕ૄ݁߹ͳ͜ͱͰɺॊೈʹݖݶΛཧ͢Δ͜ͱ͕
Ͱ͖Δɻ ◦ άϧʔϓ͕ϙϦγʔΛෳ࣋ͭ͜ͱͰ͖Δ ◦ άϧʔϓͷݖݶมߋΛϙϦγʔͷ͚֎͚ͩ͠ͰͰ͖Δ ◦ ΧελϚʔཧϙϦγʔʹϓϥεͯ͠ɺΑΓৄࡉͳ੍ݶ Λ༩ͨ͠ϙϦγʔΛՃ͢Δͱ͍ͬͨ͜ͱͰ͖Δ
IAMͷೝূೝՄཧͷߟ͑ํ৭Μͳͱ͜ΖͰ͑Δ • AWSͱ͍͏ڊେͰෳࡶͳγεςϜͷݖݶϞσϧͦͷϕ ετϓϥΫςΟεΛֶͿ͜ͱɺଞͷγεςϜαʔϏε ʹ׆͔͢͜ͱ͕Ͱ͖Δ ◦ GCPAzureͳͲڝ߹αʔϏεͰେͷߟ͑ํม ΘΒͳ͍ ◦ ۀγεςϜશൠʹ͜ͷϞσϧద༻Ͱ͖Δ
• ܾͯ͠AWSͰ͔͑͠ͳ͍ࣝͰͳ͍
·ͱΊ
·ͱΊ • IAMΛΖ͏ • IAMΛΔ͜ͱͰɺΫϥυഁ࢈ηΩϡϦςΟΠϯγσϯτͷՄೳ ੑΛେ෯ʹݮͤ͞Δ͜ͱ͕Ͱ͖Δ • ͱ͖ͬͭʹ͍͘ͷࣄ࣮ɻ͚ͩͲɺʮೝূʯʮೝՄʯʹண͢Εɺ ϋʔυϧ͘ɺ͙͢ʹऔΓΉ͜ͱ͕Ͱ͖Δ •
IAMΛֶͿ͜ͱɺAWSʹดͨࣝ͡ΛֶͿ͜ͱͰͳ͍ɻΑΓ͍ ೝূͱೝՄͷϞσϧΛֶͿ͜ͱͰ͋Δɻ