๐งญ IAM ๊ฐ์
IAM = Identity and Access Management AWS ๊ณ์ ๊ณผ ๋ฆฌ์์ค์ ๋ํ ์ธ์ฆ(Authentication) ๊ณผ ๊ถํ ๋ถ์ฌ(Authorization) ๋ฅผ ๊ด๋ฆฌํ๋ ๊ธ๋ก๋ฒ ์๋น์ค
- IAM์ Global Service
- AWS ๊ณ์ ์์ฑ ์ Root Account ์๋ ์์ฑ
- ๊ณต์ ๊ธ์ง
- ์ผ์์ ์ธ ์์ ์ ์ฌ์ฉ ๊ธ์ง
๐ค IAM: Users & Groups
๐ฅ Users
- ์กฐ์ง ๋ด ์ค์ ์ฌ๋(Physical User) ์ ๋ํ๋
- ๊ฐ User๋:
- AWS Console ์ ๊ทผ์ฉ ๋น๋ฐ๋ฒํธ ๋ณด์ ๊ฐ๋ฅ
- Access Key ๋ณด์ ๊ฐ๋ฅ
๐จโ๐ฉโ๐ง Groups
- Users๋ง ํฌํจ ๊ฐ๋ฅ
- ๋ค๋ฅธ Group ํฌํจ ๋ถ๊ฐ
- ๋ชฉ์ :
- ๊ณตํต ๊ถํ์ ๋ฌถ์ด์ ๊ด๋ฆฌ
๐ ์์ ๊ท์น
- User๋:
- Group์ ์ํ์ง ์์๋ ๋จ
- ์ฌ๋ฌ Group์ ๋์์ ์ํ ์ ์์
์์ ๊ตฌ์กฐ
- Developers ๊ทธ๋ฃน
- Operations ๊ทธ๋ฃน
- Audit Team
- ์ผ๋ถ ์ฌ์ฉ์๋ ๋จ๋ (User only)
๐ IAM: Permissions (๊ถํ)
๊ถํ์ JSON ํ์์ Policy๋ก ์ ์
- ๊ถํ ๋ถ์ฌ ๋์
- User
- Group
๐ ์ต์ ๊ถํ ์์น (Least Privilege Principle)
ํ์ํ ๊ถํ๋ง ๋ถ์ฌ โ ๋ถํ์ํ ์ก์ ์ ์ ๋ ํ์ฉํ์ง ์์
๐ Policy ์์
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":"ec2:Describe*",
"Resource":"*"
},
{
"Effect":"Allow",
"Action":"elasticloadbalancing:Describe*",
"Resource":"*"
},
{
"Effect":"Allow",
"Action":[
"cloudwatch:ListMetrics",
"cloudwatch:GetMetricStatistics",
"cloudwatch:Describe*"
],
"Resource":"*"
}
]
}๐ IAM Policies Inheritance (์์ ๊ตฌ์กฐ)
์ฌ์ฉ์๊ฐ ์ฌ๋ฌ Group์ ์ํ ๊ฒฝ์ฐ ๐ ๋ชจ๋ Group Policy๊ฐ ํฉ์ฐ ์ ์ฉ
User
โโGroup: Developers
โ โโPolicy A
โโGroup: Operations
โ โโPolicy B
โโInlinePolicy
- Inline Policy
- ํน์ User์๊ฒ ์ง์ ์ฐ๊ฒฐ๋ Policy
- ์ต์ข ๊ถํ = ๋ชจ๋ Policy์ ํฉ์งํฉ
๐งฑ IAM Policy ๊ตฌ์กฐ (๊ตฌ์ฑ ์์)
๐ฆ Policy ์ ์ฒด ๊ตฌ์กฐ
- Version
- Policy ์ธ์ด ๋ฒ์
- ํญ์
"2012-10-17"์ฌ์ฉ
- Id (์ ํ)
- Policy ์๋ณ์
- Statement (ํ์)
- ํ๋ ์ด์์ Statement ํฌํจ
๐งฉ Statement ๊ตฌ์ฑ ์์
- Sid (์ ํ)
- Statement ์๋ณ์
- Effect
Allow๋๋Deny
- Principal
- ์ ์ฉ ๋์ (account / user / role)
- Action
- ํ์ฉ ๋๋ ๊ฑฐ๋ถํ API ์ก์
- Resource
- ์ ์ฉ ๋์ ๋ฆฌ์์ค
- Condition (์ ํ)
- ์กฐ๊ฑด๋ถ ์ ์ฑ ์ ์ฉ
๐ IAM โ Password Policy
๊ฐ๋ ฅํ ๋น๋ฐ๋ฒํธ = ๊ณ์ ๋ณด์์ ๊ธฐ๋ณธ
์ค์ ๊ฐ๋ฅ ํญ๋ชฉ:
- ์ต์ ๋น๋ฐ๋ฒํธ ๊ธธ์ด
- ํ์ ๋ฌธ์ ์ ํ
- ๋๋ฌธ์
- ์๋ฌธ์
- ์ซ์
- ํน์๋ฌธ์
- ์ฌ์ฉ์๊ฐ ์์ ์ ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ ํ์ฉ
- ๋น๋ฐ๋ฒํธ ๋ง๋ฃ ์ฃผ๊ธฐ ์ค์
- ์ด์ ๋น๋ฐ๋ฒํธ ์ฌ์ฌ์ฉ ๋ฐฉ์ง
๐ก๏ธ Multi Factor Authentication (MFA)
๋น๋ฐ๋ฒํธ๋ง์ผ๋ก๋ ๋ถ์กฑํจ
MFA ๊ฐ๋
- MFA =
- ๋ด๊ฐ ์๋ ๊ฒ (Password)
-
- ๋ด๊ฐ ๊ฐ์ง ๊ฒ (Security Device)
MFA์ ํต์ฌ ์ด์
๋น๋ฐ๋ฒํธ๊ฐ ์ ์ถ๋๋๋ผ๋ ๊ณ์ ์ด ๋ฐ๋ก ํ์ทจ๋์ง ์์
- Root Account ๋ณดํธ ํ์
- IAM User ๋ณดํธ ํ์
๐ฑ MFA ๋๋ฐ์ด์ค ์ต์ (AWS ์ง์)
๐ฒ Virtual MFA Device
- Google Authenticator (ํฐ)
- Authy (ํฐ)
- ํน์ง
- ํ๋์ ๊ธฐ๊ธฐ์์ ์ฌ๋ฌ ํ ํฐ ์ง์
๐ U2F Security Key
- YubiKey (Yubico) โ 3rd party
- ํน์ง
- ํ๋์ ํค๋ก ์ฌ๋ฌ Root / IAM User ์ง์
๐ Hardware Key Fob
- Gemalto (์ผ๋ฐ)
- SurePassID (AWS GovCloud US ์ ์ฉ)
๐ AWS ์ ๊ทผ ๋ฐฉ์ (3๊ฐ์ง)
AWS ๋ฆฌ์์ค์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ์ ํํ 3๊ฐ์ง
1๏ธโฃ AWS Management Console
- ์น ๊ธฐ๋ฐ UI
- Password + MFA๋ก ๋ณดํธ
2๏ธโฃ AWS CLI
- ์ปค๋งจ๋๋ผ์ธ ๋๊ตฌ
- Access Key ์ฌ์ฉ
3๏ธโฃ AWS SDK
- ์ฝ๋์์ AWS API ํธ์ถ
- Access Key ์ฌ์ฉ
๐๏ธ Access Keys
ํ๋ก๊ทธ๋จ ์ ๊ทผ ์ ์ฉ ์๊ฒฉ ์ฆ๋ช
- Access Key๋:
- AWS Console์์ ์์ฑ
- ๊ฐ User๊ฐ ์ง์ ๊ด๋ฆฌ
- ๊ตฌ์ฑ
- Access Key ID โ Username
- Secret Access Key โ Password
- โ ๏ธ ์ ๋ ๊ณต์ ๊ธ์ง
๐ฅ๏ธ AWS CLI
์ฝ์ ์์ด AWS๋ฅผ ์ ์ดํ๋ ๊ณต์ ๋๊ตฌ
- ๊ธฐ๋ฅ
- AWS ์๋น์ค API ์ง์ ํธ์ถ
- ์คํฌ๋ฆฝํธ๋ก ๋ฆฌ์์ค ๊ด๋ฆฌ ๊ฐ๋ฅ
- ์คํ์์ค
- AWS Management Console์ ๋์
๐งโ๐ป AWS SDK
์ ํ๋ฆฌ์ผ์ด์ ๋ด๋ถ์์ AWS๋ฅผ ์ ์ด
ํน์ง
- ์ธ์ด๋ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๊ณต
- ์ฝ๋์์ AWS ์๋น์ค ์ ๊ทผ
- ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ด์ฅ
์ง์ ๋ฒ์
- ์๋ฒ SDK
- JavaScript, Python, PHP, .NET, Ruby, Java, Go, Node.js, C++
- ๋ชจ๋ฐ์ผ SDK
- Android, iOS
- IoT SDK
- Embedded C, Arduino ๋ฑ
์ฐธ๊ณ AWS CLI๋ Python์ฉ AWS SDK ์์์ ๋์
๐ญ IAM Roles (์๋น์ค์ฉ ๊ถํ)
AWS ์๋น์ค๊ฐ ์ฌ์ฉ์ ๋์ AWS API ํธ์ถํด์ผ ํ ๋ ์ฌ์ฉ
Role์ ๋ชฉ์
- Access Key ์์ด
- ์์ ์๊ฒฉ ์ฆ๋ช ์ผ๋ก ๊ถํ ๋ถ์ฌ
๋ํ ์์
- EC2 Instance Role
- Lambda Function Role
- CloudFormation Role
๐ IAM Security Tools
๐ IAM Credentials Report (Account-level)
- ๊ณ์ ๋ด ๋ชจ๋ User ๋ชฉ๋ก
- ๊ฐ User์ ์๊ฒฉ ์ฆ๋ช ์ํ ํ์ธ
๐ง IAM Access Advisor (User-level)
- User์๊ฒ ๋ถ์ฌ๋ ์๋น์ค ๊ถํ
- ๋ง์ง๋ง ์ฌ์ฉ ์์ ํ์
- ์ ์ฑ ์ ๋ฆฌยท์ถ์์ ํ์ฉ
โ IAM Guidelines & Best Practices
๋ฐ๋์ ์ง์ผ์ผ ํ ์ด์ ์์น
- Root Account๋ ์ด๊ธฐ ์ค์ ์ธ ์ฌ์ฉ ๊ธ์ง
- 1๋ช = 1 IAM User
- ๊ถํ์ Group ๊ธฐ๋ฐ์ผ๋ก ๊ด๋ฆฌ
- ๊ฐ๋ ฅํ Password Policy ์ค์
- MFA ํ์ ์ ์ฉ
- AWS ์๋น์ค์๋ Role ์ฌ์ฉ
- CLI / SDK ์ ๊ทผ์ Access Key ์ฌ์ฉ
- Credentials Report & Access Advisor๋ก ์ ๊ธฐ ๊ฐ์ฌ
- IAM User / Access Key ์ ๋ ๊ณต์ ๊ธ์ง
๐งพ IAM Section Summary
- Users: ์ค์ ์ฌ์ฉ์, ์ฝ์ ๋น๋ฐ๋ฒํธ ๋ณด์
- Groups: Users๋ง ํฌํจ
- Policies: ๊ถํ์ ์ ์ํ๋ JSON ๋ฌธ์
- Roles: EC2 ๋ฐ AWS ์๋น์ค์ฉ ๊ถํ
- Security: MFA + Password Policy
- AWS CLI: ์ปค๋งจ๋๋ผ์ธ ๊ด๋ฆฌ
- AWS SDK: ์ฝ๋ ๊ธฐ๋ฐ ๊ด๋ฆฌ
- Access Keys: CLI / SDK ์ ๊ทผ์ฉ
- Audit: Credential Reports & Access Advisor