일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- GDPR
- cissp
- aws기본
- 리눅스기초
- Linux
- terraform with aws
- 리눅스명령어
- aws terraform
- linux명령어
- 주피터노트북 설치
- aws
- Cissp sdlc
- 리눅스기초명령어
- AWS구축
- AWS CodeDeploy
- aws따라하기
- terraform기초
- opt/anaconda3/bin/jupyter_mac.command
- terraform기본
- terraform따라하기
- 직무분리
- 리눅스
- AWS CI/CD
- 쉘스크립트
- 최소권한
- aws기초
- blue/green배포
- AWS배포자동화
- AWS실습
- AWS 공격테스트
ysuekkom의 IT study note
[AWS 패턴] AWS IAM 사용자그룹 및 사용자 추가, 권한/정책 부여 실습(Terraform IaC) 본문
[AWS 패턴] AWS IAM 사용자그룹 및 사용자 추가, 권한/정책 부여 실습(Terraform IaC)
ysuekkom 2023. 1. 10. 23:41개인 aws study note입니다.
수정이 필요하거나 다른 의견은 댓글로 남겨주세요.
(무단 복제 및 배포를 금함)
AWS IAM으로 보안성 및 편의성 확보하기
IAM(Identity Access Management)는 AWS 서비스를 운영하는데 있어 사용자 접근 관리와 사용자그룹&사용자 관리를 하기 위한 것이다. 접근에 대한 보안 강화, 특정 AWS 서비스에 대한 세부적인 제어, Analyzer 기능으로 액세스 분석 등 주요한 기능들에 대해 알아보자.
IAM은 간단히 말해서 AWS 서비스와 리소스에 대한 접근을 제한하고 안전하게 관리하는 기능이다.
사용자 그룹을 생성하여, 사용자를 추가하고 권한/정책을 부여하여 편의성과 보안성을 모두 가져갈 수 있다.
AWS 계정 생성 시, 단일 로그인 ID로 접속하여(AWS 계정 루트 사용자) 계정을 생성할 때 사용한 이메일 주소와 암호로 로그인하여 액세스 한다.
이때 사용자 그룹 자체가 식별자가 되는 것은 아니며, 액세스 시 정책에서 식별자로 사용된다.
즉 개발자 그룹(사용자 그룹)을 생성하여, 그 안에 진행중인 프로젝트 unit별 개발자를 추가하면(사용자 추가), 한 번에 동일한 그룹 내 속한 사용자들의 권한(정책) 을 손쉽게 지정/추가/삭제할 수 있다.
IAM이 제공하는 기능
-AWS 계정에 대한 공유 액세스: 암호나 액세스 키를 공유하지 않고, AWS 계정의 리소스를 관리하고 사용할 수 있는 권한을 다른 사람/그룹에게 부여할 수 있음
-세부적인 제어 관리: 리소스에 따라 여러 사람에게 다양한 권한을 한 번에(그룹화) 또는 사용자별 개별 권한을 부여할 수 있음
-보안 강화: EC2 인스턴스 실행 애플리케이션의 경우 IAM을 사용하여 자격증명을 안전하게 제공할 수 있음
멀티팩터인증(MFA)-개별 사용자에게 2차 인증 설정 가능
-필요에 따라 임시 액세스 권한 부여: ID 페더레이션
-무료 이용 서비스: IAM 또는 STS(Security Token Service는 추가 비용 없이 AWS에서 제공하는 서비스임
IAM 정책(Policy)
리소스에 대해 어떠한 권한들을 가지고 Action을 수행할 수 있는지 정의된 것으로, IAM에 사용되는 기존 권한 부여 모델은 RABC이다.
**RBAC(Role Based Access Control)
역할 기반으로, 개인의 직무에 따라 권한을 정희하는 방법. AWS 내에서 역할은, 사용자가 수임할 수 있는 IAM의 자격증명인 IAM 역할을 말한다. 다양한 직무에 대해, 직무별 정책을 생성하여 RBAC를 구현하는 것이다. 이때 CISSP에서 가장 중요시했던 "최소 권한의 원칙"에 근거한 최소 권한 부여가 가장 좋은 정책 연결 법이다.
아래 그림은 AWS 공식문서에서 발췌한 그림이다. 아래 그림으로 간단하게 예를 들어보겠다. ( 1번이 관리자 그룹으로, 2(노트북그림)번이 인프라 운용그룹 3번이 개발자 그룹으로 가정한다.)
이들은 수행하는 직무/역할(관리자, 인프라 운용, 개발자 등)이 각각 다를 것이고, 불필요하게 모든 접근을 허용할 필요가 없다(해서도 안된다). 관리자의 경우, 인프라 운용 혹은 개발자의 리소스레 접근할 필요가 없다. 따라서 관리자 그룹에 한정된 리소스만 확인하는 것이다.(첫 번째 줄) 다음으로, 환경을 구축하고 개발한 개발자그룹의 경우, 인프라 운용그룹(2번째 줄)의 리소스를 접근할 수 있도록 설정한다. 운용자 그룹 역시 개발 리소스에 접근할 필요가 없으므로, 3번째 줄에 접근권한을 주지 않는다. 아~주 단순하게 예를 들자면 위와 같은 가정이 RBAC에 근거한 최소 권한을 부여한 예로 들 수 있다.
즉 정책은 사용자그룹에 포함된 사용자에게 부여할 수 있고, 여러 사용자 그룹이 동일한 정책의 권한을 부여받을 수 있다.
IAM 정책 구성 요소
IAM은 JSON 형식으로 구성되며, AWS에서 제공하는 권한과 정책을 사용해도 되지만, 개인이 커스텀해서 사용할 수 있다.
Effect: 접근 정의(허용/거부)
Principal: 누가 어떤 것을 수행할 수 있는지 정의
Action: 수행할 수 있는 내용 정의
Resource: 리소스 정의
Condition: 정책 적용 조건 정의
매니지먼트 콘솔에서 생성하는 것이 아닌, 테라폼으로 생성 후 콘솔에서 확인 및 추가 설정을 해보자.
IAM은 리전에 종속적인 서비스가 아니다.
terraform help를 통해 명령어 확인
terraform option >> -parallelism=n
이미 생성된 리소스가 있으면 동시에 검사한다.(기본값 10 > 직접 지정 가능 옵션)
리소스가 많을 경우, 직접 수치를 늘려서 입력하면 검사 시간이 줄어들게 된다.(팁)
terraform apply
IAM 사용자 생성 완료, 하지만 접속 불가능
왜 접속 불가? 패스워드와 MFA 설정되어 있지 않아,직접 설정이 필요함
혹은 CI를 통한 자동화, AWS CLI를 통해 설정 등 방법을 선택하여 terraform에서 생성한 사용자의 패스워드를 설정해 주어야 함
-AWS CLI 이용 IAM 사용자의 초기 암호 설정하기(AWS 공식문서)
CLI를 통해 초기 암호를 설정할 수 있다. 초기 암호를 설정/변경해준다.
aws iam create-login-profile --user-name MyUser --password My!User1Login8P@ssword --password-reset-required
aws iam update-login-profile --user-name MyUser --password My!User1ADifferentP@ssword
-콘솔에서 패스워드 설정하는 방법
IAM > User > UserName선택 > 보안 자격 증명 > 콘솔 비밀번호 비활성:관리 선택
*내가 원하는 패스워드로 설정 가능, 임의 비밀번호 받기 가능(선택)
설정 후, 패스워드 입력하여 접속 가능
>ysue.kkom / pw(설정 패스워드 입력하기)
>URL 접속 시 위 로그인/패스워드 정보 필요
콘솔로그인 링크로 접속 시, 아래와 같이 로그인 정보 확인
사용자 그룹 만들기
앞서 설명하 사용자 그룹을 만들어보자. 아래 사용자 그룹명으로 사용자 그룹을 만들자.
사용자그룹명: devops, devops_group
resource "aws_iam_group" "devops_group" {
name = "devops"
}
resource "aws_iam_group_membership" "devops"{
name = aws_iam_group.devops_group.name
users = [
aws_iam_user.ysue_kkom.name
]
group = aws_iam_group.devops_group.name
}
사용자 그룹 추가 확인
사용자그룹 생성확인
console로 접속하여 terraform IaC로 생성한 사용자 그룹이 모두 생성되었는지 확인해보자.
IAM > 사용자 그룹 devops 그룹이 생성되었으나 "정의되지 않음"
생성된 사용자 그룹에 사용자 추가 확인
정책/권한이 없어서 연결시켜주기
사용자그룹과 사용자를 추가한 뒤에 정책/권한을 연결시켜줘야한다. 자세한 내용은 aws 공식문서에서 확인할 수 있다.
콘솔에서 IAM>사용자그룹>devops(내가 만든 사용자그룹명) > 권한추가(선택)
정책/권한 추가 후, 성공 시 "이 사용자 그룹에 연결된 정책입니다" 확인
부여된 권한 상세보기
사용자 권한 추가로 넣기: s3 full access
or 형태로 policy를 가지게 됨, 즉 사용자 권한과 사용자그룹 권한을 동시에 가지게된다.
IAM 정책평가로직 반드시 확인하고 이해해야 한다. (aws 공식문서)
요약: 그룹이든, 사용자든 allow가 중복 명시되어있으면 OR조건으로 동작하게 되는데, 단 deny정책은 가장 우선시 된다.
cross account(aws account가 나눠져서 권한이 들어가는 경우, AND조건으로 들어감)
IAM에 대한 정의와 IAM 사용자 그룹을 생성하고 사용자를 추가, 정책까지 부여해보았다.
**참고
https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/reference_policies_evaluation-logic.html
따라하며 배우는 AWS 네트워크 입문 저자 김원일, 서종호
'Cloud Service > AWS 패턴' 카테고리의 다른 글
[AWS 패턴] 로드밸런싱 구축 및 DB 연결하기 II편 (0) | 2023.07.25 |
---|---|
[AWS 패턴] PublicSubnet에서 private AZ 내 데이터베이스 LB로 연결/접속하기 I편 (0) | 2023.07.24 |
[aws 패턴] aws 백업 알아보기 - 장애대비편(가용성 확보, 장애대비 오프사이트 구성 등) (1) | 2023.01.14 |
[aws 패턴] 인메모리 캐시 & 고속 RDB를 활용하여 성능 요구사항 만족하기 (0) | 2023.01.09 |
[aws 패턴] 시나리오별 설계/구축 - 가용성 확보하기 (1) | 2023.01.09 |