AWS - SAA (1)

dev-MIN·2025년 3월 21일

aws

목록 보기
1/2

학습자료 (Udemy)
Stephane Maarek - AWS Certified Solutions Architect Associate

AWS 클라우드 개요

AWS Regions (리전)

  • 전 세계에 퍼져 있음
  • 고유한 이름 가지고 있음
    ex) US-East-1
  • 데이터 센터의 집합
  • 대부분 서비스는 특정 리전 범위(region-scoped)와 연결됨
    한 리전을 다른 리전에서 다시 사용하려면 새로 서비스를 이용하는 것과 같음

    AWS Region 선택하는 방법? (시험)
    상황에 따라 다름 = Region 선택에 영향을 줄 수 있는 요인을 고려해 선택하기

    요인)
    Compliance(준수) : 정부가 데이터를 해당 국가에 두길 원함
    Proximity(근접성) : Latency(지연)를 줄이기 위해 가까운 리전에 배포
    Available services(이용가능서비스) : 모든 리전이 모든 서비스를 제공하지 않음
    Pricing(가격) : 서비스 가격 페이지를 참고해 가격 비교하기

AZ(Availability Zone)

  • 리전(Region)에 실제로 포함되는 구성요소
    (각 리전에는 최소 3개, 최대 6개의 AZ를 가짐)
  • 각 AZ는 하나 이상의 독립적인 데이터 센터로 구성 : redundant power, networking, connectivity를 가짐
    ex) ap-southeast-2a (2개의 데이터 센터), ap-southeast-2b, ap-southeast-2c
  • 각 AZ는 재해로부터 영향을 덜 받도록, 서로 분리되어 있음
    ex) ap-southeast-2a에 문제가 발생해도 다른 AZ에 연쇄적으로 번지지 않음
  • 데이터 센터와 AZ가 고대역폭, 초저지연 네트워킹으로 연결되어 있음

Points Of Presence(Edge Locations)

  • Global Section에서 알아볼 주제
  • AWS는 90개 도시에서 400개 이상의 Points Of Presence를 운영
  • 콘텐츠를 전달할 때 최저 지연 시간으로 사용자에게 전달됨

IAM & AWS CLI

IAM : 사용자, 그룹, 정책
IAM = Indetity and Access Management

  • IAM은 '글로벌 서비스' -> 사용자를 생성하고 그룹에 배치하므로
  • 루트 계정은 기본으로 생성되고, 그 외 사용자계정을 생성할 때만 사용되어야함
  • 하나의 사용자 = 조직 내의 한 사람
  • 사용자들을 그룹(조직)으로 묶을 수 있음
    • 그룹은 오직 사용자만 배치할 수 있음 (다른 그룹 포함 X)
    • 한 사용자가 다수의 그룹에 속할 수 있음
    • 그룹에 포함되지 않은 사용자도 존재함
  • Q. 사용자와 그룹을 생성하는 이유? = AWS 계정을 사용하도록 허락하기 위해 (Permission, 권한)
    • 사용자들의 권한을 정의 = IAM 정책(IAM Policy)
    • JSON 문서로 지정
      • 특정 사용자, 특정 그룹에 속한 모든 사용자들이 어떤 작업 권한을 가지고 있는지 적어 놓은 문서
        • 모든 사용자들에거 모든 권한을 부여하지 않는 '최소 권한 원칙 적용함 (사용자가 꼭 필요로 하는 것 이상의 권한을 주지 않음)

IAM Policy

  • 사용자가 그룹에 속해 있든, 아니든 원하는 사용자에게 인라인 정책 적용 가능
  • 구조 & 명명법
    • Effect, Principal, Action, Resource (시험)
"version": "2012-10017",         // 정책 언어 버전
"Id" : "S3-Account-Premissions", // 정책 식별 ID (선택)
"Statement" :[                   // 문장은 하나일 수도, 여러 개일 수도
  {
  	"Sid" : "1",                 // 문장 ID = 문장의 식별자 (선택)
    "Effect" : "Allow",          // 문장이 특정 API에 접근하는 것을 허용(Allow)/거부(Deny)할지에 대한 내용
    "Principal" : {              // 특정 정책이 적용될 사용자/계정/역할
  	"AWS" : ["arn:aws:iam:12312"]
     },
    "Action" : [                 // effect에 기반해 허용 및 거부되는 API 호출의 목록
   	
   ],
    "Resource" : [],             // 적용될 action의 리소스 목록
    "Condition" :                // 문장이 언제 적용될지 결정
  }
]

IAM - 사용자, 그룹이 손상되지 않도록 보호하기
**방법1)

  • Password Policy
    • 강력한 패스워드 = 계정 보안 강화됨
    • AWS는 다양한 옵션으로 비밀번호 정책 설정 가능
      • 최소 비밀번호 길이 설정
      • 특정 문자 유형 요구 ex) 대문자, 소문자, 숫자, 특수 문자 등
    • IAM 사용자들이 자신의 패스워드를 변경하도록 허용/허용X 할 수 있음
    • 일정 시간 이후에 사용자에게 패스워드 변경 요구 (패스워드 만료)
    • 패스워드를 변경할때, 이미 가지고 있는 또는 이전에 사용한 패스워드로 변경 불가능하게

방법2)

  • Multi Factor Authentication - MFA
    • AWS에서 MFA를 사용하는 것이 필수이며 매우 권장됨
    • 최소한 루트 계정과 모든 IAM 사용자를 보호하고 싶을 것임
    • MFA = 우리가 알고 있는 패스워드 + 우리가 소유한 보안 장치 조합
    • AWS에서 MFA 장치 옵션 (시험)
      • Virtual MFA device(가상 MFA 장치)
        : 한 번에 하나의 전화에서만 작동하거나 인증을 요구하는 구글 인증기 / 단일 장치에서 여러 토큰 지원
        : 루트 계정 , IAM 계정 등 다른 IAM 사용자를 가질 수 있음
      • Universal 2nd Factor(U2F) Security Key(UTF 보안 키)
        : 물리적인 장치
        : 유비코의 유비키는 AWS의 타사 제품으로 단일 보안 키를 사용해 여러 루트 및 IAM 사용자를 지원함(= 사용자 수만큼 키가 필요하지 않음)
      • Hardware Key Fob MFA Device
        : 젬알토
      • Hardware Key Fob MFA Device for AWS GovCloud(US)
        : 미국 정부의 클라우드 AWS GovCloud를 사용하고 있다면, SuperPassID에서 제공하는 보안 토큰이 있음

AWS 액세스 키, CLI & SDK

  • AWS에 액세스 하는 방법
    • AWS Management Console(= 관리 콘솔)
      : 사용자 이름, 패스워드 + MFA로 보호됨
    • AWS Command Line Interface(= 명령줄 인터페이스)
      : 액세스 키(자격 증명)으로 보호됨
    • AWS Software Devloper Kit(SDK = 소프트웨어 개발자 키트)
      : AWS로부터 애플리케이션 코드 내에서 API를 호출할 때 사용하는 방식
      : Cmd와 같은 액세스 키로 보호됨
  • 액세스 키 생성 방법
    • 관리 콘솔을 사용해 생성 가능
    • 사용자들이 자신들의 액세스 키를 직접 관리함
      (사용자에게 액세스 키 = 패스워드 = 공유 절대 X)
    • Access Key ID = 유저 이름
    • Secret Access Key = 패스워드
  • CLI
    • 명령어줄을 사용해 AWS 서비스들과 상호작용할 수 있도록 해주는 도구
    • 사용하는 이유? 모든 명령어가 aws로 시작하기 때문
    • CLI를 사용하면 AWS 서비스의 공용 API로 직접 액세스 가능
    • CLI를 통해 리소스를 관리하는 스크립트를 개발해 일부 작업 자동화 가능
      (콘솔 대신 CLI로 사용하기도 함)
  • SDK
    • 특정 언어로 된 라이브러리 집합
    • 프로그래밍 언어에 따라 개별 SDK 존재
    • AWS 서비스나 API에 프로그래밍을 위한 액세스가 가능하도록 해줌
    • 단, SDK는 cmd에서 사용하는 것이 아닌 코딩을 통해 애플리케이션에 심어두어야 함
      = 애플리케이션 내에 자체적인 AWS SDK가 있는 것
    • 다양한 프로그래밍 언어 지원
      : js, python, php, net, ruby, java, go, node.js
      : mobile sdk(android, ios)
      : ios device sdks (embedded c)

IAM Role(역할)

  • 어떤 서비스는 우리 계정에서 수행해야하므로, AWS 서비스에 권한을 부여해야함
  • 실제 사람이 사용하도록 만든 룰이 아니라 AWS 서비스에 의해 사용되도록 만들어짐
  • Role 종류
    • EC2 Instance Roles
    • Lamda Function Roles
    • Roles for ColudFormation

IAM 보안 도구

  • IAM Credentials Report (IAM 자격 증명 보고서)
    • 계정 수준
    • 보고서는 계정에 있는 사용자와 다양한 자격 증명의 상태를 표현함
  • IAM Access Advisor (IAM 액세스 관리자)
    • 사용자 수준
    • 사용자에게 부여된 서비스의 권한과 해당 서비스에 마지막으로 액세스한 시간이 보임
    • 최소 권한 원칙을 따랐을 때 매우 도움되는 정보
    • 해당 도구를 사용해 어떤 권한이 사용되지 않는지 볼 수 있어 사용자의 최소 권한 원칙을 지킬 수 있음

IAM 가이드 라인

  • AWS 계정을 설정할 때를 제외하고 루트 계정을 사용하지 말기
  • 한 명의 AWS 사용자 = 한 명의 물리적 사용자
  • 사용자를 그룹에 할당하고 그룹에 권한을 할당해 보안이 그룹 수준에서 관리될 수 있도록 할 수 있음
  • 강력한 비밀번호 정책을 만들어야함 (다중 인증 or MFA)
  • AWS 서비스에 권한을 부여할 때, 역할을 생성하고 사용하는 것이 좋음
  • CLI/SDK 에서 액세스 키를 사용해야함
  • 계정 권한을 감시하기 위해 IAM 자격 증명 보고서, IAM 액세스 관리자 기능 사용할 수 있음
  • 절대 IAM 사용자 & 액세스 키 공유하지 말기!!!

0개의 댓글