AWS

What is IAM? (for SAA)

박현국 2024. 10. 9. 04:27
IAM
  • IAM 에서는 사용자를 생성하고 그룹에 배치 ->>>> 글로벌 서비스
  • IAM 계정과 root 계정
    * 계정을 생성할 때 Root 계정을 만든다. root 계정은 계정을 생성할 때만 사용되어야 한다.
    * 그래서 IAM 에서 사용자를 생성해야한다. 하나의 사용자는 조직 내의 한사람에 해당. 이는 IAM 그룹으로도 묶을 수 있다.
  • 사용자와 그룹을 생성하는 이유는 뭘까? >> AWS 계정을 사용하도록 허용하기 위해서 즉, 이들에게 권한을 부여하여 해당 사용자가 어떤 작업에 대한 일을 할 수 있도록, 또는 접근을 제한할 수 있도록 한다.(ELB, Describe, CloudWatch 등) 
  • 이 권한은 IAM 정책 ->>> JSON 문서를 통해 어떤 권한인지 확인하고, 부여할 수 있다.
  • 따라서 사용자에게 꼭 필요로 하는 것 이상의 권한을 주지 않는다. (최소권한원칙)

 

 

 IAM 정책 
(Developers, Operations, Audit Team 그룹이 있다고 예시를 들고 진행)
  • 개발자 그룹과 운영자 그룹으로 정책을 지정하여 해당 사용자에게 정책을 적용한다. 
  • 하지만, 그룹에 속하지 않는 사용자가 있을 수 도 있다. -> 이럴 경우 Inline 정책을 적용
  • 예를들어 개발자와 운영자 그룹의 사용자 중 한명이 감사팀의 정책도 적용되게 되면, 해당 사용자는 다른 정책도 적용 받게 된다.

IAM 정책 예시

 

  • 해당 정책은 JSON 문서로 설정되어 있다.

정책 설정 예시

 

그렇다면.

사용자와 그룹이 손상되지 않도록 보호해야한다. 이를 위한 두가지 방어 메커니즘이 있다.

 

IAM 그룹 보호 
1. Password Policy
2. MFA

 

1.  Password Policy

  • 비밀번호에 대해 다양한 옵션으로 비밀번호 정책을 설정한다.
    1. 최소 비밀번호 길이 설정 및 특정 문자 유형 포함
    2. 자신의 비밀번호 변경 허용 여부에 대한 옵션
    3. 일정 시간 후에 사용자에게 비밀번호를 변경하도록 요구

2. MFA : 비밀번호 + 사용자가 소유한 보안 장치의 조합

  • AWS 에서는 필수이며, 매우 권장된다.
  • MFA 생성 토큰을 통해 기존 비밀번호와 2차 로그인 개념으로 MFA 장치를 통해 로그인을 한다.
  • 이러한 점은 비밀번호를 도난당하거나, 해킹당하여 비밀번호를 잊어버린 경우에도 해커는 MFA 장치도 확보해야 하므로 계정이 손상되지 않는다.
  • MFA 장치
    1. 가상 MFA 장치 (Phone 을 통해 토큰을 가지고 로그인)
    2. U2F 키 (타사 제품이며, 단일 보안 키를 사용한다.)
    3. 하드웨어 보안 토큰 MFA
    4. AWS GovCloud(US) 하드웨어 보안 토큰

 

AWS 에 사용자가 어떻게 액세스할까?

1.  AWS 관리 콘솔

  • 비밀번호 + MFA 인 다요소 인증으로 보호된다.

2. CLI (Command Line Interface)

  • Access Key 에 의해 보호된다. 
  • Access Key 란 사용자의 자격증명으로 터미널에서 AWS Acess 를 가능하게 해준다.

CLI 예시

3. SDK (Software Developer Kit)

  • AWS 로부터 애플리케이션 코드 내에서 API 를 호출하고자 할 때 사용되는 방식
  • CLI 와 마찬가지로 Access Key 로 보호된다.

SDK 예시

  • SDK 는 특정 언어(JavaScripty, Python, PHP, .NET, Java 등) 로 된 라이브러리의 집합 -> 프로그래밍 언어에 따라 개별 SDK 가 존재한다.
  • 즉, SDK 는 터미널 내에서 사용하는 것이 아닌, 코딩을 통해 애플리케이션 내에 심어 두어야 한다.
  • Mobile SDK, IoT SDK 장치 지원

 

해당 Access Key 비밀번호와 같은 암호이며 사용자들이 직접 관리한다.  (다른 사람과 공유 금지)

 

4. CloudShell 의 사용 (AWS 내의 터미널)

  • 무료이며, 특정 리전에서 가능

 

IAM Roles : 사용자 또는 그룹에 대해 정책을 주는 것과 마찬가지로 AWS 에서 사용하는 Service 에 대해서도 정책을 부여해야 한다.
  • 예를 들어 EC2 인스턴스를 만든다면, AWS 에서 어떤 작업을 수행하기 위해 권한을 부여해야한다.
    -> IAM Role 의 권한을 올바르게 부여하면, 하려고 하는 호출에 접근할 수 있다.
  • 정책에는 EC2 인스턴스뿐만 아니라 Lambda 함수 Role 과 CloudFormation 등 다양한 AWS 서비스에에 의한 IAM Role 도 지정할 수 있다.

IAM Role 예시

 

 

IAM 보안 도구

1. IAM 자격 증명 보고서

  • 계정 수준에서 가능
  • 자격 증명 보고서는 계정에 있는 사용자와 다양한 자격 증명의 상태를 포함한다.

2. IAM 액세스 관리자

  • 사용자 수준에서 가능
  • 액세스 관리자는 사용자에게 부여된 서비스의 권한과 해당 서비스에 마지막으로 액세스한 시간이 보인다.
  • 최소 권한의 원칙에 따랐을때 매우 도움 되는 정보이다.
  • 어떤 권한이 사용되고 안되는지 볼 수 있고, 사용자의 권한을 줄여 최소 권한의 원칙을 지킬 수 있다.

 

IAM 정리

1. AWS 계정을 설정할 때를 제외하고는 루트 계정을 사용하면 안된다.

2. 자격 증명 정보는 공유해서는 안된다.

3. 사용자를 그룹에 할당하고, 그룹에 권한을 부여하여 보안이 그룹 수준에서 관리되도록 할 수 있다. (JSON 문서를 첨부할 수 있다.)

4. 보안은 강력한 비밀번호 정책, 다중 인증 또는 MFA 를 사용하여 안전하게 관리할 수 있다.

5. AWS Service 들에도 다양한 정책을 부여할 수 있다.

6. IAM 사용자와 Access Key 를 절대로 공유하면 안된다.