본문 바로가기
CSP (Cloud Service Provider)/GCP

[GCP] Workload Identity Federation을 사용하기 위한 Github Action 세팅

by BTC_오은영석사 2023. 5. 19.

베하! 금쪽상담소의 BTC오은영석사와 BTC금쪽이입니다!

 

이번주는 지난주에 이어서 Workload Identity Federation을 사용하기 위한 Github Action 세팅 및 실습을 진행해보겠습니다.

 

지난주 수업이 기억나지 않거나 이해하지 못한 우리 금쪽이 친구들! 아래 링크를 남길테니 꼭꼭 읽어봐주세요~!

 

GCP Workload Identity Federation

베하! 안녕하세요! BTC 금쪽상담소입니다. 이번주는 GCP의 서비스인 Workload Identity Federation과 적용 방법에 대해 알아보겠습니다. Workload Identity Federation은 외부 사용자의 Access를 단기 인증 토큰 및 GC

btcd.tistory.com

 

GCP Console에서의 세팅은 지난주 내용을 참고해 주시면 감사하겠습니다.

 

Github Action이 GCP에 접근할때 Workload Identity Federation를 사용하면 다음과 같은 동작 순서로 진행됩니다.

 

  1. Github Action에서 Token을 요청하게 되면 GIthub OIDC Provider는 Token값을 발급합니다,
  2. 해당 Token 값으로 Access Token을 GCP에 요청합니다.
  3. GCP는 attribute mapping 값을 기반으로 Token 일치 여부를 확인합니다.
  4. 해당 값을 기반으로 WIF 내의 Provider를 통해 SA의 권한이 부여된 Credential을 발급합니다.
  5. 이후 Github Action 내부에서 GCP에 접근하는 모든 Task는 해당 권한을 이용하여 동작을 수행합니다.

 

이제 본격적으로 WIF를 사용하기 위해 Github Action에서 해야할 사항들을 함께 해보겠습니다.

 

해당 작업을 수행하기 위해서는 기존에 본인의 github에 github action이 구성되어 있어야합니다.

 

Github Action이 동작하는 Workflow를 관리하는 파일로 이동합니다.

 

Workload Identity Federation을 사용하기 위해서 Github Action에서 Task에 uses를 추가해주어야합니다.

여기서 사용할 uses는 총 2가지 입니다.

- google-github-actions/auth@v1
- google-github-actions/setup-gcloud@v1.1.1

 

 

첫번째는 auth 입니다.

다음 task를 통해서 github action은 wif의 credential을 가지고 올 수 있습니다.

  1. Github Action이 인증에 사용할 provider를 지정해줍니다.
  2. Github Action이 사용할 Service Account를 지정해줍니다.
  3. Provider의 오남용을 방지하기 위한 audience를 명시해줍니다.

다음 동작을 구성하게 되면 Github Action은 GCP 환경에서 인증할 수 있는 Credential file을 가지고 오게 됩니다.

 

 

 

두번째로 setup-gcloud 입니다.

해당 uses를 통해 Github Action 내부에서 gcloud 명령어를 사용할 수 있게됩니다.

 

이때, gcloud 인증을 통해 명령을 내릴 수 있게 되는데, auth 인증 이후 다음 task를 실행함으로써 wif 에서 발급된 credential을 이용한 gcloud 인증이 자동으로 이뤄지게 됩니다.

 

wif를 사용하는데 필요한 github action의 세팅은 다음 두가지의 task를 구성해주면, 원할하게 사용이 가능합니다.


 

자 그러면 이전 시간에 콘솔에서 적용한 Workload Identity Federation을 이용하여 docker 이미지를 build 하고 해당 이미지를 gcr(google container registry)에 push 해 보겠습니다.

 

Workload Identity Federation의 동작을 확인하기 위한 실습이므로 Image를 위한 Dockerfile 생성과 같은 부분은 생략하도록 하겠습니다.

 

먼저, Dockerfile을 기반으로 docker build를 해줍니다.

다음 Task를 동작하게 되면 Github Action은 해당 repo에 존재하는 Dockerfile을 기반으로 다음과 같은 형태의 이미지를 생성하게 됩니다.

 

이때 gcr에 push 하기 위해 미리 image의 이름을 다음과 같은 네이밍 룰로 지정해야합니다.

gcr.io/PROJECT_ID/IMAGE_NAME:TAG

 

 

이렇게 생성된 이미지를 Push 하기 위해서 Push를 동작하는 Docker User또한 인증을 해야합니다.

 

따라서 다음 커멘드를 수행하는 Task를 통해 Docker 인증을 해줍니다.

이를 통해 WIF로 발급받은 Credential을 기반으로 gcloud 상의 docker인증을 수행할 수 있게됩니다.

 

 

 

마지막으로 Push를 수행하는 Task를 실행하여 Docker Image를 GCR에 저장하도록 하겠습니다.

이전에 생성한 이미지를 불러와서 docker push 커맨드를 사용하면, 해당 이미지는 gcr에 저장되게 됩니다.

 

해당 동작에 사용되는 인증은 WIF를 통해 사용되며, 해당 Service Account의 권한에 따라 동작을 하게 됩니다.

 

다음 동작을 수행함으로 최종적으로 GCR에 Image가 저장되는 것을 콘솔에서확인할 수 있습니다.


 

이렇게  Github Action 세팅에 대해 알아보는 시간을 마무리 짓도록 하겠습니다!! 예~!

 

우리 금쪽이들! 유익한 시간이였나요??

 

다음주에는 더욱더 유익한 정보들을 가지고 올테니 그때까지 잠시만 기다려주세요.

 

그럼 금쪽상담소는 다음주를 기약하며 베빠~!

'CSP (Cloud Service Provider) > GCP' 카테고리의 다른 글

[GCP] BeyondCorp Enterprise  (0) 2023.05.24
GCP KMS Hands-On  (0) 2023.05.21
GKE Maintenance Alert to SLACK  (0) 2023.05.12
[GCP] VPC Service Control이란?  (0) 2023.05.12
GCP Workload Identity Federation  (0) 2023.05.11

댓글