사용자 인증과 권한 통제는 온프레미스 환경과 더불어 클라우드 환경에서도 가장 중요한 보안 요소
AWS는 더욱 안전하게 사용할 수 있도록 AWS IAM 기능을 제공
AWS IAM 위에서 AWS 리소스가 어떻게 생성되고 관리되는지 살펴본 후 AWS IAM을 살펴본다.
AWS 리소스 생성하고 관리하기
AWS 관리 콘솔(AWS management console)
AWS 리소스를 생성하고 관리하는 데 사용할 수 있는 ‘웹(web)’ 기반 사용자 인터페이스를 제공
AWS 명령줄 인터페이스(AWS Command Line Interface, AWS CLI)
WS 서비스를 관리하는 통합 도구
운영 체제(윈도우, macOS, 리눅스)에설치하면 ‘셸(shell)’ 프로그램에서 AWS 서비스를 사용
명령줄 인터페이스나 프로그래밍에서도 AWS 리소스를 다룰 수 있다
AWS 소프트웨어 개발 키트(Software Development Kit, SDK)
AWS 리소스를 프로그래밍적으로 사용하기 편리하도록 제공되는 라이브러리들을 의미
파이썬(Python), Go, 루비(Ruby), 자바(Java) 등 주요 프로그래밍 언어별로 다양한 라이브러리를 제공
AWS 리소스를 다루는 방법 들은 AWS API에서 요청을 받아 온다.
AWS API란
API(Application Programming Interfaces)란
두 애플리케이션이 상호 작용할 수 있게 도와주는 매개체
API를 이용하여 두 애플리케이션이 서로 통신하면서 정보를 주고받을 수 있는 것
API 규칙
AWS 클라우드에서 인프라, 보안, 데이터베이스, 분석, 배포 및 모니터링 등 모든 IT 리소스는 AWS API 호출로 제어할 수 있습니다.
AWS API란
사용자나 애플리케이션이 AWS 서비스를 사용하기 위해 도와주는 매개체
API 예시1: 사용자가 Amazon S3 서비스를 사용
API 예시2: AWS 명령줄 인터페이스를 이용하여 Amazon S3 버킷을 생성
API 로깅
AWS API의 활동 기록을 저장하는 것, 보안 사고나 장애가 발생하
면 더욱 빠르게 대응
AWS CloudTrail
계정의 거버넌스, 규정 준수, 운영 감사, 위험 감사를 지원하는 서비스
AWS 인프라에서 계정 활동과 관련된 작업을 기록하고 지속적으로 모니터링하여 보관
인증과 인가는 AWS IAM으로 동작
AWS IAM(Identity & Access Management)이란
AWS 서비스와 리소스에 안전하게접근할 수 있도록 관리하는 기능
IAM을 이용하여 리소스를 사용하도록 ‘인증’과 ‘권한’을 통제
AWS 사용자 및 그룹을 만들고 관리
권한을 이용하여 AWS 리소스 접근을 허용하거나 거부
대부분의 AWS 서비스와 연결되어 활용
추가 비용 없이 사용
AWS IAM 구성 요소와 동작 방식
구성 요소
사용자, 그룹, 역할, 정책으로 구성
허가받은 사용자: AWS IAM 구성 요소 중 사용자와 그룹
권한: AWS IAM 구성 요소 중 정책과 역할
구성요소와 관련된 개념
인증, 인가 동작 방식
IAM 사용자가 AWS 리소스를 사용시 암호나 접근 키 같은 자격증명을 사용하여 인증 필요
IAM 사용자 계정에 따른 암호나접근 키가 올바르다면 적합한 사용자로 간주되어 인증 동작이 마무리
인증이 처리되면 IAM 사용자는 적합한 권한이 있는지 확인하는 인가 동작을 진행
AWS IAM 사용자
IAM 사용자 = 루트 사용자 + 일반 IAM 사용자
AWS IAM 정책
사용자별 권한 검사
Effect: 명시적 정책에 대한 허용 혹은 차단
principal: 접근을 허용 혹은 차단하고자 하는 대상
Action: 허용 혹은 차단하고자 하는 접근 타입
Resource: 요청의 목적지가 되는 서비스
Condition: 명시적 조건이 유효하다고 판단될수 있는 조건
AWS IAM 역할
정의된 권한 범위 내 AWS API를 사용할 수 있는 임시 자격 증명을 의미
Assume: 코드에 하드 코딩하지 않고 실행할 때 임시(+Token, 일정 시간 이후 만료됨) 자격 증명
IAM 역할을 사용하면 사용자 권한을 공유하거나 매번 권한을 부여할 필요가 없다.
IAM 역할 예시1: 개발자가 S3 버킷에 대한 접근 권한이 필요한 EC2 인스턴스에서 애플리케이션을 실행하는 상황
개발자는 이를 위해 추가적인 자격 증명을공유하거나 관리할 필요 없다.
IAM 역할 예시2: AWS IAM 시스템과 연동된 외부 사용자 관리 시스템이 구성되는 환경일 때
서비스 간에 권한을 제어하거나 멀티 계정 환경에서 리소스 권한을 위임 가능