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
AWS IAMポリシーのConditionを書くときの勘所
Search
MasahiroKawahara
July 25, 2022
Technology
0
6.5k
AWS IAMポリシーのConditionを書くときの勘所
IAMポリシーのConditionを使うことで柔軟な権限設計を実現できます。今回はこの Conditionを書くときに意識したい「キーの可用性」の話をします。
MasahiroKawahara
July 25, 2022
Tweet
Share
More Decks by MasahiroKawahara
See All by MasahiroKawahara
わたしとトラックポイント / TrackPoint tips
masahirokawahara
1
260
AWS CLIとシェルスクリプト、いつ使う?活用できる場面とTips紹介 #devio2024 / AWS CLI and Shell Tips
masahirokawahara
0
960
EC2の脆弱性対応で何が使える? Inspector や SSM あたりを整理する #nakanoshima_dev
masahirokawahara
2
1.3k
SSM Inventory を使って便利に EC2 棚卸し(ハマりどころを添えて)
masahirokawahara
2
920
ここが嬉しいABAC ここが辛いよABAC #再解説+補足編
masahirokawahara
1
490
疲弊しない!AWSセキュリティ統制の考え方 #devio_osakaday1
masahirokawahara
6
8k
セキュリティ系アップデートの全体像とSecurity Hub深掘り #AWSreInvent #cmregrowth
masahirokawahara
0
1.6k
AWSのマルチアカウント管理を始めよう #AWSSummit
masahirokawahara
1
1.3k
AWS Organizationsでマルチアカウント戦略を始めよう
masahirokawahara
1
4k
Other Decks in Technology
See All in Technology
100 名超が参加した日経グループ横断の競技型 AWS 学習イベント「Nikkei Group AWS GameDay」の紹介/mediajaws202411
nikkei_engineer_recruiting
1
170
AGIについてChatGPTに聞いてみた
blueb
0
130
Platform Engineering for Software Developers and Architects
syntasso
1
520
DynamoDB でスロットリングが発生したとき/when_throttling_occurs_in_dynamodb_short
emiki
0
250
iOSチームとAndroidチームでブランチ運用が違ったので整理してます
sansantech
PRO
0
150
【Startup CTO of the Year 2024 / Audience Award】アセンド取締役CTO 丹羽健
niwatakeru
0
1.3k
RubyのWebアプリケーションを50倍速くする方法 / How to Make a Ruby Web Application 50 Times Faster
hogelog
3
950
SRE×AIOpsを始めよう!GuardDutyによるお手軽脅威検出
amixedcolor
0
170
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間
oracle4engineer
PRO
28
13k
インフラとバックエンドとフロントエンドをくまなく調べて遅いアプリを早くした件
tubone24
1
430
複雑なState管理からの脱却
sansantech
PRO
1
150
AIチャットボット開発への生成AI活用
ryomrt
0
170
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
47
2.1k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
900
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
420
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
The Invisible Side of Design
smashingmag
298
50k
Ruby is Unlike a Banana
tanoku
97
11k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
The Language of Interfaces
destraynor
154
24k
Building an army of robots
kneath
302
43k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Transcript
*".ϙϦγʔͷ $POEJUJPOΛॻ͘ͱ͖ͷצॴ dΩʔͷՄ༻ੑͷd "84ࣄۀຊ෦ ݪେ
ఆࢹௌऀ Ø *".ϢʔβʔϩʔϧͷݖݶཧΛ͍ͯ͠Δਓ ü $POEJUJPOΛͬͨॊೈͳݖݶઃܭΛݕ౼த Ø "84Λֶश͍ͯ͠Δਓ ü ϕʔγοΫͳ*".ϙϦγʔॻ͍ͨ͜ͱ͕͋Δ ü
$POEJUJPOͷࡉ͔͍͍ํΛѲ͍ͨ͠ 3
࣍ લఏࣝ ΩʔՄ༻ੑͷ $POEJUJPOઃܭͷ 4
5 લఏࣝ ✎τϐοΫ✎ *".ϙϦγʔ ϦΫΤετίϯςΩετ ݅Ωʔ ϙϦγʔม $POEJUJPO۟
6 *".ϙϦγʔ
*".ϙϦγʔͱ ݖݶΛఆΊͨͷɻ+40/ܗࣜͰॻ͘ Ø ୭͕ <1SJODJQBM> Ø ͲͷϦιʔεʹରͯ͠ <3FTPVSDF> Ø ͲͷΞΫγϣϯΛ
<"DUJPO> Ø ҙ Ͳͷ݅ԼͰ <$POEJUJPO>˞ࠓͷτϐοΫ Ø ڐՄڋ൱͢Δ͔ <&GGFDU> 7
*".ϙϦγʔཁૉͷΠϝʔδ ը૾"84ʹ͓͚Δ"#"$ͷخ͠͞ɺਏ͞ΛޠΓ·ͨ͠ ",*#""84c%FWFMPQFST*0 8
9 ϦΫΤετίϯςΩετ
ϦΫΤετίϯςΩετͱ ϦΫΤετʹؔ͢ΔใΛ·ͱΊͨͷ ڐՄڋ൱Λܾఆ͢ΔͨΊͷΠϯϓοτ 10
ϦΫΤετίϯςΩετͷΩʔ ݅Ωʔ ͱ ಛఆཁૉΛࢦͨ͢ΊͷΩʔ ݅ΩʔͱݺͿ ओʹ$POEJUJPO۟Ͱ͏ͨΊ 11
12 ݅Ωʔ
݅Ωʔͷछྨ छྨ͋Δ Ø άϩʔόϧ݅Ωʔ ྫ aws:username Ø αʔϏεݻ༗ͷ݅Ωʔ ྫ ec2:Vpc
13
άϩʔόϧ݅Ωʔ 14 AWS グローバル条件コンテキストキー - AWS Identity and Access Management
αʔϏεݻ༗ͷ݅Ωʔ ˞Ϧιʔε୯Ґ ͘͠ ΞΫγϣϯ YϦιʔε୯Ґ 15 AWS のサービスのアクション、リソース、および条件キー - サービス認証リファレンス
16 ϙϦγʔม
ϙϦγʔม ʮϦΫΤετίϯςΩετͷΩʔͷʯΛࢦ͢ͷ ͜ΕΛ*".ϙϦγʔͷʹࢦఆͰ͖Δ 17
18 $POEJUJPO۟
*".ϙϦγʔͷ$POEJUJPO۟ ϙϦγʔ͕ద༻ ڐՄڋ൱ ͞ΕΔ݅Λهड़Ͱ͖Δ 19
$POEJUJPO׆༻ͷྫ Ø ݅Ωʔ Ø ݅Ωʔͷ Ø ݅ԋࢉࢠ 20
$POEJUJPO׆༻ͷྫ ݅Ωʔ Ø ݅Ωʔ Ø ݅Ωʔͷ Ø ݅ԋࢉࢠ 21 ϦΫΤετίϯςΩετͷΩʔ
$POEJUJPO׆༻ͷྫ ݅Ωʔͷ Ø ݅Ωʔ Ø ݅Ωʔͷ Ø ݅ԋࢉࢠ 22 ۩ମతͳจࣈྻɺ͘͠
ϙϦγʔม
$POEJUJPO׆༻ͷྫ ݅ԋࢉࢠ Ø ݅Ωʔ Ø ݅Ωʔͷ Ø ݅ԋࢉࢠ 23 ʮ݅Ωʔͷʯͱʮ࣮ࡍͷϦ
ΫΤετίϯςΩετͷʯΛ Ͳͷج४Ͱൺֱ͢Δ͔
݅ԋࢉࢠͷྫ Ø จࣈྻͷൺֱ StringEquals/StringNotEquals Ø ͷൺֱ NumericLessThan/NumericGreaterThan Ø ݅Ωʔͷ༗ແνΣοΫNull Ø
ͳͲ 24
ࢀߟ ͲΕ͕݅ΩʔʁͲΕ͕ϙϦγʔมʁ Ø ݅Ωʔ Ø $POEJUJPO۟Ͱ͏ Ø +40/ͷʮΩʔʯ෦Ͱ͏ Ø ϙϦγʔม
Ø $POEJUJPO۟ ͘͠ 3FTPVSDF۟Ͱ͏ Ø +40/ͷʮΩʔͷʯ෦Ͱ͏ Ø ${} ͰׅΔ 25
ࢀߟ ϙϦγʔͷධՁཧ"/% 03 26 ը૾4όέοτϙϦγʔͷ۩ମྫͰֶͿ"84ͷ1PMJDZυΩϡϝϯτ c%FWFMPQFST*0
27 ΩʔՄ༻ੑͷ ✎τϐοΫ✎ ΩʔͷՄ༻ੑ ݅Ωʔ͕ແ͍ͱ͖ͷڍಈ ϙϦγʔม͕ແ͍ͱ͖ͷڍಈ
͡Ίʹ·ͱΊ Ø ϦΫΤετίϯςΩετͷΩʔʹՄ༻ੑ͕͋Δ Ø ࢦఆͨ݅͠Ωʔ͕ແ͍ͱ͖ɺෆҰக GBMTF ͱ͠ ͯѻΘΕΔ ü ූ߸సܥͷ݅ԋࢉࢠͷ߹ɺUSVFʹͳΔ
Ø ࢦఆͨ͠ϙϦγʔม͕ແ͍ͱ͖ɺͦͷεςʔτ ϝϯτແޮʹͳΔ 28
29 ΩʔͷՄ༻ੑ
ΩʔͷՄ༻ੑʁ ϦΫΤετͷ༰࣍ୈͰɺಛఆΩʔ͕ ଘࡏ͢Δέʔεɺଘࡏ͠ͳ͍έʔε͕͋Δ 30
ΩʔͷՄ༻ੑͷௐํ άϩʔόϧ݅Ωʔ υΩϡϝϯτʹهࡌ 31 AWS グローバル条件コンテキストキー #aws:ResourceTag - AWS Identity
and Access Management
ΩʔͷՄ༻ੑͷௐํ αʔϏεݻ༗ͷ݅Ωʔ Ϧιʔε୯Ґ ͘͠ΞΫγϣϯ º Ϧιʔε୯ҐͰՄ༻ੑ͕ܾఆ 32 AWS のサービスのアクション、リソース、および条件キー -
サービス認証リファレンス
Ωʔແ͍ͱ͖ͷڍಈΛѲ͠Α͏ Ø ࢦఆͨ͠ʮ݅Ωʔʯ͕ແ͍ͱ͖ Ø ࢦఆͨ͠ʮϙϦγʔมʯ͕ແ͍ͱ͖ 33
Ωʔແ͍ͱ͖ͷڍಈΛѲ͠Α͏ Ø ࢦఆͨ͠ʮ݅Ωʔʯ͕ແ͍ͱ͖ Ø ࢦఆͨ͠ʮϙϦγʔมʯ͕ແ͍ͱ͖ 34
ࢦఆͨ͠ʰ݅Ωʔʱ͕ແ͍ͱ͖ͷڍಈ ෆҰக GBMTF ͱͯ͠ѻΘΕΔ 35
ࢦఆͨ͠ʰ݅Ωʔʱ͕ແ͍ͱ͖ͷڍಈ ⾠ ͨͩ͠ʮNot ݅ԋࢉࢠʯͷ߹ USVF ʹͳΔ 36
Ωʔແ͍ͱ͖ͷڍಈΛѲ͠Α͏ Ø ࢦఆͨ͠ʮ݅Ωʔʯ͕ແ͍ͱ͖ Ø ࢦఆͨ͠ʮϙϦγʔมʯ͕ແ͍ͱ͖ 37
ࢦఆͨ͠ʰϙϦγʔมʱ͕ແ͍ͱ͖ͷڍಈ ⾠ εςʔτϝϯτ͕ແޮʹͳΔ 38
39 ͜͜Ͱ
͜͜Ͱ ʲέʔεʳ ʲέʔεʳ %FOZ͞ΕΔ PS͞Εͳ͍ʁ 40
͜͜Ͱ ʲέʔεʳ ʲέʔεʳ %FOZ͞ΕΔ PS͞Εͳ͍ʁ 41 ʮϓϦϯγύϧ ϩʔϧ ͷ 1SPKFDUλάʯͱ
ʮϦιʔε &$ ͷ 1SPKFDUλάʯ͕ Ұக͠ͳ͍ͱ͖ʹ &$ΠϯελϯεͷىಈఀࢭΛڋ൱͢Δ
͜͜Ͱ ʲέʔεʳ ʲέʔεʳ %FOZ͞ΕΔ PS͞Εͳ͍ʁ 42 ʲέʔεʳ ϩʔϧʹ1SPKFDUλάΛ͚Εͨ
͜͜Ͱ ʲέʔεʳ ʲέʔεʳ %FOZ͞ΕΔ PS͞Εͳ͍ʁ 43 ʲέʔεʳ Πϯελϯεʹ1SPKFDUλάΛ͚Εͨ
͜͜Ͱ ʲέʔεʳ ʲέʔεʳ %FOZ͞ΕΔ PS͞Εͳ͍ʁ 44
·ͣ͑ ʲέʔεʳ%FOZ͞ΕΔ ʲέʔεʳ%FOZ͞Εͳ͍ 45
ʲέʔεʳ%FOZ͞ΕΔ ݅Ωʔ͕ແ͍ঢ়ଶͳͷͰ ෆҰக GBMTF ѻ͍ ‑ ͨͩɺ݅ԋࢉࢠ StringNotEquals ‑ ූ߸సͷ݅ԋࢉࢠͳͷͰɺ
USVF ʹͳΔ ‑ ϙϦγʔ࣮ߦ %FOZ 46
ʲέʔεʳ%FOZ͞Εͳ͍ ϙϦγʔม͕ແ͍ঢ়ଶ ‑ εςʔτϝϯτແޮ ‑ ϙϦγʔ࣮ߦ͞Εͳ͍ %FOZ͞Εͳ͍ 47
48 $POEJUJPOઃܭͷ ✎τϐοΫ✎ IfExists, Null, ϙϦγʔมͷσϑΥϧτ
49 ݅ΩʔΛߟྀͨ͠ $POEJUJPOઃܭ
݅Ωʔͷ߹ Ωʔ͕ແ͍ͱ͖ͷʮϙϦγʔΛ࣮ߦ͢Δ͠ͳ͍ʯΛ ίϯτϩʔϧ͠Α͏ʂ Ø USVF ϙϦγʔΛ࣮ߦ͢Δ ͱ͍͔ͨ͠ Ø GBMTF ϙϦγʔΛ࣮ߦ͠ͳ͍
ͱ͍͔ͨ͠ 50
ʮ݅Ωʔ͕ແ͍ʯͱ͖ʹ USVF ʹ͢Δ ...IfExists ݅ԋࢉࢠΛ͓͏ʂ Ø NullΛআ͘ શͯͷ݅ԋࢉࢠͷඌʹՃՄೳ ü ݅Ωʔ͕ແ͍ͱ͖ʹ
USVF ͱͳΔ 51 ✎ϙΠϯτ✎ ʮ݅ԋࢉࢠʹࠨӈ͞Εͳ͍ʯ
ʮ݅Ωʔ͕ແ͍ʯͱ͖ʹ GBMTF ʹ͢Δ “Null”: {“key”: false} Λه͠Α͏ʂ Ø Null ݅ΩʔͷଘࡏఆͰ͑Δ݅ԋࢉࢠ
ü USVF Ωʔ͕ଘࡏ͠ͳ͍ ·ͨ GBMTF Ωʔ͕ଘࡏ͢Δ 52 ✎ϙΠϯτ✎ ʮ݅ԋࢉࢠʹࠨӈ͞Εͳ͍ʯ
53 ϙϦγʔมΛߟྀͨ͠ $POEJUJPOઃܭ
ϙϦγʔมͷ߹ Ωʔ͕ແ͍ͱ͖ͷڍಈΛίϯτϩʔϧ͠Α͏ʂ Ø σϑΥϧτͷࢦఆ Ø Null ͷ໌ࣔతͳهࡌ 54
ϙϦγʔมͷ σϑΥϧτ ࢦఆ Ωʔ͕ແ͍ͱ͖ͷσϑΥϧτΛࢦఆՄೳ ॻ͖ํ${key,‘default-value’} 55 ✎ϙΠϯτ✎ ʮεςʔτϝϯτແޮԽΛճආʯ
Null ͷ໌ࣔతͳهࡌ Null Λ໌ࣔతʹهࡌͯ͠ ʮΩʔ͕͋ΔલఏͷεςʔτϝϯτʯΛࣔ͢ 56 ✎ϙΠϯτ✎ ʮϙϦγʔ࣮ߦ݅Λ໌ࣔతʹهࡌʯ
Null ͷ໌ࣔతͳهࡌ 57 ➥Ωʔ͕ͳ͍ͱ͖ Ø /VMMͷ෦Ͱ GBMTFͱͳΔ Ø ͜ͷ࣌Ͱ $POEJUJPO෦͕
GBMTFʹͳ Δ͜ͱ͕֬ఆ͢Δ˞ Ø ϙϦγʔ࣮ߦ͞Εͳ͍ ➥Ωʔ͕ͳ͍ͱ͖ Ø ϙϦγʔมʹࢦఆͨ͠Ωʔ͕ແ͍ Ø εςʔτϝϯτ͕ແޮʹͳΔ Ø ϙϦγʔ࣮ߦ͞Εͳ͍ ˞$POEJUJPOશ݅ͷ"/%Ͱ ධՁ͞ΕΔͨΊ
58 ·ͱΊ
·ͱΊ ΩʔͷՄ༻ੑͱڍಈͷ Ø ϦΫΤετίϯςΩετͷ ΩʔʹՄ༻ੑ͕͋Δ Ø ݅Ωʔ͕ແ͍ͱ͖ ෆҰக GBMTF ü
/PUܥͷ߹ USVF Ø ϙϦγʔม͕ແ͍ͱ͖ εςʔτϝϯτແޮ 59 ϙϦγʔม ੍ޚͷ Ø σϑΥϧτͷࢦఆ Ø Nullͷ໌ࣔతͳهࡌ ݅Ωʔ ੍ޚͷ Ø USVFʹ͍ͨ͠ͱ͖ IfExists Ø GBMTFʹ͍ͨ͠ͱ͖ Null
None
ࢀߟ • "84 • "84άϩʔόϧ݅ίϯςΩετΩʔ "84*EFOUJUZBOE"DDFTT.BOBHFNFOU • "84ͷαʔϏεͷΞΫγϣϯɺϦιʔεɺ͓Αͼ݅Ωʔ
αʔϏεೝূϦϑΝϨϯε • *".+40/ϙϦγʔཁૉ݅ԋࢉࢠ "84*EFOUJUZBOE"DDFTT.BOBHFNFOU • ϙϦγʔͷཁૉมͱλά "84*EFOUJUZBOE"DDFTT.BOBHFNFOU • %FWFMPQFST*0 • 4όέοτϙϦγʔͷ۩ମྫͰֶͿ"84ͷ1PMJDZυΩϡϝϯτ c%FWFMPQFST*0 • ʲ"84*".ʳ$POEJUJPOͷ݅ΩʔϙϦγʔมՄ༻ੑΛҙࣝ͠Α͏ʂͱ͍͏ c %FWFMPQFST*0 • খωλ"84*".ϙϦγʔͷ $POEJUJPOͰ͑Δ݅ԋࢉࢠ l/VMMzͷ͍ΈͪΛߟ͑Δ c %FWFMPQFST*0 • "84ʹ͓͚Δ"#"$ͷخ͠͞ɺਏ͞ΛޠΓ·ͨ͠ ",*#""84c%FWFMPQFST*0 61