네트워크보안 5주차(6주차)

CDH·2024년 10월 11일

※ 본 글의 이미지는 사용허가를 받고 작성함을 알려드립니다

권한관리 서비스


리눅스의 권한관리


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)

  • 특정소프트웨어를개발할때도움을주는개발도구집합이소프트웨어개발키트(SDK)
  • AWS 리소스를프로그래밍적으로사용하기편리하도록제공되는라이브러리를의미
  • AWS SDK는 파이썬, GO, 루비, 자바 등 주요 프로그래밍 언어로 라이브러리제공
  • ex) AWS SDK를 이용하면 인증을 위한 프로그램을쉽게구현가능
  • access key로 접속가능한 API가 적용된 애플리케이션코드로접속

Access Key 생성

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


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)
    • 사용자의집합
    • 그룹에속한사용자는그룹에부여된권한을행사


신분인증-루트사용자vs. IAM 사용자

신분인증-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 정책 문서에 명시한것만수행가능

권한부여사례


권한부여–정책문서

  • 개발팀에 해당하는 User1이 권한을 부여받으면 User2와 User3 모두 권한을 가진다

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를활용해 신분인증하는절차
• 연동자격증명으로페이스북, 구글, 애플등의외부자격증명을사용할수있음

2번 째 그림 출처 : https://theburningmonk.com/2023/12/direct-access-for-frontend-apps-to-aws-services/


AWS Organization

- 글로벌서비스

- 다수의AWS 계정을 동시에관리

- 관리계정(management account)과 멤버 계정(member accounts)으로 구분

• 멤버계정은하나의조직에만소속됨

- 모든계정의비용을통합결제가능

• 관리계정에서지불방법설정함으로써조직전체의비용을지불할수있음

- 계정별로사용되는AWS 서비스가각각비용청구되지않고, 통합되어비용청구됨(비용이득)

- 계정생성을위한API 제공


AWS Organization 특징

- 다양한부서를위한멀티어카운트환경을구현

- 신속한조직확장가능

- 결제업무간소화

- 부서별계정관리하는것보다체계적이며통합적인보안제어

- OU(Organization Unit)라는 조직 단위 사용

• Organization 계정을 세분화한 논리 계정

- SCP(Service Control Policy)는 AWS Organization의 서비스 제어 정책, 서비스 내 작업 규칙을 정의

• 해당정책은상속됨

AWS Organization 사례


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

0개의 댓글