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
20230510_FinJAWS
Search
Takuya Yonezawa
May 10, 2023
Programming
790
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
20230510_FinJAWS
Takuya Yonezawa
May 10, 2023
More Decks by Takuya Yonezawa
See All by Takuya Yonezawa
20260516_SecJAWS_Days
takuyay0ne
4
800
20260422_Midosuji_Tech
takuyay0ne
2
85
脱 雰囲気実装!AgentCoreを良い感じにWEBアプリケーションに組み込むために
takuyay0ne
3
580
20260228_JAWS_Beginner_Kansai
takuyay0ne
5
710
20260204_Midosuji_Tech
takuyay0ne
1
240
20260129_CB_Kansai
takuyay0ne
1
370
20260126_JAWS_Osaka
takuyay0ne
1
64
こんな時代だからこそ! 想定しておきたいアクセスキー漏洩後のムーブ
takuyay0ne
4
810
セキュリティは全員参加!_JAWSのイベントサイトで脅威モデリングを学んでみよう!
takuyay0ne
0
220
Other Decks in Programming
See All in Programming
Go言語とトイモデルで学ぶTransformerの気持ち / fukuokago23-transformer
monochromegane
0
110
ローカルLLMでどこまでコードが書けるか -縮小版 / How much code can be written on a local LLM Shortened
kishida
2
190
Welcome to the "Parametricity" 🏙️ − Generic だけど Specific な世界 −
guvalif
PRO
1
170
これからAgentCoreを触る方へトレンドはGatewayです
har1101
6
500
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
270
霧の中の代数的エフェクト
funnyycat
1
410
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
220
【やさしく解説 設計編・中級 #4】ルールの寿命と、システムの年輪
panda728
PRO
2
150
yield再入門 #phpcon
o0h
PRO
0
550
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
210
Claude Team Plan導入・ガイド
tk3fftk
0
210
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
860
Featured
See All Featured
Paper Plane (Part 1)
katiecoart
PRO
1
9.7k
Discover your Explorer Soul
emna__ayadi
2
1.2k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
450
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Automating Front-end Workflow
addyosmani
1370
210k
WENDY [Excerpt]
tessaabrams
11
38k
We Are The Robots
honzajavorek
0
280
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
We Have a Design System, Now What?
morganepeng
55
8.2k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
370
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
390
Transcript
$%,ͷา͖ํ ଜ૯߹ݚڀॴ ถᖒ #-&"GPS'4*ͷ ιʔεΛಡΈղͨ͘Ίͷ
͜ͷ-5Ͱ͓͍͑ͨ͜͠ͱ #-&"GPS'4*ͷιʔείʔυΛಡΈղ֦͘ு͢ΔͨΊʹ͓͖ͬͯ͘ϙΠϯτ ࠔͬͨͱ͖ʹࢀর͢ΔͰ͋Ζ͏$%,ެࣜϦϑΝϨϯεͷಡΈํ $%,Λ5ZQF4DSJQUͰ։ൃ͢Δͷා͘ͳ͍ʂ ͜ͷ-5Ͱ͓͑͠ͳ͍͜ͱ #-&"GPS'4*ͷߏཁૉઃܭࢥʢطʹղઆࡁΈͷͣɻɻʣ #-&"GPS'4*ͷݕূͯ͠Έͨ ͡Ίʹ
͜Εʂ ʹଜ૯߹ݚڀॴʹ৽ଔೖࣾɻۚ༥ۀքͷ͓٬༷͚ʹ ϑϩϯτγεςϜͷߏஙΤϯϋϯεΛ୲ͨ͠ޙʹδϣϒνΣϯδɻ ݱࡏ࢈ۀۀքͷ͓٬༷͚ʹ"84ڥશൠͷઃܭߏஙΛ୲ɻ 8&#։ൃ͔Β"84౷੍ɺΫϥυΨΠυϥΠϯࡦఆͳͲԿͰΓ·͢ ͖ͳ"84αʔϏε4". "QQMJDBUJPO$PNQPTFS $PEF1JQFMJOF
͖ͳٕज़/FYUKT 5BJMXJOE$44 %PDLFS LT 3BODIFS झຯ֨ಆٕʢΓ·͢ݟ·͢ʣɺ͓ՈLTʢ͔Θ͍͍ʣ UBLVZBZPOF ถᖒ 5BLVZB:POF[BXB
"84$%,ʢ$MPVE%FWFMPQNFOU,JUʣ ϓϩάϥϛϯάݴޠΛ༻ͯ͠"84্ͷϦιʔεΛఆٛ͢Δ͜ͱ͕Ͱ͖Δ *B$ʢ*OGSBTUSVDUVSFBT$PEFʣπʔϧ ར༻Մೳͳݴޠ1ZUIPOɺ5ZQF4DSJQUɺ+BWBɺ(PMBOH 044ͱͯ͠(JU)VCͰެ։͞Ε͓ͯΓɺ׆ൃʹ։ൃ͞Ε͍ͯΔ $%,ιʔεΛϏϧυ$MPVE'PSNBUJPOͱͯ͠Ϧιʔε͕ߏங͞ΕΔ ϦιʔεఆٛͷநʹԠͯ͡---ͱ͍͏ϨΠϠʔ͕ଘࡏ
-ɿநΊʢ$MPVE'PSNBUJPOͱରԠɻ಄จࣈ͕$GOʓʓʣ -ɿநߴΊʢ"84ͷϕετϓϥΫςΟεΛ͋Δఔඪ४औΓࠐΈࡁΈʣ -ɿෳϦιʔεԣஅʢ"-#ͱ&$4λεΫΛηοτͰ࡞ͳͲʣ "84$%, ˞ IUUQTHJUIVCDPNBXTBXTDEL
"84$%,ʢ$MPVE%FWFMPQNFOU,JUʣ ϓϩάϥϛϯάݴޠΛ༻ͯ͠"84্ͷϦιʔεΛఆٛ͢Δ͜ͱ͕Ͱ͖Δ *B$ʢ*OGSBTUSVDUVSFBT$PEFʣπʔϧ ར༻Մೳͳݴޠ1ZUIPOɺ5ZQF4DSJQUɺ+BWBɺ(PMBOH 044ͱͯ͠(JU)VCͰެ։͞Ε͓ͯΓɺ׆ൃʹ։ൃ͞Ε͍ͯΔ $%,ιʔεΛϏϧυ$MPVE'PSNBUJPOͱͯ͠Ϧιʔε͕ߏங͞ΕΔ ϦιʔεఆٛͷநʹԠͯ͡---ͱ͍͏ϨΠϠʔ͕ଘࡏ
-ɿநΊʢ$MPVE'PSNBUJPOͱରԠɻ಄จࣈ͕$GOʓʓʣ -ɿநߴΊʢ"84ͷϕετϓϥΫςΟεΛ͋Δఔඪ४औΓࠐΈࡁΈʣ -ɿෳϦιʔεԣஅʢ"-#ͱ&$4λεΫΛηοτͰ࡞ͳͲʣ "84$%, ˞ IUUQTHJUIVCDPNBXTBXTDEL Ͳͷݴޠ͏ͷ͕Φεεϝʁ🤔
ʘ5ZQF4DSJQUΛ͏͠ʂʗ
$%,PO5ZQF4DSJQUͷਪ͠ϙΠϯτ ͦͦ$%,͕5ZQF4DSJQUͰॻ͔Ε͍ͯΔͱ͍͏҆৺ײ ಉ͡։ൃݴޠͱͳΔͨΊɺಠ֦ࣗு͕؆୯ʢͩͱࢥ͏ʣ ࣮ํ໋໊نଇʹࠔͬͨΒ$%,ͷιʔείʔυΛோΊͯࢀߟʹͰ͖Δ ଟ͘ͷ5ZQF4DSJQU࣮ྫαϯϓϧίʔυ͕ωοτ্ʹ͋Δ 5ZQF4DSJQUͷܕิ͕ൈ܈ͷ։ൃମݧ $%,ͷެࣜυΩϡϝϯτͷαϯϓϧ͕ͦͦ5ZQF4DSJQU ଞͷ/PEFKTύοέʔδͱͷੑ͕˓ ࢲ͕$%,PO5ZQF4DSJQUΛਪ͢ཧ༝
$%,PO5ZQF4DSJQUͷਪ͠ϙΠϯτ ͦͦ$%,͕5ZQF4DSJQUͰॻ͔Ε͍ͯΔͱ͍͏҆৺ײ ಉ͡։ൃݴޠͱͳΔͨΊɺಠ֦ࣗு͕؆୯ʢͩͱࢥ͏ʣ ࣮ํ໋໊نଇʹࠔͬͨΒ$%,ͷιʔείʔυΛோΊͯࢀߟʹͰ͖Δ ଟ͘ͷ5ZQF4DSJQU࣮ྫαϯϓϧίʔυ͕ωοτ্ʹ͋Δ 5ZQF4DSJQUͷܕิ͕ൈ܈ͷ։ൃମݧ $%,ͷެࣜυΩϡϝϯτͷαϯϓϧ͕ͦͦ5ZQF4DSJQU ଞͷ/PEFKTύοέʔδͱͷੑ͕˓ ࢲ͕$%,PO5ZQF4DSJQUΛਪ͢ཧ༝
5ZQF4DSJQUʹ͍ͭͯগ͠ิ +BWBTDSJQUʹܕͱ͍͏֓೦Λ࣋ͨͤͨ"MU+4ʢBMUFSOBUJWF+BWB4DSJQUʣ ੩తܕ͚ݴޠͰ͋Δʢ5ZQFͱݴΘΕΔॴҎʣ Ϗϧυ࣌ʹɺมʹ͓͔͠ͳ͕ೖ͍ͬͯΕΤϥʔ͕ى͖ΔʢFYJOUܕͷมʹTUSJOHܕΛೖͨ͠ʣ ಈతܕ͚ͩͱɺϏϧυˠ࣮ߦ·ͰΒͳ͍ͱΤϥʔ͕ى͜Δ͔Ͳ͏͔͔Βͳ͍ ࢲ͕$%,PO5ZQF4DSJQUΛਪ͢ཧ༝
5ZQF4DSJQUʹ͍ͭͯগ͠ิ $%,PO5ZQF4DSJQUͰͷܕνΣοΫྫ -Ͱͷ4όέοτ࡞ ࢲ͕$%,PO5ZQF4DSJQUΛਪ͢ཧ༝ const testBucket = new s3.Bucket(this,'TestBucket',{
versioned: true, }); ܕνΣοΫ0, const testBucket = new s3.Bucket(this,'TestBucket',{ versioned: "123", }); ܕνΣοΫ/( WFSTJPOFE CPPMFBO·ͨVOEF fi OFE ͡Όͳ͍ͱμϝʂ
$%,PO5ZQF4DSJQUͷਪ͠ϙΠϯτ ͦͦ$%,͕5ZQF4DSJQUͰॻ͔Ε͍ͯΔͱ͍͏҆৺ײ ಉ͡։ൃݴޠͱͳΔͨΊɺಠ֦ࣗு͕؆୯ʢͩͱࢥ͏ʣ ࣮ํ໋໊نଇʹࠔͬͨΒ$%,ͷιʔείʔυΛோΊͯࢀߟʹͰ͖Δ ଟ͘ͷ5ZQF4DSJQU࣮ྫαϯϓϧίʔυ͕ωοτ্ʹ͋Δ 5ZQF4DSJQUͷܕิ͕ൈ܈ͷ։ൃମݧ $%,ͷެࣜυΩϡϝϯτͷαϯϓϧ͕ͦͦ5ZQF4DSJQU ଞͷ/PEFKTύοέʔδͱͷੑ͕˓ ࢲ͕$%,PO5ZQF4DSJQUΛਪ͢ཧ༝
$%,PO5ZQF4DSJQUͰͷإΑΓݟΔެࣜυΩϡϝϯτ ެࣜυΩϡϝϯτͷαϯϓϧίʔυجຊతʹ5ZQF4DSJQUલఏͳͷͰɺ߹Θ͓ͤͯ͘ͱ٢ ࢲ͕$%,PO5ZQF4DSJQUΛਪ͢ཧ༝ ˞ IUUQTEPDTBXTBNB[PODPNDELBQJWEPDTBXTDPOTUSVDUMJCSBSZIUNM
$%,PO5ZQF4DSJQUͷਪ͠ϙΠϯτ ͦͦ$%,͕5ZQF4DSJQUͰॻ͔Ε͍ͯΔͱ͍͏҆৺ײ ಉ͡։ൃݴޠͱͳΔͨΊɺಠ֦ࣗு͕؆୯ʢͩͱࢥ͏ʣ ࣮ํ໋໊نଇʹࠔͬͨΒ$%,ͷιʔείʔυΛோΊͯࢀߟʹͰ͖Δ ଟ͘ͷ5ZQF4DSJQU࣮ྫαϯϓϧίʔυ͕ωοτ্ʹ͋Δ 5ZQF4DSJQUͷܕิ͕ൈ܈ͷ։ൃମݧ $%,ͷެࣜυΩϡϝϯτͷαϯϓϧ͕ͦͦ5ZQF4DSJQU ଞͷ/PEFKTύοέʔδͱͷੑ͕˓ ࢲ͕$%,PO5ZQF4DSJQUΛਪ͢ཧ༝
#-&"GPS'4*ͷϦϙδτϦΛ͍ͯΈ·͠ΐ͏ VTFSDBTFTCBTFDUMPHHJOHQBDLBHFKTPO ࢲ͕$%,PO5ZQF4DSJQUΛਪ͢ཧ༝ "devDependencies": { "@types/jest": "^27.5.2", "@types/node": "18.7.14",
"@typescript-eslint/eslint-plugin": "^5.38.0", "@typescript-eslint/parser": "^5.38.0", "cdk-nag": "^2.15.38", "eslint": "^8.23.1", "eslint-config-prettier": "^8.5.0", "lint-staged": "^13.0.3", "prettier": "^2.7.1", "simple-git-hooks": "^2.8.0", "standard-version": "^9.5.0", "typescript": "^4.8.3" },
#-&"GPS'4*ͷϦϙδτϦΛ͍ͯΈ·͠ΐ͏ VTFSDBTFTCBTFDUMPHHJOHQBDLBHFKTPO ࢲ͕$%,PO5ZQF4DSJQUΛਪ͢ཧ༝ "devDependencies": { "@types/jest": "^27.5.2", "@types/node": "18.7.14",
"@typescript-eslint/eslint-plugin": "^5.38.0", "@typescript-eslint/parser": "^5.38.0", "cdk-nag": "^2.15.38", "eslint": "^8.23.1", "eslint-config-prettier": "^8.5.0", "lint-staged": "^13.0.3", "prettier": "^2.7.1", "simple-git-hooks": "^2.8.0", "standard-version": "^9.5.0", "typescript": "^4.8.3" }, ͳʹΒ$%,ͬΆ͘ͳ͍ ύοέʔδఆ͕ٛɺɺ φχίϨ 🤔
#-&"GPS'4*Ͱ࠾༻͞Ε͍ͯΔ/PEFKTύοέʔδൈਮ &4-JOU +BWB4DSJQU5ZQF4DSJQU͚ͷ੩తղੳπʔϧɻ ߏจΤϥʔϓϩδΣΫτݻ༗ͷίʔσΟϯάنʹҧ͢Δ߹ʹ/(Λग़ͯ͘͠ΕΔɻ ղੳఆٛFTMJOUSDKTPOʹهࡌ͞Ε͍ͯΔ 1SFUUJFS ෳݴޠʹରԠͨ͠ιʔείʔυϑΥʔϚολʢιʔείʔυΛܗͯ͘͠ΕΔʣ ϑΥʔϚοτఆٛQSFUUJFSSDKTPOʹهࡌ͞Ε͍ͯΔ MJOUTUBHFE
HJUDPNNJU࣌ʹԿ͔͠ΒͷॲཧΛτϦΨʔ͢Δ͜ͱ͕Մೳ #-&"GPS'4*ͰԼه͕ઃఆ͞Ε͍ͯΔ ᶃγʔΫϨοτใͷεΩϟϯ ᶄ&4-JOUͰͷ੩తղੳ ᶅ1SFUUJFSʹΑΔࣗಈϑΥʔϚοςΟϯά ࢲ͕$%,PO5ZQF4DSJQUΛਪ͢ཧ༝ "lint-staged": { "*": [ "git-secrets --scan" ], "*.(ts|tsx|js|jsx)": [ "npx eslint --fix" ], "*.(ts|tsx|js|jsx|json|html|yml|yaml|md|graphql|css|scss|less|vue|flow)": [ "npx prettier --write" ] }
#-&"GPS'4*Ͱ࠾༻͞Ε͍ͯΔ/PEFKTύοέʔδൈਮ &4-JOU +BWB4DSJQU5ZQF4DSJQU͚ͷ੩తղੳπʔϧɻ ߏจΤϥʔϓϩδΣΫτݻ༗ͷίʔσΟϯάنʹҧ͢Δ߹ʹ/(Λग़ͯ͘͠ΕΔɻ ղੳఆٛFTMJOUSDKTPOʹهࡌ͞Ε͍ͯΔ 1SFUUJFS ෳݴޠʹରԠͨ͠ιʔείʔυϑΥʔϚολʢιʔείʔυΛܗͯ͘͠ΕΔʣ ϑΥʔϚοτఆٛQSFUUJFSSDKTPOʹهࡌ͞Ε͍ͯΔ MJOUTUBHFE
HJUDPNNJU࣌ʹԿ͔͠ΒͷॲཧΛτϦΨʔ͢Δ͜ͱ͕Մೳ #-&"GPS'4*ͰԼه͕ઃఆ͞Ε͍ͯΔ ᶃγʔΫϨοτใͷεΩϟϯ ᶄ&4-JOUͰͷ੩తղੳ ᶅ1SFUUJFSʹΑΔࣗಈϑΥʔϚοςΟϯά ࢲ͕$%,PO5ZQF4DSJQUΛਪ͢ཧ༝ "lint-staged": { "*": [ "git-secrets --scan" ], "*.(ts|tsx|js|jsx)": [ "npx eslint --fix" ], "*.(ts|tsx|js|jsx|json|html|yml|yaml|md|graphql|css|scss|less|vue|flow)": [ "npx prettier --write" ] } #-&"GPS'4*Ͱ$%,PO5ZQFTDSJQU։ൃ ʹඞཁͳమ൘ύοέʔδ͕ඪ४Ͱೖ͍ͬͯΔͷͰ ͦͷ··͏͚ͩ͡Ό͍ͬͨͳ͍ʂ
#-&"GPS'4*ͷίʔυΛগ͍ͯ͠Έ·͠ΐ͏ VTFDBTFTCBTFDUMPHHJOHMJCCMFBGTJTCVDLFUTUBDLUT͔ΒҰ෦ൈਮ $%,PO5ZQF4DSJQU։ൃ͋Δ͋Δ import { aws_s3 as s3 }
from 'aws-cdk-lib'; export class S3BucketStack extends cdk.Stack { constructor(scope: Construct, id: string, props: cdk.StackProps) { const logsBucket = new s3.Bucket(this, 'logsBucket', { accessControl: s3.BucketAccessControl.PRIVATE, blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL, versioned: true, removalPolicy: cdk.RemovalPolicy.RETAIN, serverAccessLogsBucket: archiveLogsBucket, encryption: s3.BucketEncryption.S3_MANAGED, enforceSSL: true, });
#-&"GPS'4*ͷίʔυΛνϥݟ VTFDBTFTCBTFDUMPHHJOHMJCCMFBGTJTCVDLFUTUBDLUT͔ΒҰ෦ൈਮ $%,PO5ZQF4DSJQU։ൃ͋Δ͋Δ import { aws_s3 as s3 }
from 'aws-cdk-lib'; export class S3BucketStack extends cdk.Stack { constructor(scope: Construct, id: string, props: cdk.StackProps) { const logsBucket = new s3.Bucket(this, 'logsBucket', { accessControl: s3.BucketAccessControl.PRIVATE, blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL, versioned: true, removalPolicy: cdk.RemovalPolicy.RETAIN, serverAccessLogsBucket: archiveLogsBucket, encryption: s3.BucketEncryption.S3_MANAGED, enforceSSL: true, }); BXTDELMJCͷBXT@TϞδϡʔϧΛ Tͱ͍͏ผ໊Ͱར༻͢ΔΑʂ OPEF@NPEVMFTBXTDELMJCBXTT ͔ΒΠϯϙʔτ
#-&"GPS'4*ͷίʔυΛνϥݟ VTFDBTFTCBTFDUMPHHJOHMJCCMFBGTJTCVDLFUTUBDLUT͔ΒҰ෦ൈਮ $%,PO5ZQF4DSJQU։ൃ͋Δ͋Δ import { aws_s3 as s3 }
from 'aws-cdk-lib'; export class S3BucketStack extends cdk.Stack { constructor(scope: Construct, id: string, props: cdk.StackProps) { const logsBucket = new s3.Bucket(this, 'logsBucket', { accessControl: s3.BucketAccessControl.PRIVATE, blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL, versioned: true, removalPolicy: cdk.RemovalPolicy.RETAIN, serverAccessLogsBucket: archiveLogsBucket, encryption: s3.BucketEncryption.S3_MANAGED, enforceSSL: true, }); 4όέοτΛ ࡞ͬͯΔίʔυͬΆ͍͚Ͳɺ ͲΜͳόέοτ࡞ͬͯΜͷʁ🤔
ͷإΑΓݟΔ$%,υΩϡϝϯτ $%,PO5ZQF4DSJQU։ൃ͋Δ͋Δ
ͷإΑΓݟΔ$%,υΩϡϝϯτ #VDLFUΫϥεͷϓϩύςΟ $%,PO5ZQF4DSJQU։ൃ͋Δ͋Δ
ͷإΑΓݟΔ$%,υΩϡϝϯτ #VDLFUΫϥεͷϓϩύςΟ $%,PO5ZQF4DSJQU։ൃ͋Δ͋Δ /BNFͷඌʹ ͕͍͍ͯΔͷ໌ࣔ͠ͳͯ͘ $%,ͰΑ͠ͳʹઃఆͯ͘͠ΕΔ
ͷإΑΓݟΔ$%,υΩϡϝϯτ #VDLFUΫϥεͷϓϩύςΟ $%,PO5ZQF4DSJQU։ൃ͋Δ͋Δ σϑΥϧτ$MPVE'PSNBUJPOελοΫଆͰ Α͠ͳʹઃఆ͓ͯͥ͘͠ʂ
ʘಡΈղ͖ํ͕͔Ε#-&"GPS'4*ා͘ͳ͍ʂʗ
͋͞ɺ#-&"GPS'4*ͷιʔεͷੈք%FFQ%JWFʂ IUUQTHJUIVCDPNBXTTBNQMFTCBTFMJOFFOWJSPONFOUPOBXTGPS fi OBODJBMTFSWJDFTJOTUJUVUF