본문 바로가기

일/인프라

gcp workload identity federation 사용 간단 정리

기존 gcp는 인증을 위해선 secret key를 json으로 받아서 인증해야 하거나 브라우저로 구글 계정을 인증해야 했다.

해당 기능은 보안상의 위험이 있어 workload identity federation이라는, 신뢰 가능한 외부 키와 연동해서 단기 인증 키를 받아오는 기능이 있다. 

 

python code로 빅쿼리의 데이터를 조회해서 db에 넣는 배치를 aws 상에서 구동한다. 

 

개요도는 아래와 같다

1. gcp 서비스 계정 및 빅쿼리 접근 용 custom role 을 생성한다

2. project iam member로 서비스 계정 및 custom role을 매핑한다

3. workload identity pool 및 workload identity pool provider 를 aws 용으로 생성한다 

4. service iam member 로 role을 iam.workloadIdentityUser 로 하고 member는 pool의 principalSet을 등록한다. 

5. provider에서 해당 서비스 계정용 클라이언트 라이브러리 구성 json file을 다운받아 프로젝트 폴더에 저장.

6. python 에서 aws boto3 현재 session을 이용하여 임시 토큰 발급 받은 뒤 os 환경 변수로 설정.

7. python 에서 google.auth 의 load_credentials_from_file 메서드를 이용해서 gcp 임시 credential을 얻어온다(google_auth 패키지 필요)

 

 

참고 사이트 

https://binx.io/2022/09/26/setup-keyless-authentication-to-google-cloud-for-github-actions-using-terraform/

 

Setup keyless authentication to Google Cloud for GitHub Actions using Terraform

Use workload identity federation in your GitHub Actions to avoid dealing with JSON service account keys when interacting with Google Cloud.

binx.io

https://cloud.google.com/iam/docs/using-workload-identity-federation

' > 인프라' 카테고리의 다른 글