반응형
Provider Block
Provider Block에 인증정보를 하드코딩을 함.
--> 테라폼 코드가 유출되면 admin 권한도 유출됨
provider "aws"{
region = "..."
access_key = "access-key"
secret_key = "secret-key"
}
보완 방법
1. 환경변수 설정
$export AWS_ACCESS_KEY_ID="my-access-key"
$export AWS_SECRET_ACCESS_KEY="my-secret-key"
- 단점: 재부팅하거나 쉘을 바뀌면 환경변수를 재설정해야함.
2. 설정파일
$aws configure
--> access key입력
Q. 태라폼이 다른 서비스(EC2 인스턴스 Github Action)에서 실행한다면?
위 방법으로 하면 내 PC에서 사용하는 자격증명을 계속 쓸 수 없음(위험함, 관리가 안됨).
3. 임시 보안자격증명
1) AWS한테 임시 보안 자격증명을 요청
ex) EC2 Instance가 s3에 접근하기 위해 임시 보안 자격 증명을 요청함
- EC2 Instance가 임시 보안자격증명 발급 요청(IAM Role 설정 -> AssumeRole 설정되있음.)
- (AssumeRole에는 AWS의 리스트를 조회할 수 있는 권한이 있음)
- AWS에서 검증
- EC2 Instance에 발급
- EC2 Instance는 임시 보안자격증명으로 s3에 접근함.
2) OIDC를 통해 AWS Identity Provider에게 받음.
ex) github action에서 s3에 접근하기 위해 OIDC를 이용
- github action이 github OIDC Provider(매개체)에게 임시 보안자격증명을 요청
- github OIDC Provider는 AWS Identity Provider에게 발급 요청 전달
- AWS Identity Provider는 IAM의 Identity Provider에서 생성(github provider를 생성)
- IAM의 Roles에서 Role 추가함
- 위의 Identity Provider를 주체로 설정
- Trust relationships에서 AssumeRoleswithIdentity 권한 부여
- "Condition" 설정에서 특정 repo를 적어 해당 repo만 해당 Role을 사용할 수 있게함.
- "repo: github organization(계정)/folder:"
- AWS Identity Provider는 검증을 한 후 발급해 줌
- github OIDC Provider는 받은 임시 보안자격증명을 github action에게 전달
- github action은 임시 보안자격증명으로 s3에 접근하게 됨.
- github action에서 2번에서 Role을 적음 --> 임시 보안자격증명을 받게됨.
==> github action에서 s3를 조회할 수 있게 됨.
반응형
'Public Cloud > Terraform' 카테고리의 다른 글
.gitlab-ci.yml (0) | 2023.02.01 |
---|---|
Terraform이란 (0) | 2023.01.13 |
Terraform - 중앙 집중식 비밀 저장소 (0) | 2023.01.13 |
Terraform - for expression (0) | 2023.01.13 |
Terraform - for_each 반복문 (0) | 2023.01.13 |