실습으로 배우는 AWS 핵심 서비스 강좌를 정리했습니다.
Root Acoount : 회원 가입 때 사용한 이메일 계정
즉시 IAM 사용자를 생성해서 사용하는 것을 권장한다.
Root account는 MFA 등을 이용해서 이중화를 하는 것이 안전하다.
region : 2개 이상의 AZ의 모임. 각 region은 각각 다른 AWS 서비스를 제공한다.
AZ(Availability zones) : 하나 이상의 데이터 센터로 구성됨
엣지 로케이션(PoP) : CDN, DNS 서비스를 제공
서울 리전 : ap-northeast-2
1. IAM 서비스로 이동
2. Admin 그룹 생성 및 권한 부여
- 그룹 이름 설정 후 'AdministratorAccess' 정책 추가 (모든 Action, resource 허용)하여 그룹 생성
3. Admin 사용자 생성
- 사용자 이름 임의 지정, AWS Management Console 액세스 체크, 비밀번호 재설정 해제 후
사용자를 그룹에 추가
4. IAM 어드민 유저로 로그인
- 사용자 추가 후에 csv 파일을 받으면 login link가 생기는데 이 링크로 항상 로그인 해서 계정에 접근하면 된다.
Admin을 만들어서 사용하는 이유? 이 계정이 노출되어 있을 때 root account를 이용해 admin 유저를 제어할 수 있기 때문이다.
1. developer 그룹 생성 및 권한 부여
- 그룹 이름 설정 후 'PowerUserAccess' 정책 추가
(admin 계정 보다는 권한이 작아야 하므로, resource는 사용할 수 있지만 계정 정보 관련에는 대부분 접근할 수 없음)하여 그룹 생성
2. 개발자 사용자 생성
- 사용자 이름 임의 지정, AWS Management Console 액세스 체크, 비밀번호 재설정 해제
3. IAM 개발자 계정으로 로그인
- 어드민 계정과 동일하게 로그인 가능하지만, IAM 서비스엔 접근이 불가능하다.
IAM 대시보드에서 변경 가능하다.
계정의 별칭을 지정함으로써 회원 번호 부분이 별칭으로 바뀌는데,
이 별칭을 사용해서 바로 로그인이 가능하다.
AWS Identity and Access Management
: AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스.
사용자가 리소스를 사용하려고 할 때 권하능ㄹ 세부적으로 조정하는 서비스
- Resource? 자원. AWS에서는 컴퓨팅, 스토리지, 네트워크 등
- Access : 리소스를 조작 및 제어하는 것
Authentication(인증) -> Authorization(권한 부여) -> resource(자원)
AWS에서 인증을 담당하는 주체는? User (id, key방식 두 가지 존재)
권한 부여를 담당하는 주체는? Policy
IAM Group
- 공통의 권한을 가지는 사용자의 집합
- 그룹을 생성 후 IAM Policy 연결
- 그룹에 사용자 추가
- 그룹 내 사용자는 그룹과 연결된 Policy의 권한을 부여받음.
IAM User
- 그룹의 IAM Policy에 따라 권한을 부여받음.
(사용자에게 직접 Policy를 추가할 수도 있음.)
- IAM User의 인증방식과 사용 용도
1) ID/PASSWORD 방식 : 관리 콘솔에서 사용
2) AcessKey ID / Secret Access Key : CLI, SDK, Web API에서 사용
- Long term credential이라고도 함(영구적인 권한이므로)
- AWS 관리 정책
AWS가 미리 만들어 놓은 정책, 사용자는 편집 불가능
- 사용자 관리 정책
사용자가 직접 생성한 정책
기존 정책으로부터 생성 및 수정 또는 직접 생성 가능
GUI 편집기 / JSON 편집기 모두 사용 가능(GUI 편집기가 조금 더 쉽다)
Effect : 허용, 거부
Action : api(행동) ex)"Action" : "s3:*" - s3만 사용가능
Resource : aws resource(ec2, s3와 같은)
- Inline 정책
1회성 정책. 재사용이 안됨
- 특정 개체에게 리소스의 접근 권한을 부여하기 위해 사용
(IAM 사용자, AWS 서비스, 다른 계정, AWS 관리계정)
- Short term credential(임시 자격 증명) - 사용할 때만 잠깐 권한 부여
- 주로 AWS 서비스들이 직접 다른 AWS 서비스를 제어하기 위해 사용함.
사용자나 응용 프로그램에서 일시적으로 AWS 리소스에 접근 권한을 얻을 때도 사용
- Role ARN : 역할을 호출하기 위해 필요. role을 식별하기 위한 식별자. role의 주소(url)
- IAM policy : 이 역할이 어떤 권한을 부여할 수 있는가
- 신뢰 관계 : 어떤 개체가 IAM Role을 호출할 수 있는가
- 그 외 유지시간, 이름 등도 필요
임시 자격증명이기 때문에 보안상 유리하다.
- EC2 role : ec2 인스턴스에게 aws 서비스 접근 권한을 부여
- Lambda Execution Role: 람다에서 s3로부터 파일을 읽고 싶을 때 role에 권한 지정
- 다른 계정의 사용자에게 내 계정의 DynamoDB에 임시 접근 권한 부여
- 안드로이드 앱이 S3로 직접 동영상을 업로드 할 때 사용
ARN(Amazon Resource Name)
아마존에서 리소스를 유일하게 식별할 수 있는 구분자
형태 : arn:partition:service:region:account-id:resource-id
ex) arn:aws:iam::123456789:user/honux
arn:aws:s3:::mybucket/folder/file1
역할 변경을 위해서는 먼저 admin 사용자로 로그인 후
1. 역할 만들기
다른 AWS 계정(보통 AWS서비스를 많이 쓴다)
-> 정책 선택 (IAM 권한을 주려면 IAMFullAccess)
2. 신뢰관계 편집
Principal 부분의 url 뒷 부분의 'root' 부분을 권한을 주고 싶은 사용자의 이름으로 바꾼다.
3. 역할 변경
권한을 받은 객체의 아이디로 로그인 해서 역할 전환(이름부분 클릭을 통해 접속가능)
계정, 생성한 역할 이름, 표시이름 및 색상 지정하면 역할 전환됨.
CLI : AWS Command Line Interface
1. 사용자에게 access key를 만든다.
2. aws configure 명령으로 기본 설정
access key 로그인
region name : ap-northeast-2 (알파벳 생략)
output format : none
3. 이후 aws s3 ls 와 같은 명령어를 사용 가능하다.
설정 내용은 aws 폴더에서 credential, config에서 확인 가능하다.