16D. ์ฌ์ฉ์์ ๊ทธ๋ฃน์ ์์ฑํ์ฌ ์ ๊ทผ์ ์ด ๋ฐ ๊ถํ๊ด๋ฆฌ๋ฅผ ์ ๊ณตํ๋ IAM
16D. ์ฌ์ฉ์์ ๊ทธ๋ฃน์ ์์ฑํ์ฌ ์ ๊ทผ์ ์ด ๋ฐ ๊ถํ๊ด๋ฆฌ๋ฅผ ์ ๊ณตํ๋ IAM ๊ด๋ จ
IAM ์ญํ ํ์ฉํ๊ธฐ
IAM ์ญํ Role์ ์์์ ์ค๋ช ํ ๊ฒ์ฒ๋ผ EC2 ์ธ์คํด์ค, ๋ค๋ฅธ AWS ๊ณ์ , Facebook, Google, Amazon.com ๊ณ์ ์ ์ฉ์ผ๋ก AWS ๋ฆฌ์์ค์ ๋ํด ์ ๊ทผ ๊ถํ์ ์ค์ ํ ์ ์์ต๋๋ค. ์ด๋ฒ์๋ EC2 ์ธ์คํด์ค ์ ์ฉ์ผ๋ก IAM ์ญํ ์ ์์ฑํ๊ณ , EC2 ์ธ์คํด์ค์์ IAM ์ญํ ์ ์ฌ์ฉํด๋ณด๊ฒ ์ต๋๋ค.
EC2 ์ธ์คํด์ค์์ API๋ก AWS ๋ฆฌ์์ค์ ์ ๊ทผํ๋ ค๋ฉด ํญ์ ์ก์ธ์ค ํค์ ์ํฌ๋ฆฟ ํค๋ฅผ ์ค์ ํด์ผ๋ง ํ์ต๋๋ค. ๋์ค์ Auto Scaling ๊ธฐ๋ฅ์ผ๋ก EC2 ์ธ์คํด์ค๋ฅผ ์๋์ผ๋ก ๋๋ ค๋๊ฐ ๋ ์ก์ธ์ค ํค์ ์ํฌ๋ฆฟ ํค๋ฅผ ์ผ์ผ์ด ์ค์ ํด์ฃผ๋ ค๋ฉด ์๋นํ ๊ท์ฐฎ์ต๋๋ค. ์ด๋ฐ ๋ถ๋ถ์ ๋ฐ๋ก ์๋ํํ์ง ์์๋ IAM ์ญํ ์ ์ฌ์ฉํ๋ฉด EC2 ์ธ์คํด์ค ์์ฑ ์ฆ์ API๋ก AWS ๋ฆฌ์์ค์ ์ ๊ทผํ ์ ์์ต๋๋ค.
IAM ์ญํ ์์ฑํ๊ธฐ
IAM ์ญํ ๋ชฉ๋ก([Details]
โ [Roles]
)์์ ์์ชฝ Create New Role ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
IAM ์ญํ ์ ์์ฑํฉ๋๋ค.
- Role Name: IAM ์ญํ ์ด๋ฆ์ ๋๋ค. ExampleEC2Role์ ์ ๋ ฅํฉ๋๋ค.
Next Step ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
IAM ์ญํ ์ ํ์
๋๋ค. EC2 ์ธ์คํด์ค์ฉ IAM ์ญํ ์ ์์ฑํ๊ธฐ๋ก ํ์ผ๋ฏ๋ก Amazon EC2์ [Select]
๋ฒํผ์ ํด๋ฆญํฉ๋๋ค(๊ทธ๋ฆผ 16-32).
- AWS Service Roles: AWS ๋ฆฌ์์ค ์ ์ฉ IAM ์ญํ ์ ๋๋ค. EC2, CloudHSM, Data Pipeline, Elastic Transcoder, OpsWorks ๋ฑ์ ์ ํํ ์ ์์ต๋๋ค.
- Role for Cross-Account Access: ๋ค๋ฅธ AWS ๊ณ์ ํน์ ๋ค๋ฅธ AWS ๊ณ์ ์ ์ํ IAM ์ฌ์ฉ์๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
- Role for Identity Provider Access: Facebook, Google, Amazon.com ๊ณ์ ๊ณผ SAML(Security Asserting Markup Language) ํ๋กํ ์ฝ์ ์ง์ํ๋ Identity Provider๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
IAM ์ญํ ์ด S3์๋ง ์ ๊ทผํ ์ ์๋๋ก ์ค์ ํด๋ณด๊ฒ ์ต๋๋ค. Select Policy Template์๋ AWS์ ๋ชจ๋ ๋ฆฌ์์ค์ ๋ํ ์ ๊ทผ ๊ถํ์ Full Access, Read Only Access, ๊ธฐํ Access๋ก ๊ตฌ๋ถํ์ฌ ์ค๋นํด๋์์ต๋๋ค. ๊ฐ์๊ฐ ์๋นํ ๋ง์ผ๋ฏ๋ก ์คํฌ๋กค์ ๋ด๋ ค Amazon S3 Full Access์ [Select]
๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
S3์๋ง ์ ๊ทผํ ์ ์๋๋ก ํด์ฃผ๋ ์ ์ฑ ํ์ผPolicy Document์ด ์๋์ผ๋ก ์์ฑ๋ฉ๋๋ค.
์ง๊ธ๊น์ง ์ค์ ํ ๋ด์ฉ์ ์ด์์ด ์๋์ง ํ์ธํฉ๋๋ค.
IAM ์ญํ ๋ชฉ๋ก์ IAM ์ญํ (ExampleEC2Role
)์ด ์์ฑ๋์์ต๋๋ค. IAM ์ญํ (ExampleEC2Role
)์ ์ ํํ ๋ค ์ธ๋ถ ๋ด์ฉ์ ๋ณด๋ฉด Permissions์ ํ์ฌ ์ค์ ๋ ์ ์ฑ
์ด ํ์๋ฉ๋๋ค.
IAM ์ญํ ์ ์ฌ์ฉํ๋ EC2 ์ธ์คํด์ค ์์ฑํ๊ธฐ
EC2 ์ธ์คํด์ค ์ ์ฉ IAM ์ญํ ์ EC2 ์ธ์คํด์ค๋ฅผ ์์ฑํ ๋ ์ค์ ํด์ฃผ์ด์ผ ํฉ๋๋ค. ์ด๋ฏธ ๋ง๋ค์ด์ง EC2 ์ธ์คํด์ค์๋ IAM ์ญํ ์ ์ค์ ํ ์ ์์ต๋๋ค.
EC2 ๊ฐ์ ์๋ฒ์ ์ค์น๋ ์ด์์ฒด์ ๋ฅผ ์ ํํฉ๋๋ค. AWS ๋ช ๋ นํ ์ธํฐํ์ด์คAWS CLI๊ฐ ๋ฏธ๋ฆฌ ์ค์น๋์ด ์๋ Amazon Linux๋ฅผ ์ฌ์ฉํ๊ฒ ์ต๋๋ค.
EC2 ์ธ์คํด์ค ์ ํ์ ์ ํํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Free tier์ฉ์ธ Micro Instance๊ฐ ์ ํ๋์ด ์์ต๋๋ค.
EC2 ์ธ์คํด์ค ์ธ๋ถ ์ค์ ์์ IAM ์ญํ ์ ์ค์ ํ ์ ์์ต๋๋ค. IAM role ๋ถ๋ถ์์ IAM ์ญํ ๋ชฉ๋ก์ด ํ์๋ฉ๋๋ค. ์์์ ์์ฑํ ExampleEC2Role์ ์ ํํฉ๋๋ค. ๋๋จธ์ง ์ค์ ์ ๊ธฐ๋ณธ๊ฐ ๊ทธ๋๋ก ์ฌ์ฉํ๊ณ Review and Launch ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค(๋๋จธ์ง ์ธ๋ถ ์ค์ ์ ์๋ตํ๊ฒ ์ต๋๋ค. ์์ธํ ๋ด์ฉ์ '4.3 EC2 ์ธ์คํด์ค ์์ฑํ๊ธฐ'๋ฅผ ์ฐธ์กฐํ๊ธฐ ๋ฐ๋๋๋ค).
์ง๊ธ๊น์ง ์ค์ ํ ๊ฐ๋ค์ด ์ ์์ ์ผ๋ก ์ค์ ๋์๋์ง ํ์ธํฉ๋๋ค.
์์์ EC2 ์ธ์คํด์ค๋ฅผ ์์ฑํด๋ณด์๋ค๋ฉด EC2 ์ธ์คํด์ค ์ ์์ ์ํ ํค๊ฐ ์ด๋ฏธ ์์ ๊ฒ์ ๋๋ค.
์ ์ ๊ธฐ๋ค๋ฆฌ๋ฉด EC2 ์ธ์คํด์ค๊ฐ ์์ฑ๋์๋ค๋ ํ๋ฉด์ด ๋์ต๋๋ค.
EC2 ์ธ์คํด์ค๊ฐ ์์ ํ ์์ฑ๋์์ต๋๋ค.
SSH๋ก ์์์ ํ์ธํ Public IP์ ์ ์ํ ๋ค ๋ค์ ๋ช ๋ น์ ์ ๋ ฅํฉ๋๋ค(SSH ์ ์ ๋ฐฉ๋ฒ์ '4.4 EC2 ์ธ์คํด์ค์ ์ ์ํ๊ธฐ'๋ฅผ ์ฐธ์กฐํ๊ธฐ ๋ฐ๋๋๋ค). aws s3 ls๋ S3์ ํ์ผ ๋ชฉ๋ก์ ๋ณด๋ ๋ช ๋ น์ ๋๋ค. ์์์ ์์ฑํ S3 ๋ฒํท(examplebucket10)์ ํ์ผ ๋ชฉ๋ก์ ์ถ๋ ฅํด๋ณด๊ฒ ์ต๋๋ค(S3 ๋ฒํท์ ์์ฑํ์ง ์์๋ค๋ฉด '11.1 S3 ๋ฒํท ์์ฑํ๊ธฐ', '11.2 S3 ๋ฒํท์ ํ์ผ ์ฌ๋ฆฌ๊ธฐ/๋ฐ๊ธฐ'๋ฅผ ์ฐธ์กฐํ์ฌ S3 ๋ฒํท์ ์์ฑํ๊ณ ํ์ผ์ ์ฌ๋ฆฌ๊ธฐ ๋ฐ๋๋๋ค).
aws s3 ls s3://examplebucket10
#
# PRE logs/
# 2014-04-22 10:17:48 775702 Jellyfish.jpg
# 2014-04-22 10:28:52 620888 Tulips.jpg
์์์ IAM ์ญํ ์ S3์ ์ ๊ทผํ ์ ์๋ Amazon S3 Full Access๋ฅผ ์ค์ ํ๊ธฐ ๋๋ฌธ์ S3 ๋ฒํท์ ํ์ผ ๋ชฉ๋ก์ ๋ณผ ์ ์์ต๋๋ค. ๋ํ, EC2 ์ธ์คํด์ค๋ฅผ ์์ฑํ ๋ IAM ์ญํ ์ ์ฌ์ฉํ๋๋ก ์ค์ ํ๊ธฐ ๋๋ฌธ์ ์ก์ธ์ค ํค์ ์ํฌ๋ฆฟ ํค๋ฅผ ๋ฐ๋ก ์ค์ ํ์ง ์์๋ aws s3
๋ช
๋ น์ด ์ ๋์ํฉ๋๋ค.
IAM ์ญํ ์ญ์
EC2 ์ธ์คํด์ค์์ IAM ์ญํ ์ ์ฌ์ฉํ๊ณ ์์ ๋ IAM ์ญํ ์ ์ญ์ ํ๋ฉด ์๋ฉ๋๋ค. IAM ์ญํ ์ ์ญ์ ํ๋ ์ฆ์ EC2 ์ธ์คํด์ค์์ AWS ๋ฆฌ์์ค๋ก ์ ๊ทผํ๋ ๊ถํ์ด ์ฌ๋ผ์ง๋ ์ฃผ์ํ๊ธฐ ๋ฐ๋๋๋ค.
๋ค์ ๋ช
๋ น์ ์
๋ ฅํ์ฌ DynamoDB์ ์ ๊ทผํฉ๋๋ค. IAM ์ญํ (ExampleEC2Role
)์๋ DynamoDB์ ์ ๊ทผํ ์ ์๋ ๊ถํ์ด ์๊ธฐ ๋๋ฌธ์ Access Denied ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค.
aws --region ap-northeast-1 dynamodb scan --table-name UsersLeaderboard
#
# A client error (AccessDeniedException) occurred when calling the Scan operation: User: arn:aws:sts::232075047203:assumed-role/ExampleEC2Role/i-d7027cd1 is not authorized to perform: dynamodb:Scan on resource: arn:aws:dynamodb:ap-northeast-1:232075047203:table/UsersLeaderboard