AWS(Amazon Web Service)

[AWS] IAM(Identity and Access Management)

yunseohhe 2024. 9. 10. 23:50

IAM

  • 글로벌 서비스에 해당한다
  • 사용자를 생성하고, 그룹에 배치한다.

 

Users(사용자)

  • 실제 AWS의 기능과 자원을 이용하는 사람를 의미한다.
  • 단일 개인 또는 애플리케이션에 대한 특정 권한을 가지고 있는 AWS 계정 내 ID이다.
  • IAM 사용자는 회사 내의 실제 물리적 사용자와 매핑되어야한다.
  • 이 사용자는 AWS 콘솔 비밀번호를 갖게 된다.

 

Groups(그룹)

  • IAM 사용자 컬렉션을 지정하는 자격 증명이다.
  • 사용자를 그룹화 할 수 있다.(따라서 그룹에는 사용자만 있게되는 것이다.)
  • 하나의 그룹에 여러명의 사용자를 지정해서 공통적으로 권한을 주어야 하는 상황일 때 유용하다.
  • 그룹을 사용하여 여러 사용자의 권한을 한 번에 지정할 수 있다.
  • 그룹을 사용하면 대규모 사용자 집합의 권한을 더 쉽게 관리할 수 있다.

유저와 그룹 (출처: 구글이미지)

 

Policies(정책)

  • 사용자 또는 그룹에 대한 권한을 설명하는 정책 또는 JSON 문서를 첨부할 수 있다.
    (AWS 서비스에 요청을 생성하기 위한 일련의 권한을 정의하기도 한다.)
  • IAM 정책의 문장
     : 효과, 원칙, 조치, 리소스, 그리고 조건으로 구성된다.
    (참고 : '버전'은 IAM 정책 자체의 일부이지, 문장의 일부가 아닙니다.)
  • 밑의 이미지 설명
    - Alice, Bob, Charles에게  Developers 그룹 레벨에 모두 권한을 얻으며 정책의 상속이 가능하다.
    - David, Edwar는 개발자 그룹과 다른 정책을 적용 받는다.
    - Fred라는 사용자는 그룹에 속하지 않을 경우, 사용자에게만 연결이 가능한 "인라인 정책"이라는 걸 생성할 수도 있다.
    - Charles와 David가 다른 팀에도 속해있다고 하면 Audit Team 그룹의 정책도 이중으로 정책을 적용받게 된다. 

(출처 : 구글이미지)

 

 

Roles(역할)

  • 계정에 생성할 수 있는, 특정 권한을 지닌 IAM 자격 증명이다.
  • AWS 서비스에 요청을 생성하기 위한 일련의 권한을 정의하고, AWS 서비스에 의해 사용될 IAM 개체
  • 실제 사람이 사용하도록 만들어진 것이 아니고 AWS 서비스에 의해 사용되도록 만들어졌다. 
    (예시로, EC2 또는 Lamdad와 같은 컴퓨팅 서비스에서 코드를 실행할 수 있게 해주는 서비스이다.)

(출처 : 구글이미지)

 

 

Security (안전)

  • 멀티팩터 인증(MFA)를 활성화 할 수 있다.
    - Multi Factor Authentication
        : 비밀번호와 사용자가 소유한 보안 장치의 조합을 사용한다. 그러면 단순한 비밀번호보다 보안이 훨씬 강화된다.
        : AWS에서는 필수이고, 사용을 매우 권장한다.
        : 해킹당하여 비밀번호를 잊어버린 경우에도 해커가 물리적 장치를 확보해야 하므로 계정이 손상되지 않는다는 것이다.
  • MFA 장치 옵션
     -  Virtual MFA device
        : 사용하면 원하는 만큼 많은 사용자와 계정을 보유할 수 있으므로 매우 편리한 솔루션이다.
     - Universal 2nd Factor (U2F) Security Key
        : 물리적인 장치이며, 보안 토큰에 달면 준비 완료이다.
        : 밑의 이미지에서 유비키는 단일 보안 키를 사용하여 여러 루트 밑 IAM 사용자를 지원한다. 따라서 사용자 수만큼 많은 키가 필요하지 않습니다.
     - Hardware Key Fob MFA Device
     - Hardware Key Fob MFA Device for AWS GobCloud(US)
        : 미국 정부의 클라우드인 AWS GovCloud를 사용하고 있다면, SurePassID에서 제공하는 보안 토큰이 있다.

참고 예시들 (출처 : 구글 이미지)

  • 사용자에 대한 비밀번호 정책도 설정할 수 있다.
    - Password Policy(비밀번호 정책)
         : 최소 비밀번호 길이를 설정하고 특정 문자 유형을 요구 할 수 있다.
           (대문자, 소문자, 숫자, 물음표와 같은 특수 문자 포함 가능)
         : 90일마다 사용자는 비밀번호를 변경해야 한다.

 

 -  Security Tools(보안 도구)

  • IAM Credentials Report(IAM 자격 증명 보고서)
      : 보고서는 계정에 있는 사용자와 다양한 자격 증명의 상태를 포함한다
  • IAM Access Advisor(IAM 액세스 관리자)
      : 사용자에게 부여된 서비스의 권한과 해당 서비스에 마지막으로 액세스한 시간이 보인다.
      : 해당 도구를 사용하면 어떤 권한이 사용되지 않는지 볼 수 있고 따라서 사용자의 권한을 줄여 최소권한의 원칙을 지킬 수 있다. (즉, 최소권한의 원칙에 따랐을 때 매우 도움되는 정보이다.)
  • Audit(심사)
    : IAM Access Advisor를 사용해서 IAM 자격증명 보고서를 생성하고 IAM 사용량을 감사할 수 있다.

 

 

AWS CloudShell

  • AWS 클라우드에서 무료로 사용 가능한 터미널 같은 개념이다.
    (즉, 오프라인 터미널을 통해 명령을 내리는 것 대신 사용할 수 있는 대안이다.)
  • 모든 리전에서 사용 가능하지 않고 사용 할 수 있는 리전이 따로 있다. (= AWS CloudShell FAQs에 가면 사용 불가능한 리전이 나와있다)
  • 장점 : CLI를 사용할 때, 예를 들어 "aws iam list-users"를 입력하는 경우에 API 호출을 반환해준다.
    (마치 자격 증명이 클라우드를 사용 중인 계정에서 실행되고 있는 것처럼 표시된다.)
  • 파일을 업로드 및 다운로드 할 때 유용하다.

(출처 : 구글이미지)

 

 

Access Keys

  • 자격 증명이다.
  • 사용자들이 액세스 키를 직접 관리한다. (= 사용자 측면에서 액세스 키는 비밀번호와 마찬가지로 암호와 같다)
  • 절대 공유해서는 안된다.
  • CLI 또는 SDK를 사용하여 액세스 할 수 있는 액세스 키를 생성할 수 있다.
  • 관리 콘솔을 사용해서 생성이 가능하다.
     : Create access key 버튼으로 액세스 키를 생성하면 다운로드 권한이 주어진다.
     : 그러면 여기에 가짜 액세스 키 ID와 가짜 액세스 키가 생성이 된다.

(출처 : 구글이미지)

 

 


IAM 모범 사례(IAM Guidelines & Best Practices)

  • AWS계정을 설정할 때를 제외하고는 루트 계정을 사용하면 안된다.
    : 루트계정, 개인계정 두 개의 계정이 있어야 한다)
  • 한명의 AWS 사용자는 한 명의 물리적 사용자와 동일하다는 점을 알고 있어야 한다.
    : 다른 친구가 AWS를 사용하고 싶어 하는 경우 자격 증명 정보를 제공하지 말고 대신 다른 사용자를 생성해야 한다.
  • 사용자를 그룹에 할당하고 그룹에 권한을 할당하여 보안이 그룹 수준에서 관리되도록 할 수 있으며 강력한 비밀번호 정책을 만들어야 한다.
  • 다중 인증 또는 MFA를 사용하여 계정이 해커로부터 더 안전할 것임을 보장해야 한다.
  • 실제로 보장할 수 있다면, AWS 서비스에 권한을 부여할 때 역할을 생성하고 사용하는 것이 좋다.
  • CLI 또는 일부 SDK에서 액세스 키를 생성해야 한다.
    : 프로그래밍 방식이나 CLI를 통해 AWS를 사용할 때의 가상 서버인 EC2인스턴스가 포함된다.
  • IAM 자격 증명 보고서 또는 IAM 액세스 관리자 기능을 사용할 수 있다.
    : 계정의 권한을 감사하기 위해서이다.
  • IAM 사용자와 액세스 키를 절대로 공유해서는 안된다.