A. Question

AWS IAM이란 무엇일까?

B. Answer

1. IAM에 대하여

AWS IAM(Identity and Access Management)는 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스이다. AWS 계정은 기본적으로 여러 사람이 공동으로 사용할 수 있도록 설계된 경우가 많다. 기업이나 조직에서는 하나의 AWS 계정을 통해 다양한 서비스를 관리하고, 각 팀이나 부서가 해당 계정 내에서 각자의 업무를 수행하게 된다. 이때 모든 사용자가 동일한 권한을 가지면 보안 문제가 발생할 수 있으므로, IAM을 사용하여 사용자별로 접근 권한을 다르게 설정하는 것이다.

IAM의 주요 장점 중 하나는 암호나 액세스 키를 공유하지 않고도 AWS 계정의 리소스를 관리하고 사용할 수 있는 권한을 다른 사람에게 부여할 수 있다는 점이다. 이를 통해 조직은 보안과 관리 효율성을 동시에 높일 수 있다.

IAM이 없다면, 모든 사람이 모든 AWS 리소스에 접근할 수 있게 되어 보안 위험이 커진다. 예를 들어, 회사의 데이터베이스에 중요한 고객 정보가 있다고 가정할 때, 모든 직원이 이 데이터베이스에 접근할 수 있다면 정보 유출 위험이 증가할 것이다. IAM을 사용하면 필요한 사람에게만 제한적으로 접근 권한을 부여하여 이런 보안 문제를 방지할 수 있다.

2. IAM 구성 요소

1. 사용자(User)

  • AWS 리소스에 접근할 수 있는 개별 엔티티이다. 사람이나 애플리케이션일 수 있으며, 각 사용자에게 고유한 자격 증명(비밀번호, 액세스 키 등)이 제공된다.
  • 사용자는 특정 작업을 수행할 수 있도록 IAM 정책을 직접 적용받을 수 있다.

2. 그룹(Group)

  • 여러 사용자를 하나로 묶어 동일한 권한을 부여할 수 있는 집합이다.
  • 그룹에 정책을 적용하면 해당 그룹에 속한 모든 사용자에게 그 권한이 부여된다.
  • 예시: ‘개발팀’ 그룹을 만들어 그룹 내 사용자가 S3 버킷에 대한 읽기 권한을 가질 수 있도록 설정

3. 정책(Policy)

  • AWS 리소스에 대한 접근 권한을 정의하는 JSON 문서이다. 정책은 Effect(허용/거부), Action(작업), Resource(리소스) 및 조건을 포함하여 특정 리소스에 대한 권한을 규정한다.
  • 정책은 사용자, 그룹, 역할에 적용되어 그 엔티티가 어떤 작업을 할 수 있는지를 규정한다.
  • 예시: S3 버킷에 대한 읽기 전용 접근 권한을 정의하는 정책

4. 역할(Role)

  • 특정 권한이 필요한 엔티티가 일시적으로 권한을 사용할 수 있도록 하는 권한의 집합이다.
  • 역할은 자격 증명 정보를 포함하지 않으며, 특정 엔티티가 필요할 때 역할을 사용하여 정책에 정의된 권한을 일시적으로 부여받는다.
  • 예시: EC2 인스턴스에 역할을 할당하여 S3 버킷에 접근할 수 있도록 하여, 코드에 자격 증명을 하드코딩하지 않고도 안전하게 작업을 수행

C. Detail - 역할(Role)과 정책(Policy)

IAM 사용자, 그룹, 역할에 각각 정책을 부여할 수 있다.

사용자나 그룹에 정책을 부여하면, 해당 사용자나 그룹은 특정 리소스에 접근할 수 있는 권한을 갖게 된다. 역할에 정책을 부여하면, 그 역할을 맡은 사용자나 서비스가 정책에 정의된 권한을 사용하여 특정 리소스에 접근할 수 있다.

1. IAM 사용자와 그룹에 정책 부여 예시

회사의 개발 팀에서 S3 버킷의 데이터를 읽을 수 있도록 권한을 부여해야 한다. 이를 위해 개발 팀에 속한 사용자는 S3 Read 권한이 필요하다.

  • 구성 방법
    1. IAM 그룹 생성: ‘개발자’ 그룹을 생성한다.
    2. 정책 부여: 그룹에 S3 Read 정책을 연결한다.
    3. 사용자 추가: 개발 팀의 사용자들을 ‘개발자’ 그룹에 추가한다.
  • 적용 결과
    • ‘개발자’ 그룹에 속한 모든 사용자들은 S3 Read 권한이 포함된 정책을 상속받아 example-bucket에 있는 객체를 읽을 수 있는 권한을 갖게 된다.
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::example-bucket/*"
    }
  ]
}

2. IAM 역할에 정책 부여 예시

회사의 EC2 인스턴스에서 실행 중인 애플리케이션이 특정 S3 버킷의 데이터를 읽어야 한다. EC2 인스턴스에 액세스 키를 사용하지 않고도 이 작업을 수행할 수 있도록 IAM 역할을 부여한다.

  • 구성 방법
    1. IAM 역할 생성: EC2가 맡을 수 있는 역할을 생성한다.
    2. 정책 연결: 역할에 S3 Read 권한 정책을 연결한다.
    3. EC2 인스턴스에 역할 할당: EC2 인스턴스를 생성하거나 기존 인스턴스에 이 역할을 연결한다.
  • 적용 결과
    • 해당 역할을 맡은 EC2 인스턴스는 역할에 정의된 권한을 사용하여 임시 자격 증명을 통해 S3 버킷의 데이터를 읽을 수 있다.

3. IAM 역할과 서비스의 관계 예시

Lambda 함수가 DynamoDB 테이블에 데이터를 쓰는 작업을 수행해야 하는 경우

  • 구성 방법
    1. IAM 역할 생성: Lambda 함수가 맡을 수 있는 역할을 생성한다.
    2. 정책 연결: PutItem과 같은 DynamoDB Write 권한 정책을 역할에 연결한다.
    3. Lambda 함수에 역할 할당: 해당 역할을 Lambda 함수에 할당하여 실행 시 역할을 맡도록 설정한다.
  • 적용 결과
    • Lambda 함수는 실행될 때 임시 자격 증명을 사용하여 정책에 정의된 권한에 따라 DynamoDB 테이블에 데이터를 쓸 수 있다.

D. Reference

태그:

카테고리:

업데이트:

댓글남기기