Cloud 기본 지식

Cloud 기본 지식

in

Cloud 란?

클라우드 컴퓨팅이란 인터넷 기반의 컴퓨팅을 말합니다. 인터넷 상의 가상화된 서버에 프로그램을 두고 필요할때마다 컴퓨터나 스마트폰 등에 불러와 사용하는 서비스입니다.

클라우드(Cloud)라는 단어가 말해주듯, 인터넷 통신망 어딘가에서 구름에 싸여 보이지 않는 컴퓨팅 자원(CPU, 메모리, 디스크 등)을 원하는 대로 가져다 쓸 수 있습니다. 구름에 싸여 있다는 것은 그 내부를 보려고 하거나 알지 않아도 얼마든지 내가 원하는 것을 꺼내어 사용할 수 있다는 것이며, 인터넷이 연결된 어느 곳에서든 이것을 보장 받을 수 있다는 뜻입니다.

AWS(Amazon Web Service), Microsoft Azure, GCP(Google Cloud Platform) 등이 있습니다.

클라우드 플랫폼 별 용어

스크린샷 2022-06-01 오후 4 52 38

클라우드 컴퓨팅 서비스 이용방식

  • 온프레미스 = 직접 서버를 설치하는 것 즉, 하드웨어 부분과 소프트웨어 부분을 둘다 직접 관리
  • 클라우드 (IaaS / Paas) = 돈을 내면 최신식 서버를 사용 가능, 소프트웨어적인 부분은 사용자가 직접 관리
  • 서버리스 (BaaS/FaaS) = 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있도록 제공, 서버리스에 업로드 한 함수가 24시간 돌아가는게 아닌 필요 시 요청하여 작업 수행 (AWS 람다)

AWS 주요 서비스

  • Amazon S3(Simple Storage Service) = 데이터 스토리지 서비스로 Bucket과 Object 라는 단위가 존재하는데 객체(Object)는 데이터와 메타데이터를 구성하고 있는 저장 단위이며 버킷(Bucket)은 이러한 객체를 저장하고 관리하는 역활
  • Amazon RDS(Realational Database Service) = 관계형 데이터베이스 인 AuroraDB, MSSQL, Oracle, MySQL 등으로 RDBMS 서비스를 사용자가 직접 관리하지 않고 이용할 수 있도록 제공
  • Amazon DynamoDB = NoSQL용 서비스로 대량의 데이터를 저장, 추가 분석 서비스와 연계 가능하도록 서비스 제공

서버리스 서비스

  • AWS Lambda = 코드를 소유하지 않아도 실행할 수 있도록 런타임 환경을 제공하는 서비스, 코드를 업로드하고 트리거하거나 직접 호출하여 사용 가능
  • Amazon API Gateway = REST 및 API를 생성,게시,유지 모니터링. 프론트 웹에서 백엔드로 데이터 전송 시 람다와 함께 사용
  • Amazon Cognito = 웹 및 앱에 대한 인증, 권한 부여 사용자 관리, OAuth 및 타사 인증을 통해 로그인 가능

Cloud 사용자 관리

AWS에는 Root계정과 IAM(개인) 계정 2개가 존재합니다.

  • root 사용자

= AWS 계정을 처음 생성할 때 계정의 모든 AWS 리소스에 액세스 권한이 있는 ID
= 이메일 주소와 암호를 이용하여 인증
= 일상적인 작업 및 관리 작업 시 루트 사용자의 사용을 권장하지 않고 계정 및 과금 관리 작업 수행시에만 root 사용자 사용 권장

  • IAM (Identity and Access Management) 사용자

= AWS 서비스와 리소스에 대한 액세스 통제
= AWS 사용자 및 그룹을 만들고 관리하며 리소스에 대한 액세스 허용 및 거부 가능
= AWS 관리를 위한 그룹, 사용자 및 역활(Role)생성 가능

IAM 정책

IAM 정책은 태스크를 수행하기 위해 사용하는 방법과 상관없이 작업에 대한 권한을 정의합니다. 예를 들어, 정책 이 GetUser 작업을 허용한다면 이 정책 이 있는 사용자는 AWS Management Console, AWS CLI, 또는 AWS API에서 사용자 정보를 얻을 수 있습니다.

  • Version = 정책 언어 버전
  • Statement = 정책 요소를 담는 컨테이너

권한분석(Statement)을 통해 자원(Resource)이 허가/거부 된 작업(Action) 권한 부여

  • Action = “ OOO AWS 서비스”를 “어떤 작업”을 허가(거부)할지 설정

ex) “ec2:Describe*” = EC2와 관련된 모든 권한을 나타냄

  • Effect = 허가를 부여할 지(Allow), 거부를 부여할지(Deny) 정책 결정
  • Resource = “OO AWS 리소스”에 작업을 허가(거부)할지 설정
{
"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": "*"
	} 
]
}

IAM 인증 정보(Credential)

= 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
  • 인증정보 유출 시 위협

인스턴스 조작(시작,종료,원격접속), 타 사용자 생성, 권한부여, 로그 삭제 등의 공격이 가능


📃 References

[WEB] 🌐 서버리스(ServerLess) 개념 💯 정리 (BaaS / FaaS)