avatar
dawn.py
[GCP] Logging Sink 생성 시 오류 원인 파악
GCP Logging Sink를 활용해 BigQuery에 로그를 적재하는 과정에서 발생한 권한 문제 해결 방안.
GCPBigQueryCloud Logging
Sep 25
·
5 min read

Dawn입니다. 오늘은 업무를 하다 일어난 일을 정리하여 기록하려고 합니다. 부족한 제 글을 읽어주셔서 감사합니다. 😁

배경

저희 회사는 멀티 클라우드(GCP, NCP) 기반 서비스를 운영하고 있습니다. 그 중 CDC 파이프라인은 대충 그리자면 아래와 같습니다. 따라서 사내 로그를 BigQuery로 적재하기 위해서 적절한 Logging Sink를 생성하는 것이 맞습니다.
그런데..아래와 같은 메일 내용이 전직원에게 전달되게 됩니다.(젠장..)

until-1543

이 문제가 왜 발생했는지 원인을 파악하고 해결했던 방법에 대해서 작성해보도록 하겠습니다.(의외로 간단했다..)

원인 파악

이 오류의 원인은 gcloud 로 싱크를 생성할 경우 BigQuery내의 권한 부여(Data editor)까지 자동으로 적용하지 않는 것이었습니다. 또한 Logging 서비스 에이전트(Logging Service Agent)와 밀접한 관련이 있는 오류였습니다. 그렇다면 Logging 서비스 에이전트가 뭘까요?

Logging Service Agent

정의하자면 GCP Logging을 포함한 Stack Driver API 내의 서비스를 참조 혹은 직접적으로 사용하게 될 경우 문제가 되지 않게 구글에서 자동으로 생성해주는 서비스 계정입니다.

이전에는 Logging 싱크가 생성될 때마다 p{projectID}-{randomInt}@sa-googleapis.com , 이런 형식으로 서비스 계정에 BigQuery 데이터 편집자 권한을 부여하고 싱크 프로젝트 단위로 생성해주었습니다.

하지만 현재는 생성되는 싱크는 모두 service-{projectID}@sa-googleapis.com , 형식의 공통의 서비스 계정을 참조하고 있고 이 계정을 Logging 서비스 에이전트라고 합니다. 아래는 Logging 싱크 생성 시 발생되는 상황을 시퀀스 다이어그램으로 정리한 그림입니다.

until-1544

이 때 웹 콘솔과 gcloud의 생크 생성 과정은 전혀 다른 로직을 타게 됩니다. 따라서 싱크를 생성했을 당시 CLI로 생성했기에 라우팅되는 로그를 실시간으로 적재하기 위해 Logging 서비스 에이전트의 서비스 계정을 찾아 최소 데이터셋에 대한 데이터 편집자 권한을 등록해야 했던 겁니다.

오류 해결

until-1545

⚠️ 저희 팀은 GCP 관리자(Admin) 권한을 가지고 있기 때문에 IAM 관리 및 편집이 가능합니다. 만약 권한이 없다면 따로 요청을 해서 처리해야 할 것입니다. 이 점 참고바랍니다.

IAM관리 탭에서 우리는 ‘Google 제공 역할 부여 포함’을 체크하게 되면 Logging 서비스 에이전트에 등록된 서비스 계정을 확인할 수 있었고 해당 계정을 편집하여 BigQuery 데이터 편집자 역할까지 부여하게 되니 gcloud로 생성 시 BigQuery 내에 테이블이 생성되는 것을 확인할 수 있었습니다.

여기까지 부족한 글임에도 읽어주셔서 감사합니다.
Dawn이었습니다. 😁


참고 자료


- 컬렉션 아티클







데이터 엔지니어 꿈나무입니다.