관리 메뉴

개발공부기록

AWS 소개, IAM(Identity and Access Management) 본문

인프라/AWS

AWS 소개, IAM(Identity and Access Management)

소소한나구리 2025. 5. 6. 12:15
728x90

AWS 클라우드 소개

AWS 란?

Amazon Web Services의 약어로 아마존 닷컴이 제공하는 클라우드 컴퓨팅 플랫폼이다.

 

AWS는 전 세계에 분산되어 있는 데이터 센터에서 고객에게 IT 인프라를 제공하며 이를 사용하는 고객은 필요한 인프라를 빠르고 쉽게 설정하여 관리할 수 있다.

 

한국에도 2016년부터 AWS 서버가 생겼다고 한다

 

AWS의 주요 서비스들 소개

컴퓨팅

  • EC2(Elastic Compute Cloud): 클라우드 위에서 실해앟는 가상 서버
  • Elastic Beanstalk: 여러 서비스를 하나로 묶어서 자동 배포 및 운영
  • Elastic Load Balancer: 트래픽을 여러서버에 분산시켜 부하 분산 및 장애를 대응

데이터베이스

  • RDS(relational Database Service): MySQL, postgreSQL 등 관계형 DB를 클라우드에서 운영

스토리지

  • S3(Simple Storage Service): 객체 단위로 데이터를 저장하는 클라우드 데이터 저장소(이미지, 로그 등)
  • EBS(Elastic Block Store): EC2에 붙이는 하드디스크 역할, 블록 단위 저장소

네트워킹

  • VPC(Virtual Private Cloud): 클라우드 위의 나만의 네트워크 환경을 구성
  • CloudFront: 전 세계에 콘첸츠를 캐싱하여 빠르게 전달하는 CDN 서비스
  • Route53: DNS 및 도메인 라우팅 서비스

보안

  • IAM(Identity and Access Management): 사용자/역할 권한 및 인증관리, 계정 관리

** On-premise vs 클라우드 서비스

  • On-premise 서버는 조직 내부에 설치되고 유지보수되는 서버를 뜻한다.
  • 즉, 서버가 특정 조직의 물리적인 위치에 있으며 조직의 IT 인프라를 관리하는 팀이 해당 서버를 관리하고 유지보수한다
  • 이런 서버는 일반적으로 조직의 중요한 데이터나 애플리케이션을 호스팅하고 보호하기 위해 사용된다.
  • 인터넷을 통해 엑세스할 수 있는 외부 데이터 센터에서 호스팅 되는 클라우드 서비스와 대조적이다
  • 클라우드 서비스를 사용하면 조직이 자체 IT 인프라를 보유하지 않아도 되며 클라우드 제공업체가 서버를 관리하고 유지보수한다

 

AWS 리전(Regoin), 가용 영역(Availability Zone, AZ)

AWS에 가입하고 접속해보면 전 세계에 있는 서버를 확인해볼 수 있다.

로그인 후 우측 상단을 클릭해보면 확인해볼 수 있다.

 

AWS 리전(Region)

  • 세계 각지에 있는 AWS 데이터 센터의 물리적인 위치(지역)를 의미하며 각 리전은 여러 개의 가용 영역(AZ; 데이터 센터)로 구성되어있다
  • 가용영역은 독립적인 데이터 센터로 구성되어있으며 네트워크 연결로 연결되어 있다.
    • 아시아 퍼시픽을 예를 들면 일본에는 2개의 AWS리전, 한국에는 서울에 1개의 AWS리전이 있다
    • 서울의 AWS 리전은 2016년에 만들어 졌으며 AZ는 4개가 있다고 한다.
  • 리전은 여러개의 AZ를 씀으로써 데이터 센터가 재해상황에 빠졌을 때에도 서비스를 유지할 수 있는 고가용성을 확보 할 수 있다
  • 서비스를 만들 때 리전을 선택해주어야 하며 당연히 가까이 있을 수록 빠르기 때문에 기본적으로 서울을 선택해주면 되는데, 간혹 특정 서비스들은 리전 선택이 불가능하여 자동으로 북미 리전이 선택될 수 있다고 한다
  • 물론 선택의 기준은 개발자 관점이아니라 서비스를 사용하는 주 고객을 기준으로 리전을 선택해주어야 한다
  • https://aws.amazon.com/ko/about-aws/global-infrastructure/

** 고가용성(High Availability)

  • 시스템이 예기치 않은 장애 또는 중단에도 불구하고 지속적으로 작동하는 능력을 말한다

IAM(Identity and Access Management)

IAM 소개

AWS 리소스에 대한 엑세시를 안전하게 제어할 수 있는 웹서비스이며 Global 서비스이다.

 

회원가입시 만든 계정을 Root Account라고 하는데 이 계정은 권한이 너무 많기 때문에 해킹당했을 때 위험이 너무 크기 때문에 가급적 사용하지 않아야 하며 공유도 하지 않아야 한다

 

IAM은 AWS에서 보안을 강화하고 규정 준수 요구 사항을 충족하는 데 중요한 역할을 한다

이 Root Account 대신에 IAM을 활용하면 사용자에게 필요한 권한만 부여하여 보안을 유지하고 일부 사용자에게만 특정 리소스에 대한 액세스를 부여할 수 있음

 

IAM이 제공하는 보안 기능

  1. 인증: AWS 리소스에 액세스할 때 사용자 이름과 암호를 요청하여 인증할 수 있다
  2. 권한 부여: 사용자, 그룹 또는 역할에 대한 권한을 지정할 수 있음, 권한은 AWS 리소스에서 수행할 수 있는 작업을 나타내며 IAM 정책을 사용하여 지정할 수 있다
  3. 권한 검증: 사용자가 AWS 리소스에 대한 엑세스를 요청할 때 요청이 인증된 사용자에게 허용되는지 여부를 결정할 수 있음, 권한 검증을 수행하기 위해 IAM 정책을 적용한다

 

Users, Groups.Policies

IAM에서는 사용자, 그룹, 정책을 사용하여 AWS 리소스에 대한 액세스 권한을 지정하고 관리한다.

이를 통해서 AWS 리소스에 대한 보안을 강화하고 사용자에게 필요한 권한만 부여하여 보안을 유지할 수 있게 된다.

 

사용자(Users)

  • AWS 계정에 액세스 하는 개별 인물 또는 서비스를 뜻한다. 즉 실제 로그인을 하는 사람이다
  • IAM에서는 계정에 액세스 하는 각 사용자에 대해 별도의 보안 자격 증명을 생성할 수 있기 때문에 사용자가 AWS 리소스에 대한 액세스 권한을 가지게 되며 액세스 권한는 IAM 정책을 사용하여 관리된다.
  • 사용자는 그룹에 속하지 않을 수도 있지만 여러 그룹에 속할 수도 있다.

그룹(Group)

  • 하나 이상의 사용자를 그룹화하여 공통된 권한을 부여하는데 사용된다
  • 예를 들어 특정 Amazon S3 버킷에 대한 읽기 및 쓰기 액세스를 가진 모든 사용자를 그룹화하여 권한을 관리할 수 있어 유사한 권한을 가진 여러 사용자를 효과적으로 관리할 수 있다.
  • 마찬가지로 IAM 정책을 사용하여 관리된다.

정책(Policy)

  • IAM 정책은 AWS 리소스에 대한 액세스 권한을 지정하는데 사용되며, 사용자 또는 그룹과 연결된다.
  • JSON 형식으로 작성되며 허용 또는 거부할 수 있는 작업 및 AWS 리소스에 대한 액세스 수준을 지정한다.
  • IAM 정책은 필요한 권한만 부여하고 불필요한 권한을 제거하여 보안을 강화하는 최소한의 권한 원칙을 따른다.

 

IAM 대시보드

 

IAM을 검색하여 대시보드에 접속해보면 우측 상단에 글로벌로 변경되어있는 것을 확인할 수 있으며, 해당 버튼을 눌러보면 다른 리전이 모두 잠겨지는 것을 확인할 수 있다

 

좌측 카테고리의 액세스관리를 보면 사용자 그룹(Group), 사용자(Users), 역할(Roles), 정책(Policies)가 있다.

 

사용자(Users) 만들기

 

 

사용자(Users)를 클릭하면 사용자들을 생성하고 생성된 사용자들을 관리할 수 있다.

우측 상단의 사용자 생성을 눌러서 사용자들을 생성할 수 있다.

 

사용자 이름을 입력하는 바로 아래에 AWS Management Console에 대한 액세스 권한을 제공할 것인지 묻는 체크 박스가 있는데,

이를 해제하면 API를 이용해서만 접근할 수 있고, 해당 체크박스가 체크 되어있어야 WEB에서 접근할 수 있는 계정을 만들 수 있다.

 

해당 체크박스를 체크하면 바로 아래에 사용자 유형을 지정할 수 있는데, 중앙에서 계정을 관리하는 Identity Center에서 사용자를 지정할 수 있고, IAM에서 사용자를 생성할 수 있다.

 

IAM에서 사용자를 생성하기를 클릭하면 로그인에 필요한 암호를 입력해야 한다.

암호를 자동 생성할 수 있고, 직접 원하는 암호를 설정할 수도 있으며 로그인한 사용자가 새로운 암호를 생성하게 할 수도 있다.

 

다음 페이지로 넘어가면 권한을 설정할 수 있는데, 그룹이 없다면 그룹을 생성하고 그룹에 연결할 정책을 선택할 수 있다.

처음 생성한 계정이기 때문에 아무런 그룹이 없는 것을 확인할 수 있다.

 

 

그룹 생성 버튼을 클릭하면 이렇게 그룹의 이름을 입력하고 권한을 설정할 수 있는 창이 하나 뜬다.

 

전체 관리자 그룹이면 admin, 개발자 그룹이면 develop, 운영이면 oper 등등 다양하게 그룹 이름을 작성하고 권한 정책을 설정해주면 되는데, Custom으로 정책을 설정하고 싶다면 정책 생성 버튼을 클릭하면 원하는 서비스마다 직접 세부적으로 권한을 입력해줄 수 있다.

 

웬만한 정책들은 미리 만들어져 있기 때문에 대부분은 미리 만들어져 있는 정책을 사용해도 충분하다.

서비스 이름으로 검색하면 서비스 이름 별로 만들어진 정책들을 확인할 수 있다.

 

 

그룹을 생성하고, 생성한 그룹을 선택한 후 다음을 클릭하고 사용자를 생성하면 사용자가 정상적으로 생성이 된다.

이때 사용자에게 이메일을 보내 생성된 계정에 접속하도록 할 수 있고, csv 파일로 패스워드를 저장할 수도 있다.

 

초기 사용자 화면으로 돌아가면 목록에 생성한 사용자를 확인할 수 있다.

 

사용자를 클릭하여 상세 정보도 확인할 수 있는데 사용자에게 지정된 권한과 그룹을 확인할 수 있다.

 

다시 IAM 대시 보드에 돌아와서 우측에 보면 AWS 계정이라고 되어있고 계정 ID가 적혀있는데 Root ID의 계정 번호를 뜻한다.

즉, 지금 만든 IAM 사용자는 루트 계정 하위로 접근하는 사용자 계정이라고 보면 된다.

 

임의의 숫자 번호로 Root 계정의 ID 번호가 생성되기 때문에 알아보기 쉬운 별칭을 생성할 수 있으므로 다양한 사용자가 접속한다면 별칭을 생성하는 것을 권장한다.

 

 

생성한 사용자로 접속하기 위해 로그인 창을 보면 접속해야할 루트 계정의 ID을 입력해야 하는데 이때 생성한 별칭을 활용하여 더 편리하게 IAM 계정으로 접속할 수 있다.

 

IAM 정책 구조

IAM 정책 생성 시 커스텀 정책을 설정하는 페이지에서 정책을 아래의 JSON 형태로도 관리할 수 있는데 key값은 아래와 같다.

{
  "Version": "policy-version",
  "Statement": [
    {
      "Effect": "allow-or-deny",
      "Action": ["action-name"],
      "Resource": ["resource-arn"],
      "Condition": {
        "condition-operator": {
          "condition-key": "condition-value"
        }
      }
    }
  ]
}

 

Version

  • 정책의 버전
  • 현재는 2012-10-17에서 고정되었다.

Statement

  • 정책의 규칙
  • 배열의 형태로 여러개의 규칙을 작성할 수 있다.

Effect

  • 규칙의 적용 여부를 나타냄
  • allow 또는 deny 중 하나를 선택해서 사용한다.

Action

  • 규칙이 적용되는 작업의 종류를 나타낸다
  • s3:ListBucket과 같은 형식으로 작성한다.

Resource

  • 규칙이 적용되는 리소스의 ARN(amazon Resource Name)을 나타낸다
  • arn:aws:::my-bucket/* 과 같은 형식으로 작성한다.

Condition

  • 규칙이 적용되는 조건을 나타낸다
  • 필수는 아니고 필요한 경우 추가할 수 있으며 다양한 조건 연산자를 사용할 수 있다
  • 예를 들어 IpAddress 조건 연산자를 사용하면 특정 IP 주소에서만 작업을 수행할 수 있도록 제한할 수 있다.

 

MFA(Multi-factor Authentication)

다중 요소 인증 방식을 의미하며 일반적인 사용자 ID와 비밀번호 입력 외에 추가적인 인증 요소를 요구하여 보안을 강화하는 방법이다.

 

즉, MFA를 사용하면 일반적인 로그인 절차인 사용자 ID와 비밀번호를 입력하여 인증을 완료한 후 사용자의 스마트폰이나 하드웨어 보안 토큰 등을 사용하여 추가적인 인증 요소를 통해 인증 절차를 거쳐야 한다.

 

사용자의 로그인 정보가 유출 되었더라도 보안을 유지할 수 있도록 루트 유저에게는 반드시 적용해주어야 하며, 추가로 만드는 I AM 유저에게도 반드시 적용해 주는 것을 권장한다

 

AWS에서는 하드웨어에 물리적으로 연결하여 사용하는 Secrite Key나 Virtual Authenticator, OTP 카드 등을 통해 MFA를 사용할 수 있는데, 일반적으로 Google Authentication 어플을 통해 Virtual Authenticator방식으로 MFA 등록을 가장 많이 사용한다.

 

 

MFA를 등록을 하면 MFA device를 선택할 수 있으며 Virtual Authenticator 방식을 사용하려면 인증 관리자 앱을 선택해서 진행하면 된다.

 

호환되는 애플리케이션 목록은 아래 사이트에서 확인할 수 있으며, 인증과정에서 해당 사이트를 접속하는 링크도 제공되니 확인 후 진행하는 것을 권장한다.

https://aws.amazon.com/ko/iam/features/mfa/?audit=2019q1

 

앱스토에서는 Google Authencation 어플의 이름이 Google OTP로 이름이 변경되었다(2025-05-06 기준)

 

이후 Authentication 어플에서 해당 QR 코드를 스캔을 하고 6자리 인증 번호를 2번 입력해주고 MFA를 추가해주면 정상적으로 등록이 된다.

MFA가 정상적으로 적용이 되면 이후 로그인 할 때에는 추가적인 MFA 인증이 필요한 것을 확인할 수 있다.

 

** 참고

  • 핸드폰을 변경할 때에는 해당 설정을 해제 후 새로운 휴대폰으로 MFA 정보를 변경해주거나, 설정 해제 후 새로운 휴대폰에 새로 등록해주지 않으면 매우 번거로운 과정을 거치게 될 수 있다.

 

Billing And Cost Management(결제 및 비용 관리)

우측 상단의 닉네임을 클릭하면 결제 및 비용 관리 항목이 있는데 여기에서 AWS 계정과 사용량과 비용을 모니터링 하고 요금 청구 정보를 제공하는 서비스로 사용량과 비용을 모니터링하고 분석하여 비용을 최적화 할 수 있다.

일차적으로는 Root 계정만 접근이 가능하며 IAM User도 권한을 부여하면 접근할 수 있다

 

사용량 모니터링, 비용 분석, 청구 정보 확인, 예산 설정 등을 할 수 있다.

예산 설정을 통해 설정한 예산이 임계에 도달하거나 설정한 임계값의 특정 %에 도달했을 때 알람이 오도록 설정할 수 있다.

 

 

728x90