[AWS] WAF: Amplify ์—ฐ๋™ํ•˜๊ธฐ

๊ด€๋ จ ํฌ์ŠคํŠธ
https://blog.naver.com/sssang97/222921945368
Amplify ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— WAF๋ฅผ ๋ถ™์ด๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•œ๋‹ค.




์ œํ•œ์‚ฌํ•ญ

  1. WAF๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Cloudfront๋ฅผ ๋น„๋กฏํ•œ ๋ช‡๊ฐ€์ง€ ํ•œ์ •๋œ ์„œ๋น„์Šค์— ๋Œ€ํ•ด์„œ๋งŒ ๋ถ€์ฐฉ์ด ๊ฐ€๋Šฅํ•œ๋ฐ, Amplify ์ž์ฒด์— ๋Œ€ํ•ด์„œ๋Š” ์žฅ์ฐฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
  2. WAF๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” Cloudfront๊ฐ€ ์žˆ๊ธด ํ•˜์ง€๋งŒ, ์ด๊ฑด ์‚ฌ์šฉ์ž๊ฐ€ ํ†ต์ œํ•  ์ˆ˜ ์—†๋Š” ๋ธ”๋ž™๋ฐ•์Šค ์˜์—ญ์— ์œ„์น˜ํ•œ๋‹ค.
  3. ๊ทธ๋ž˜์„œ Amplify ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— WAF๋ฅผ ๋‹ฌ๋ ค๋ฉด Amplify ๋ธŒ๋žœ์น˜์— ๋Œ€ํ•ด์„œ ์•ž๋‹จ์— Cloudfront๋ฅผ ์ถ”๊ฐ€๋กœ ๋ถ™์ด๊ณ , ๊ฑฐ๊ธฐ์— WAF๋ฅผ ์žฅ์ฐฉํ•˜๋Š” ์‹์˜ ํŠน์ˆ˜ํ•œ ๊ตฌ์„ฑ์„ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.
  4. ์ด๊ฑด AWS console์—์„œ๋Š” ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋‹ค. aws sdk๋‚˜ cdk๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.

์•„ํ‚คํ…์ณ๋Š” ์ด๋ ‡๋‹ค.




์‚ฌ์ „ ์กฐ๊ฑด

aws-sdk๊ฐ€ ๊น”๋ ค์žˆ์–ด์•ผ ํ•˜๊ณ , python3๊ฐ€ ๊น”๋ ค์žˆ์–ด์•ผ ํ•œ๋‹ค.

cdk๋„ ์—†์œผ๋ฉด ์„ค์น˜ํ•œ๋‹ค.

npm install -g aws-cdk # cloudshell์ด๋ฉด ์—†์–ด๋„ ๋จ

๊ทผ๋ฐ ๊ทธ๋ƒฅ aws cloudshell์—์„œ ์‹คํ–‰ํ•˜๋ฉด ๋” ํŽธํ•˜๋‹ค.




CDK๋กœ ๊ตฌ์„ฑํ•˜๊ธฐ

์•„๋ž˜ ์ปค๋งจ๋“œ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰ํ•œ๋‹ค.

git clone https://github.com/aws-samples/aws-cdk-amplify-with-waf.git
cd aws-cdk-amplify-with-waf
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

๊ทธ๋ฆฌ๊ณ  cdk cli๋กœ ๋ถ€ํŠธ์ŠคํŠธ๋ž˜ํ•‘์„ ํ•ด์ค€๋‹ค. (cloudformation ์Šคํƒ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.)

cdk bootstrap aws://ACCOUNT-NUMBER/REGION-1 aws://ACCOUNT-NUMBER/REGION-2

์ฒซ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ WAF๊ฐ€ ์žˆ๋Š” ๋ฆฌ์ „์ด๊ณ , ๋‘๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ Amplify๊ฐ€ ์žˆ๋Š” ๋ฆฌ์ „์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‹ค์šด๋ฐ›์€ cdk ์ƒ˜ํ”Œ ์†Œ์Šค์—์„œ, ์ € ํŒŒ์ผ์„ ์ˆ˜์ •ํ•ด์ค€๋‹ค.

webacl ARN๊ณผ amplify ์•ฑ ID, ๋ธŒ๋žœ์น˜๋ช…์„ ๋„ฃ์–ด์ค€๋‹ค.

๊ทผ๋ฐ ์—ฌ๊ธฐ ์ฝ”๋“œ์— ์ง€๊ธˆ ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋‹ค. ๋ธŒ๋žœ์น˜๋ช…์— ์Šฌ๋ž˜์‹œ๊ฐ€ ๋“ค์–ด๊ฐ€๋ฉด ๊นจ์ง„๋‹ค.
๋‚ด๊ฐ€ PR์„ ์˜ฌ๋ ค๋†“๊ธด ํ–ˆ๋Š”๋ฐ, ๋จธ์ง€๊ฐ€ ๋ ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ๋‹ค.
์ด๋ ‡๊ฒŒ ๋˜์–ด์žˆ๋Š” ๋ถ€๋ถ„์„

์ด๋ ‡๊ฒŒ ๋ฐ”๊ฟ”์ค€๋‹ค.

๊ทธ๋ฆฌ๊ณ  cdk-cli๋กœ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

cdk deploy CustomAmplifyDistributionStack

์ข€ ์˜ค๋ž˜๊ฑธ๋ฆฐ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ธฐ๋‹ค๋ฆฌ๋ฉด

amplify ์•ž๋‹จ์— ๋‹ฌ๋ฆฐ cloudfront ๋ฐฐํฌ๊ฐ€ ์ƒ๊ธธ ๊ฒƒ์ด๊ณ 


WebACL์—๋„ ๋‹ฌ๋ฆด ๊ฒƒ์ด๋‹ค.
์ด๊ฑด ํ•„์š”์— ๋”ฐ๋ผ ์–ธ์ œ๋“  ์ฝ˜์†”์—์„œ ๋—๋‹ค ๋ถ™์—ฌ๋„ ๋œ๋‹ค.


์ฐธ์กฐ
https://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/enable-aws-waf-for-web-applications-hosted-by-aws-amplify.html
https://github.com/aws-samples/aws-cdk-amplify-with-waf