[SK shieldus Rookies 16기][AWS] IAM의 보안 모범 사례 / AWS 서비스 이용 방법 / AWS 용어 정리

Jina·2023년 12월 1일
0

SK shieldus Rookies 16기

목록 보기
28/59
post-thumbnail
post-custom-banner

IAM의 보안 모범 사례

  • 임시 보안 인증을 사용하여 AWS에 액세스하려면 인간 사용자가 ID 공급자와의 페더레이션을 사용하도록 요구합니다.
  • AWS에 액세스하려면 워크로드에 IAM 역할이 있는 임시 자격 증명을 사용하도록 요구합니다.
  • 다중 인증(MFA) 필요
  • 장기 보안 인증이 필요한 사용 사례에 필요한 경우 액세스 키 업데이트
  • 모범 사례를 따라 루트 사용자 보안 인증을 보호하세요
  • 최소 권한 적용
  • AWS 관리형 정책으로 시작하고 최소 권한을 향해 나아갑니다.
  • IAM 액세스 분석기를 사용하여 액세스 활동을 기반으로 최소 권한 정책 생성
    ⇒ 최소 권한 정책을 도와주는 것이 엑세스 분석기
  • 사용하지 않는 사용자, 역할, 권한, 정책 및 보안 인증은 정기적으로 검토하고 제거합니다.
  • IAM 정책의 조건을 사용하여 액세스 추가 제한
    ⇒ 특정 리소스에 대해서 특정 액션을 Allow or Deny 외 컨디션이라는 항목 추가 가능. 컨디션이란? 고난 체계 세부화해주는 항목
  • IAM Access Analyzer를 사용하여 리소스에 대한 퍼블릭 및 크로스 계정 액세스 확인
  • IAM Access Analyzer를 사용하여 IAM 정책을 검증하여 안전하고 기능적인 권한을 보장합니다.
    ⇒ 잘못된 접근이 있는지 확인 후 권한 조정
  • 여러 계정에 권한 가드레일 설정
  • 권한 경계를 사용하여 계정 내에서 권한 관리 위임

AWS 계정에 대한 루트 사용자 모범 사례

  • 루트 사용자 보안 인증을 보호하여 무단 사용 방지
    ⇒ 루트 계정 공유 하지 말 것.
  • 액세스를 보호하려면 강력한 루트 사용자 암호 사용
  • 다중 인증(MFA)을 통한 루트 사용자 로그인 보호
  • 루트 사용자에 대해 액세스 키를 생성하지 않음
    ⇒ 엑세스 키는 프로그램 방식으로 동작할 때도 루트 계정 사용하지 말 것.
  • 가능하면 루트 사용자 로그인에 여러 사람 승인 사용
    ⇒ 다른 사람의 컨펌이 떨어져야 로그인할 수 있도록 할 것.
  • 루트 사용자 보안 인증에 그룹 이메일 주소 사용
  • 계정 복구 메커니즘에 대한 액세스 제한
    ⇒ 아이디/비밀번호 분실 시 사용하는 메커니즘이 계정 복구 메커니즘. 이걸로 아이디를 탈취할 수 있으므로 접근 제한둘 것.
  • 조직 계정 루트 사용자 보안 인증 보호
  • 액세스 및 사용 모니터링

AWS 서비스를 이용하는 방법

  1. Management Console로 접근
    ⇒ 사람 사용자가 로그인 후 사용
  2. AWS CLI로 접근
    ⇒ 사람 또는 프로그램이 Access Key를 이용해서 사용
  3. 각 개발 언어별 SDK로 접근
    ⇒ 응용 프로그램을 이용해서 사용

AWS CLI 설치

설치

msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi

설치 확인

aws --version

사용자 목록 조회

참조
https://docs.aws.amazon.com/cli/latest/reference/iam/list-users.html

Rookies 계정에서 엑세스 키 생성

IAM > 사용자 > 계정 선택 > 엑세스 키 > 엑세스 키 만들기

aws configure 명령으로 사용자 크리덴셜을 등록

aws configure
AWS Access Key ID [None]: 발급받은 액세스 키
AWS Secret Access Key [None]: 발급받은 비밀 액세스 키
Default region name [None]: 본인에게 할당된 리전 ID
Default output format [None]: json

미국 오레곤 us-west-2

list-users 명령어를 실행

aws iam list-users
{
    "Users": [
        {
            "Path": "/",
            "UserName": "CostManager",
            "UserId": "AIDA25MLMKZCHDLDDMHAI",
            "Arn": "arn:aws:iam::750300976708:user/CostManager",
            "CreateDate": "2023-03-24T07:15:27+00:00"
        },
        {
            "Path": "/",
            "UserName": "Rookies017",
            "UserId": "AIDA25MLMKZCDY7JAFV7C",
            "Arn": "arn:aws:iam::750300976708:user/Rookies017",
            "CreateDate": "2023-11-24T01:35:51+00:00",
            "PasswordLastUsed": "2023-12-01T00:05:58+00:00"
        },
        {
-- More  --

list-bucket

aws s3api list-buckets
{
    "Buckets": [],
    "Owner": {
        "DisplayName": "aws18",
        "ID": "746ce9a1e013440b4f3c237243c3388d924e31936cb4cd6df78ef2dcb29329a2"
    }
}

VPC(Virtual Private Cloud)

VPC 란?

  • AWS 사용자 계정 전용 가상 네트워크
  • AWS 클라우드에서 다른 가상 네트워크와 논리적으로 분리
  • 리전 단위의 서비스 ⇒ 한 AWS 리전 안에서만 존재, 다른 리전에서는 보이지 X ⇒ VPC 간 연결하려면 VPC Peering 이용
  • 생성할 때 RFC 1918에 지정된 프라이빗 주소 체계 사용을 권고

VPC 구성

  • 가용 영역 : 천재지변과 같은 문제로부터 피해를 최소화하기 위함
  • CIDR 블록 : IP를 갖고
  • DNS 옵션 :
  • 인터넷 게이트웨이 : IGW(Internet Gateway)
  • 이름 : VPC이름
  • NAT 게이트웨이 : 인터넷 게이트웨이로 연결해 리소스를 프라이빗 서브넷에서 외부로 나갈 수 있게 도와줌.
  • 라우팅테이블 : 라우팅 규칙을 설정
  • 서브넷 : 퍼블릭 서브넷(인터넷 연결 O), 프라이빗 서브넷(인터넷 연결 X)
  • Tenancy : VPC로 시작하는 EC2인스턴스가 다른 AWS 계정과 공유되는 하드웨어에서 실행되는지 아니면 사용자 전용 하드웨어에서 실행되는지 정의.

기본 VPC란?

  • Default VPC
  • 각 가용 영역의 퍼블릭 서브넷, 인터넷 게이트웨이 및 DNS 확인 활성화 설정과 함께 제공
  • 준비 과정 없이 빠르게 시작하여 배포가능

기본 VPC 구성

  • IPv4 CIDR 블록의 크기가 /16인 VPC를 만듭니다 (172.31.0.0/16). 이는 최대 65,536개의 프라이빗 IPv4 주소를 제공합니다.

  • 각 가용 영역에 크기 /20의 기본 서브넷을 생성합니다. 이렇게 하면 서브넷당 최대 4,096개의 주소가 제공되며, 그중 몇 개는 내부용으로 예약되어 있습니다.

  • 인터넷 게이트웨이를 만들어 기본 VPC에 연결합니다.

  • 기본 라우팅 테이블에 모든 트래픽(0.0.0.0/0)이 인터넷 게이트웨이로 전달되는 경로를 추가합니다.

  • 기본 보안 그룹을 만들어 기본 VPC와 연결합니다.
    ⇒ 모든 인바운드/아웃바운드 트래픽을 허용→통제하는 것이 없다는 뜻.

  • 네트워크 ACL(액세스 제어 목록)을 생성하여 기본 VPC와 연결합니다.

  • AWS 계정에서 설정된 기본 DHCP 옵션을 기본 VPC와 연결합니다.

서브넷

정의

  • VPC 내 논리적인 구분
  • EC2 인스턴스를 배치하는 장소 == 인스턴스는 서브넷 안에 위치

특징

  1. 한 번 서브넷에 인스턴스를 생성하면 다른 서브넷으로 옮길 수 없음
  2. 인스턴스를 종료하고 다른 서브넷에 새 인스턴스를 만들 수 있음
  3. 인스턴스를 서로 격리하고, 인스턴스 간의 트래픽 흐름을 제어하고, 인스턴스를 기능별로 묶을 수 있음.
  4. 서브넷은 하나의 가용 영역(AZ) 내에서만 존재 가능
  5. 서브넷의 CIDR블록
    • VPC의 일부, VPC내에서는 유니크 해야한다.
    • 모든 서브넷에서 처음 4개의 IP와 마지막 1개의 IP는 예약되어 있으므로 인스턴스에 할당 X
      ex. 서브넷 CIDR이 172.16.100.0/24 인 경우 172.16.100.0 ~ 172.16.100.255를 모두 사용할 수 있는 것이 아니다.
      처음 4개와 마지막 IP를 제외한 나머지 172.16.100.4 ~ 172.16.100.254 만 할당 가능
      172.16.100.0 	⇒ 네트워크 주소
      172.16.100.1 	⇒ AWS에서 VPC 라우팅용으로 예약
      172.16.100.2 	⇒ DNS 서버 주소
      172.16.100.3 	⇒ AWS에서 나중에 사용하기 위해 예약
      172.16.100.255  ⇒ 브로드캐스트 주소

서브넷 종류

  • 퍼블릭 서브넷 : 서브넷이 인터넷 게이트웨이로 향하는 라우팅이 있는 라우팅 테이블과 연결된 경우
  • 프라이빗 서브넷 : 서브넷이 인터넷 게이트웨이로 향하는 라우팅이 없는 라우팅 테이블과 연결된 경우

ENI(Elastic Network Interface)

정의

  • 탄력적 네트워크 인터페이스
  • 물리 서버의 NIC(Network Interface Card)와 같은 기능 수행
  • VPC에서 가상 네트워크 카드를 나타내는 논리적 네트워킹 구성 요소

인터넷 게이트웨이(IGW)

인터넷 게이트웨이란?

  • 퍼블릭 IP주소를 갖는 인스턴스가 인터넷에 연결할 수 있도록 기능을 제공하는 것

인터넷 게이트웨이의 특징

  1. 처음 VPC를 만들면 IGW가 연결되어 있지 않으므로, 직접 IGW를 만들고 VPC와 연결해야 한다.
  2. 하나의 VPC는 하나의 IGW에만 연결 가능하다.

라우팅

라우팅이란?

  • VPC의 네트워크 트래픽을 전달할 위치를 결정하는데 사용되는 규칙
  • 트래픽을 전달할 대상 IP주소 범위와 트래픽을 전송할 게이트웨이, 네트워크 인터페이스 또는 연결(대상)을 지정

라우팅 특징

  • VPC는 소프트웨어 함수로 IP 라우팅을 구현 ⇒ 사용자는 라우팅 테이블만 관리

  • 라우팅 테이블 : 라우팅 집합으로 서브넷과 연결 가능

  • 기본 라우팅 테이블 : VPC와 함께 자동으로 제공되는 라우팅 테이블

    • 기본 VPC인 경우, local 및 IGW로의 라우팅을 포함
    • 기본 VPC가 아닌 경우, local 라우팅만 포함
    [기본 VPC인 경우]
    대상주소						대상
    ----------------			----------------
    172.31.0.0/16				local
    0.0.0.0/0					igw-xxxxxxxx
    ↑ 인터넷 상의 모든 호스트 IP		↑ 인터넷 게이트웨이

    172.31.10.10 주소로 트래픽을 보내는 경우, 172.31.0.0/16 주소 범위에 속하므로 VPC내부에서 대상 인스턴스를 찾고, 192.100.10.10 주소로 트래픽을 보내려는 경우, 172.31.0.0/16 주소범위에는 속하지 않지만 0.0.0.0/0 주소 범위에는 속하므로 IGW로 해당 트래픽을 전달한다.
    ⇒ 라우팅할 위치와 가장 근접하게 일치하는 항목을 기반으로 라우팅 처리
    ⇒ 라우팅 테이블의 항목들 간의 순서는 중요 X

보안그룹(SG, Security Group)

보안그룹이란?

  • 방화벽과 같은 기능 제공
  • 인스턴스의 ENI에서 송수신하는 트래픽 제어

보안그룹 특징

  • 모든 ENI는 최소 한 개 이상의 보안 그룹과 연결되어야 하고, 보안 그룹은 여러 ENI와 연결할 수 있다. ⇒ N:N 관계
  • 생성할 때 보안 그룹 이름, 설명, 포함될 VPC를 지정하고, 생성 후에 인바운드, 아웃바운드 규칙 지정 ⇒ 트래픽 허용
  • 상태 저장 방화벽 역할 ⇒ 보안 그룹이 트래픽을 한 방향으로 전달되도록 허용할 때 반대 방향의 응답 트개픽을 지능적으로 허용하는 것

NACL(Network Access Control List)

NACL이란?

  • 보안그룹과 유사
    • 원본 또는 대상 주소 CIDR, 프로토콜, 포트를 기반으로 트래픽을 인바운드, 아웃바운드 규칙으로 제어 ⇒ 방화벽과 같은 역할
    • VPC에 삭제할 수 없는 기본 NACL 有

NACL 특징

  • 서브넷에 연결되어 해당 서브넷과 송수신되는 트래픽을 제어
  • 상태 비저장
    • NACL을 통과한 연결 상태를 추적 X
    • 모든 인바운드와 아웃바운드 트래픽의 허용 규칙 별도 작성
  • 규칙을 적용할 때 규칙 번호의 오름차순으로 처리

보안 그룹 VS NACL

보안 그룹네트워크ACL
인스턴스 레벨에서 운영서브넷 레벨에서 운영
인스턴스와 연결된 경우에만 인스턴스에 적용연결된 서브넷에서 배포된 모든 인스턴스에 적용
허용 규칙만 지원허용 및 거부 규칙 지원

EC2(Elastic Compute Cloud)

EC2란?

  • 안전하고 크기 조정이 가능한 컴퓨팅 파워를 제공하는 웹 서비스
  • 안정적인 확장 가능한 인프라에 온디맨드로 액세스

AMI(Amazon Machine Image)

AMI란?

  • 인스턴스를 시작하는데 필요한 정보를 제공하는 AWS에서 지원되고 관리되는 가상머신 이미지

인스턴스 타입의 명명 규칙

EBS(Elastic Block Store)

EIP(Elastic IP)

EIP란?

  • 탄력적인 IP
  • 정적인 IPv4주소로, AWS 계정에 할당되며, 릴리즈할 때까지 할당된 상태 유지
  • EC2 인스턴스를 중지하고 다시 시작하면 퍼블릭 IP주소가 변경되나, EC2 인스턴스에 EIP주소를 연결하면 EC2 인스턴스를 다시 시작해도 동일한 IP로 접속 가능

EIP 주소 요금

  • 인스턴스가 실행 중인 동안에는 이와 연결된 EIP 주소 하나에 대해서만 요금이 부과 X → 해당 인스턴스와 연결된 추가 EIP 주소에 대해서는 요금이 부과
  • 연결되어 있지 않거나 중지된 인스턴스 또는 연결되지 않은 네트워크 인터페이스와 연결된 경우 시간당 요금 부과
  • 2024년 2월 1일부터, 실행 중인 인스턴스와 연결된 주소를 포함하여 모든 탄력적 IP주소에 대해 요금이 부과된다.
profile
공부 기록
post-custom-banner

0개의 댓글