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 공식 문서