AWS Cheat Sheet
AWS Cloud
클라우드 컴퓨팅이란 인터넷 기반의 컴퓨팅을 말합니다. 인터넷 상의 가상화된 서버에 프로그램을 두고 필요할때마다 컴퓨터나 스마트폰 등에 불러와 사용하는 서비스입니다.
클라우드(Cloud)라는 단어가 말해주듯, 인터넷 통신망 어딘가에서 구름에 싸여 보이지 않는 컴퓨팅 자원(CPU, 메모리, 디스크 등)을 원하는 대로 가져다 쓸 수 있습니다. 구름에 싸여 있다는 것은 그 내부를 보려고 하거나 알지 않아도 얼마든지 내가 원하는 것을 꺼내어 사용할 수 있다는 것이며, 인터넷이 연결된 어느 곳에서든 이것을 보장 받을 수 있다는 뜻입니다.
AWS(Amazon Web Service), Microsoft Azure, GCP(Google Cloud Platform) 등이 있습니다.
AWS에는 Root계정과 IAM(개인) 계정 2개가 존재합니다.
= AWS 계정을 처음 생성할 때 계정의 모든 AWS 리소스에 액세스 권한이 있는 ID
= 이메일 주소와 암호를 이용하여 인증
= 일상적인 작업 및 관리 작업 시 루트 사용자의 사용을 권장하지 않고 계정 및 과금 관리 작업 수행시에만 root 사용자 사용 권장
= AWS 서비스와 리소스에 대한 액세스 통제
= AWS 사용자 및 그룹을 만들고 관리하며 리소스에 대한 액세스 허용 및 거부 가능
= AWS 관리를 위한 그룹, 사용자 및 역활(Role)생성 가능
IAM 정책은 태스크를 수행하기 위해 사용하는 방법과 상관없이 작업에 대한 권한을 정의합니다. 예를 들어, 정책 이 GetUser 작업을 허용한다면 이 정책 이 있는 사용자는 AWS Management Console, AWS CLI, 또는 AWS API에서 사용자 정보를 얻을 수 있습니다.
권한분석(Statement)을 통해 자원(Resource)이 허가/거부 된 작업(Action) 권한 부여
ex) “ec2:Describe*” = EC2와 관련된 모든 권한을 나타냄
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ec2:Describe*",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "elasticloadbalancing:Describe*",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"cloudwatch:ListMetrics",
"cloudwatch:GetMetricStatistics",
"cloudwatch:Describe*"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "autoscaling:Describe*",
"Resource": "*"
}
]
}
= API Key, SSH Pubkey, AWS CLI & SDK 등 서비스 키를 포함
= 개발 실수, 환경 설정 미흡 등으로 공개된 저장소에 저장되지 않도록 유의 (스크린샷, 코드 형상관리 파일(.git, .env) 관리 미흡, 서버측 코드, HTML 코드 주석 노출 등 다양하게 유출 가능)
= IAM 사용자는 고유한 액세스 키를 자신의 권한에 한하여 교체 가능 (단, root 사용자는 모든 IAM 사용자의 키 관리에 관여 가능)
= 환경변수 ~/.aws/credentials 에 저장하여 프로파일 등록 후 사용
[default]
aws_access_key=id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXutnFEMI/K7MDENG/bPxRfiCYEXAPMP
인스턴스 조작(시작,종료,원격접속), 타 사용자 생성, 권한부여, 로그 삭제 등의 공격이 가능