Public Cloud/Terraform

Terraform - 민감정보 보안 / Provider Block / OIDC

공기반 코딩반 2023. 1. 13. 17:34
반응형

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를 이용

  1. github action이 github OIDC Provider(매개체)에게 임시 보안자격증명을 요청
  2. 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:"
  3. AWS Identity Provider는 검증을 한 후 발급해 줌
  4. github OIDC Provider는 받은 임시 보안자격증명을 github action에게 전달
  5. 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