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 | 31 |
Tags
- 파이널프로젝트
- 운영체제
- 프로그래머스
- 스케일아웃
- 컴퓨터구조
- fatch
- 해시
- 트리맵
- springboot
- 임베디드타입
- 외래키제약조건위반
- 산업은행it
- 구현
- findById
- JPA
- CS
- 2178
- CPU스케줄링
- 백준
- BFS
- 폰켓몬
- 트리셋
- Spring JPA
- SpringBatch
- 코테
- flyway
- 프로젝트
- 그래프탐색
- DB replication
- 산업은행청년인턴
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 (1) | 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 |