- IAM : Identity and Access Management, Global
- IAM 계정은 root 사용자이고, 계정을 만들 때에만 사용해야 함.
- root 계정으로 동일 관리자 권한을 가진 사용자를 생성할 수 있음 => IAM 사용자
- 사용자를 그룹으로 묶을 수도 있음
- 그룹 내에 그룹이 배치될 수 없음
- 사용자가 여러 그룹에 속할 수 있음
Json 문서 형태의 정책을 그룹이나 사용자에 적용할 수 있음 (어떤 작업, 어떤 서비스에 대한 권한을 설정)
최소 권한의 원칙
인라인 정책 : 그룹이 아닌 사용자에게 직접 부여하는 권한
특정 사용자가 두 그룹 이상에 속해있을 경우, 두 그룹의 권한을 모두 상속 받음
aws console 내 사용자 -> 권한 탭에서 그룹 또는 인라인정책을 통해 부여받은 권한목록 확인 가능
특정 권한을 선택하면 세부 권한 확인 가능, JSON 버튼을 누르면 위 사진처럼 JSON 포맷의 세부 권한정보를 확인할 수 있음
aws console 내 사용자 -> 그룹 탭에서 속해있는 그룹을 확인할 수 있고, 추가하거나 제거할 수도 있음.
정책 구조
- Version : 정책의 버전 (날짜 형식)
- id : 식별자 (Optional)
- Statement : 실질적 정책 내용
- Sid : 정책 내용의 식별자 (Optional)
- Effect : 특정 API에 대한 접근을 허용할지 결정 (Allow/Deny)
- Principal : 특정 정책이 적용될 사용자, 계정, role로 구성
- Action : Effect에 의해 허용되거나 거부되는 API 호출 목록
- Resource : action이 적용될 resource 목록
- Condition : Statement가 언제 적용될지에 대한 조건 (Optional)
- 그룹과 사용자들의 정보를 보호하는 방법
비밀번호 정책 정의 -> 복잡할 수록 보안이 강해짐 (ex. 비밀번호 패턴 설정, 만료기간, 변경요구, 이전 비밀번호 변경으로 제한 등)
(시험) 다요소인증 MFA (Multi-Factor Authentication) : 비밀번호와 함께 사용하는 보안장치 (OTP 같은거라고 보면 됨)
- 루트 계정, IAM계정은 반드시 보호 필요,
ex. 로그인 시, 비밀번호 입력과 함께 MFA 토큰필요 - MFA 옵션
가상 MFA 장치 (google auchentication), 여러개 토큰 지원 => 하나의 장치로 여러 사용자 이용 가능
U2F 보안 키 : 물리적 키 (likes USB), 하나의 물리적 장치에서 관리하는 보안 키를 활용, 하나의 키로 여러 루트 계정과 IAM 사용자를 지원
하드웨어 키 팝 : U2F 보안키와 동일
미국 정부 클라우드인 AWS GovCloud 활용 시 필요
- 루트 계정, IAM계정은 반드시 보호 필요,
- AWS에 접근하는 방법
- Console : password + MFA로 보호됨
- AWS CLI : 터미널에서 접근 access key로 보호됨
- AWS SDK : 애플리케이션 코드에서 접근, access key로 보호됨
- Example : AWS CLI는 Python용 AWS SDK를 활용해 구축함.
- Example : AWS CLI는 Python용 AWS SDK를 활용해 구축함.
AWS CLI : AWS public API에 직접 접근 가능, 명령어 조합의 스크립트를 작성하여 자동화도 가능
AWS CLI는 오픈소스로 GitHub에서 확인 가능
access key 생성 : AWS Console에서 생성 (암호 형태)
- Access Key ID ~= username (공유x)
- Secret Access Key ~= password (공유x)
- AWS CLI 실습 in window
- aws CLI install windows 검색
- MSI 설치 프록그램을 통한 window에서의 AWS CLI 설치
- 프롬프트창에서 aws CLI 설치되었는지 확인 : aws --version 명령어
- AWS CLI 실습 in mac OS
- install aws cli mac 검색
- pkg 설치 프로그램을 통한 mac에서의 AWS CLI 설치
- 터미널에서 aws CLI 설치되었는지 확인 : aws --version 명령어
- AWS CLI 사용
- Access key는 사용자 -> Security Credentials에서 생성
- 터미널에서 aws configure 명령어를 입력하여 access key 입력창 출력
- aws 명령어를 입력하면 명령어에 맞는 응답을 JSON형태로 출력해줌 (ex. aws iam list-user : 내 계정내 모든 사용자 출력)
- aws console을 통해 부여받은 키에 해당하는 계정에 특정 권한을 제거할 경우, aws CLI에서도 동일하게 적용됨.
Cloud Shell : AWS에서 무료로 제공하는 터미널 서비스, 터미널 대신 AWS에 명령을 내릴 수 있음 (console 화면 우측 상단에 위치, 사용가능 Region 한정)
Cloud Shell은 공용 저장소 사용 -> 껐다 켜도 이전 터미널에서 생성한 파일이 남아있음 -> 로컬로 다운로드 하거나 로컬에서 업로드할 수도 있음
터미널 서식변경도 가능
멀티 터미널도 가능
IAM ROLE : AWS 인스턴스에 의해 사용되도록 만들어진 Role (ex. 특정 EC2 서비스가 타 서비스를 이용하기 위한 권한 집합, EC2 Instance Roles)
IAM Security Tools (기능이라 보면 될 듯)
- IAM Credentials Report (IAM account-level) : 특정 IAM 계정(ex. djeon)에 대한 사용자 목록과 그들의 자격증명(id, pw) 상태를 확인
- IAM Access Advisor (user-level) : 사용자(ex. aws-djeon-v1)에 부여된 권한과 마지막 접근 시간 확인 (권한 사용여부 확인을 통한 최소권한 원칙 준수)
'개발 > AWS' 카테고리의 다른 글
[AWS] Load Balancer (0) | 2024.05.06 |
---|---|
[AWS] EC2 (3) (0) | 2024.05.03 |
[AWS] EC2 (2) (1) | 2024.04.30 |
[AWS] EC2 (1) (0) | 2024.04.29 |
[AWS] AWS Region (0) | 2024.04.13 |