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

GCP Workload Identity Federation

by BTC_금쪽이 2023. 5. 11.

베하! 안녕하세요! BTC 금쪽상담소입니다.

 

이번주는 GCP의 서비스인 Workload Identity Federation과 적용 방법에 대해 알아보겠습니다.

 

Workload Identity Federation은 외부 사용자의 Access를 단기 인증 토큰 및 GCP의 Cerdential file을 사용한 인증을 제공하여 외부 서비스와의 연동 시 보안을 강화하고 있습니다.

저희는 이번 시간에 Github Action을 WIF(Workload Identity Federation)을 사용하여 GCP 서비스에 연동하는 예시를 이용하겠습니다.

 

1. Workload Identity Federation 방식

  • Github Action이 ID 공급자를 인증하고 인증이 완료되면 ID 공급자에게 Account Credential을 받습니다.
  • Account Credential을 받은 어플리케이션은 Security Token Service를 호출하여 ID 공급자가 발급한 Account Credential을 짧은 생명주기를 가지는 GCP Access Token으로 교환할 수 있습니다.
  • 이 Access Token은 Service Account에 발급된 권한들을 그대로 상속받고 Service Account인 척 가장하여 GCP 리소스에 접근합니다.
  • 따라서 해당 계정의 권한을 그대로 행사하게 되므로 계정의 권한 부여시에 확실하게 필요한 권한을 파악하여 최소 권한으로 부여해 주어야 합니다.

그렇다면 이러한 WIF(Workload Identity Federation)을 실제 GCP Console에서 적용하는 법을 알아보겠습니다.

 

1. 먼저 Workload Pool을 만듭니다.

  • Pool이란 Workload Identity Federation을 통해 외부 ID와 Service Account를 이용하여 인증하고 관리할 수 있는데 이를 Workload Identity Pool이라고 합니다.
  • Workload Identity Pool은 외부 ID를 관리할 수 있는 항목으로 관리를 위한 상세 설정은 Workload Identity Provider를 통해 하게 됩니다.
  • 일반적으로 개발, 스테이징, 프로덕션 환경과 같은 Google Cloud 리소스에 액세스해야 하는 Google Cloud 이외의 환경마다 새로운 Pool을 만드는 것이 좋습니다.

workload identity pool 생성화면

2. 이후 Provider를 생성합니다.

  • Workload Identity Provider는 Google Cloud와 외부 ID 제공자와의 관계를 설정하는 Entity입니다.
  • 외부 워크 로드에서 접근시에 Workload Identity Provider의 설정 값을 참조하여 허용 여부 및 Binding 될 Service Account와 해당 권한에 대한 확인 진행합니다.

workload identity provider 생성 화면

  • 여기서는 Github와의 연동을 위해 OIDC를 선택하였습니다.
  • 또한, Github Action의 Token인증을 위해 Issuer URL을 기입합니다.

3. 이후 Service Account와 Binding 합니다.

  • 외부 사용자는 GCP의 리소스를 해당 SA를 통해 이용할 수 있습니다.
  • 따라서 최소권한을 통해 보안을 강화하는 것을 권장합니다.
    workload identity와 service account의 연결 화면

위 단계를 모두 수행하시게 되면 Github Action에서 Workload Identity Federation을 사용하여 GCP의 리소스를 접근할 수 있는 준비가 완료됩니다.

마지막으로 다음 세팅을 진행하면서 확인해야할 사항을 정리하고 오늘의 정보 공유를 마치겠습니다.

  1. github action에 인증을 위한 값이 잘 들어가 있는지
  2. Service Account에 적용 할 github action에서 필요한 권한
  3. Workload Identity Provider 설정 시 github action에서 적용되는 OIDC 인증을 위한Token 발행 issuer URL
  4. Workload Identity Provider 설정 시 github action에서 접근제한 여부 및 적용 레벨(attribute-mapping 설정 값)
  5. binding시 Workload Identity Pool 내부 접근 제한 레벨 
  6. binding시 allowed-audiences 설정 값

 

오늘은 이렇게 Workload Identity Federation과 적용사항을 알아보았습니다.

모든 확인 사항을 잘 숙지해서 안전하게 클라우드를 외부 서비스와 연동해서 사용하시길 바랍니다!

 

 

참고문헌:

https://cloud.google.com/iam/docs/workload-identity-federation?hl=ko#mapping

https://cloud.google.com/iam/docs/manage-workload-identity-pools-providers?hl=ko

댓글