Notice
                              
                          
                        
                          
                          
                            Recent Posts
                            
                        
                          
                          
                            Recent Comments
                            
                        
                          
                          
                            Link
                            
                        
                    | 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 
| 9 | 10 | 11 | 12 | 13 | 14 | 15 | 
| 16 | 17 | 18 | 19 | 20 | 21 | 22 | 
| 23 | 24 | 25 | 26 | 27 | 28 | 29 | 
| 30 | 
                            Tags
                            
                        
                          
                          - 코테
 - 프로젝트
 - 산업은행청년인턴
 - 산업은행it
 - flyway
 - 임베디드타입
 - 백준
 - 그래프탐색
 - 2178
 - 컴퓨터구조
 - Spring JPA
 - 외래키제약조건위반
 - DB replication
 - CS
 - fatch
 - 파이널프로젝트
 - SpringBatch
 - CPU스케줄링
 - 트리맵
 - 스케일아웃
 - 프로그래머스
 - 폰켓몬
 - JPA
 - 구현
 - BFS
 - 해시
 - 운영체제
 - 트리셋
 - findById
 - 가상 면접 사례로 배우는 대규모 시스템 설계 기초
 
                            Archives
                            
                        
                          
                          - Today
 
- Total
 
나 JAVA 봐라
[AWS SAA-C03] 4장 AWS IAM 본문
IAM 이란?
- Identity and Access Management
 - Globel service이기 때문에 리전 상관없이 제공된다
 - Root Account (루트 계정)이 있는데, 되도록 사용하지 말고 공유하지 말자.
 - User들은 그룹으로 묶일 수 있으며,
 - 그룹에는 오직 User들만 포함된다. (그룹이 또 다른 그룹을 포함할 순 없다. )
 - User는 2개 이상의 그룹에 포함될 수 있다.(multiple group)
 
IAM : Permissions
- Users, Groups는 JSON 형태의 Policy(정책)를 부여받는다.
 - Policy는 유저의 permission(권한)에 대해 정의한다.
 - 유저에게 권한 부여할 때에는 최소한으로 부여한다. (least privilege principle -> 최소 권한 원칙)
 
IAM: Policy 부여받는 방법, 조건들

- 그룹마다 적용받는 정책 다르게할 수 있다.
 - 사용자가 동시에 여러 그룹의 정책을 부여받을 수 있다.
 - 그룹에 속하지 않더라도 원하는 사용자 개인에게 인라인 정책 (inline policy) 부여 가능하다.
 - ex) Developers 그룹에 administorAccess Policy(정책) 부여하면, 모든 서비스에 대한 권한을 갖게 된다.
 
IAM Policies 구조

- JSON으로 구성된 Policy다. AWS에서도 왠만한 것들은 Policy로 있지만, 직접 Policy를 생성해서 user, group에 부여할 수 도 있다.
 - Version: policy language version, always include “2012-10- 17”
 - Id: an identifier for the policy(optional)
 - Statement: one or more individual statements(required)
- 내부 구성
 - Sid : statement의 식별자
 - Effect : 해당 statement를 allow 혹은 deny
 - Principle : 정책이 적용될 account, user, role (정책 적용될 api 목록)
 - Action : 이 정책에서 allow 혹은 deny할 action들
 - Resource : action이 적용될 resourse들
 - Condition(optional) : policy가 언제 적용될지 (contition)
 
 
이렇게 Policy를 부여받고 다양한 서비스를 활용할 수 있을 때, 누군가 해킹하면 큰일 나겠죠? (당연...)
그렇기 때문에 보안도 강화하는 것이 중요합니다.
보안 강화를 위한 두 가지 방법이 있는데, Password 정책과 MFA 입니다.
IAM Password Policy
- AWS에서는 기본적으로 디폴트 password 정책을 적용한다.
 - 그렇지만 직접 pw 정책을 custom할 수 있다.
- 비밀번호 최소길이 설정하기
 - 특정한 문자 타입 넣기
- 대소문자 포함하기
 - 숫자 포함하기
 - 특수문자 포함하기
 
 - 모든 IAM user들은 주기적으로 비밀번호를 바꾸도록 한다.
 - 비밀번호 재사용을 막는다.
 
 - 위와 같이 커스텀할 수 있다.
 
Multi Factor Authentication - MFA
- 비밀번호 정책 말고도 MFA(다요소 인증)으로 보안을 강화할 수 있다.
 - AWS에서 권장하는 방식이다.
 - Root Account, IAM User를 MFA로 보호할 수 있다.
 - MFA = 내가 설정한 패스워드 + 내가 설정한 디바이스의 특정 값(토큰)
 

- MFA를 설정하면, 비밀번호 누출 되더라도 한번 더 MFA로 인증해야하니까 안전함.
 - MFA 디바이스 종류
- Virture MFA Device
- Google Authenticator (폰에서만 가능)
 - Authy : multi device
 
 - Universal 2nd Factor(U2F) Security Key
- USB 처럼 생김.
 - 3rd party
 
 - 뭐 등등 여러가지 디바이스 있는데, 그냥 지금 회사 로그인하려면 폰에서 추가 인증하는거랑 같은 방식임
 
 - Virture MFA Device
 
AWS에 접근하는 3가지 방법
- AWS Management Console : password + MFA로 보호
 - AWS CLI : access key로 보호
 - AWS SDK : access key로 보호
 
Access Key는 콘솔에서 발급받을 수 있고, 사용자 개별로 하나씩 발급받을 수 있으므로 절대 서로 공유 금지임.
+ 까먹으면 걍 재발급 가능함. 근데 발급받을 때 최초 한번만 조회가능하니까 기록 잘해두기
Access Key Id와 Secret Access Key로 구성되어 있음. (map 구조 마냥? ㅎ)
AWS CLI
- 그냥 AWS에서 제공하는 터미널임.
 - 다운 받아서 사용가능하고, 리소스 관리하는 스크립트 작성해서 일부 작업 자동화 시킬 수 있음
 - AWS 서비스에서 제공하는 public API에 다이렉트로 접근 가능
 - CouldShell 서비스
- AWS 클라우드에서 무료로 사용 가능한 터미널, CLI 처럼 사용 가능
 - 글로벌 서비스 아니라 리전 따라 사용 못할 수도 있음. (일단 한국은 사용 안됨. )
 
 
AWS SDK
- 프로그래밍 언어에 맞는 SDK가 각각 있다.
- java, javascript, python,...
 - android, iOS,..
 - Embedded C, arduino,...
 
 - Ex) AWS CLI는 Python용 AWS SDK로 만들어졌다.
 
IAM Roles For Services
- Role은 사용자에게 부여하는게 아니라, AWS 서비스에 부여하는 것임.
 - AWS Service 말고도 다른 데에 부여할 수 있는데 시험범위 아니라 pass
 - role 예시
- EC2 Instance Roles
 - Lambda Funtion Roles
 - EC2가 AWS 특정 API 호출하려할 때, Role을 통해 제대로 권한 받아야 호출할 수 있음.
 
 
IAM Security Tools
각 계정, 사용자들의 Policy를 감사(모니터링) 하기 위한 도구 2가지가 있다.
이것을 잘 사용하면, 사용자가 어떤 서비스를 사용하는지 혹은 안하는지 파악해서 권한을 삭제함으로 '최소 권한 원칙'을 준수할 수 있다.
- IAM Credentials Report (account-level) 자격 증명 보고서
- user 생성 일자, user 마지막 접속 일자, pw 변경 일자, access key 마지막 사용 시간, MFA 사용 여부,.. 등 각 유저에 대한 모든 정보를 확인할 수 있다.
 - 뭐,,, 마지막 접속 일자 확인해서 일하는 사람들 체크하거나, MFA 사용 여부 확인해서 보안 신경 쓰라고 잔소리할 수 있을 듯
 
 - IAM Access Advisor (user-level) 접근 관리자?
- 사용자에게 부여된 권한이 무엇인지, 특정 서비스에 마지막으로 액세스한 시간이 언제인지 등 확인
 - 어떤 서비스 사용 안하는지 확인해서, 사용 안하면 그냥 권한 없애서 '최소 권한 원칙' 준수 할 수 있음
 
 
IAM 가이드라인
그래서, 위의 내용을 바탕으로 어떻게 사용해야 좋은지 정리하자
- root account는 처음 설정 때만 쓰고, 되도록 쓰지 말자
 - 한 명당 user 계정 1개 주자. 계정 돌려쓰지 마라
 - 사용자를 그룹에 넣고, 그룹에 permission을 줄 수 있다. -> 그룹 수준에서 permission 관리 가능
 - PW 정책을 강력하게 만들어라
 - MFA도 쓸 수 있음 써라 강추
 - AWS 서비스에 Permission 줄 때마다 roles 만들고 사용해라
 - CLI/SDK 사용시 AccessKey를 사용한다
 - 계정 권한 감사할 때 IAM Credentials Report & IAM Access Advisor 사용한다
 - IAM User & Access Key는 아무한테도 공유하지 마라
 
IAM 9줄 요약
- Users : IAM User는 실제 물리적 사용자와 매핑되어야 하며, 이 사용자는 AWS Console 패스워드를 갖는다.
 - Groups : 그룹에는 '사용자만' 포함한다. 그룹이 그룹을 포함하진 않는다.
 - Policies : 사용자 또는 그룹에 대한 권한(Permission)을 설명하는 JSON 문서
 - Security: MFA + Password Policy
 - AWS CLI : AWS 서비스를 commend line으로 관리
 - AWS SDK : AWS 서비스를 프로그래밍 언어에 맞게 관리
 - Access Keys : CLI나 SDK에 접근하기 위한 키
 - Audit : IAM Credential Reports & IAM Access Advisor
 
끗. 다음 시간에는 EC2에 대해 알아보겠어요
'DevOps, MLOps > AWS' 카테고리의 다른 글
| [AWS SAA-C03] 7장 EC2 - Instance Storage (6) | 2024.06.19 | 
|---|---|
| [AWS SAA-C03] 6장 EC2 - Associate (0) | 2024.06.18 | 
| [AWS SAA-C03] 5장 Amazon EC2 - Basics (7) | 2024.06.13 | 
| [AWS SAA-C03] 1~3장 AWS 클라우드 개요 (0) | 2024.06.11 | 
| [AWS RDS] Multi-AZ, Read Replica (0) | 2024.01.17 |