카테고리 없음

[새싹 금천 5기] AWS IAM 서비스 (이노그리드_기업맟춤형 클라우드 인재 양성 캠프)

z00h 2025. 6. 2. 01:44

AWS IAM(Identity and Access Management)

https://aws.amazon.com/ko/iam/?nc2=h_ql_prod_se_iam

 

IAM이란?

AWS 리소스에 누가 접근할 수 있고, 무엇을 할 수있는지를 제어하는 AWS 보안 관리 서비스이다.

사용자(user), 그룹(group), 역할(role), 정책(policy)으로 구성되어 세밀한 권한 관리가 가능하고

조직 내 보안과 운영 효율 성을 높이는 것이 핵심 기능이다.

 

IAM 보안 모범 사례 ⇒ https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/best-practices.html

루트 사용자 모범 사례 ⇒ https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/root-user-best-practices.html

 

IAM 보안 모범 사례

 
 

루트 사용자 모범 사례

 
 
 

사용자(USER)

  • AWS의 기능과 자원을 이용하는 객체
  • 사람 또는 애플리케이션이 될 수 있다.
 

사용자를 식별하는 방법

    1. 사용자 생성 시 지정한 이름으로 식별
      • IAM 사용자를 만들 때 부여하는 고유한 이름
      • 콘솔 로그인, CLI/SDK 사용 시 사용자 식별에 사용
    2. 사용자의 고유 식별자
      • AWS가 내부적으로 부여하는 변경 불가능한 고유 ID입니다.
      • 사용자 이름이 중복되거나 바뀌더라도 항상 동일한 사용자임을 확인 가능
    3. ARN(Amazon Resource Name) : 아마존에서 제공하는 모든 서비스의 이름 규칙
      • ex) arn:aws:service:region:account-id:resource
        • arn : ARN의 시작을 의미
        • aws : AWS를 나타내는 고정 값
        • service : 리소스를 제공하는 AWS 서비스(예: S3 버킷, Lambda 함수, RDS 데이터베이스 등)
        • region : 리소스가 위치한 AWS 지역(region) (선택적)

            account-id : AWS 계정 ID

      • resource : 서비스별로 리소스를 고유하게 식별하는 정보
 
 
 

사용자의 자격 증명 방법

  1. AWS Management Conosle 암호로 인증
    • https://console.aws.amazon.com\
    • 사용자가 웹 브라우저 AWS 콘솔에 로그인 할때 사용하는 인증방식
image
image
 
 
  1. Access Key로 인증
    • Access Key ID + Secret Access Key 조합으로 AWS API, CLI, SDK 등 프로그램 방식으로 AWS 접근할때 사용
    • 콘솔 로그인이 아닌 시스템간 통신이나 자동화 스크립트에 주로 사용
  2. SSH 키
    • AWS에 생성한 EC2 인스턴스의 터미널로 SSH 접속할 때 사용
    • 퍼블릭 키는 AWS에 저장, 프라이빗 키를 사용자 로컬PC에 저장하여 접속한다.
  3. 서버 인증서
    • AWS 서비스가 HTTPS로 보안 통신을 제공할때 사용하는 SSL/TLS 인증서
    • ACM(AWS Certificate Manager) 또는 IAM을 통해 등록 및 관리
 
 
 
 

IAM 사용자 추가 방법(Root 계정으로 로그인)

 

 
 

 

 
 

액세스 관리 > 사용자 > 사용자 생성

 

 
 

management 콘솔에 액세스할 수 있는 사용자 생성

 

 
 
 

직접 정책 연결 →사용자에게 직접 관리형 정책 연결

 

일단 권한은 부여하지 않고 사용자 생성

 
 

.csv 파일을 다운받아 로컬에 저장

 
 
 

다른 브라우저 생성후 test-user 로그인

→ IAM 계정 생성은 ‘크롬’환경에서

→ 로그인은 브라우저 ‘엣지’로

 

 
 

IAM 계정 로그인 성공

 

 
 
 

권한을 부여받지 않았기때문에 IAM 서비스 이용이 불가하다.

 
 
 

 

 

사용자 그룹 (user group)

  • 여러 사용자에게 공통으로 권한을 부여하기 위해서 만든 개념
  • 여러 사용자에게 일관된 권한 정책을 쉽게 적용하는 것이 가능
  • 사용자마다 권한을 따로 설정하지 않아도 되어 관리가 편리
 

역할(Role)

  • 사용자가 아닌 특정 서비스(S3,EC2 등)에서 생성한 객체에 권한을 부여하는데 사용
  • 어떤 행위를 하는 객체에게 여러 정책을 적용한다는 점에서는 사용자와 비슷하지만, 객체가 사용자가 아닌 서비스나 다른 AWS 계정의 사용자라는 차이가 있음
 

권한(permission)

  • AWS의 서비스나 자원에 어떤 작업을 할 수 있는지 여부를 명시한 규칙
  • AWS 서비스나 자원에 대해 무엇을 할 수 있는지를 정의
  • 예: S3 버킷 읽기, EC2 인스턴스 시작 등
 

정책(policy)

  • 자격 증명이나 리소스와 연결될 때 해당 권한을 정의하는 AWS의 객체
  • 권한의 모음으로 사용자, 사용자 그룹, 역할에 적용이 가능
  • 사용자, 사용자 그룹, 역할에 권한을 직접 적용할 수 없고, 반드시 정책을 생성한 후 적용해야 함
  • 권한들을 묶어서 JSON 형식으로 표현한 문서
  • 정책이 있어야 AWS 리소스를 사용 가능
 
 
 

정책 유형에는 두가지 유형이 있다.

  • 자격 증명 기반 정책
  • 리소스 기반 정책
 

자격 증명 기반 정책

  • IAM 사용자, 그룹 또는 역할에 연결되는 정책으로 자격 증명이 수행할 수 있는 작업(권한)을 지정
  • 관리형 정책
    • AWS에서 만든 또는 사용자가 만든 독립적인 정책 문서
    • 여러 사용자, 그룹, 역할에 공유하고 재사용 가능
    • 하나의 정책을 수정하면 연결된 모든 자격 증명에 자동 반영
  • 인라인 정책
    • 단일 사용자, 그룹 또는 역할에 직접 추가하는 정책
    • 정책과 자격 증명을 정확히 1:1 관계로 유지하며 자격 증명을 삭제하면 정책이 삭제됨
 
 

리소스 기반 정책

  • AWS 서비스를 이용해 만든 리소스에 접근하는것에 관련한 정책
  • S3 버킷과 같은 리소스에 연결하는 정책으로 지정된 보안 주체에 해당 리소스에 대한 특정 작업을 수행할 수 있는 권한을 부여하고 이러한 권한이 적용되는 조건을 정의
  • 리소스 기반 정책은 인라인 정책이며, 관리형 리소스 기반 정책은 없음
  • 모든 리소스가 지원하는 것은 아님
 

권한 경계

  • 관리형 정책을 사용해 자격 증명 기반 정책이 IAM 엔티티(사용자 or 역할)에 부여할 수 있는 최대 권한을 설정하기 위한 고급 기능
  • 엔티티의 권한 경계 설정을 통해 자격 증명 기반 정책 및 관련 권한 경계 모두에서 허용되는 작업만 수행할 수 있음
  • 리소스 기반 정책은 권한 경계에 제한을 받지 않음
 
 
 
 

관리형 권한 정책을 추가해보자

 

 

 
 

 

 

‘IAMFullAccess’ 권한 정책을 추가하면 edge 브라우저에서 test-user 로 IAM 서비스를 사용할수 있다.

 

 

 

하지만 권한 경계에 EC2FullAccess를 설정하면 edge에서 IAM 서비스는 물론 EC2 서비스도 이용할 권한이 없다.

이유는?

→ 권한 경계는 사용자가 가질 수 있는 "최대 권한의 범위"를 제한하기 때문에, 경계에 없는 서비스는

    아무리 권한 정책을 붙여도 사용할 수 없다.

권한 경계는 부여된 권한 중에서도 "이 범위 안에서만 유효하게 만들어라"는 제한 장치인데

부여된 권한이 경계 범위내 없기때문에 제한된다.

 

  • IAM 서비스 ❌: 경계에 없음 → 거부됨
  • EC2 서비스 ❌: 경계에는 있지만, 정책에 EC2 권한이 없음 → 역시 거부됨