IAM(Identify and Access management, Global Service)

Kyuwon Cho·2023년 3월 8일

AWS

목록 보기
1/1

Users & Groups (사용자 및 그룹)

Root User

  • AWS 계정을 생성하면 Root계정이 만들어짐
  • 모든 권한을 가진 계정으로 다른 누구와도 공유하면 안됨

IAM User

  • AWS 계정 내에서 특정 권한을 가진 개인이나 하나의 프로그램을 구분하는 ID(identity)
  • 이름과 장기적으로 사용 가능한 자격 증명(credential)으로 구성되어 있음
  • IAM User 생성 시, console과 프로그래밍 방식(CLI, API)으로의 접근에 대한 권한을 부여

구분 방법

  • 구성되어 있는 이름(name) → AWS Management Console에서 확인 가능
  • IAM User의 ARN(Amazon Resoruce Name) → 고유의 이름으로 AWS 전역에 사용
  • IAM User의 고유식별자를 사용 → API를 사용할 때에만 사용

자격증명

  • Console 비밀번호 → AWS Management Console에서 사용
  • Access Key → 프로그래밍을 통한 AWS 접속에 사용
  • SSH Key → CodeCommit에서 인증할 때 사용
  • 서버 인증서 → SSL/TLS
  • MFA(Multi-factor Authentication)로 보안 강화

IAM Group

  • IAM User들의 집합체
  • 그룹에 권한을 부여하면 해당 그룹에 속한 IAM User들에게도 권한 부여

IAM Users in IAM Group

  • 하나의 IAM User는 0개 이상의 그룹에 속할 수 있음
  • 그룹은 다른 그룹에 속할 수 없음

Role (역할)

  • IAM Role은 IAM User와 비슷하게 AWS 계정 내에서 특정 권한을 가진 ID (identity)
  • 다만 IAM User는 고유의 ID이지만, 역할의 경우 필요한 모든 이에게 해당 역할을 부여할 수있음
  • 암호, 액세스 키 등 장기적으로 사용되는 자격 증명(credential)이 없이 단기간 임시적으로 부여 (Role Session)
  • Application, Service, 다른 계정의 User 등에 부여 가능

    역할 생성 이미지

    역할 부여 이미지

Policy (정책)

  • 정책 생성 후 IAM ID (user, group, role)이나 AWS 리소스에 부여하면서 AWS 엑세스를 관리
  • 정책은 권한을 정의하는 AWS의 객체로 IAM 보안 주체(user, role)이 요청할 때에 판단
  • 대부분의 정책은 요청의 허용과 거부 여부를 결정
  • JSON 문서로 AWS에 저장
  • 허용된 권한은 어떤 방식으로 접근해도 허용 (Console, CLI, API 등 모두 허용)

Policy Type

Identity-based policies (자격 증명 기반 정책)

  • IAM ID (user, group of users, roles) 관한 권한 설정
  • Managed Policies
    • AWS managed policies → AWS에 의해 만들어지고 관리되고 있는 정책
    • Customer managed policies → 계정 관리자가 만들어서 좀 더 커스텀이 가능한 정책
      • AWS managed policy를 더 우선적으로 적용
  • Inline Policies
    • ID에 직접적으로 권한을 부여
    • ID 삭제 시, 같이 삭제

Resource-based policies (리소스 기반 정책)

  • AWS S3, Lambda와 같은 Resource에 권한을 부여
  • 어떤 조건에 어떤 Action이 허가되는지에 대한 권한을 설정
  • Managed Policy가 없음 → 직접적으로

Permission boundaries (권한 경계)

  • Identity-based Policy의 최대 권한을 설정

Organizations SCPs (조직 SCP)

  • 기업이 소유한 AWS 계정을 그룹화 → 중앙 관리
  • 조직 or 조직 단위에 최대 권한을 지정하는 Json 정책
  • 해당 방식은 Root 사용자 또한 엔티티에 대한 권한을 제한 가능

Access control lists (ACLs, 액세스 제어 목록)

  • 비 Json 정책
  • 다른 계정의 보안 주체를 제어하는 서비스 정책 → 다른 계정이 본인 계정의 resource에 액세스 하는 권한을 관리

Session policies (세션 정책)

  • 역할, 연동 사용자를 위한 임시 세션을 만들어서 매개변수로 넘겨주는 고급 정책

JSON Policy

예시

{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Sid": "FirstStatement",
			"Effect": "Allow",
			"Action": [
				"iam:ChangePassword"
			],
			"Resource": "*" // 모든 리소스를 의미, but 요청한 사용자의 암호에만 영향
		},
		{
			"Sid": "SecondStatement",
			"Effect": "Deny",
			"Principal": {
				"AWS": [
					"arn:aws:iam::account-id:root"
				]
			},
			"Action": [
				"s3:List*",
				"s3:Get*"
			],
			"Resource": [
				"arn:aws:s3:::confinential-data",
				"arn:aws:s3::confidential-data/*"
			],
			"Condition": {
				"Bool": {
					"aws:MultiFactorAuthPresent": "true" // MFA인증된 경우에만
				}
			}
		}
	]
}

Version

  • 정책 언어의 버전
  • 가장 최근 버전인 2012-10-17을 사용

Statement

  • JSON 정책의 메인 요소로 해당 요소 아래 세부 요소로 정책을 정의한다
  • 하나의 JSON 정책에 다수의 Statement를 작성 가능 → 리스트 안에 표현

Sid

  • 선택적 요소
  • 각 Statement를 구별하는 ID를 부여

Effect

  • 액세스 허용에 대한 여부
  • 허용(Allow) 및 거부(Deny)

Principal

  • 일부 상황에서만 작성
  • Resource-based Policy(리소스 기반 정책)을 만들 때에만 필수적으로 작성
    • 어떤 계정, user, role, 연동 사용자에게 권한을 부여할 지에 대한 정보

Action

  • 정책이 허용하거나 거부하는 작업 목록

Resource

  • 일부 상황에서만 작성
  • 작업이 적용되는 리소스 목록
  • IAM 권한 정책을 생성할 때 작업이 정용되는 리소스 목록을 지정 필요
    • Resource-based Policy(리소스 기반 정책)을 만들 때에는 선택적
      • 미작성 → 해당 작업이 적용되는 리소스가 정책이 연결된 리소스로 자동으로 할당

Condition

  • 선택적 요소
  • 정책이 권한을 허용하는 상황

정책 생성 및 권한 부여 시 가장 중요한 점

  • IAM User가 필요한 가장 최소한의 권한만 부여!
    • 비용 Save
    • 보안 Up

0개의 댓글