AWS를 사용하기 위한 도구

·2025년 10월 17일

Infra

목록 보기
3/5

AWS의 사용법과 계정

AWS 접근 도구

  • AWS Management Console(관리 콘솔) : 서비스 설정 화면으로 웹 브라우저에서 사용할 수 있는 GUI이다. 서비스 설정이나 상태를 시각적으로 확인할 수 있다.
  • AWS Command Line Interface(CLI) : 명령어로 조작 가능한 명령줄 도구로, 관리 콘솔에서 할 수 없는 것도 가능하다. 스크립트를 통한 반복 작업의 자동화가 용이하다.
  • Software Development Kits(SDKs) : Python, Java, JavaScript 등의 프로그래밍 언어를 사용하여 AWS 서비스를 프로그래밍적으로 제어할 수 있는 라이브러리와 도구 모음이다.

AWS CLI 접근

접근 권한을 가지고 있어야 이런 접근이 가능하다. Access ID와 secret Key 발급을 받아 접근해야 한다.
1. i-12345678이라는 이름의 EC2 인스턴스를 시작한다
a. $ aws ec2 start-instances --instance-ids i-12345678
2. S3 패키지의 목록 표시
b. $ aws s3 ls

AWS의 사용법과 접근

  • Root 사용자 : AWS 계정을 처음 생성할 때 사용한 이메일 주소와 연결된 계정이다. 이 계정의 모든 서비스와 리소스에 대한 전체 권한을 갖는다.
    • IAM 사용자 생성이나 결제 정보를 관리할 때를 제외한 일상적인 작업에는 루트 사용자를 사용하지 않아야 한다.
  • AWS IAM (Identity and Access Management) : Root 사용자 문제를 해결하기 위한 서비스가 IAM이다.

AWS IAM과 접근 권한

AWS IAM (Identity and Access Management)

AWS의 ID와 접속 관리를 담당하는 인증 기능이다. AWS 계정과 비슷하지만 다르다.

  • AWS 계정은 계약을 관리하는 계정
  • IAM은 각 서비스에 대한 접속을 관리하는 기능

IAM은 “누가, 무엇을, 어떤 리소스에, 어떤 조건 하에서, 할 수 있는지”를 정의하여 작동한다. IAM 자체는 추가 요금이 없고 무료로 사용 가능하다. IAM 사용자가 사용한 서비스에는 비용이 드나, IAM 자체는 추가 요금이 없다.

IAM의 주체

IAM을 사용자나 서비스에 부여하여 접속을 관리한다.

  • IAM 사용자 (User) : AWS 계정 내에서 생성된 개별적인 ID이다. 각 사용자는 관리 콘솔 접속을 위한 사용자 이름과 암호, 또는 CLI/SDK 접근을 위한 Access Key와 Secret Key 같은 고유한 자격 증명을 소유한다. 사용자는 부여받은 권한의 범위 내에서만 AWS 리소스에 대한 작업을 수행할 수 있다.
  • IAM 그룹 (Group) : 여러 IAM 사용자를 담는 컨테이너이다. 부서나 직무별로 그룹을 만들고 그룹에 권한을 부여하면, 해당 그룹에 속한 모든 사용자가 동일한 권한을 상속받게 되어 관리가 편해진다.
  • IAM 역할 (Role) : 특정 사용자에게 영구적으로 권한을 부여하는 대신, 필요할 때 임시적인 권한을 부여하기 위해 사용되는 매커니즘이다. 역할은 자체적인 자격 증명을 가지지는 않고, 신뢰하는 사용자나 EC2 인스턴스와 같은 서비스가 해당 역할을 Assume하여 임시 보안 자격 증명을 받아 사용한다.
    • 역할은 권한 정책(무엇을 할 수 있는지)과 신뢰 정책(누가 이 역할을 맡을 수 있는지) 두 가지 정책으로 구성된다.

IAM 정책

어떤 서비스 기능에 어떤 조작을 할 수 있는지 정의하는 JSON 형식의 문서이다. 이 정책을 사용자, 그룹, 또는 역할에 연결하여 권한을 부여한다.

  • IAM 사용자, 그룹 및 IAM 역할, AWS 리소스에 정책을 연결한다.
  • JSON 형식의 정책 문서
    • Effect : 허용, 거부(Allow, Deny)
    • Action : 허용하거나 거부할 서비스의 특정 작업
    • Resource : 해당 작업이 적용될 대상을 ARN(Amazon Resource Name)이라는 고유 식별자로 지정
{
 "Version": "2012-10-17",
 "Statement": {
	 "Effect": "Allow",
	 "Action": "s3:ListBucket",
	 "Resource":
		  "**arn:aws:**s3:::example_bucket" 
		  # arn:aws:[서비스이름]:[account_이름]
  }
}

정책의 종류

관리 방식에 따라 세 가지 유형으로 나뉜다.

  • AWS 관리형 정책 (AWS Managed Policies)
    AWS가 사전에 생성하고 관리하는 정책 템플릿이다. 'AmazonS3FullAccess'나 'AdministratorAccess'와 같이 일반적인 사용 사례에 맞춰 미리 정의되어 있다.
  • 고객 관리형 정책 (Customer Managed Policies)
    사용자가 직접 생성하고 관리하는 정책이다. AWS 관리형 정책보다 더 세밀한 권한 설정이 필요할 때 사용하며, 하나의 정책을 만들어 사용자, 그룹, 역할에 반복적으로 연결할 수 있어서 재사용할 수 있다.
  • 인라인 정책 (Inline Policies)
    단 하나의 사용자, 그룹 또는 역할에만 직접 포함시키는 정책이다. 정책과 주체가 1:1로 연결되기 때문에 해당 사용자나 그룹을 삭제하면 인라인 정책도 같이 삭제된다. 1회성 정책이다.

정책 평가 우선순위


1. 명시적 Deny : 정책 중 하나라도 Deny 가 있으면, Allow가 있어도 무조건 거부된다.
2. 명시적 Allow : Deny가 없을 때, 해당 작업을 허용하는 Allow 정책이 있어야만 작업이 가능하다.
3. 암시적 deny : Allow와 Deny 정책 정의가 안되어 있으면, 그 작업을 수행할 수 없다. (최소 권한 원칙)

AWS Resource 접근 제어 방식

AWS 리소스에 대한 접근 제어는 크게 두 가지 관점에서 이뤄진다.

자격 증명 기반 정책 (Identity-based Policies)

사용자, 그룹, 역할과 같은 자격 증명에 정책을 연결하는 일반적인 방식이다. 이 정책은 "이 사용자가 어떤 작업을 할 수 있는가?"라는 관점에서 권한을 정의한다. 거의 모든 AWS 서비스에 적용된다.

리소스 기반 정책 (Resource-based Policies)

S3 버킷, SQS 큐, KMS 키 등 특정 리소스 자체에 직접 정책을 연결하는 방식이다. 이 정책은 "이 리소스에 누가 접근할 수 있는가"라는 관점에서 권한을 정의한다. 리소스 기반 정책에서는 권한을 부여받는 대상을 'Principal'이라는 키워드를 사용하여 명시적으로 지정해야 한다.

권한 경계 (Permission Boundary)

권한 경계는 IAM 사용자나 역할이 가질 수 있는 권한의 최대 범위를 제한하기 위한 보안 기능이다. 최종적으로 사용자가 행사할 수 있는 권한은 자격 증명 기반 정책과 권한 경계의 교집합이 된다.
예를 들어, 특정 사용자에게 관리자 권한(AdministratorAccess) 정책을 부여하더라도, 그 사용자에게 S3 관련 작업만 허용하는 권한 경계를 설정해두면, 최종적으로 이 사용자는 S3 작업 권한만 가지게 된다.
사용자가 스스로 권한을 상승시키거나 의도치 않은 강력한 권한 행사하는 것을 방지한다.

실습

  • EC2, S3 서비스 권한이 없는 IAM 계정에서 EC2 인스턴스에 접근하면 아래와 같은 문구를 볼 수 있다.

  • 권한을 부여하기 위해 IAM의 사용자에 들어간다.
    • 권한을 부여할 사용자를 선택하여 권한 추가를 누르면 아래와 같은 페이지를 볼 수 있다.
  • 권한 정책 탭에서 S3와 EC2 서비스에 관한 모든 권한을 허용하도록 하는 정책인 'AmazonS3FullAccess'와 'AmazonEC2FullAccess'를 선택해주었다.
  • 다시 EC2와 S3 권한이 없었던 IAM 사용자 계정에 접속하게 되면 아래와 같이 오류 문구가 뜨지 않는 것을 확인할 수 있다.

모니터링과 감사

Amazon CloudWatch

AWS 리소스와 애플리케이션에 대한 성능 모니터링 서비스이다.

  • 지표(Metrics) : EC2의 CPU 사용률, 네트워크 트래픽 등 다양한 성능 지표를 수집하고 시각화한다.
  • 경보(Alarms) : 특정 지표가 설정된 임계치를 넘으면 자동으로 알림을 보내거나 특정 조치를 취하게 할 수 있다
    • 예를 들어 CPU 사용률이 5분간 80% 이상 지속될 경우 이메일을 보내거나, EC2 인스턴스를 재시작하게끔 설정할 수 있다.
  • 로그(Logs) : 애플리케이션 및 시스템 로그를 중앙에서 수집하고 분석한다.

Amazon CloudTrail

AWS 계정 내에서 이루어지는 모든 활동(API 호출)을 기록하고 감사하는 서비스이다.

  • 역할 : "누가, 언제, 어디서, 무엇을 했는가"에 대한 로그를 남긴다.
    • 예를 들어, "IAM 사용자 A가 2025년 10월 17일 20:00에 서울 리전에서 EC2 인스턴스를 중지시켰다" 와 같은 활동이 기록된다.
  • 보안 분석, 리소스 변경 추적, 규정 준수 감사에 사용된다.

AWS Billing and Cost Management

비용 관리 도구

AWS 사용 요금을 효과적으로 추적하고 관리하기 위한 도구 모음이다.

  • 청구서 (Bills) : 월별 사용 요금을 상세하게 확인할 수 있는 페이지이다.
  • AWS Cost Explorer : 시간 경과에 따른 비용과 사용량을 시각적인 그래포 나타내어 분석하고 필터링하여 비용 발생의 원인을 파악하는 데 유용하다.
  • AWS Budgets : 월별, 분기별, 연간 예산을 설정하고 실제 비용이나 예상 비용이 예산의 특정 비율을 초과하면 알림을 받도록 설정하여 예기치 않은 비용 발생을 방지할 수 있다.



REFERENCE

  • [그림으로 이해하는 AWS 구조와 기술]
  • AWS 공식 문서
profile
Whatever I want | Interested in DFIR, Security, Infra, Cloud

0개의 댓글