Google 인증
Google 인증 (Google authentication)
이 문서는 Grafana와 Google Cloud Platform(GCP) 사이의 인증을 구성하는 방법을 설명해요. Google Cloud Monitoring 데이터 소스로 메트릭과 SLO를 쿼리하기 전에 인증을 구성해야 해요. Google API에 대한 모든 요청은 Grafana 백엔드가 서버 측에서 수행해요.
출처: 문서
본문
지원되는 인증 방법
| 방법 | 사용 사례 |
|---|---|
| Google JWT File | Grafana가 GCP 외부에서 실행되거나 자격 증명을 명시적으로 제어해야 할 때 |
| GCE Default Service Account | Grafana가 구성된 서비스 계정이 있는 GCE VM에서 실행될 때 |
| Forward OAuth Identity | Google로 Grafana에 로그인하고 각 쿼리를 로그인한 사용자로 실행하려 할 때 |
| Workload Identity Federation | Grafana Cloud에서 서비스 계정 키 대신 외부 OIDC ID 프로바이더로 사용자 인증을 하게 할 때 |
| Service Account Impersonation | Grafana가 인증하는 것과 다른 서비스 계정으로 동작해야 할 때 |
Google 서비스 계정 키 파일 사용
Grafana가 GCP 외부에서 실행되거나 사용할 자격 증명을 명시적으로 제어해야 할 때 사용해요. 각 Grafana 데이터 소스는 기본적으로 하나의 GCP 프로젝트에 연결해요. 여러 GCP 프로젝트의 데이터를 시각화하려면 프로젝트당 데이터 소스를 하나씩 만들거나 서비스 계정 가장을 사용하세요. 서비스 계정을 만들고 키 파일을 내려받은 뒤, 데이터 소스 설정에 키 파일을 업로드하면 돼요.
여러 프로젝트에 접근 부여
단일 서비스 계정이 여러 GCP 프로젝트에 접근하도록 구성할 수 있어요.
GCE Default Service Account 사용
Grafana가 GCE 가상 머신에서 실행되면 GCE 메타데이터 서버에서 자동으로 자격 증명을 검색할 수 있어요. 이 방법은 키 파일을 만들거나 관리할 필요가 없어요. GCE 인스턴스가 올바른 서비스 계정과 Cloud Monitoring API 스코프로 구성됐는지 확인한 뒤, 데이터 소스에서 GCE Default Service Account를 선택하면 돼요.
Forward OAuth Identity 사용
Grafana 인스턴스가 Google OAuth로 사용자를 인증하고, 공유 서비스 계정 대신 로그인한 사용자로 각 쿼리를 실행하려 할 때 사용해요. 이는 사용자별 접근 제어를 가능하게 해요: 프로젝트에 Cloud Monitoring 권한이 없는 뷰어는 대시보드의 데이터 소스가 공유되더라도 그 프로젝트의 데이터를 볼 수 없어요. Grafana는 사용자의 기존 Google OAuth 액세스 토큰을 나가는 Cloud Monitoring API 요청에 bearer 토큰으로 전달해요. 서버에 저장되는 서비스 계정 키는 없어요.
Google OAuth 스코프 구성
grafana.ini 또는 custom.ini의 Google 인증 구성에 Cloud Monitoring 읽기 스코프를 추가하세요:
[auth.google]
scopes = openid email profile https://www.googleapis.com/auth/monitoring.read
Grafana SSO 설정 UI로 Google 인증을 구성한다면 Scopes 필드에 같은 스코프 값을 추가하세요. 스코프를 변경한 뒤 기존 사용자 세션은 여전히 이전 스코프 집합으로 발급된 토큰을 보유해요. 각 사용자는 로그아웃하고, https://myaccount.google.com/permissions 에서 기존 승인을 취소한 후 새 스코프에 동의하도록 다시 로그인해야 해요. 그렇지 않으면 쿼리가 계속 403으로 실패해요.
참고: 서비스 계정 가장은 Forward OAuth Identity와 호환되지 않아요. 데이터 소스가 로그인한 사용자로 인증하므로 가장할 서비스 계정이 없어요.
Workload Identity Federation 사용
Google Cloud Workload Identity Federation(WIF)을 사용하면 서비스 계정 키 대신 외부 ID 프로바이더(예: Okta 또는 다른 OIDC 프로바이더)로 Grafana 사용자가 Cloud Monitoring에 인증하게 할 수 있어요.
참고: 이 인증 방법은 Grafana Cloud에서만 사용할 수 있어요. Grafana Cloud는 요청이 플러그인에 도달하기 전에 로그인한 사용자의 외부 OIDC 토큰을 단기 Google Cloud 액세스 토큰으로 교환해요.
구성은 세 시스템을 포함해요: Google Cloud, Grafana Cloud 스택, 그리고 데이터 소스 자체. Google Cloud에서 Workload Identity 풀과 프로바이더를 만들고, Grafana Cloud에서 OIDC를 구성하며, 데이터 소스에서 WIF 자격 증명을 설정하면 돼요.
참고: WIF의 자격 증명은 로그인한 사용자의 활성 세션에 묶이므로, Grafana 백엔드에 장기 자격 증명이 없어요. 사용자가 없는 상태에서 실행되는 기능(알림, 예약 보고서, 공개 대시보드)은 동작하지 않아요. 이런 기능에 의존한다면 서비스 계정 키(Google JWT File)를 사용하세요.
서비스 계정 가장 구성
서비스 계정 가장은 Grafana가 한 서비스 계정으로 인증하되 API 요청 시 다른 서비스 계정으로 동작하게 해줘요. Grafana가 사용하는 서비스 계정("caller")은 대상 서비스 계정을 가장할 권한(iam.serviceAccounts.actAs)이 필요하고, 가장되는 서비스 계정("target")은 쿼리할 리소스에 대한 권한(예: Monitoring Viewer)이 필요해요. 데이터 소스 설정에서 가장을 활성화하고 대상 서비스 계정 이메일을 입력하면 돼요.