서비스 계정
서비스 계정 (Service accounts)
Service accounts(서비스 계정)를 사용하면 Grafana API를 통해 대시보드 프로비저닝, 구성, 리포트 생성 같은 자동화된 워크로드를 Grafana에서 실행할 수 있어요. Grafana와 상호작용하는 애플리케이션을 인증하는 기본 수단으로 기존 API 키를 대체해요.
출처: 문서
본문
Service accounts는 Grafana API를 사용해 대시보드 프로비저닝, 구성, 리포트 생성 같은 자동화된 워크로드를 Grafana에서 실행할 수 있게 해줘요.
다음을 유의하세요:
- 서비스 계정은 Grafana user와 같지 않아요.
- 서비스 계정은 Grafana와 상호작용하는 애플리케이션을 인증하는 기본 수단으로 API keys를 대체해요.
- Grafana HTTP API(대시보드, 사용자, 데이터 소스, 알림)에 접근하려면 서비스 계정을 사용해요.
- Grafana Cloud 사용자로서 텔레메트리 데이터(메트릭, 로그, 트레이스)를 보내거나 쿼리해야 한다면 Cloud Access Policies를 대신 사용해요.
- Grafana Enterprise에서는 서비스 계정을 role-based access control(RBAC)과 결합해 Grafana와 상호작용하는 애플리케이션에 매우 구체적인 권한을 부여할 수 있어요.
서비스 계정을 사용하는 경우 (When to use service accounts)
자동화되거나 트리거된 작업에서 서비스 계정과 토큰을 사용해 다음 작업을 수행해요:
- Terraform 같은 애플리케이션을 Grafana API로 인증
- 특정 대시보드의 리포트를 일/주/월 단위로 정기 전송
- Grafana에서 사용할 시스템의 알림 정의
- 외부 SAML 인증 공급자 설정
- 사용자로 로그인하지 않고 Grafana와 상호작용
서비스 계정의 장점 (Service account benefits)
API 키에 비해 서비스 계정이 주는 추가 장점은 다음과 같아요:
- 서비스 계정은 Grafana 사용자와 비슷하며 활성화/비활성화가 가능하고, 특정 권한을 부여받을 수 있으며, 삭제되거나 비활성화될 때까지 활성 상태로 유지돼요. API 키는 만료일까지만 유효해요.
- 서비스 계정은 여러 토큰과 연결할 수 있어요.
- API 키와 달리 서비스 계정 토큰은 특정 사용자와 연결되지 않아서, Grafana 사용자가 삭제되어도 애플리케이션을 인증할 수 있어요.
- role-based access control(RBAC)을 활용해 서비스 계정에 세밀한 권한을 부여할 수 있어요. 권한에 대한 자세한 내용은 About users and permissions을 참고해요.
서비스 계정의 제한 (Service account limitations)
서비스 계정은 생성된 조직에서만 작동해요. 여러 조직에 필요한 동일한 작업이 있다면 각 조직에 서비스 계정을 만들어야 해요.
서비스 계정은 전역 사용자 관리나 조직 관리 같은 인스턴스 전체 작업에는 사용할 수 없어요. 이러한 작업에는 Grafana 서버 관리자 권한을 가진 사용자가 필요해요.
서비스 계정 토큰 (Service account tokens)
서비스 계정 토큰은 Grafana HTTP API로 인증할 때 비밀번호의 대안으로 작동하는 생성된 난수 문자열이에요. API Keys와 같은 방식으로 서비스 액세스 토큰을 사용해요. 예를 들어 프로그래밍 방식으로 Grafana HTTP API에 접근하는 데 사용할 수 있어요. 서비스 계정 액세스 토큰은 서비스 계정의 권한을 상속받아요.
서비스 계정을 만들 때 하나 이상의 액세스 토큰을 연결할 수 있어요. 다음과 같은 경우 같은 서비스 계정에 여러 토큰을 만들어요:
- 여러 애플리케이션이 같은 권한을 사용하지만, 그들의 작업을 별도로 감사하거나 관리하고 싶어요.
- 손상된 토큰을 회전하거나 교체해야 해요.
Grafana에서 서비스 계정 만들기 (Create a service account in Grafana)
서비스 계정을 사용해 대시보드 프로비저닝, 구성, 리포트 생성 같은 Grafana의 자동화된 워크로드를 실행해요.
Note
API로 서비스 계정을 만들려면 Create a service account in the HTTP API를 참고해요.
서비스 계정 사용자 (Service account users)
서비스 계정을 만들려면 사용자가 다음을 가져야 해요:
- Admin 권한, 또는
fixed:roles:reader및fixed:serviceaccounts:creator역할
서비스 계정을 만든 사용자는 자신이 만든 서비스 계정과 그와 연결된 권한을 읽고, 업데이트하고, 삭제할 수 있어요.
시작하기 전에 (Before you begin)
서비스 계정을 만들고 편집할 권한이 있는지 확인해요. 기본적으로 서비스 계정 생성·편집에는 조직 관리자 역할이 필요해요. 사용자 권한에 대한 자세한 내용은 About users and permissions을 참고해요.
서비스 계정 만들기 (Create a service account)
- Grafana에 로그인하고 왼쪽 메뉴에서 Administration을 클릭해요.
- Users and access > Service accounts > Add service account를 클릭해요.
- Display name을 입력해요. 표시 이름은 서비스 계정과 연결된 ID를 결정하므로 고유해야 해요. 서비스 계정 이름을 지을 때 일관된 명명 규칙을 사용하세요. 일관된 명명 규칙은 향후 서비스 계정을 확장·유지 보수하는 데 도움이 돼요. 표시 이름은 언제든지 바꿀 수 있어요.
- Create를 클릭해요.
Grafana에서 서비스 계정에 토큰 추가하기 (Add a token to a service account in Grafana)
서비스 계정 토큰은 Grafana HTTP API로 인증할 때 비밀번호의 대안으로 작동하는 생성된 난수 문자열이에요. 서비스 계정에 대한 자세한 내용은 About service accounts in Grafana를 참고해요.
Grafana UI 또는 API를 사용해 서비스 계정 토큰을 만들 수 있어요. API로 서비스 계정 토큰을 만드는 방법은 Create service account tokens using the HTTP API를 참고해요.
시작하기 전에 (Before you begin)
서비스 계정을 만들고 편집할 권한이 있는지 확인해요. 기본적으로 서비스 계정 생성·편집에는 조직 관리자 역할이 필요해요. 사용자 권한에 대한 자세한 내용은 About users and permissions을 참고해요.
서비스 계정 토큰 만료일 (Service account token expiration dates)
기본적으로 서비스 계정 토큰에는 만료일이 없어요. 하지만 token_expiration_day_limit를 사용해 토큰의 만료일을 일 단위로 제한할 수 있어요.
서비스 계정에 토큰 추가 (Add a token to a service account)
- Grafana에 로그인하고 왼쪽 메뉴에서 Administration을 클릭해요.
- Users and access > Service accounts를 클릭해요.
- 토큰을 추가하려는 서비스 계정을 클릭해요.
- Add service account token을 클릭해요.
- 토큰의 이름을 입력해요.
- 선택적으로 Set expiration date를 선택하고 토큰의 만료 날짜를 입력할 수 있어요. 만료 날짜는 키가 유효한 기간을 지정해요. 만료일이 확실하지 않다면 토큰이 몇 시간 이하의 짧은 시간 후에 만료되도록 설정하는 것을 권장해요. 이렇게 하면 오랫동안 유효한 토큰과 관련된 위험을 제한할 수 있어요.
- Generate token을 클릭해요.
Grafana에서 서비스 계정에 역할 할당하기 (Assign roles to a service account in Grafana)
Grafana 서비스 계정에 조직 역할(Viewer, Editor, Admin)을 할당해 연결된 서비스 계정 토큰의 접근을 제어할 수 있어요. 조직 역할을 할당하려면 Grafana UI 또는 API를 사용할 수 있어요. API로 서비스 계정에 역할을 할당하는 방법은 Update service account using the HTTP API를 참고해요.
Grafana Enterprise에서는 RBAC 역할을 할당해 Grafana와 상호작용하는 애플리케이션에 매우 구체적인 권한을 부여할 수도 있어요.
Note
Grafana 10.2.0부터 조직 사용자 또는 서비스 계정에
None기본 역할을 사용할 수 있어요. 이 역할은 기본적으로 권한이 없으며 RBAC로 권한을 부여할 수 있어요.
시작하기 전에 (Before you begin)
서비스 계정 역할을 업데이트할 권한이 있는지 확인해요. 기본적으로 서비스 계정 권한 업데이트에는 조직 관리자 역할이 필요해요. 사용자 권한에 대한 자세한 내용은 About users and permissions을 참고해요.
서비스 계정에 역할을 할당하려면 (To assign a role to a service account)
- Grafana에 로그인하고 왼쪽 메뉴에서 Administration을 클릭해요.
- Users and access를 클릭해요.
- Service accounts를 클릭해요.
- 역할을 할당하려는 서비스 계정을 클릭해요. 또는 목록 보기에서 서비스 계정을 찾을 수 있어요.
- 역할 선택기(role picker)를 사용해 역할을 할당해 업데이트해요.
Grafana에서 서비스 계정의 사용자·팀 권한 관리 (Manage users and team permissions for a service account in Grafana)
서비스 계정으로 무엇을, 누가 할 수 있는지 제어하려면 사용자와 팀에 직접 권한을 할당할 수 있어요. Grafana UI를 사용해 권한을 할당할 수 있어요.
Note
서비스 계정에 팀 관리 권한을 할당한다고 해서 그 계정이 팀의 일부가 되는 것은 아니에요.
시작하기 전에 (Before you begin)
다음 권한이 있는지 확인하세요:
- 서비스 계정의 사용자·팀 권한을 업데이트할 권한. 기본적으로 서비스 계정의 사용자·팀 권한 업데이트에는 조직 관리자 역할이 필요해요. 사용자 권한에 대한 자세한 내용은 About users and permissions을 참고해요.
- 팀을 읽을 권한.
서비스 계정의 사용자·팀 권한 (User and team permissions for a service account)
특정 사용자 또는 팀에 다음 권한 중 하나를 할당할 수 있어요:
- Edit: 이 권한이 있는 사용자나 팀은 서비스 계정을 보고, 편집하고, 활성화/비활성화하고, 서비스 계정 토큰을 추가·삭제할 수 있어요.
- Admin: 이 권한이 있는 사용자나 팀은 Edit 권한의 모든 것을 할 수 있고, 서비스 계정의 사용자·팀 권한도 관리할 수 있어요.
서비스 계정 팀 권한 업데이트 (To update team permissions for a service account)
- Grafana에 로그인하고 왼쪽 메뉴에서 Administration을 클릭해요.
- Users and access를 클릭해요.
- Service accounts를 클릭해요.
- 팀 권한을 업데이트하려는 서비스 계정을 클릭해요.
- 하단의 Permissions 섹션에서 Add permission을 클릭해요.
- 드롭다운에서 Team을 선택하고 원하는 팀을 선택해요.
- 드롭다운에서 View, Edit 또는 Admin 역할을 선택하고 Save를 클릭해요.
서비스 계정 사용자 권한 업데이트 (To update user permissions for a service account)
- Grafana에 로그인하고 왼쪽 메뉴에서 Administration을 클릭해요.
- Users and access를 클릭해요.
- Service accounts를 클릭해요.
- 사용자 권한을 업데이트하려는 서비스 계정을 클릭해요.
- 하단의 Permissions 섹션에서 Add permission을 클릭해요.
- 드롭다운에서 User를 선택하고 원하는 사용자를 선택해요.
- 드롭다운에서 View, Edit 또는 Admin 역할을 선택하고 Save를 클릭해요.
서비스 계정 토큰의 권한 디버깅 (Debug the permissions of a service account token)
서비스 계정 토큰에 연결된 RBAC 권한이 무엇인지 알아보고 토큰 권한 부여와 관련된 권한 문제를 진단해요.
시작하기 전에 (Before you begin)
서비스 계정에 토큰을 아직 추가하지 않았다면 먼저 추가해요. 방법은 Add a token to a service account를 참고해요.
서비스 계정 토큰의 권한 나열 (List a service account token's permissions)
토큰의 권한을 나열하려면 /api/access-control/user/permissions 엔드포인트를 사용해요.
권한을 확인하려는 토큰으로 다음 명령을 실행해요:
curl -H "Authorization: Bearer glsa_i...2697" -X GET '<grafana_url>/api/access-control/user/permissions' | jq
출력은 토큰의 권한을 나열해요:
Note
다음 명령 출력은 관련 내용만 보여주도록 축약됐어요.
{
"dashboards:read": ["dashboards:uid:70KrY6IVz"],
"dashboards:write": ["dashboards:uid:70KrY6IVz"],
"datasources.id:read": ["datasources:*"],
"datasources:read": ["datasources:*"],
"datasources:explore": [""],
"datasources:query": ["datasources:uid:grafana"],
"datasources:read": ["datasources:uid:grafana"],
"orgs:read": [""]
}
토큰이 볼 수 있는 대시보드 확인 (Check which dashboards a token is allowed to see)
토큰이 볼 수 있는 대시보드를 나열하려면 /api/access-control/user/permissions 엔드포인트의 응답에서 dashboards:read 권한 키를 필터링해요:
curl -H "Authorization: Bearer glsa_i...2697" -X GET '<grafana_url>/api/access-control/user/permissions' | jq '."dashboards:read"'
출력은 토큰이 볼 수 있는 대시보드와 대시보드를 볼 수 있는 폴더를 고유 식별자(uid)로 나열해요:
[
"dashboards:uid:70KrY6IVz",
"dashboards:uid:d61be733D",
"folders:uid:dBS87Axw2",
],