회사가 직접 자체적인 서버를 운영하는 방식
AWS, GCP, Azure 등의 업체에서 서버를 빌려 사용하는 방식
인프라(서버, 네트워크, 스토리지)만 빌린다
강의에서는 주로 이 서비스를 다룬다

플랫폼(런타임, 미들웨어 포함)까지 빌린다
IaaS는 컴퓨터만 빌리고, 그 안에 필요한 건 직접 설치해주어야 함
PaaS는 필요한 플랫폼까지 구축이 되어있는 걸 빌림
(대신 요금이 더 비싼 편)
소프트웨어(완성된 서비스)를 빌린다
가장 대중적인 클라우드 서비스
ap-northeaset-2
고객 책임: 클라우드 안에서 내가 만든 것들
AWS 책임: 클라우드 자체 인프라
사용자가 설정한 것은 사용자의 책임이다!
- IaaS : 인프라만 빌림 -> 내가 거의 모두 관리
- PaaS : 플랫폼까지 빌림 -> IaaS보다 AWS의 관리 범위 많음
- SaaS : 소프트웨어까지도 빌림 -> 거의 다 AWS가 관리
클라우드 예산 안전장치 기능
누가 어떤 AWS 리소스에 무엇을 할 수 있는지를 정하고 통제하는 접근 제어 시스템
- Who: 이 요청이 인증되었는지
- What: 어떤 작업을 하려 하는지
- Can: 그 작업을 할 권한이 있는지
사람이 AWS에 접근할 때 사용하는 계정
사람이 AWS를 직접 조작하는 모든 경우
영구적인 자격증명(Credential)을 가짐(삭제 전까지 만료가 없음)
예시
kim-dev: 개발자 김씨의 계정 (개발 관련 권한)lee-admin: 관리자 이씨의 계정 (관리자 권한)park-front: 프론트 박씨의 계정 (읽기 권한만)
- 보통 백엔드 혹인 인프라 담당(큰 회사의 경우)이 프론트 배포도 맡는다.
Access Key 문제
- User 권한은 한 번 생성하면 영구적
- Access Key(비밀번호) 유출 시 큰 사고
- 관리 어려움
-> 서버/자동화에서는 User 대신 Role을 사용한다!
서버/서비스에게 권한을 부여할 때 사용
서버/자동화 시스템이 AWS를 사용하는 모든 경우
임시로 빌려쓰는 권한 세트
| User | Role |
|---|---|
| 사람용 | 서버/서비스용 |
| 영구 자격증명 보유(비밀번호, Access Key) | 자격증명 없음(필요할 때 임시 발급) |
| 직접 로그인 가능 | 직접 로그인 불가(권한을 빌려서 사용) |
| 만료 없음 | 자동 만료 |
어떤 작업을 허용/거부할지 정의
Policy 예시
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow", ← 허용? 거부?
"Action": "s3:GetObject", ← 어떤 동작을?
"Resource": "arn:aws:s3:::my-bucket/*" ← 어떤 대상에?
}
]
}
"Effect": "Allow": Allow 이므로 허용 (거부일 경우 Deny)"Action": "s3:GetObject": S3에서 Object를 가져오기"Resource": "arn:aws:s3:::my-bucket/*": S3의 my-bucket/* 대상ARN(Amazon Resource Name
- AWS 리소스의 고유 주소
arn:aws:{서비스}:...형식
AWS에서 자주 쓰이는 Policy는 미리 만들어져 제공된다.
| Policy 이름 | 설명 | 위험도 |
|---|---|---|
| AdministratorAccess | 모든 권한 | 🔴 매우 높음 |
| AmazonS3FullAccess | S3 전체 권한 | 🟠 중간 |
| AmazonS3ReadOnlyAccess | S3 읽기만 | 🟢 낮음 |
| AmazonEC2FullAccess | EC2 전체 권한 | 🟠 중간 |
루트 사용자는 모든 권한을 가지고 있음