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
7k
AWS IAMポリシーのConditionを書くときの勘所
IAMポリシーのConditionを使うことで柔軟な権限設計を実現できます。今回はこの Conditionを書くときに意識したい「キーの可用性」の話をします。
MasahiroKawahara
July 25, 2022
Tweet
Share
More Decks by MasahiroKawahara
See All by MasahiroKawahara
Amazon DevOps Guru のベースラインを整備して1ヶ月ほど運用してみた #jawsug_asa / Amazon DevOps Guru trial
masahirokawahara
3
210
DuckDB MCPサーバーを使ってAWSコストを分析させてみた / AWS cost analysis with DuckDB MCP server
masahirokawahara
0
1.7k
セキュリティ系アップデート全体像と AWS Organizations 新ポリシー「宣言型ポリシー」を紹介 / reGrowth 2024 Security
masahirokawahara
0
870
わたしとトラックポイント / TrackPoint tips
masahirokawahara
1
430
AWS CLIとシェルスクリプト、いつ使う?活用できる場面とTips紹介 #devio2024 / AWS CLI and Shell Tips
masahirokawahara
0
1.3k
EC2の脆弱性対応で何が使える? Inspector や SSM あたりを整理する #nakanoshima_dev
masahirokawahara
2
2.1k
SSM Inventory を使って便利に EC2 棚卸し(ハマりどころを添えて)
masahirokawahara
2
1.2k
ここが嬉しいABAC ここが辛いよABAC #再解説+補足編
masahirokawahara
1
650
疲弊しない!AWSセキュリティ統制の考え方 #devio_osakaday1
masahirokawahara
6
8.5k
Other Decks in Technology
See All in Technology
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.2k
kintone開発組織のDevOpsへの移り変わりと実践
ueokande
1
280
データベースの引越しを Ora2Pg でスマートにやろう
jri_narita
0
180
単一Gitリポジトリから独立しました
lycorptech_jp
PRO
0
350
Oracle Cloud Infrastructure IaaS 新機能アップデート 2025/03 - 2025/05
oracle4engineer
PRO
1
130
入門 ESlint Typegen #TSKaigi #TSKaigi2025_kataritai
bengo4com
0
2k
大失敗しないための Web API 開発レシピ / A recipe for not making a big failure on WebAPI development
yokawasa
1
180
Text-to-SQLの評価データセットを作って最新LLMモデルの性能評価をしてみた
gotalab555
3
460
20250612_GitHubを使いこなすためにソニーの開発現場が取り組んでいるプラクティス.pdf
osakiy8
1
320
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
2
7.3k
セキュリティSaaS企業が実践するCursor運用ルールと知見 / How a Security SaaS Company Runs Cursor: Rules & Insights
tetsuzawa
1
2.9k
Tensix Core アーキテクチャ解説
tenstorrent_japan
0
200
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.6k
Designing for humans not robots
tammielis
253
25k
How to Ace a Technical Interview
jacobian
276
23k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
32
5.8k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.7k
How to Think Like a Performance Engineer
csswizardry
24
1.7k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.2k
The Cost Of JavaScript in 2023
addyosmani
49
8.3k
Why Our Code Smells
bkeepers
PRO
337
57k
Bash Introduction
62gerente
614
210k
Designing Experiences People Love
moore
142
24k
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