이 글은 24년 하반기 AWS Certified Solutions Architect - Associate(이하 AWS SAA-C03) 자격증 취득을 위해서 아래 유데미 강의를 보고, 공부한 내용을 정리하였습니다.
https://www.udemy.com/course/best-aws-certified-solutions-architect-associate
AWS 시작하기
On-Premise : 물리적인 서버를 직접 설치하여 운영
On-Demand : 소비자가 있는 곳까지 찾아가서 상품과 서비스를 전달하는 것, 소비자의 요구 사항에 따라 즉시 제공하는 방식 (*demand : 수요)
리전 및 AZ
AWS Regions
데이터 센터의 집합 (ex. us-east-1) 대부분의 서비스는 특정 리전에 연결되어 국한됨.
A 리전에서 쓰던 서비스를 다른 리전에서 쓰려고하면 서비스를 처음 사용하는 셈이 되는 것.
- 리전 선택 방법
1. 법률 준수 : 특정 국가는 자국 내에 데이터를 둬야함
2. 지연시간(latency) : 지리적으로 가까운 곳 선택
3. 서비스 유무 : 특정 리전엔 특정 서비스가 없을 수 있음
4. 요금 : 리전마다 요금 차이가 있음
AWS Availablity Zones
각 리전은 3~6개의 AZ를 가짐 (ex. ap-southeast-2a, ap-southeast-2b, ap-southeast-2c)
각 가용 영역은 여분의 전원, 네트워크, 통신을 가진 1,2개의 데이터 센터로 이뤄짐 -> 재난 발생에 대비해서 분리되어 있음
데이터 센터끼리 높은 대역폭의 초저지연 네트워크로 서로 이어져있음 -> 합쳐져서 리전을 구성
Edge Location
전송 지점, Points of Presence
40개 국가, 90+ 도시에, 400+ 전송지점을 가짐. 적은 latency를 제공
글로벌 서비스 : ex) IAM, Route53, CloudFront, WAF
리전 국한 서비스 : ex) EC2, Lambda
IAM (Identity and Access Management)
Users & Groups
Root account 계정 관리에만 사용해야하고, Users를 생성해서 권한을 부여해 사용해야함
- 하나의 사용자는 조직 내의 한 사람에 해당, 그룹으로 유저를 묶을 수도 있음
- 그룹에는 사용자만 배치가능, 그룹에 그룹 배치 불가, 어느 그룹에도 속하지 않는 유저 존재 가능
- 한 사용자가 다수의 그룹에 존재 가능
Permissions
- JSON 문서로 권한 정의, user가 aws 서비스를 이용하도록 허용
- AWS에서는 least privilege principle(최소 권한의 원리) 적용.. 꼭 필요로 하는 권한 이상을 주지 않는 것
유저 생성
>> IAM - Users - IAM 사용자 생성 - 유저명 - IAM User 생성 - pw 추가 - 권한 추가 - tag추가
(* tag는 리소스에 메타데이터를 제공할 수 있게 해줌)
최초 계정 생성 이후 루트 계정 대신 관리자 사용자 생성 (admin group - AdministratorAccess)
>> Account Alias(account ID 대용으로 유일해야함) 생성 후 로그인 URL 간소화 가능
IAM Policies inheritance
(* inheritance: 상속)
인라인 정책 - 특정 사용자에게 1:1로 연결되는 정책
정책 구조와 정책 명명법
- Version : 보통 2012-10-17로 정책 언어 버전
- Id : 정책을 식별하는 id, optional
- Statement(문장) : 1<= n개로 이뤄짐, required
- Sid : 문장의 식별자, optional (ex. 1)
- `Effect : 이 정책이 허용인지 거부인지 Allow, Deny 설정 (ex. Allow)
- `Principal : 이 정책이 적용될 사용자/계정/역할 로 구분 (ex. "AWS": ["arn:aws:iam::1234567890:root"])
- `Action : 이 정책에 의해 허용/거부 되는 API 호출의 목록 (ex. ["s3:GetObject"])
- `Resource : 적용될 action의 리소스의 목록 (ex. ["arn:aws:s3:::mybucket/*"])
- Condotion : 문장이 언제 적용될지 결정, optional
IAM 실습
유저에게 권한 부여 : IAM - User - Add permissions - (그룹추가/권한복사/직접정책추가) - Permissions policies 중 선택.
그룹 생성 : IAM - Create user group - 유저 추가 유무 - 그룹 권한 추가
admin IAM 의 policy 형태 (모든거에 full access)
{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
Action 분석 예시 : "iam:Get*" : iam에서 Get으로 시작하는 모든 API 호출이 허용됨 GetUsers, GetGroups...
나만의 policy 생성가능, JSON이나 visualEditor로 생성가능
IAM MFA
IAM-Password Policy
- 최소 PW 길이나, 특정 문자형, PW만료기간, re-use 정책을 설정 가능
`MFA(Multi Factor Authentication)
- MFA = PW + Security device 이용
- PW 도난이나, 해킹당해 잊어버린 경우에 계정 손상을 막아줌
- `종류
- Virtual MFA device(하나의 전화기에서만 작동하는, Google Authenticator/Authy)
- U2F(Universal 2nd Factor) Security Key : ex) YubiKey(타사 제품 - USB형태 물리적장치로 단일보안키 지원)
- Hardware Key Fob MFA Device : ex) Gemalto(타사 제품 - TOTP물리적장치)
- AWS GovCload US를 이용한다면 : SurePassID에서 제공하는 TOTP물리적장치 보안토큰
MFA 설정 : Security Credentials - select MFA device <- 최대 8개의 MFA 등록 가능
AWS 액세스 키, CLI, SDK
AWS 액세스하는 방법 3가지 : AWS Management Console(웹), AWS CLI(터미널), AWS SDK(코드)
Access Key, Secret Access Key 생성 가능...
CLI를 사용하면 AWS서비스의 public APIs로 직접 접근 가능 -> Open Source
AWS CLI는 사실 Boto라는 Python용 AWS SDK에 구축되어 있음
AWS CLI에서 액세스 키(AK) / 시크릿 키(SK) 등록시
1. aws configure
2. AK, SK, default region 설정
aws iam list-users 로 유저 리스트 확인 가능 (단 ListUsers 권한이 있어야함)
AWS CloudShell
* 단 특정 리전에서만 쓸 수 있음
- aws 에서 무료로 쓸 수 있는 터미널과 같음
- 단 Console에 로그인 되어있는 사용자의 permission을 따라감
- '--region' 인자로 API 호출을 할 리전 설정 가능, default는 현재 로그인된 리전
- 저장소가 유지되어서 upload/dowload file 가능
`IAM Roles for Services
- 몇몇의 AWS 서비스는 우리의 계정에서 실행되어야함, 사용자와 마찬가지로 권한부여 필요
- IAM Role은 AWS 서비스에 AWS에서 작업을 수행할 수 있는 권한을 부여하는 것
- IAM Role은 사용자와 같지만, 실제 사람이 아닌 AWS 서비스에 의해 만들어지는 것
- ex) EC2 인스턴스가 AWS에 있는 어떤 정보에 접근하려고 할 때, IAM Role 객체에 의해 권한을 부여받아야함
- EC2, Lambda, CloudFormation 등에서 필요로함
role 생성 방법 : IAM Role - 신뢰할 수 있는 entity type 선택(AWS service) - Use case(적용할 서비스) - Add permission(예를들어 EC2가 IAM을 읽을 수 있게 하려면, 여기서 IAMReadOnlyAccess를 선택) - Role name
자격 증명 보고서(Credential report) - CSV 형태로 파일 얻을 수 있음
- MFA 활성여부, Access Key 여부, 마지막 PW 변경 일시 등 보안 측면 검토 가능
IAM Access Advisor : 어떤 사용자가 언제 어떤 서비스에 접근했는지 확인 가능
- 사용자가 올바른 권한을 가지고 있는지 실제로 확인가능
IAM 모범 사례
- Root 계정은 계정 세팅 외에는 사용하지 않을 것
- 한 명의 AWS 사용자는 한 명의 물리적 사용자와 동일할 것
- 사용자를 생성하고, 그룹에 할당해서 보안이 그룹 수준에서 관리되도록 할 것
- 강력한 PW 정책과 MFA를 사용할 것
- AWS 서비스에 권한을 부여할 때, 역할을 생성하고 사용할 것
- 프로그램에서 액세스할 땐 AK를 사용
- 자격 증명 보고서와 액세스 관리자로 권한을 감시할 것