본문 바로가기
DevOps/AWS

[AWS] AWS IAM 설정하기

by DUSTIN KANG 2024. 1. 25.

IAM

IAM(Identify and Access Management)는 회사 차원에서 AWS 계정 접근에 대한 권한을 관리하는 서비스이다. 통 보안적인 이유로 루트 계정(Root Account)를 사용하지 않기 때문에 사용자나 사용자 그룹을 통해 AWS 계정에 접근하여 사용한다. 루트 계정은 주로 백업 용도로만 사용한다. 만약 AWS를 가입하지 않았다면 처음 생성하는 경우엔 완전한 접근 권한을 지닌 단일 로그인 자격 증명을 하게 된다. 이 자격 증명을 루트 사용자라고 한다. 

 

IAM을 조회하게 되면 현재 접속 계정의 보안 상태를 확인할 수 있다. AWS에 처음 계정을 생성했을 때는 모든 권한에 접근할 수 있다. 루트 계정은 모든 권한을 쥐고 있는 중요한 계정이니 패스워드만으로 로그인이 가능하면 보안에 취약성을 갖게된다. MFA(Multi-Factor Authorization)을 통해 인증을 하게 되면, 좀 더 안전하게 계정을 관리할 수 있다. MFA로 인증하는 방식은 다양하며 원하는 방식을 사용하면 된다.

권한? 정책?

IAM에 대표적인 주요 기능으로는 다음과 같이 나눌 수 있다.

  • 그룹 : 사용자 그룹의 권한을 지정할 수 있다.
  • 사용자 : AWS를 사용하기 위해 계정 접근에 대한 자격을 증명한다.
  • 역할 : 단기간 동안 유효한 자격 증명을 가진 특정 권한을 말한다. 
  • 정책 : 사용자나 그룹에게 권한을 줄 때 권한을 정의하는 AWS의 객체를 의미한다. `JSON` 형식으로 필요할 때 마다 더해서 사용한다.
더보기
{
  "Version" : "2012-10-17",
  "Statement" : [
    {
    "Effect" : "Allow",
    "Action" : "s3:GetObject",
    "Resource" : "arn:aws:s3:::example-bucket/*"
   },
    {
    "Effect" : "Allow",
    "Action" : [
      "s3:PostObject",
      "s3:PutObject"
    ]
    "Resource" : "arn:aws:s3:::example-bucket"
   },
    {
    "Effect" : "Deny",
    "Action" : "s3:*",
    "Resource" : "arn:aws:s3:::example-bucket/senstive-data/*",
    "Condition" : {
      "IPAddress": {
        "aws:SourceIp":"192.168.1.0/24"
      }
   }
  }
 ]
}

가장 좋은 관리 방법

  • 루트 계정은 최대한 사용하지 않고 Backup 용도로 둔다.
  • 한 사람이 항상이 무조건 1:1 매핑으로 사용해야한다.
  • User를 그룹에 넣고 정책을 넣는 게 관리하는게 좋다. 개개인 관리하기엔 어렵기 때문이다.
  • MFA를 사용하는게 보안상 좋다.
  • AWS 서비스를 사용할 때 항상 역할을 업데이트해야 한다.
  • IAM 유저와 접근 키는 공유해선 안된다.

MFA 활성화하기

처음엔, IAM에 접속을 해서 보안 권장사항에 MFA를 추가할 필요 있다고 메세지가 있는데 해당 문구에  MFA 추가를 선택하여 진행한다.

이 방법 외에도 [보안 자격 증명] - [MFA 디바이스 할당]을 통해 들어갈 수 있다.

IAM - 보안권장사항

 

그 다음에는 MFA 디바이스를 선택하는 창이 나오는데 다음 그림에 나오는 세가지가 다양한 방법으로 인증하는 방식이다. 가격면에서 `Authenticator app` Google에서 제공하는 authenticator 앱을 다운 받으면 되기 때문에 이 방식을 사용하기로 했다.

1단계 디바이스 선택

 

그럼 앱스토어에서 Google Authenticator↗을 설치한다음, 앱에서 [Add a code] - [Scan a QR code]로 다음 그림의 QR을 찍고 MFA 코드를 입력한다.

2단계 - MFA Code 입력

 

개인 IAM 사용자 생성

그룹, 사용자 생성

이번엔 루트 계정이 아닌 개인 계정을 생성할 예정이다. AWS는 각 서비스에 대해 IAM 계정을 생성하여 필요한 권한만 사용자에게 부여할 수 있다. 우선, IAM 대시보드에 들어가서 [사용자] 탭을 선택한다. 그다음, [사용자 생성]을 선택해 사용자를 생성한다.

 

사용자를 생성하기 위해 우선, 사용자의 세부 정보를 지정해야한다는 페이지를 볼 수 있을 것이다. 아래와 같이 사용자 정보를 입력하고 Identity Center에서 사용자 지정으로 해서 [다음]을 누르면 Identify Center로 이동하게 된다.

  1. User name(사용자 이름)을 입력한다.
  2. AWS Management Console access 체크 박스를 선택하고 사용자 유형을 선택한다.
    1. 만약 다음 그림이 아닌 I want to create an IAM user(IAM 사용자 생성)을 클릭한다면 생성할 계정의 비밀번호를 입력한다.

1단계 - 사용자 세부 정보 설정

 

identity Center를 활성화하기 위해서는 조직을 생성해야 한다. 이번엔 사용자를 넣을 그룹을 생성해야한다. 그룹이름과 설명을 넣고 그룹을 생성하면 된다. 그룹은 대시보드 사이드바에 사용자 밑에 있다.

그룹 생성

이제 그룹을 생성했으니 사용자를 그룹에 넣기만 하면 된다. 그룹에 사용자 추가를 클릭한다. 이전과 같은 방식(1단계)으로 사용자를 추가하고 그룹에 사용자를 추가한다. 검토가 끝나면 사용자가 추가된 동시에 그룹에 사용자가 추가된 것을 확인할 . 수있다. 

2단계 그룹에 사용자 추가

 

이제 그룹에 추가된 사용자는 이메일을 받게 된다.

해당 이메일에 URL에 접속하고 비밀번호 설정을 하게되면 정상적으로 AWS에 접속됨을 확인할 수있다.

사용자 계정으로 온 메일

 

권한 설정

이제 받은 계정으로 로그인을 하게되면 백화면에 아무것도 할 수 없는 상태로 페이지가 나온다.

이유는 해당 계정에 권한을 주지 않았기 때문이다. 권한을 주기 위해서는 IAM identity Center 대시보드 사이드바에 [권한 세트]를 선택하면 된다.

로그인을 하게되면 아무것도 없다.
권한 세트를 선택한다.

권한 세트 설정을 누르고 권한 세트를 추가한다.

사용자 지정 권한 세트를 선택하면 사용할 수 있는 서비스마다의 권한을 줄 수 있다. 

이번 포스팅에서는 사전 정의된 권한 세트로 AWS 모든 서비스 접근을 제공하는 형식으로 해보려고 한다. 기본 설정으로 세부 정보를 하지 않고 권한 세트를 생성한다.

 

이번엔 권한을 할당해야 한다.

사이드바 권한 세트 위에 [AWS 계정]을 선택해 본인의 AWS 관리자 계정을 클릭 [사용자 또는 그룹 할당]으로 권한을 할당한다. 그룹이나 사용자를 선택하고 해당 권한 세트를 할당하면 된다.

 

그다음, 이전에 메일로 받은 Portal URL을 통해 로그인하면 된다.

 

개인 IAM 사용자 생성 2

그룹, 사용자 생성

이번엔 다른 방법으로 사용자를 생성해본다. IAM 사용자를 생성하고 싶음을 클릭하여 사용자를 생성한다.

 

그룹을 생성하고 그룹에 사용자를 넣거나 권한을 복제하거나 직접 정책을 연결하여 사용자를 생성할 수 있다.

 

사용자는 csv를 받아 다음 정보로 URL에 로그인할 수 있다. 혹은 첫번째 Console sign-in URL(콘솔 로그인 URL)으로 이동하여 바로 생성된 계정에 로그인한다. 

 


☕️ 마치며

오늘도 저의 포스트를 읽어주셔서 감사합니다. 

IAM을 사용하면 계정 관리를 더욱 체계적으로 안전하게 관리할 수 있고 계정에 따라 접근 권한을 주어 안전하게 서비스를 수행할 수 있었습니다.

설명이 부족하거나 이해하기 어렵거나 잘못된 부분이 있으면 부담없이 댓글로 남겨주시면 감사하겠습니다.

'DevOps > AWS' 카테고리의 다른 글

[AWS] EC2와 RDS 연결하기  (0) 2024.04.09
AWS 친해지기  (0) 2024.01.24