역할 기반 접근 제어

역할 기반 접근 제어 (RBAC) 개요

RBAC(Role-based access control, 역할 기반 접근 제어)는 사용자가 대시보드, 보고서, 관리 설정 같은 Grafana 리소스를 보고 수정할 수 있도록 접근 권한을 부여·변경·철회하는 표준화된 방법을 제공해요. Grafana OSS에 포함된 기본 역할의 권한을 확장하고 사용자 작업을 더 세밀하게 제어할 수 있게 해줍니다.

출처: 문서

본문

참고: Grafana EnterpriseGrafana Cloud에서 사용할 수 있어요.

RBAC(Role-based access control) 는 사용자가 대시보드, 보고서, 관리 설정 같은 Grafana 리소스를 보고 수정하도록 접근 권한을 부여·변경·철회하는 표준화된 방법을 제공합니다. RBAC는 Grafana OSS에 포함된 기본 역할의 권한을 확장하며, 사용자 작업을 더 세밀하게 제어할 수 있게 해줍니다.

RBAC로 할 수 있는 일:

  • 기존 기본 역할 수정: 예를 들어 편집자(editor)가 보고서를 만들 수 있게.
  • fixed roles를 사용자·팀에 할당: 예를 들어 엔지니어링 팀에 데이터 소스 생성 능력 부여.
  • custom roles 생성: 예를 들어 대시보드를 만들고 편집할 수 있지만 삭제는 할 수 없는 역할.

RBAC 역할과 권한 (RBAC roles and permissions)

RBAC 역할은 여러 권한과 연관되며, 각 권한은 actionscope 를 가집니다:

  • Action(액션): 사용자가 리소스에서 수행할 수 있는 작업을 설명.
  • Scope(스코프): 액션을 수행할 수 있는 위치를 설명. 예를 들어 특정 사용자 프로필을 읽는 경우, 관련 역할에 users:<userId> 스코프와 연결된 권한.

자세한 내용은 RBAC permission's actions and scopes 문서를 참고하세요.

사용 가능한 RBAC 역할 (Available RBAC roles)

역할 설명
Basic role Grafana OSS에서 사용 가능한 표준 역할
Fixed role Grafana Enterprise 또는 Cloud 사용 시 사용자·팀·서비스 계정에 개별 fixed roles를 할당해 기본 역할만으로는 불가능한 권한 제어 지원
Custom role Grafana Enterprise 또는 Cloud 사용 시 권한 actionsscopes의 고유한 조합을 만드는 custom roles 사용

또한 Grafana Cloud app 플러그인을 사용한다면 특정 플러그인 기능에 대한 접근을 제어하는 역할이 있으며, 사용자·팀·기본 역할에 할당할 수 있어요. 자세한 내용은 RBAC for app plugins를 참고하세요.

기본 역할 (Basic roles)

기본 역할은 Grafana OSS에서 제공되는 표준 역할입니다. Grafana Enterprise 또는 Cloud를 사용해도 기본 역할을 계속 사용할 수 있어요. Grafana에는 다음 기본 역할이 있습니다:

  • Grafana administrator
  • Organization administrator
  • Editor
  • Viewer
  • None

주의: 모든 Grafana 사용자는 기본 역할이 할당되어야 해요. 권한이 없는 사용자에게는 None 역할을 사용하세요.

각 기본 역할은 여러 권한으로 구성됩니다. 예를 들어 viewer 기본 역할에는 다음 권한이 포함됩니다:

  • Action: datasources.id:read, Scope: datasources:* — viewer가 데이터 소스의 ID를 볼 수 있게 함
  • Action: orgs:read — viewer가 조직 세부 정보를 볼 수 있게 함
  • Action: annotations:read, Scope: annotations:* — viewer가 다른 사용자가 대시보드에 추가한 주석을 볼 수 있게 함

기본 역할 권한의 전체 목록은 Permissions associated to basic roles를 참고하세요.

기본 역할 수정 (Modify basic roles)

RBAC로 모든 기본 역할과 연관된 권한을 수정해 viewer·editor·admin이 무엇을 할 수 있는지 변경할 수 있어요. 기본 역할을 수정하면 변경 사항이 다른 기본 역할로 전파되지 않습니다. 기본 역할은 삭제할 수 없어요.

설정 파일이나 RBAC API로 기본 역할을 수정할 수 있습니다. 방법은 Manage RBAC roles을 참고하세요. 다음에 유의하세요:

  • RBAC API로 기본 역할을 수정하는 데 서비스 계정을 사용할 수 없어요. 기본 역할을 업데이트하려면 Grafana 관리자여야 하고 요청에 basic authentication을 사용해야 합니다.
  • Cloud 고객이라면 역할을 재설정하려면 Support에 문의하세요.

Fixed roles (고정 역할)

Grafana Enterprise 또는 Cloud 사용 시 사용자·팀·서비스 계정에 개별 fixed roles를 할당할 수 있어요. 기본 역할만으로 가능한 것보다 세밀한 권한 제어를 제공합니다. 이 역할들이 "fixed(고정)"인 이유는 fixed roles를 변경하거나 삭제할 수 없기 때문이에요. 아래 custom roles 섹션에서 설명하는 custom 역할을 직접 만들 수도 있습니다.

기본 역할이 권한 요구사항을 충족하지 못할 때 fixed roles를 할당하세요. 예를 들어 기본 viewer 역할을 가진 사용자가 대시보드도 편집하길 원할 수 있어요. 또는 editor 역할을 가진 누구나 사용자를 추가·관리하길 원할 수도 있습니다. Fixed roles는 다음 Grafana 리소스를 만들고, 보고, 업데이트하는 데 더 세밀한 접근을 제공합니다:

Alerting, Annotations, API keys, Dashboards and folders, Data sources, Explore, Feature Toggles, Folders, LDAP, Library panels, Licenses, Organizations, Provisioning, Reports, Roles, Service accounts, Settings, Teams, Users

각 리소스에 대해 부여할 수 있는 권한에 대한 자세한 내용은 RBAC role definitions를 참고하세요.

Custom roles (커스텀 역할)

Grafana Enterprise 또는 Cloud 사용 시 보안 요구사항에 맞게 사용자 권한을 관리하는 custom roles를 만들 수 있어요. Custom roles는 권한 actions(허용된 작업)와 scopes(작업을 수행할 위치)의 고유한 조합을 포함합니다.

예를 들어:

  • teams.roles:read action은 사용자가 각 팀과 연관된 역할 목록을 볼 수 있게 합니다.
  • teams:id:1 scope는 사용자의 작업을 ID 1 팀으로 제한합니다. teams.roles:read action과 짝지으면 이 권한은 사용자가 팀 1 외의 팀 역할을 보는 것을 금지합니다.

fixed roles가 권한 요구사항을 충족하지 못할 때만 custom role 생성을 고려하세요. 자세한 내용은 Create custom roles를 참고하세요.

권한 전파 (Permission propagation)

특정 기본 역할을 수정하면 그 변경이 다른 기본 역할로 전파되지 않습니다. 즉, Viewer 기본 역할을 수정해 추가 권한을 부여해도 Editor 또는 Admin은 그 추가 부여로 업데이트되지 않아요.

새 권한 (New permissions): 새 권한이 생성되면 수정된 기본 역할에 자동으로 추가됩니다. 즉 제거했다고 생각했던 기능에 새 권한이 다시 추가될 수 있어요. custom roles를 사용하면 새 권한이 자동 추가되지 않습니다. 추가 권한이 필요한 새 기능이 릴리스되면 custom roles에 권한을 수동으로 추가해야 해요.

새 기능에 대한 자동 접근 중지 (Stop automatic access to new features)

Grafana Cloud에서 기본 Editor 또는 Viewer 기본 역할을 가진 사용자가 새 플러그인·앱에 자동으로 접근하지 못하게 중지할 수 있어요. 이는 새 핵심 Grafana 기능이나 기존 앱 내부의 새 권한이 나타나는 것을 막지는 않지만, 플러그인 접근은 제한합니다. 핵심 RBAC 변경은 수동으로 drift를 관리하거나 자동화를 설정해야 합니다.

basic_editorbasic_viewer 역할은 흔히 다음을 포함합니다:

{
  "action": "plugins.app:access",
  "scope": "plugins:\\*"
}

이것은 사용자가 필요하지 않거나 라이선스가 없는 IRM, Machine Learning, Synthetics 같은 모든 현재·미래 플러그인에 접근하게 해줍니다. 이를 방지하려면:

  1. 와일드카드 접근 제거.
  2. 원하는 앱에 대해서만 명시적 플러그인 권한 추가.

단계:

  1. 현재 역할 정의를 가져옵니다. 자세한 내용은 View role definitions 참고.
  2. 역할 정의를 수정합니다. JSON 파일을 열어 이 권한을 제거하고 접근을 유지하려는 플러그인 ID만 추가합니다. cloud-home-app을 포함해야 하며, 그렇지 않으면 홈페이지가 404 오류가 됩니다. 예:
{
"action": "plugins.app:access",
"scope": "plugins:id:grafana-kowalski-app"
},
{
"action": "plugins.app:access",
"scope": "plugins:id:cloud-home-app"
}

(선택) 앱이 fixed roles나 세분화된 actions를 포함한다면 필요한 역할 기반 권한을 지정하세요. 3. 역할 버전을 올립니다. JSON에서 version 필드를 찾아 1만큼 증가시킵니다. 4. API로 수정된 역할을 업데이트합니다:

curl -X PUT -H "Authorization: Bearer *** SA token>" \
 -H "Content-Type: application/json" \
 https://<your-stack>.grafana.net/api/access-control/roles/basic_editor \
 -d @editor_custom_role.json

RBAC 제한사항 (RBAC limitations)

  • General 또는 general 이름의 폴더를 만들었다면 RBAC로 그 권한을 관리할 수 없어요.
  • General 또는 general 이름의 폴더에 폴더 권한을 설정하면 RBAC가 활성화된 상태에서 시스템이 해당 폴더를 무시합니다.

RBAC API

RBAC API에 대한 정보는 RBAC API 문서를 참고하세요.

더 알아보기 (Learn more)