IAM 비밀번호 정책 (IAM PW 정책)
- IAM 사용자의 비밀번호 요구사항을 정의하는 정책
- 비밀번호 복잡성, 최소 길이, 만료 기간 등을 설정할 수 있음
- 강제 비밀번호 변경, 이전 비밀번호 재사용 금지 등의 옵션 포함 가능
- 조직의 보안 강화를 위해 필수적인 요소로 활용됨
다중 요소 인증 (MFA)
- 보안을 강화하기 위해 두 가지 이상의 인증 방법을 요구하는 시스템
- 사용자는 알고 있는 것(비밀번호), 가지고 있는 것(인증 앱, 하드웨어 토큰 등), 또는 자신이 누구인지(생체 인식)를 이용해 인증
- AWS 계정 및 리소스에 대한 접근 보안을 획기적으로 향상시킬 수 있음
- 특히 민감한 작업이나 데이터에 대한 접근 시 MFA를 요구하여 추가 보안 계층 제공 가능
MFA 지원 요소
- Virtual MFA device (가상 인증 장치) : Google Authenticator, Authy 등
- U2F(Universal 2nd Factor) : usb처럼 물리적인 키
- Hardware Key Fob MFA Device
- Hardware Key Fob MFA Device for AWS GovCloud (US) ..
마치 Github나, OTP 인증 등과 같은 복합 인증 수단을 사용한다.
어떻게 사용자는 AWS에 접속하는가?
AWS 접근 방법
- AWS 접근에는 세 가지 옵션이 있음:
- AWS Management Console: 비밀번호 및 MFA로 보호
- AWS Command Line Interface (CLI): 접근 키로 보호
- AWS Software Developer Kit (SDK): 코드를 통한 접근, 접근 키로 보호
- 접근 키는 AWS 콘솔을 통해 생성됨
- 사용자는 자신의 접근 키를 직접 관리
- 접근 키는 비밀번호처럼 비밀이며 공유해서는 안 됨
- 접근 키 ID는 사용자 이름과 유사
- 비밀 접근 키는 비밀번호와 유사
액세스 키는 절대 공유하지 말자.
그 외에 이전 실습때처럼 CLI 커맨드를 통해 직접 aws로 접근 역시 가능하다.
AWS Command Line Interface (CLI)
https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html
최신 버전의 AWS CLI설치 또는 업데이트 - AWS Command Line Interface
이전 버전에서 업데이트하는 경우 unzip 명령을 실행하면 기존 파일을 덮어쓸지 묻는 메시지가 표시됩니다. 스크립트 자동화와 같은 경우에 이러한 프롬프트를 건너뛰려면 unzip에 대한 -u 업데이
docs.aws.amazon.com
콘솔 등의 웹 접근이 아닌, CLI를 통해 아마존 콘솔의 제어 가능.
설치 이후 CMD에서 'aws --version'을 통해 확인해보자.
마찬가지로 CentOS나 Ubuntu에서도 이를 추가할 수 있다.
#액세스 키 등록
C:\Users\csg13>aws configure
AWS Access Key ID [None]: AKIAY4HWMGPFT6ODZIN4 (공개 액세스 키)
AWS Access Key ID [****************ZIN4]: (비밀 액세스 키)
# 사용자 확인
C:\Users\csg13>aws iam list-users
AWS Software Developer Kit (SDK)
- AWS 리소스를 프로그래밍 방식으로 관리하고 상호 작용할 수 있게 하는 도구 모음
- 다양한 프로그래밍 언어를 지원하여 개발자가 선호하는 언어로 AWS 서비스를 사용할 수 있음
- 지원하는 언어는 Java, Python (Boto3), JavaScript, .NET, Ruby 등이 포함됨
- SDK를 사용하면 애플리케이션 코드 내에서 직접 AWS 리소스를 생성, 관리 및 조작 가능
- 예를 들어, EC2 인스턴스를 프로그래밍 방식으로 시작하거나, S3 버킷에 데이터를 저장 및 검색할 수 있음
- SDK는 보안적으로도 강력하게 설계되어, 액세스 키와 같은 인증 정보를 안전하게 관리할 수 있게 함
- AWS의 보안 모범 사례를 준수하며 개발할 수 있도록 설계되어 있음
스프링(Spring)과 같은 프레임워크를 사용하여 AWS 서비스에 접근하기 위해 Gradle 종속성을 추가하는 것도 AWS SDK의 사용범위에 포함된다.
AWS Cloud Shell
- AWS에서 직접 제공하는 관리형 쉘 환경
- 브라우저를 통해 AWS 관리 콘솔 내에서 바로 사용 가능
- 사전 인증된 상태로 AWS CLI 및 기타 스크립트를 실행할 수 있음
- 주요 개발 도구 및 언어 환경이 사전 설치되어 있어 별도의 설정 필요 없음
- 데이터를 저장하기 위한 임시 스토리지 제공, 세션이 종료되면 내용은 사라짐
- 추가 비용 없이 기본 AWS 서비스 사용료만으로 이용 가능
IAM Role (IAM 역할)
- 특정 AWS 서비스 또는 다른 AWS 계정이 AWS 리소스에 접근할 수 있도록 허용하는 IAM의 구성 요소
- 사용자나 그룹과 달리, 역할은 자격 증명이나 특정 ID를 가지지 않음
- 역할은 권한 정책에 따라 특정 작업을 수행할 수 있는 권한을 부여 받음
- AWS 서비스나 애플리케이션에서 역할을 "가정"하여 필요한 작업을 수행
- 예를 들어, EC2 인스턴스에 역할을 할당하면 해당 인스턴스가 S3 버킷에 접근 가능
- 보안을 강화하고 최소 권한 원칙을 유지하는 데 중요한 역할을 함
- 역할을 통한 접근은 인증 과정을 자동화하여 보다 안전하고 편리하게 리소스 관리 가능
IAM 보안 도구
- IAM Credentials Report (계정 수준): 모든 사용자의 다양한 자격 증명 상태를 나열하는 보고서
- IAM Access Advisor (사용자 수준): 사용자에게 부여된 서비스 권한과 해당 서비스의 마지막 접근 시간을 보여줌
IAM 지침 및 모범 사례
- AWS 계정 설정을 제외하고는 루트 계정 사용을 지양
- 물리적 사용자 당 하나의 AWS 사용자 생성
- 사용자를 그룹에 할당하고 권한은 그룹에 할당
- 강력한 비밀번호 정책 생성
- 다중 인증 요소 (MFA) 사용 및 강제 적용
- AWS 서비스에 권한을 부여하기 위해 역할 생성 및 사용
- 프로그래밍 방식 접근( CLI / SDK)을 위한 접근 키 사용
- IAM Credentials Report 및 IAM Access Advisor를 사용하여 권한 감사
- IAM 사용자 및 접근 키 공유 금지
IAM 섹션 요약
- 사용자: 물리적 사용자에 매핑되며 AWS 콘솔에 접근하기 위한 비밀번호 보유
- 그룹: 사용자만 포함
- 정책: 사용자 또는 그룹의 권한을 설명하는 JSON 문서
- 역할: EC2 인스턴스나 AWS 서비스용
- 보안: MFA + 비밀번호 정책
- AWS CLI: 명령 줄을 사용하여 AWS 서비스 관리
- AWS SDK: 프로그래밍 언어를 사용하여 AWS 서비스 관리
- 접근 키: CLI 또는 SDK를 사용하여 AWS 접근
- 감사: IAM 자격 증명 보고서 및 IAM 접근 자문