도슐랭스타

AWS - 권한관리 시스템 본문

AWS

AWS - 권한관리 시스템

도도.__. 2024. 11. 11. 23:21

권한 관리 시스템

개요

  • 리눅스의 권한 관리

AWS 리소스 접근 통제

  • AWS를 안전하게 사용하기 위해서는 리소스 접근을 통제해야 함
  • AWS 리소스를 생성하고 관리하는 방법
    • AWS 관리 콘솔, AWS CLI, AWS SDK

AWS 리소스 관리

  • AWS 관리 콘솔
    • AWS 리소스를 생성하고 관리하는 "웹" 기반의 인터페이스 제공
    • 웹 기반 GUI 방식으로 직관적이며 편리하게 사용 가능
    • ID / Password + MFA로 접속
  • AWS 명령줄 인터페이스(CLI)
    • AWS 서비스를 관리하는 통합 도구
    • 운영체제(윈도우, macOS, 리눅스)에 설치하면 "쉘(shell)" 프로그램에서 AWS 서비스 사용 가능
    • access key로 접속
  • AWS 소프트웨어 개발 키트(SDK)
    • 특정 소프트웨어를 개발할 때 도움을 주는 개발 도구 집합
    • AWS 리소스를 프로그래밍적으로 사용하기 편리하도록 제공되는 라이브러리
    • AWS SDK는 파이썬, GO, 루비, 자바 등 주요 프로그래밍 언어로 라이브러리 제공
    • ex) AWS SDK를 이용하면 인증을 위한 프로그램을 쉽게 구현 가능
    • access key로 접속 가능한 API가 적용된 애플리케이션 코드로 접속

Access Key 생성

  • 사용자가 직접 관리
  • 절대 공유 금지!!
  • Access key ID ≒ username
  • Secret Access key ≒ pw
  • 분실 시 폐기 후 재발급

AWS CloudShell

  • 명령줄 인터페이스 제공(CLI)

AWS API

  • API: 두 애플리케이션이 상호 작용할 수 있게 도와주는 매개체
  • 규칙
    • 외부에 공개된 API 서버가 아닐 때는 인증된 사용자만 접속
      • 인증(authentication): 사용자가 적법한 서명 값을 가졌는지 확인
      • 인가(authorization): 인증이 확인된 사용자가 API 권한을 수행할 수 있는지 확인
    • 요청할 때 규칙을 정의한 명세서 필요
      • 명세서의 규칙에 따라 요청한 데이터의 결과값을 사용자에게 제공
  • AWS 클라우드에서 인프라, 보안, 데이터베이스, 분석, 배포 및 모니터링 등 모든 IT 리소스는 AWS API 호출로 제어 가능
    • AWS API: 사용자 혹은 애플리케이션이 AWS 서비스를 사용하기 위해 도와주는 매개체
    • 예) AWS CLI를 통해 S3 버킷을 생성하기 위해서는 AWS API를 호출함 → 인증, 인가 후 S3 버킷 생성

AWS API 동작

  • AWS API 요청

  • AWS API 인증, 인가, 로깅

  • AWS CloudTrail
    • AWS 계정의 거버넌스, 규정 준수, 운영 감사, 위험 감사를 지원하는 서비스
    • 계정 활동과 관련된 작업을 기록하고 지속적으로 모니터링하여 보관 가능
      • 거버넌스: 비즈니스 목표를 달성하기 위한 정책, 프레임워크

AWS IAM의 개요

  • AWS Identity and Access Management
  • AWS 서비스와 리소스에 안전하게 접근할 수 있도록 관리하는 기능 제공
  • AWS 사용자 및 그룹을 만들고 관리하며, AWS 리소스 접근에 대한 허용 및 거부 수행
    • 신분 인증
    • 권한 부여
  • IAM은 글로벌 서비스
    • 리전 단위로 설정할 수 없고, 모든 리전에서 동일하게 동작
  • 최소한의 권한 부여!

신분 인증

  • AWS 리소스를 이용할 권한을 부여
  • 사용자의 신분 확인
    • AWS 계정 루트 사용자
      • 맨 처음 생성된 AWS 계정, 모든 권한을 가짐
      • 관리 목적으로만 사용할 것을 권고(일반 용도로는 사용하지 않음)
        • 루트 사용자를 사용하지 않고, admin 권한의 사용자를 생성 권고
      • 탈취되면 복구 어렵고 피해가 큼 – 계정 삭제 필요
      • MFA(Multi-factor authentication) 사용 권장
      • 액세스 키 생성 금지: 액세스 키로 CLI, API, SDK 등 프로그래밍 작업에 활용되기 때문
      • 절대 공유 금지!!
  • IAM 사용자(User)
    • 실제 AWS를 사용하는 사람 또는 애플리케이션
  • IAM 그룹(Group)
    • 사용자의 집합
    • 그룹에 속한 사용자는 그룹에 부여된 권한을 행사

User Authenticated

  • 인증 확인
    • ID PW
      • TOM: abc123
      • JANE: aabbcc

신분 인증 - IAM 사용자 & 그룹

  • 사용자는 그룹에 속해 있지 않거나 여러 그룹에 속할 수 있음
  • 그룹은 사용자만을 포함시키며, 다른 그룹은 포함시킬 수 없음

신분 인증 – IAM 역할(Role)

  • 사용자 또는 서비스에 권한을 부여하는 또 다른 방법
  • AWS 리소스에서 사용하는 자격증명
    • 사람이 사용하도록 만들어진 것이 아니라 AWS 서비스에 의해 사용되도록 함
    • 특정 개체(IAM User, AWS Service, root account 등)에게 접근 권한 부여
    • 대표적 IAM 역할
      • EC2 instance Roles
      • Lambda Function Roles
      • Roles for CloudFormation
  • 임시적으로 자격증명
    • 몇 분 ~ 몇 시간으로 시간을 지정할 수 있음
    • 만료된 후에는 사용 불가
    • 보안적으로 우수함

신분 인증 – IAM 역할(Role) 사례

  • EC2 상의 애플리케이션이 IAM 역할을 이용해 S3 버킷에 접근

  • 외부 사용자가 IAM 역할을 이용하여 S3 버킷에 접근

권한 부여

  • 최소 권한 부여(Least Privileges)라는 권한 부여 가이드라인 권장
  • 필요한 만큼 권한을 부여하고, 작업을 마치면 권한 회수(제거)
  • IAM 정책 문서를 통해 권한 부여
    • JSON 형식의 문서
    • 접근 권한의 규칙을 정리
    • IAM 정책 문서에 명시한 것만 수행 가능

권한 부여 사례

권한 부여 – 정책 문서

  • Sid: 설명문의 ID
  • Effect: 허가(Allow) / 거부(Deny)
  • Principal: 정책을 적용 받는 사용자(계정)
  • Action: 허가 거부에 해당하는 API
  • Resource: 버킷(bucket) 혹은 오브젝트(Object)

 

IAM 정책의 상속

  • IAM 그룹에 정책을 할당하면, 해당 그룹에 소속된 사용자가 IAM 권한을 가짐

IAM – 패스워드 정책

  • 보안을 위해 강한 암호(Strong password) 설정 필요
  • IAM 사용자를 위한 AWS의 패스워드 정책 설정
    • 최소 비밀번호 길이 설정
    • 특정 문자 유형 요구
      • 대문자 포함
      • 소문자 포함
      • 숫자 포함
      • 특수문자 포함
    • IAM 사용자가 자신의 비밀번호 변경 허용 여부
    • 일정 시간 후에 사용자에게 비밀번호 변경을 요구(비밀번호 만료 설정)
    • 비밀번호 변경 시 재사용 금지 여부

MFA

  • 사용자는 계정을 통해 AWS 리소스를 구성하거나 삭제함
  • 루트 사용자 및 IAM 사용자를 보호하는 목적으로 사용
  • MFA = 패스워드 + 보안 장치(2차 인증)
  • 패스워드가 유출되더라도 물리적 장치가 추가적으로 필요하므로 계정을 보호할 수 있음

IAM 모범 사례

  • 루트 사용자의 사용을 제한할 것
  • 사용자를 그룹에 할당하고, 그룹에 권한을 부여할 것
  • 보안을 위해 암호는 어렵게 설정하고, MFA로 2차 인증 설정할 것
  • AWS 서비스의 권한을 부여할 때 역할을 생성하고 사용
  • CLI/SDK를 위해 access key 생성
  • IAM 자격증명 보고서(Credentials Report) 또는 IAM 액세스 관리자(Access Advisor) 기능을 사용할 수 있음
  • 사용자 계정 및 Access Key를 공유하지 말 것!

IAM 공동 책임 모델

  • AWS
    • 인프라스트럭처(글로벌 네트워크 보안)
    • 구성 및 취약성 분석
    • 책임사항 준수
  • 사용자
    • 사용자, 그룹, 역할, 정책을 관리 & 모니터링
    • 모든 계정에 대해 MFA 활성화
    • 키를 자주 교체
    • IAM 도구를 활용해 적합한 권한 적용했는지 확인
    • 접근 패턴을 분석하고 계정 권한 검토

Amazon Cognito

  • 사용자 인증 및 권한 부여를 관리하기 위해 자주 사용되는 핵심 AWS 서비스
  • AWS 내·외부 사용자의 회원가입, 로그인을 지원
    • ex) 모바일 애플리케이션 개발 및 배포 시, Cognito로 간단하게 회원가입 및 로그인 기능 구현
  • Cognito 사용자 풀(User Pool)
    • 애플리케이션 유저를 위한 회원 가입, 로그인 등 기능 제공
  • Cognito 자격 증명 풀(Identity Pools)
    • 클라이언트에서 AWS 리소스에 직접 접근하기 위한 AWS ID를 제공

Amazon Cognito 절차

  • 외주 사용자가 S3와 연관된 웹 애플리케이션을 이용할 때, Cognito를 활용해 신분 인증하는 절차
  • 연동 자격 증명으로 페이스북, 구글, 애플 등의 외부 자격 증명을 사용할 수 있음

AWS Organization

  • 글로벌 서비스
  • 다수의 AWS 계정을 동시에 관리
  • 관리 계정(management account)과 멤버 계정(member accounts)으로 구분
    • 멤버 계정은 하나의 조직에만 소속됨
  • 모든 계정의 비용을 통합 결제 가능
    • 관리 계정에서 지불 방법 설정함으로써 조직 전체의 비용을 지불할 수 있음
  • 계정별로 사용되는 AWS 서비스가 각각 비용 청구되지 않고, 통합되어 비용 청구됨(비용 이득)
  • 계정 생성을 위한 API 제공

AWS Organization 특징

  • 다양한 부서를 위한 멀티 어카운트 환경을 구현
  • 신속한 조직 확장 가능
  • 결제 업무 간소화
  • 부서별 계정 관리하는 것보다 체계적이며 통합적인 보안 제어
  • OU(Organization Unit)라는 조직 단위 사용
    • Organization 계정을 세분화한 논리 계정
  • SCP(Service Control Policy)는 AWS Organization의 서비스 제어 정책, 서비스 내 작업 규칙을 정의
    • 해당 정책은 상속됨

AWS Organization 사례

  • Root Organizational Unit(OU)
  • Management Account
  • OU(Dev)
  • OU(HR)
  • OU(Finance)

계정 및 정책 예시

  • Management Account
    • 모두 가능
    • SCP 적용되지 않음
    • 관리자 권한
  • Account A
    • Reshift 거부하고 모두 가능
      (OU의 정책에 명시적으로 거부된 것은 액세스 거부됨)
  • Account B
    • Reshift & Lambda 거부하고 모두 가능
  • Account C
    • Reshift 거부하고 모두 가능

SCP - Blocklist(차단목록) & Allowlist(허용 목록) 전략

  • 모든 것을 허용한 후 필요에 따라 차단 (Dynamodb 차단)(img-왼쪽)
  • 모든 것을 차단한 후 필요한 것만 허용 (EC2, CloudWatch 만 허용)(img-오른쪽)

반응형

'AWS' 카테고리의 다른 글

AWS - 클라우드 스토리지  (0) 2024.11.04
AWS - 클라우드 기술의 이해  (6) 2024.10.28
AWS - 클라우드 서비스, 기술, 기타 용어  (4) 2024.10.21
AWS - 클라우드 기초  (1) 2024.10.14
Comments