Contents

1. AWS Identity and Access Management

AWS Certified SAA-C02 μ‹œν—˜μ€€λΉ„

Users & Groups

  • IAM = Identity and Access Management β†’ Global μ„œλΉ„μŠ€
  • Root 계정은 기본으둜 μƒμ„±λ˜λ©° μ‚¬μš©ν•˜κ±°λ‚˜ κ³΅μœ ν•΄μ„œλŠ” μ•ˆλœλ‹€.
  • Users λŠ” 쑰직의 μ‚¬μš©μžμ΄λ©° 그룹으둜 묢을 수 μžˆλ‹€.
  • GroupsλŠ” userλ₯Ό 포함할 수 있고 λ‹€λ₯Έ 그룹은 포함할 수 μ—†λ‹€.
  • μ‚¬μš©μžλŠ” 그룹에 속할 ν•„μš”λŠ” μ—†κ³  userλŠ” μ—¬λŸ¬ 그룹에 속할 수 μžˆλ‹€.

Permissions

  • μ‚¬μš©μžλ‚˜ 그룹은 정책은 JSON λ¬Έμ„œλ₯Ό 톡해 ν• λ‹Ήν•  수 μžˆλ‹€.
  • μ •μ±…(polices)은 μ‚¬μš©μžμ˜ κΆŒν•œ(permissions)을 μ •μ˜ν•œλ‹€.
  • AWSμ—μ„œλŠ” μ΅œμ†Œ κΆŒν•œ 원칙을 μ μš©ν•œλ‹€ β†’ μ‚¬μš©μžκ°€ ν•„μš”λ‘œ ν•˜λŠ” 것보닀 더 λ§Žμ€ κΆŒν•œμ„ λΆ€μ—¬ν•˜μ§€ μ•ŠλŠ”λ‹€.

IAM Policies inheritance

  • 인라인 μ •μ±… : 그룹에 μ†ν•΄μžˆμ§€ μ•Šμ•„λ„ 정책을 λ°”λ‘œ μ‚¬μš©μžμ—κ²Œ μ—°κ²° κ°€λŠ₯

IAM Policies Structure

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
	"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": "*"
		}
	]
}

μš”μ†Œ

  • Version : μ •μ±… 버전
  • Id : 정책을 식별할 수 μžˆλŠ” μ‹λ³„μž (μ˜΅μ…˜)
  • Statement : ν•˜λ‚˜ ν˜Ήμ€ μ—¬λŸ¬κ°œ (ν•„μˆ˜μ‚¬ν•­)

Statements μš”μ†Œ

  • Sid : statement 의 μ‹λ³„μž (μ˜΅μ…˜)
  • Effect : νŠΉμ • statement에 접근은 ν—ˆμš© μ—¬λΆ€ (Allow λ˜λŠ” Deny)λ₯Ό λ‚˜νƒ€λƒ„
  • Principal : 정책이 적용 될 λŒ€μƒ (계정, μ‚¬μš©μž, μ—­ν• )
  • Action : μ •μ±…μ˜ ν—ˆμš© λ˜λŠ” κ±°λΆ€λ˜λŠ” 호좜 리슀트 λͺ©λ‘
  • Resource : 정책이 적용될 λ¦¬μ†ŒμŠ€ λͺ©λ‘
  • Condition : statementκ°€ μ–Έμ œμ μš©λ μ§€ κ²°μ • (μ˜΅μ…˜)

IAM Password Policy

  • κ°•λ ₯ν•œ λΉ„λ°€λ²ˆν˜Έ β†’ 계정에 λŒ€ν•œ 높은 λ³΄μ•ˆ
AWSμ—μ„œ μ„€μ •κ°€λŠ₯ν•œ νŒ¨μŠ€μ›Œλ“œ μ •μ±…
  • νŒ¨μŠ€μ›Œλ“œ μ΅œμ†Œ 길이
  • 특수문자 포함 ν•„μˆ˜ μž…λ ₯ : λŒ€μ†Œλ¬Έμž, 숫자, 특수문자
  • IAM 계정 μ‚¬μš©μžλ“€μ˜ νŒ¨μŠ€μ›Œλ“œ λ³€κ²½ ν—ˆμš© λ˜λŠ” κΈˆμ§€
  • νŒ¨μŠ€μ›Œλ“œ 만료 지정
  • νŒ¨μŠ€μ›Œλ“œ μž¬μ‚¬μš© κΈˆμ§€

MFA - Multi Factor Authentication

  • μ‚¬μš©μžλŠ” 계정에 μ•‘μ„ΈμŠ€ ν•  수 있으며 ꡬ성을 λ³€κ²½ν•˜κ±°λ‚˜ AWS κ³„μ •μ˜ λ¦¬μ†ŒμŠ€λ₯Ό μ‚­μ œν•  수 μžˆλ‹€.
  • MFAλŠ” 루트 계정 및 IAM μ‚¬μš©μžλ₯Ό λ³΄ν˜Έν•˜λ €λŠ” 경우 μ‚¬μš©ν•  수 μžˆλ‹€.
  • λΉ„λ°€λ²ˆν˜Έκ°€ λ„λ‚œλ‹Ήν•˜κ±°λ‚˜ 해킹당해도 계정에 손상을 μž…μ§€ μ•ŠλŠ”λ‹€.

MFA = νŒ¨μŠ€μ›Œλ“œ(μ‚¬μš©μžλ§Œ μ•Œκ³ μžˆλŠ”) + λ³΄μ•ˆ μž₯λΉ„(μ‚¬μš©μžκ°€ μ†Œμœ ν•˜κ³  μžˆλŠ”)

MFA devices options in AWS

MFA devices
Virtual MFA device - ν•˜λ‚˜μ˜ λ””λ°”μ΄μŠ€μ— λ©€ν‹° 토큰을 지원
- Google Authenticator(phone only)
- Authy(multi-device)
Universal 2nd Factor (U2F) Security Key - 단일 λ³΄μ•ˆ ν‚€λ₯Ό μ‚¬μš©ν•˜μ—¬ μ—¬λŸ¬ 루트 및 IAM μ‚¬μš©μž 지원
- YubiKey by Yubico (3rd party)
Hardware Key Fob MFA Device - Provided by Gemalto (3rd party)
Hardware Key Fob MFA Device for AWS GovCloud (US) - Provided by SurePassID (3rd party)

AWS에 μ•‘μ„ΈμŠ€ ν•˜λŠ” 방법

AWS μ•‘μ„ΈμŠ€ν•˜κΈ° μœ„ν•œ μ„Έ 가지 방법
  1. AWS Management Console : λΉ„λ°€λ²ˆν˜Έ + MFA둜 보호
  2. AWS Command Line Interface (CLI) : access key둜 보호
  3. AWS Software Developer Kit (SDK) : μ½”λ“œμ˜ 경우 access key둜 보호
  • μ•‘μ„ΈμŠ€ν‚€λŠ” AWS μ½˜μ†”μ„ 톡해 생성할 수 μžˆλ‹€.
  • μ‚¬μš©μžκ°€ μžμ‹ μ˜ μ•‘μ„ΈμŠ€ν‚€λ₯Ό κ΄€λ¦¬ν•œλ‹€.
  • μ•‘μ„ΈμŠ€ ν‚€λŠ” νŒ¨μŠ€μ›Œλ“œμ™€ λ§ˆμ°¬κ°€μ§€λ‘œ κΈ°λ°€μ΄λ―€λ‘œ κ³΅μœ ν•˜μ§€ μ•ŠλŠ”λ‹€.
  • Access Key ID ~= username
  • Secret Access Key ~= password

AWS CLI

  • μ»€λ§¨λ“œλΌμΈ μ‰˜μ—μ„œ λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜μ—¬ AWS μ„œλΉ„μŠ€μ™€ μƒν˜Έμž‘μš© ν•  수 μžˆλ„λ‘ ν•΄μ£ΌλŠ” 도ꡬ
  • CLIλ₯Ό μ‚¬μš©ν•˜λ©΄ AWS의 곡용 API둜 직접 μ•‘μ„ΈμŠ€ κ°€λŠ₯
  • λ¦¬μ†Œμ†Œλ₯Ό μžλ™ν™”ν•˜μ—¬ 관리할 수 μžˆλ‹€.
  • μ˜€ν”ˆμ†ŒμŠ€μ΄λ‹€. https://github.com/aws/aws-cli
  • AWS 관리 μ½˜μ†” λŒ€μ‹  μ‚¬μš© κ°€λŠ₯

AWS SDK(AWS Software Development Kit)

  • νŠΉμ • μ–Έμ–΄λ‘œ 된 라이브러리 집합

  • ν”„λ‘œκ·Έλž˜λ°μœΌλ‘œ AWS에 μ•‘μ„ΈμŠ€λ₯Ό μ•‘μ„ΈμŠ€ν•˜κ³  관리

  • μ‘μš© ν”„λ‘œκ·Έλž¨μ— 포함

    Supports
    • SDKs (Javascript, Python, PHP, .NET, Ruby, Java, Go, Node.js, C++)
    • Mobile SDKs (Android, iOS…)
    • IoT Device SDKs (Embedded C, Arduino…)

IAM Roles for Service

  • 일뢀 AWS μ„œλΉ„μŠ€λŠ” μ‚¬μš©μžλ₯Ό λŒ€μ‹ ν•˜μ—¬ μž‘μ—…μ„ μˆ˜ν–‰
  • IAM 역할을 μ‚¬μš©ν•˜μ—¬ AWS μ„œλΉ„μŠ€μ— μ‚¬μš© κΆŒν•œμ„ ν• λ‹Ή
    곡톡 μ—­ν• 
    • EC2 μΈμŠ€ν„΄μŠ€ Roles
    • Lambda Function Roles
    • Roles for CloudFormation

IAM Security Tools

IAM Security Tools μ„€λͺ…
IAM Credentials Report (account-level) κ³„μ •μ˜ λͺ¨λ“  μ‚¬μš©μžμ™€ ν•΄λ‹Ή μ‚¬μš©μžμ˜ λ‹€μ–‘ν•œ 자격 증λͺ… μƒνƒœλ₯Ό λ‚˜μ—΄ν•˜λŠ” λ³΄κ³ μ„œ
IAM Access Advisor (user-level) - μ‚¬μš©μžμ—κ²Œ λΆ€μ—¬λœ μ„œλΉ„μŠ€ κΆŒν•œκ³Ό ν•΄λ‹Ή μ„œλΉ„μŠ€μ— λ§ˆμ§€λ§‰μœΌλ‘œ μ•‘μ„ΈμŠ€ν•œ μ‹œκ°„μ„ ν‘œμ‹œ
- 이 정보λ₯Ό μ‚¬μš©ν•˜μ—¬ 정책을 μˆ˜μ •

IAM κ°€μ΄λ“œλΌμΈ & λͺ¨λ²” 사둀

  • 루트 계정은 AWS 계정을 μ„€μ •ν•  λ•Œλ₯Ό μ œμ™Έν•˜κ³  μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€.
  • μ‹€μ œ μœ μ € ν•œλͺ… = ν•˜λ‚˜μ˜ AWS μœ μ €
  • μ‚¬μš©μžλ₯Ό 그룹에 ν• λ‹Ήν•˜κ³  그룹에 κΆŒν•œμ„ ν• λ‹Ή
  • κ°•λ ₯ν•œ νŒ¨μŠ€μ›Œλ“œ μ •μ±… μ‚¬μš©
  • MFA(Multi Factor Authentication) 인증 μ‚¬μš© 및 적용
  • AWS μ„œλΉ„μŠ€μ— λŒ€ν•œ μ‚¬μš© κΆŒν•œμ„ λΆ€μ—¬ν•˜λŠ” μ—­ν•  Roles 을 생성 및 μ‚¬μš©
  • ν”„λ‘œκ·Έλž˜λ° λ°©μ‹μ˜ μ•‘μ„ΈμŠ€ ν‚€ μ‚¬μš© (CLI / SDK)
  • IAM 자격증λͺ… λ³΄κ³ μ„œλ₯Ό μ‚¬μš©ν•œ 계정 감사
  • IAM μœ μ €μ™€ μ•‘μ„ΈμŠ€ν‚€ κ³΅μœ λŠ” μ ˆλŒ€ ν•˜μ§€ μ•ŠλŠ”λ‹€

Summary

μ„€λͺ…
Users AWS μ½˜μ†”μ— λŒ€ν•œ λΉ„λ°€λ²ˆν˜Έλ₯Ό κ°–λŠ” μ‹€μ œμ‚¬μš©μžμ™€ 맀핑
Groups 였직 μ‚¬μš©μžλ§Œ 그룹에 포함할 수 μžˆλ‹€.
λ‹€λ₯Έ 그룹은 포함할 수 μ—†λ‹€.
Policies μ‚¬μš©μžλ‚˜ 그룹이 ν•  수 μžˆλŠ” κΆŒν•œμ„ μ•Œλ €μ£ΌλŠ” λ¬Έμ„œμ΄λ‹€.
JSON ν˜•νƒœλ‘œ λ˜μ–΄μžˆλ‹€.
Roles EC2와 같은 AWS μ„œλΉ„μŠ€μ—μ„œ 무언가λ₯Ό ν•  수 있게 ν•˜λŠ” κΆŒν•œμ„ μ£Όλ €κ³  ν• λ•Œ IAM Role을 λ§Œλ“€μ–΄μ•Ό ν•œλ‹€.
Security MFA + Password
Access Keys AWS의 CLI, SDK μ ‘κ·Όν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” 자격증λͺ… 값이닀.
Audit(νšŒκ³„ 감사) IAM Credential Reports(IAM 자격증λͺ… λ³΄κ³ μ„œ) : μ‚¬μš©μž 자격증λͺ… λ‚΄μ—­ 확인
IAM Access Advisor(IAM μ•‘μ„ΈμŠ€ κ΄€λ¦¬μž) : 졜근 κΆŒν•œ μ‚¬μš©λ‚΄μ—­ 확인