[Cloud] 6일차 수업 정리

soyeon·2022년 10월 20일
post-thumbnail

Amazon DynamoDB

: 완전 관리형 비관계형 데이터베이스 서비스(NoSQL)

  • 사용 예
    : 대용량의 단순 데이터를 보유한 애플리케이션
    (Elasticsearch, kafka, EFK) => stream data를 받아서 분석
    : 신속하고 간편하게 확장해야 하는 애플리케이션
    : 복잡한 조인이 필요하지 않은 것
    보통은 하나의 테이블을 사용하고 주로 SQL을 이용한 join을 하지 않고, 프로그램적으로 join을 해서 사용한다. => single table design
    : 임시데이터(온라인 카트), 순위표 및 점수 매기기(전세계 사람들이 게임 같이 할 떄)

DynamoDB Global Table

: 선택된 region 간에 DynamoDB 테이블을 자동으로 복제한다.

대규모로 확장되는 전역 애플리케이션에 대해 신속한 로컬 읽기 및 쓰기 성능을 지원한다.

DynamoDB 일관성 모델

  • 최종적 일관된 읽기(기본값)
    : 바로바로 일관성을 유지시킨다.
  • 강력한 일관된 읽기
    : 약간의 딜레이를 가지고 한 번에 결과를 반환한다.
  • ACID 트랜잭션
    : 원자성, 일관성, 격리성, 지속성

DynamoDB Accelerator(DAX)

: 완전 관리형 In-Memory Read Performance를 향상시켜주는 인메모리 캐시 서비스

초당 요청 수가 몇 백만 개인 경우에도 몇 밀리초에서 몇 마이크로초까지 최대 10배의 성능을 제공한다.

DynamoDB stream

: Lambda의 trigger를 이용하면 DynamoDB의 stream event를 쉽게 전달 받을 수 있어 원하는 후속처리를 쉽게 할 수 있다.

Amazon Kinesis

: 실시간으로 데이터 스트림을 수집, 처리 및 분석 수행

Amazon Kinesis data firehose

: 스트리밍 데이터를 AWS로 로드하여 "처리 및 전송"을 수행하는 방법을 제공한다.

스트리밍 데이터를 캡처하고 변환하여 S3, Redshift, Amazon ES, ... 등으로 로드한다.

Amazon Kinesis data streams

: 수집된 데이터를 일정 기간 동안 내구성 있게 저장하기 위한 서비스

Amazon Kinesis video streams

: 빠르게 수집되고 있는 비디오 형식의 데이터를 캡처하여 AWS로 프레임 단위로 스트리밍한다.

  • 사례
    (경보 시스템)

Amazon Kinesis data analytics

: 완전 관리형 서비스로서 표준 ANSI:1999 SQL을 사용하여 방대한 규모의 스트리밍 데이터를 실시간으로 처리한다.

표준 SQL을 사용하여 스트리밍 데이터를 변환하고 통찰력을 확보한다.

Amazon Redshift

: 빠르고 강력한 Petabyte 규모의 완전 관리형 Data warehouse 서비스

저장 비용과 쿼리 비용이 발생한다.

Amazon IAM(Identity and Access Management)

IAM

: AWS 리소스에 대한 액세스를 중앙에서 안전하게 제어할 수 있는 계정 단위 AWS 점근 제어 서비스

사용자, 그룹, 역할, 정책을 생성할 수 있으며, 만들어진 IAM Entity에 정책을 적용하여 AWS 리소스에 대한 접근 제어를 한다. -> 최소 권한의 원칙 준수
여러 사용자가 그룹에 소속된다. 그룹에 권한을 부여하면 그 그룹에 속한 사용자에게 권한이 부여되게 된다.

  • IAM 사용자 생성시 작업 방식 선택
    : AWS 관리 콘솔에 로그인하여 대화형 작업 수행
    : AWS CLI를 사용한 콘솔 작업 수행
    : SDK API를 사용해 AWS 서비스로 프로그래밍 방식의 요청 제공

IAM 계정 보안

역할(role) 사용의 이점
: 교차 계정 액세스 권한 부여가 가능하고, 임시 권한을 부여하여 보안을 강화할 수 있다.

  • AWS root 계정
    : 가입시 생성되는 계정
    모든 것을 다 수행할 수 있는 super user이다. 정보보안 감사 정책에 의거 root 계정 사용 제한을 권고한다. IAM 관리자 계정 생성 후 root 계정은 잠금 처리를 권장한다.

  • IAM 계정
    : 일반 사용자 계정
    업무 별로 분리해서 사용하고 그룹단위로 묶는다.
    IAM 계정 생성 후 AdministratorAccess 권한(정책)을 부여하여 관리자로 임명하고 운영에 사용한다.

권고 방안
: root 및 권한을 많이 부여 받은 IAM 사용자는 MFA 방식으로 제한한다.
-> MFA를 사용하지 않으면 리소스에 접근을 차단하는 정책을 사용한다.
: Administrator 권한을 부여 받은 IAM이 일반 사용자 계정을 만들고 권한을 할당한다.
: 일반 사용자 IAM은 최소 권한(정책, policy)의 원칙에 의거, 필요한 권한만 부여 후 업무에 사용한다.

IAM entity

  • User(사용자)
    : 접근을 수행하는 account(계정)

  • Group(그룹)
    : 공통 역할을 하는 계정들의 집합

  • Role(역할)
    : 생성된 role은 사용자나 그룹에 할당하는 것이 아니라 EC2와 같은 AWS 서비스 리소스에 할당한다.

  • Policy(정책)
    : 하나 또는 다수의 permission을 정의한 문서로 JSON 파일로 구성된다.
    - Identity-based policies(자격증명 기반 정책)
    - Resource-based policies(리소스 기반 정책)

  • Permission(권한)
    : 어떤 리소스와 어떤 작업을 허용/거부할지를 결정하여 정책에 포함 시킨다.

IAM 계정 설정

비밀번호 정책

: IAM 사용자가 설정할 수 있는 암호의 복잡성 유형을 정의한다.
-> 사용자의 계정 관리 규정 준수

STS(AWS Security Token Service)

: AWS 리소스에 대한 액세스를 제어할 수 있는 임시 보안 자격 증명을 생성하여 신뢰받는 사용자에게 제공한다.

단기적으로 몇 분에서 몇 시간까지 지속되도록 구성할 수 있다.

STS

자격 증명 기반 정책

: IAM 사용자, 역할 또는 그룹과 같은 보안 주체에 연결할 수 있는 권한 정책

  • AWS 관리형 정책
    : AWS에서 생성하고 관리하는 관리형 정책

  • 고객 관리형 정책
    : 고객이 AWS 계정에서 생성하고 관리하는 관리형 정책
    AWS 관리형 정책이 아닌 정책을 보다 정밀하게 제어한다.
    내 입맛대로 조합해서 부여한다.

  • 인라인 정책(1:1)
    : 사용자가 생성하고 관리하며, 단일 사용자, 그룹 또는 역할에 직접 포함되는 정책

리소스 기반 정책

: AWS 리소스에만 적용되는 인라인 정책(S3 bucket, Amazon SQS, ...)

누가 리소스에 액세스할 수 있고 어떤 작업을 수행할 수 있는지 지정한다.
AWS는 모든 정책 유형에서 적어도 하나의 허용이 있는지 확인한다.

=> Kevin이 S3 버킷에 사진을 업로드 할 수 있을까? -> PutObject

IAM 정책 적용

: 어떤 리소스와 어떤 작업을 허용/거부 할지를 결정한다. 거부가 우선된다.

IAM 정책

Effect : 명시된 정책에 대한 Allow, Deny 사용
Principal, NotPrincipal : 대상(주체) 지정, 해당 리소스의 요청을 전달할 수 있는 보안주체가 기술된다.
Action, NotAction : 서비스의 API Calls 지정, 허용/차단 접근 타입
Resource, NotResource: Action이 영향을 미치는 리소스 대상(요청의 목적지)
Condition: 조건 지정. 조건을 충족되는 경우에만 해당 정책을 적용한다.

DynamoDB에 권한 부여 해보기

{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"dynamodb:GetItem",
				"dynamodb:PutItem"
			],
			"Resource": [
				"arn:aws:dynamodb:ap-northeast-2:26123454234:table/item_table"
			],
			"Condition": {
				"IpAddress": {
					"aws:SourceIp": "10.10.1.10"
				},
			}
		}
	]
}

IAM 권한 경계(permissions boundary)

: 자격 증명 기반 정책을 통해 IAM 엔티티에 부여할 수 있는 최대 권한을 설정하는 고급 기능

이미 명시적으로 허용된 넓은 범위의 권한을 특정 사용자 또는 그룹을 대상으로 허용범위를 제약하는 방법으로 매우 효과적이다.

IAM 실습

A 회사는 AWS 사용양이 증가하고 있습니다. 많은 Amazon EC2 instance와 상당한 Amazon S3 storage를 사용하고 있습니다. 아래 표와 같이 직무에 따라 새 직원에게 접근 권한을 부여하려고 합니다. 다음을 구성해 보세요.

  • 사용자 그룹 탭으로 이동
  • 그룹 생성
  • S3-Support 그룹 이름 지정
  • 권한 연결
  • EC2-Support 그룹 이름 지정
  • 권한 연결
  • EC2-Admin 그룹 이름 지정
  • 정책 생성
  • JSON 입력
  • 정책 이름 설정
  • 권한 연결
  • 사용자 탭으로 이동
  • 사용자 추가
  • 설정
  • 그룹에 사용자 추가
  • 사용자 추가 완료

    https://132520104923.signin.aws.amazon.com/console
  • 사용자 추가
  • 그룹에 사용자 추가
  • 사용자 추가 완료

    https://132520104923.signin.aws.amazon.com/console
  • 사용자 추가
  • 그룹에 사용자 추가
  • 사용자 추가 완료

    https://132520104923.signin.aws.amazon.com/console
  • user-1 로그인
  • 버킷 생성은 되지 않는다.
  • 버킷 확인만 가능하다.
  • user-2 로그인
  • 인스턴스 확인 가능
  • 인스턴스 연결 불가
  • user-3 로그인
  • 인스턴스를 확인할 수 있다.
  • 인스턴스 중지도 가능하다.
  • 인스턴스 시작도 가능하다.
  • 인스턴스 연결은 권한이 없기 때문에 안된다.

IAM 계정의 활동 모니터링 및 감사

  • CloudTrail
    : AWS 인프라 전반에서 계정 활동을 확인한다.
    누가 또는 무엇이 어떤 작업을 수행했는지, 어떤 리소스에 대해 조치가 취해졌는지, 언제 이벤트가 발생했는지, AWS 계정에서 활동 분석 및 응답에 도움이 되는 기타 세부 정보를 식별한다.

  • IAM Access Analyzer
    : 리소스 및 데이터에 대한 의도하지 않은 액세스라는 보안 위험을 식별한다.
    결과를 검토하여 액세스가 의도한 안전한 액세스인지 또는 액세스가 의도하지 않은 보안 위험인지 확인한다.

  • GuardDuty
    : AWS 계정과 워크로드를 보호할 수 있도록 악의적 또는 무단 동작을 지속적으로 모니터링하는 AWS 위협 탐지 서비스
    위협 인텔리전스 피드를 통해 의심되는 공격자를 식별하고 기계 학습을 사용하여 계정 및 워크로드 활동의 이상을 감지한다.

  • Security Hub
    : 지원되는 AWS 파트너 솔루션의 보안 결과 데이터를 자동으로 집계할 수 있으므로, AWS 환경 전체에서 보안 및 규정 준수를 포괄적으로 파악할 수 있다.

  • Inspector
    : 보안과 배포된 애플리케이션의 규정 준수를 개선하는 자동화된 보안 평가 서비스
    규모에 맞는 지속적인 자동 취약성 관리로 사용자 지정 애플리케이션 취약점을 스캔하고 설명하는 보고서를 제공하는 서비스

  • Macie
    : Amazon Macie는 완전관리형 데이터 보안 및 데이터 프라이버시 서비스.
    ex) 개인 식별 정보(PII)와 같은 민감한 데이터 수집
    기계 학습 및 패턴 일치를 활용하여 AWS에서 민감한 데이터를 검색하고 보호한다.

MFA 설정

0개의 댓글