🌦 Cloud

[AWS/SAA-03] IAM : 계정 및 권한 관리 서비스

핑크빛연어 2023. 4. 16. 21:08

 

 

 

💝 IAM (Identity and Access Management)

 

 

 

🚨 사용자 및 그룹 (Users & Groups)

✤ AWS 계정 및 권한 관리 서비스

✤ IAM 글로벌 서비스이다 (리전 선택 필요X)

✤ Root 계정은 기본으로 생성되지만, 사용하거나 공유해선 안된다.

✤ 사용자는 조직 내의 사람들이며, 그룹화 할 수 있다.

✤ 그룹은 오직 사용자만 배치할 수 있다.

✤ 사용자는 그룹에 속하지 않을 수도 있고, 멀티그룹에 속할 수도 있다.

 

 

 

🚨 권한 (Permissions)

사용자나 그룹에 정책이라 불리는 JSON 형식의 문서인 권한을 할당할 수 있다.

이 정책들을 사용해 사용자들의 권한을 정의할 수 있다.

최소 권한의 원칙을 적용 : 큰 비용, 보안문제 때문에 최소한의 권한허용을 한다.

 

 

정책 구조

 

구성

  • Version : 정책 언어 버전

  • Id : 정책의 식별자

  • Statement : 한개 또는 그 이상의 개별 정책 명세서

 

Statements 의 구성

  • Sid : statement 의 식별자 (optional)

  • Effect : 허용 또는 거부 를 나타냄 (Allow, Deny)

  • Principal : 특정 정책이 적용될 사용자, 계정, 역할로 구성

  • Action : 권한에 대한 작업 목록. 허용 또는 거부 되는 API 목록

  • Resource : 적용될 action 의 리스트 목록

  • Condition : statement 가 언제 적용될지 결정 (optional)

 

 

 

🚨 비밀번호 정책 (Password Policy)

✤ 계정을 보호하는 방법이다

✤ 강력한 비밀번호 : 계정을 위한 높은 보안

✤ AWS 에서, 비밀번호 정책 설정 가능

  • 비밀번호 최소길이 설정

  • 특정 유형의 글자 사용 요구 : 대소문자, 숫자, 특수문자 등

✤ IAM 사용자들의 비밀번호 변경 허용/금지 가능

✤ 일정 기간이 지나면 비밀번호를 만료시켜 새 비밀번호 설정을 요구 

✤ 비밀번호 재사용을 막아 이전 비밀번호 사용 못하게 가능

 

 

 

🚨 다요소 인증 - MFA (Multi Factor Authentication)

✤ 필수적으로 사용하도록 권장함

✤ 사용자는 당신의 계정에 액세스할 수 있으며, AWS 계정에서 구성을 변경하거나 리소스를 삭제 가능

✤ Root 계정은 무조건 보호해야하며, 전체 IAM 사용자들도 보호해야 한다.

✤ MFA 장치 = 비밀번호 + 보안장치

✤ MFA 의 주요 이점 : 비밀번호를 도난당하거나 해킹당해도, 계정이 손상되지 않는다.

 

 

MFA 옵션 장치

  • 가상 MFA 장치 : 하나의 장치에도 토큰을 여러개 지원함

  • U2F 보안키 (물리적 장치) : 하나의 보안키에서 여러 Root 계정과 IAM 사용자를 지원함

  • 하드웨어 Key Fob

 

 

 

🚨 AWS 에 액세스하는 방법 (3가지)

✤ Console : AWS Management Console. AWS 콘솔 사용

✤ CLI : AWS Command Line Interface. AWS 명령 인터페이스 사용

✤ SDK : AWS Software Developer Kit. AWS 소프트웨어 개발자 키트 사용

 

  • 액세스 키에 의해 보호됨. 액세스 키는 자격증명이다.(터미널에서 AWS 다우로드 가능하게함)

  • 액세스 키는 AWS 관리자 콘솔을 통해 생성함

  • 사용자는 자신의 액세스 키를 직접 관리함

  • 액세스 키는 공유X (절대 공유하면 안된다!)

  • Access Key ID ~ = username

  • Secret Access Key ~ = password

 

 

AWS CLI

  • AWS CLI : 명령줄 shell 에서 명령어를 사용하여 AWS 서비스들과 상호작용 할 수 있도록 해주는 도구

  • CLI : 명령줄 인터페이스

 

  • 모든 명령어가 aws 로 시작한다.

  • AWS 서비스의 공용 API 로 직접 접근 가능

  • 리소스를 관리하는 스크립트를 개발해 일부 작업을 자동화할 수 있다.

  • CLI 는 오픈소스로, GitHub 에서 모든 소스코드를 찾을 수 있다.

  • AWS 관리 콘솔 대신 사용하기도 한다.

 

 

AWS SDK

  • 소프트웨어 개발 키트

  • 특정 언어로된 라이브러리 집합

  • 코딩을 통해 애플리케이션 내 심어두어야 사용 가능

  • 다양한 언어 지원

     - SDKs (JavaScript, Python, PHP, .NET, Ruby, Java, Go, Node,js, C++)

     - Mobile SDKs (Android, iOS, ...)

     - Iot Device SDKS (Embedded C, Arduino, ...)

  • AWS 내 자체 SDK 가 있다.

 

 

 

🚨 IAM 역할 (Roles)

✤ AWS 리소스에서 사용하는 자격증명

✤ 일부 AWS 서비스는 여러분을 대신해 작업을 수행해야 한다.

✤ AWS 서비스에 권한을 부여해야 한다. 그러기 위해 IAM Roles 를 만들어야 한다.

✤ 실제 사람이 사용하도록 만들어진 게 아니고, AWS 서비스에 의해 사용되도록 만들어졌다.

 

 

 

🚨 IAM 보안 도구 (Security Tools)

 IAM 자격증명 보고서 - 계정 수준에서 가능 (IAM Credentials Report → accout-level) 

  • 계정의 모든 사용자와 다양한 자격 증명 상태를 나열하는 보고서

 

 IAM 액세스 관리자 - 사용자 수준에서 가능 (IAM Access Adviso → user-level) 

  • 액세스 관리자는 사용자에게 부여된 서비스 권한과 해당 서비스가 마직막으로 접근한 시간을 보여준다.

  • 이 정보들을 사용하여 정책을 수정할 수 있다.

 

 

 

🚨 IAM 의 일반적인 가이드라인과 모범 사례

 Root 계정은 AWS 계정을 생성할 때 제외하고 사용하지 않기.

 하나의 AWS 사용자 = 한명의 실제 사용자

 사용자를 그룹에 넣어 권한을 부여할 수 있다.

 비밀번호 정책은 강력하게!

 다요소 인증 MFA → 계정을 지킬 수 있다.

 AWS 서비스에 권한을 부여할 때마다 역할(Roles)를 만들고 사용해야 한다.

 CLI, SDK 를 사용할 경우, 반드시 액세스 키를 만들어야 한다.

 계정 권한을 감사할 때, 자격 증명 보고서와 액세스 관리자를 사용할 수 있다.

 IAM 사용자와 액세스 키는 절대 공유 X !

 

 

 

728x90
반응형