🐊 IAM : Identity and Access Management

BelugaΒ·2024λ…„ 7μ›” 21일

AWS Certified Solutions Architect - Associate

λͺ©λ‘ 보기
2/13
post-thumbnail

IAM(Identity and Access Management)?

IAM은 Identity and Access Management의 μ•½μžλ‘œ μ‚¬μš©μžλ₯Ό μƒμ„±ν•˜κ³  그룹에 λ°°μΉ˜ν•˜λŠ” κΈ€λ‘œλ²Œ μ„œλΉ„μŠ€μ— ν•΄λ‹Ήν•œλ‹€. AWS 계정을 μƒμ„±ν•˜λ©΄ μƒμ„±ν•œ 계정은 루트 계정이 λœλ‹€. 루트 계정은 였직 계정을 생성할 λ•Œλ§Œ μ‚¬μš©λ˜μ–΄μ•Ό ν•œλ‹€. κ·Έ ν›„ 루트 계정을 더 이상 μ‚¬μš©ν•΄μ„œλ„, κ³΅μœ ν•΄μ„œλ„ μ•ˆλœλ‹€. κ·Έ λŒ€μ‹ μ— μ‚¬μš©μžλ₯Ό 생성해야 ν•œλ‹€.

Users & Groups

IAMμ—μ„œ μ‚¬μš©μžλ₯Ό 생성할 λ•Œ ν•˜λ‚˜μ˜ μ‚¬μš©μžλŠ” 쑰직 λ‚΄μ˜ ν•œ μ‚¬λžŒμ— ν•΄λ‹Ήλœλ‹€.
ν•„μš”ν•˜λ‹€λ©΄ μ‚¬μš©μžλ“€μ„ 그룹으둜 묢을 μˆ˜λ„ 있으며 ν•œ μ‚¬μš©μžλŠ” μ—¬λŸ¬ 그룹에 속할 수 μžˆλ‹€.

Permissions(κΆŒν•œ)

μ•žμ—μ„œ λ΄€λ“― μ‚¬μš©μžμ™€ 그룹을 μƒμ„±ν•˜λŠ” μ΄μœ λŠ” λ¬΄μ—‡μΌκΉŒ? κ·Έ μ΄μœ λŠ” μ‚¬μš©μžκ°€ AWS 계정을 μ‚¬μš©ν•˜λ„λ‘ ν—ˆμš©ν•˜κΈ° μœ„ν•΄μ„œμ΄λ‹€. μ΄λŸ¬ν•œ ν—ˆμš©μ„ μœ„ν•΄μ„œλŠ” μ‚¬μš©μžμ—κ²Œ κΆŒν•œμ„ λΆ€μ—¬ν•΄μ•Ό ν•œλ‹€.
κΆŒν•œμ„ λΆ€μ—¬ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ‚¬μš©μž λ˜λŠ” κ·Έλ£Ήμ—κ²Œ μ •μ±… λ˜λŠ” IAM 정책이라고 λΆˆλ¦¬λŠ” JSON λ¬Έμ„œλ₯Ό μ§€μ •ν•  수 μžˆλ‹€. λ¬Έμ„œμ˜ ν˜•νƒœ μ˜ˆμ‹œλŠ” μ•„λž˜μ™€ κ°™λ‹€.

{
  "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": "*"
    }
  ]
}

νŠΉμ • μ‚¬μš©μž, ν˜Ήμ€ νŠΉμ • 그룹에 μ†ν•œ μ‚¬μš©μžλ“€μ΄ μ–΄λ–€ μž‘μ—…μ— κΆŒν•œμ„ κ°€μ§€κ³  μžˆλŠ”μ§€λ₯Ό μ‰½κ²Œ μ•Œ 수 μžˆλ‹€. μ˜ˆμ‹œμ—μ„œλŠ” μ‚¬λžŒλ“€μ—κ²Œ EC2 μ‚¬μš© 및 Describe이 ν—ˆμš©λ˜μ–΄ μžˆλŠ” μƒνƒœμ΄λ©° Elastic Loadbalancing μ„œλΉ„μŠ€μ™€ Describe, 그리고 CloudWatch의 μ‚¬μš©λ„ ν—ˆμš©μ΄ λ˜μ–΄ μžˆλ‹€λŠ” κ±Έ λ³Ό 수 μžˆλ‹€. 이와 같은 JSON ν˜•νƒœμ˜ λ¬Έμ„œλ₯Ό 톡해 μ‚¬μš©μžλ“€μ΄ AWS의 λ‹€μ–‘ν•œ μ„œλΉ„μŠ€λ“€μ„ μ΄μš©ν•  수 μžˆλ„λ‘ ν—ˆμš©ν•  수 μžˆλ‹€.

AWSμ—μ„œλŠ” λͺ¨λ“  μ‚¬μš©μžμ—κ²Œ λͺ¨λ“  κΆŒν•œμ„ ν—ˆμš©ν•˜μ§€ μ•ŠλŠ”λ‹€. μƒκ°ν•˜μ§€ λͺ»ν•œ μ‚¬μš©μžκ°€ λ„ˆλ¬΄ λ§Žμ€ μ„œλΉ„μŠ€λ₯Ό λ°œμƒμ‹œν‚€κ±°λ‚˜ λ³΄μ•ˆ 문제λ₯Ό μ•ΌκΈ°ν•  수 있기 λ•Œλ¬Έμ΄λ‹€. κ·Έλž˜μ„œ AWSμ—μ„œλŠ” μ΅œμ†Œ κΆŒν•œμ˜ 원칙(Least privilege principle)을 μ μš©ν•œλ‹€. μ‚¬μš©μžκ°€ μ„Έ 개의 μ„œλΉ„μŠ€μ—λ§Œ μ ‘κ·Όν•΄μ•Ό ν•œλ‹€λ©΄ 그에 λ§žλŠ” κΆŒν•œλ§Œ λΆ€μ—¬ν•˜λŠ” 것이닀.

IAM μ •μ±… 상속

{
  "Version": "2012-10-17",
  "Id": "S3-Account-Permissions",
  "Statement": [  
 	 {
		"Sid": "1",
		"Effect": "Allow",
       	"Principal": {
          	"AWS": ["arn:aws:iam:123456789012:root"]
        },
		"Action": [
          	"s3:GetObject",
        	"s3:PutObject"
        ],
       	"Resource": ["arn:aws:s3:::mybucket/*"]
	 }
  ]
}

μ •μ±…μ˜ κ΅¬μ‘°λŠ” JSON λ¬Έμ„œλ‘œ λ˜μ–΄ 있으며 μ •μ±… ꡬ쑰와 μ •μ±… λͺ…λͺ…법은 λ‹€μŒκ³Ό κ°™λ‹€. μ•žμœΌλ‘œ AWSμ—μ„œ 자주 보게 될 ν˜•μ‹μ΄λΌ μ΅μˆ™ν•΄ μ§€λŠ” 것이 μ’‹λ‹€.

  • Version : 버전 숫자λ₯Ό μ˜λ―Έν•˜λ©° 보톡은 2012-10-17 μ •μ±… μ–Έμ–΄ 버전이닀.
  • Id : 정책을 μ‹λ³„ν•˜λŠ” ID둜 선택사항이닀.
  • Statement : 정책을 κ΅¬μ„±ν•˜λŠ” λ¬Έμž₯이닀. ν•˜λ‚˜μΌμˆ˜λ„ μ—¬λŸ¬κ°œμΌμˆ˜λ„ μžˆλ‹€.
    • Sid : SidλŠ” λ¬Έμž₯ ID둜 λ¬Έμž₯의 μ‹λ³„μžμ΄λ©° 선택사항이닀.
    • Effect : λ¬Έμž₯이 νŠΉμ • API에 μ ‘κ·Όν•˜λŠ” 것을 ν—ˆμš©ν• μ§€ 거뢀할지에 λŒ€ν•œ λ‚΄μš©μ΄λ‹€.
    • Principal : νŠΉμ • 정책이 적용될 μ‚¬μš©μž, 계정 ν˜Ήμ€ μ—­ν• λ‘œ κ΅¬μ„±λœλ‹€.
    • Action : Effect에 κΈ°λ°˜ν•΄ ν—ˆμš© 및 κ±°λΆ€λ˜λŠ” API 호좜의 λͺ©λ‘μ΄λ‹€.
    • Resource : 적용될 action의 λ¦¬μ†ŒμŠ€ λͺ©λ‘μ΄λ‹€.
    • Condition : Statementκ°€ μ–Έμ œ μ μš©λ μ§€λ₯Ό κ²°μ •ν•˜λ©° 선택사항이닀.

IAM νŒ¨μŠ€μ›Œλ“œ μ •μ±…

AWSμ—μ„œλŠ” λ‹€μ–‘ν•œ μ˜΅μ…˜μ„ μ΄μš©ν•΄ λΉ„λ°€λ²ˆν˜Έ μ •μ±…μ˜ 생성이 κ°€λŠ₯ν•˜λ‹€.

λ¨Όμ € λΉ„λ°€λ²ˆν˜Έμ˜ μ΅œμ†Œ 길이λ₯Ό μ„€μ •ν•  수 있고 νŠΉμ • μœ ν˜•μ˜ κΈ€μž μ‚¬μš©μ„ μš”κ΅¬ν•  수 μžˆλ‹€. 예λ₯Ό λ“€λ©΄ λŒ€λ¬Έμžλ‚˜ μ†Œλ¬Έμž 특수문자 등을 μš”κ΅¬ν•  수 μžˆλ‹€.

λ˜ν•œ IAM μ‚¬μš©μžλ“€μ˜ λΉ„λ°€λ²ˆν˜Έ 변경을 ν—ˆμš© λ˜λŠ” κΈˆμ§€ν•  수 μžˆλ‹€. 일정 기간이 μ§€λ‚˜λ©΄ λΉ„λ°€λ²ˆν˜Έλ₯Ό λ§Œλ£Œμ‹œμΌœ λΉ„λ°€λ²ˆν˜Έ 섀정을 μš”κ΅¬ν•  수 μžˆλ‹€.

λ§ˆμ§€λ§‰μœΌλ‘œ μ‚¬μš©μžμ˜ λΉ„λ°€λ²ˆν˜Έ μž¬μ‚¬μš©μ„ 막아 λΉ„λ°€λ²ˆν˜Έ λ³€κ²½ μ‹œ, λ™μΌν•œ νŒ¨μŠ€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ§€ λͺ»ν•˜κ²Œ ν•  수 μžˆλ‹€.

MFA : Multi Factor Authentication

λ‹€μš”μ†Œ 인증이라고 λΆˆλ¦¬λŠ” MFAλŠ” AWSμ—μ„œ 이 λ©”μ»€λ‹ˆμ¦˜μ„ ν•„μˆ˜μ μœΌλ‘œ μ‚¬μš©ν•˜λ„λ‘ ꢌμž₯ν•˜κ³  μžˆλ‹€.

μ‚¬μš©μžλ“€μ€ 계정에 μ ‘κ·Ό κΆŒν•œμ΄ 있고 λ§Žμ€ μž‘μ—…μ΄ κ°€λŠ₯ν•œλ° 특히 κ΄€λ¦¬μžλ“€μ€ ꡬ성을 λ³€κ²½ν•˜κ±°λ‚˜ λ¦¬μ†ŒμŠ€λ₯Ό μ‚­μ œν•˜λŠ” λ“± λ§Žμ€ μž‘μ—…μ„ ν•  수 μžˆλ‹€. λ”°λΌμ„œ 적어도 루트 계정은 무슨 일이 μžˆμ–΄λ„ λ°˜λ“œμ‹œ λ³΄ν˜Έν•΄μ•Ό ν•˜λ©° κ·Έλ ‡μ§€ μ•Šμ€ 전체 IAM μ‚¬μš©μžλ“€λ„ 보호λ₯Ό ν•΄μ•Όν•œλ‹€.

MFA μž₯치

AWSμ—μ„œ MFA μž₯치 μ˜΅μ…˜μœΌλ‘œλŠ” λ‹€μŒκ³Ό 같은 μž₯μΉ˜λ“€μ΄ μžˆλ‹€.

  • 가상 MFA μž₯치
    ex) Google Authenticator, Authy
  • Universal 2nd Factor(U2F) Security Key : 물리적 μž₯치
    ex) Yubicoμ‚¬μ˜ YubiKey
  • ν•˜λ“œμ›¨μ–΄ ν‚€ 팝 MFA μž₯치

AWS μ•‘μ„ΈμŠ€

AWSλ₯Ό κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ μ•‘μ„ΈμŠ€ ν•˜λŠ” λ°©λ²•μœΌλ‘œλŠ” μ„Έ κ°€μ§€κ°€ μžˆλ‹€.

  • AWS 관리 μ½˜μ†” : μ‚¬μš©μž 이름 및 MFA둜 보호
  • AWS CLI(Command Line Interface) : μ•‘μ„ΈμŠ€ ν‚€λ‘œ 보호
  • AWS Software Developer Kit(SDK) : μ•‘μ„ΈμŠ€ ν‚€λ‘œ 보호

μ•‘μ„ΈμŠ€ ν‚€λž€ 자격 증λͺ…μœΌλ‘œ CLIμ—μ„œ AWSλ₯Ό κ΄€λ¦¬ν•˜κ³  μ‹Άλ‹€λ©΄ μ•‘μ„ΈμŠ€ ν‚€λ₯Ό μ‚¬μš©ν•΄μ•Ό 접근이 κ°€λŠ₯ν•˜λ‹€. AWSλ‘œλΆ€ν„° SDKλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ½”λ“œ λ‚΄μ—μ„œ APIλ₯Ό ν˜ΈμΆœν•˜κ³ μž ν•  λ•Œ μ‚¬μš©λ˜λŠ” 방식이닀. CLIμ ‘κ·Όκ³Ό SDK λͺ¨λ‘ μ•‘μ„ΈμŠ€ ν‚€λ‘œ λ³΄ν˜Έλœλ‹€.

μ•‘μ„ΈμŠ€ ν‚€λŠ” 관리 μ½˜μ†”μ„ μ‚¬μš©ν•΄μ„œ 생성할 수 있으며 μ‚¬μš©μžλ“€μ΄ μžμ‹ λ“€μ˜ μ•‘μ„ΈμŠ€ ν‚€λ₯Ό 직접 κ΄€λ¦¬ν•œλ‹€. κ·ΈλŸ¬λ―€λ‘œ μ‚¬μš©μžλŠ” μžμ‹ μ˜ μ•‘μ„ΈμŠ€ ν‚€λ₯Ό μ™ΈλΆ€λ‘œ μœ μΆœν•΄μ„œλŠ” μ•ˆλœλ‹€.

IAM Roles (ꡬ성 μš”μ†Œ)

μ–΄λ– ν•œ AWS μ„œλΉ„μŠ€λŠ” κ³„μ •μ—μ„œ μ‹€ν–‰λ˜μ–΄μ•Ό ν•œλ‹€. 이λ₯Ό μœ„ν•΄μ„œλŠ” μ‚¬μš©μžμ™€ λ§ˆμ°¬κ°€μ§€λ‘œ μ–΄λ–€ κΆŒν•˜μ΄ ν•„μš”ν•˜λ‹€. λ”°λΌμ„œ AWS μ„œλΉ„μŠ€μ— κΆŒν•œμ„ λΆ€μ—¬ν•΄μ•Ό ν•œλ‹€.

IAM Role은 μ‚¬μš©μžμ™€ κ°™μ§€λ§Œ μ‹€μ œ μ‚¬λžŒμ΄ μ‚¬μš©ν•˜λ„λ‘ λ§Œλ“  것이 μ•„λ‹Œ AWS μ„œλΉ„μŠ€μ— μ˜ν•΄ μ‚¬μš©λ˜λ„λ‘ λ§Œλ“€μ–΄μ‘Œλ‹€. 예λ₯Ό λ“€μ–΄ EC2 μΈμŠ€ν„΄μŠ€μ—μ„œ μ–΄λ–€ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λ € ν• λ•Œ EC2 μΈμŠ€ν„΄μŠ€μ— κΆŒν•œμ„ λΆ€μ—¬ν•΄μ•Ό ν•œλ‹€. 이 λ•Œ IAM Role을 λ§Œλ“€μ–΄ ν•˜λ‚˜μ˜ 개체둜 λ§Œλ“ λ‹€. EC2 μΈμŠ€ν„΄μŠ€κ°€ AWS의 μ–΄λ–€ μ„œλΉ„μŠ€μ— μ ‘κ·Όν•˜λ €κ³  ν•  λ•Œ IAM Role을 μ‚¬μš©ν•˜κ²Œ 될 것이닀.

IAM λ³΄μ•ˆ 도ꡬ (Security Tools)

  • IAM 자격 증λͺ… λ³΄κ³ μ„œ : 계정 μˆ˜μ€€μ—μ„œ κ°€λŠ₯ν•˜λ©° λ³΄κ³ μ„œλŠ” 계정에 μžˆλŠ” μ‚¬μš©μžμ™€ λ‹€μ–‘ν•œ 자격 증λͺ…μ˜ μƒνƒœλ₯Ό ν¬ν•¨ν•œλ‹€.

  • IAM μ•‘μ„ΈμŠ€ κ΄€λ¦¬μž : μ‚¬μš©μžμ—κ²Œ λΆ€μ—¬λœ μ„œλΉ„μŠ€μ˜ κΆŒν•œκ³Ό ν•΄λ‹Ή μ„œλΉ„μŠ€μ— λ§ˆμ§€λ§‰μœΌλ‘œ μ•‘μ„ΈμŠ€ν•œ μ‹œκ°„μ΄ 보인닀. μ΅œμ†Œ κΆŒν•œμ˜ 원칙을 μœ μ§€ν•˜κΈ°μ— 맀우 도움이 λ˜λŠ” 정보λ₯Ό μ œκ³΅ν•œλ‹€. ν•΄λ‹Ή 도ꡬλ₯Ό μ‚¬μš©ν•˜μ—¬ μ‚¬μš©μžμ˜ κΆŒν•œμ„ 쀄일 수 μžˆλ‹€.

profile
개발자

0개의 λŒ“κΈ€