top of page

AWS IAM 초보자 가이드: 10분 안에 마스터하는 핵심 개념(1/2)

AWS IAM 초보자 가이드: 10분 안에 마스터하는 핵심 개념(1/2) - IAM의 구성요소(사용자, 그룹, 역할, 정책) 살펴보기

AWS IAM 초보자 가이드: 10분 안에 마스터하는 핵심 개념

Written by Hyojung Yoon


안녕하세요. 여러분 오랜만에 작성하는 AWS 블로그입니다.

AWS를 처음 접하는 분들에게 IAM은 다소 복잡해 보일 수 있습니다. 저 또한 IAM에 대해 이해하는 데 오래 걸렸답니다.


하지만 IAM은 AWS 환경에서 보안과 접근 제거의 근간을 이루는 핵심 서비스로, 꼭 짚고 넘어가야 하는 서비스입니다.

이번 블로그에서는 IAM의 기본 개념과 중요성을 알기 쉽게 설명해 드리고자 합니다.


그러면 지금부터 시작해 볼까요?

 
 

AWS IAM이란?

AWS IAM이란

AWS IAM(Identity and Access Management)은 AWS 서비스와 리소스에 대한 접근을 안전하게 제어할 수 있는 서비스입니다. 쉽게 말하자면 누가, 무엇을 할 수 있는지 관리하는 AWS의 문지기 역할을 합니다. IAM을 사용하면 사용자, 그룹, 역할을 생성하고 관리하며, AWS 리소스에 대한 접근 권한을 세밀하게 제어할 수 있습니다.


IAM 사용하면 필요한 최소한의 권한만 부여하여 보안 사고를 예방할 수 있습니다. 또한 다양한 상황에 맞는 접근 제어 정책을 쉽게 생성하고 관리할 수 있습니다. 게다가 불필요한 리소스 사용을 제한하여 비용을 최적화할 수 있습니다. 마지막으로 기업의 보안 정책 및 규제 요구사항 준수를 쉽게 해줍니다.


  • IAM의 주요 기능

    • AWS 계정에 대한 공유 액세스: AWS 리소스 관리 권한을 타인에게 부여할 수 있습니다.

    • 세분화된 권한 부여: 리소스에 따라 여러 사람에게 필요한 만큼의 권한을 부여할 수 있습니다.

    • 멀티 팩터 인증(MFA): 보안 강화를 위해 암호나 액세스 키뿐만 아니라 추가 보안 계층을 제공해 무단 접근을 방지합니다.

    • Identity Federation: 기업 네트워크나 인터넷 자격 증명 공급자처럼 다른 곳에 이미 암호가 있는 사용자에게 AWS 리소스에 임시로 접근할 수 있는 자격 증명을 제공합니다.



IAM의 구성 요소

IAM의 구성 요소: 사용자, 그룹, 역할, 정책

IAM은 크게 사용자(Users), 그룹(Groups), 역할(Roles), 정책(Policy)으로 구성되어 있습니다. 정책은 권한에 대해 상세한 설정을 합니다. 그리고 정책은 역할을 연결하고, 역할은 사용자나 AWS 리소스에 연결되어 해당 리소스나 유저의 권한을 설정합니다.

1. 사용자(Users)

IAM 사용자는 AWS를 사용하는 개인이나 서비스나 나타냅니다. IAM 사용자를 만든 후에 다음 자격 증명을 생성할 수 있습니다.

  • 관리 콘솔에 로그인하기 위한 비밀번호

  • 자격 증명(액세스 키 ID, 비밀 액세스 키)

이때, 자격 증명은 루트 사용자 보안 자격 증명과는 다르며, 각 사용자는 하나의 AWS 계정에만 정의됩니다.


2. 그룹(Groups)

IAM 그룹

다수의 사용자를 모아놓은 것으로 동일한 권한을 부여받은 사용자들의 집합입니다.

  • 예를 들어 '개발팀', '운영팀' 등으로 그룹을 만들 수 있습니다.

  • 한 그룹에 여러 명의 사용자를 지정해서 공통으로 권한을 주어야 하는 상황일 때 유용합니다.

  • 여러 사용자의 권한을 지정하고 관리하는 작업을 간소화할 수 있습니다.

다만, IAM 그룹에는 IAM 사용자 또는 역할과는 달리 자격 증명이 없습니다.


3. 정책(Policy)

정책은 AWS에서의 권한을 정의하는 JSON 문서이며, 특정 리소스에 대한 액세스를 허용하거나 거부하는 규칙을 정의합니다. 이렇게 만들어진 정책 문서는 사용자(Users)와 그룹(Groups), 역할(Role)에 연결됩니다. 정책의 주요 요소로는 'Effect', 'Action', 'Resource'가 있습니다.


기본 JSON 정책 구조는 다음과 같습니다:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:GetObject", "s3:PutObject"],
      "Resource": "arn:aws:s3:::example-bucket/*"
    }
  ]
}
  • Effect

    • 허용(Allow) 또는 거부(Deny) 두 가지 값만 가질 수 있습니다.

    • 해당 명령문이 특정 작업을 허용할지 거부할지를 결정합니다.

  • Action

    • 수행할 수 있는 작업을 정의합니다. 예시: "s3:GetObject"

    • 와일드카드(*)를 사용해 여러 작업을 한 번에 지정할 수 있습니다.

  • Resource

    • 작업이 적용되는 특정 AWS 리소스를 지정합니다.

    • Amazon Resource Name(ARN)을 사용하여 리소스를 식별합니다.

    • 와일드카드를 사용해 여러 리소스를 지정할 수 있습니다.

* 여기서 잠깐, 권한이란?


4. 역할(Role)

특정 권한을 가진 사용자나 서비스 등에 임시 권한을 부여하는 기능입니다. IAM 역할을 통해 특정 작업을 수행하는 데 필요한 권한을 유연하게 관리할 수 있습니다. 역할은 임시 자격 증명을 통해 권한을 부여하며, 장기 자격 증명(액세스 키 등)을 사용하지 않아도 되기 때문에 보안상 유용합니다. 역할을 맡을 수 있는 주체가 정의하는 신뢰 정책을 포함합니다.


 

IAM 사용자 관리

IAM 사용자는 AWS와 상호작용을 하는 개체를 나타냅니다. 이는 실제 사람일 수도 있고, 애플리케이션이나 서비스일 수도 있습니다. 각 사용자는 고유한 자격 증명을 가지며, 이를 통해 AWS 리소스에 접근합니다.


1. IAM 사용자 생성 시 고려 사항

  • 접근 유형: AWS Management Console 접근, 프로그래밍 방식 접근, 또는 둘 다

  • 권한 범위: 사용자가 수행해야 하는 작업에 필요한 최소한의 권한

  • 그룹 멤버십: 유사한 역할을 하는 사용자들을 그룹으로 관리

  • 암호 정책: 강력한 암호 사용을 강제하는 정책 적용


2. 액세스 키와 시크릿 액세스 키

액세스 키와 시크릿 액세스 키는 사용자가 프로그래밍 방식으로 AWS에 접근할 수 있도록 하는 자격 증명입니다. 이러한 키는 안전하게 보관해야 하며, 유출 시 즉시 변경하거나 비활성화해야 합니다.


3. 사용자 권한 설정 방법

1) 직접 정책 연결 vs 그룹을 통한 정책 연결

  • 직접 정책 연결: 개별 사용자에게 특정 권한이 필요한 경우 사용합니다.

  • 그룹을 통한 정책 연결: 비슷한 역할을 하는 다수의 사용자에게 일괄 적용할 수 있으며, 그룹에 부여된 권한은 그룹에 속한 모든 사용자에게 자동으로 적용됩니다.

2) 최소 권한 원칙

최소 권한 원칙은 사용자에게 그들이 수행해야 할 작업에 필요한 최소한의 권한만 부여하는 것을 의미합니다. 이를 통해 불필요한 권한 부여로 인한 보안 사고를 방지할 수 있습니다.



IAM 정책 살펴보기

1. 정책 유형

  • AWS 관리형 정책(AWS Managed Policy): AWS에서 제공하는 사전 정의된 정책으로, 일반적인 사용 사례를 지원하기 위해 미리 작성되어 있습니다. 예를 들어 "AmazonS3ReadOnlyAccess" 정책은 S3 버킷에 대한 읽기 전용 권한을 부여합니다.

  • 고객 관리형 정책(AWS Customer Managed Policy): 고객 관리형 정책은 사용자가 직접 작성하고 관리하는 정책으로, 특정 요구사항에 맞게 권한을 세밀하게 제어할 수 있습니다.

  • 인라인 정책(Inline Policy): 특정 사용자, 그룹 또는 역할에 직접 포함된 정책으로, 해당 개체에만 적용됩니다.


2. 정책 작성과 주의 사항

{
  "Version": "2012-10-17",
  "Statement": [
	{
      "Effect": "Allow",
      "Action": "s3:GetObject", 
      "Resource": "arn:aws:s3:::example-bucket/*"
	 "Condition": {
	  "IpAddress": {
		"aws:SourceIp": "192.0.2.0/24"}}	
    }
  ]
}

1) 정책 구성 요소

  • Version: 정책 문서의 버전을 지정합니다. 최신 버전인 '2012-10-17'을 사용하는 것이 권장됩니다.

  • Statement: 정책 문서의 주요 요소를 포함하는 컨테이너입니다. 하나 이상의 명령문을 포함할 수 있습니다.

    • Effect: 정책의 결과를 정의하며, 'Allow' 또는 'Deny'의 값을 가질 수 있습니다. 예시에서는 접근을 허용('Allow')합니다.

    • Action: 정책이 허용하거나 거부할 작업을 정의합니다. 예시에서는 S3 객체 가져오기 작업('s3:GetObject')을 허용합니다.

    • Resource: 정책이 적용되는 AWS 리소스를 지정합니다. 예시에서는 'example-bucket'의 모든 객체('*')를 대상으로 합니다.

    • Condition: 정책이 적용되는 조건을 정의합니다. 예시에서는 'aws:SourceIP' 조건을 사용해 특정 IP 주소인 '192.0.2.0/24'에서만 접근을 허용합니다.


2) 정책 작성 시 주의 사항

  • 최소 권한 원칙 준수: 필요한 최소한의 권한만 부여하는 보안을 강화합니다.

  • 와일드카드(*) 사용 시 주의: 과도한 권한 부여를 방지하기 위해 신중하게 사용합니다.

  • 명시적 거부(Deny): 허용(Allow)보다 우선하며, 필요시 명시적으로 거부를 설정합니다.



IAM 역할 활용

1. IAM 역할의 개념과 사용 사례

IAM 역할은 IAM 사용자가 특정 권한을 가지도록 설정하는 도구입니다. IAM 역할은 인증을 위해 사용되며, AWS 계정 내 특정 AWS 리소스에 임시 접근 권한을 부여하는 데 사용됩니다. 예를 들어, EC2 인스턴스가 S3 버킷에 접근할 수 있도록 역할을 설정할 수 있습니다.


역할과 사용자는 모두 AWS 자격 증명으로, 권한 정책에 따라 AWS에서 할 수 있는 작업과 할 수 없는 작업을 결정합니다. 그러나, 역할은 특정 개인에게만 연관되지 않고, 해당 역할이 필요한 누구에게나 맡겨질 수 있어야 합니다. 또한, 역할에는 비밀번호나 액세스 키와 같은 표준 장기 자격 증명이 없으며, 대신 임시 보안 자격 증명이 제공됩니다.


  • IAM 역할의 사용 사례

    • EC2 인스턴스에서 S3 버킷 접근: EC2 인스턴스에 IAM 역할을 부여하여 S3 버킷에 접근할 수 있도록 설정할 수 있습니다. 이렇게 하면 EC2 인스턴스에서 실행되는 애플리케이션이 S3 버킷에 안전하게 접근할 수 있습니다.

    • 교차 계정 접근 관리: 여러 AWS 계정 간에 리소스를 안전하게 공유할 수 있습니다. 예를 들어, 개발 계정의 사용자가 프로덕션 계정의 리소스에 접근할 수 있도록 역할을 사용하여 안전하게 접근할 수 있습니다.

    • AWS 서비스 사용: Lambda 함수나 다른 AWS 서비스가 역할을 사용하여 다른 AWS 리소스에 접근할 수 있도록 설정할 수 있습니다.

    • 임시 자격 증명 제공: 임시 자격 증명을 사용하여 특정 작업을 수행하도록 설정할 수 있습니다. 이는 보안을 강화하고 장기 자격 증명의 유출 위험을 줄여줍니다​​​​​​.


2. 교차 계정 접근 관리

IAM 역할을 사용하여 여러 AWS 계정 간에 리소스를 안전하게 공유할 수 있습니다. 예를 들어, 개발 계정의 사용자가 프로덕션 계정의 리소스에 접근할 수 있도록 역할을 사용하여 안전하게 접근할 수 있습니다.


3. IAM 역할과 정책 비교


IAM 역할

IAM 정책

적용 대상

역할을 부여받은 모든 대상

하나의 IAM 사용자, 그룹 단위에 부여

자격 증명 유형

임시 보안 자격 증명

장기 또는 영구적 자격 증명

권한 획득 방식

특정 시간 동안만 권한 획득

정책을 부여받은 동안 권한 획득

사용 사례

EC2 인스턴스, Lambda 함수, 교차 계정 접근 관리

특정 리소스에 대한 접근 권한 관리

구성 요소

신뢰 정책, 권한 정책

Effect, Action, Resource, Condition

주요 목적

보안 강화 및 유연한 권한 관리

세밀한 권한 제어


마무리

AWS IAM 가이드를 통해 IAM의 핵심을 살펴보았습니다. IAM의 각 구성 요소인 사용자, 그룹, 역할, 정책을 이해하고 이를 실제 환경에서 적용하는 방법을 학습한다면 더욱 안전하고 효율적으로 AWS 환경을 관리할 수 있습니다.


이번 가이드가 여러분의 AWS 보안을 튼튼하게 하는 첫 걸음이 되면 좋겠네요. IAM 실전 가이드편에서는 사례를 중심으로 IAM 설정과 실습에 대해 다룰 예정이니 기대해주세요!


관련 링크

조회수 211회댓글 0개

관련 게시물

전체 보기

Comments


bottom of page