역할 기반 접근 제어
역할 기반 접근 제어 (RBAC) 개요
RBAC(Role-based access control, 역할 기반 접근 제어)는 사용자가 대시보드, 보고서, 관리 설정 같은 Grafana 리소스를 보고 수정할 수 있도록 접근 권한을 부여·변경·철회하는 표준화된 방법을 제공해요. Grafana OSS에 포함된 기본 역할의 권한을 확장하고 사용자 작업을 더 세밀하게 제어할 수 있게 해줍니다.
출처: 문서
본문
참고: Grafana Enterprise와 Grafana Cloud에서 사용할 수 있어요.
RBAC(Role-based access control) 는 사용자가 대시보드, 보고서, 관리 설정 같은 Grafana 리소스를 보고 수정하도록 접근 권한을 부여·변경·철회하는 표준화된 방법을 제공합니다. RBAC는 Grafana OSS에 포함된 기본 역할의 권한을 확장하며, 사용자 작업을 더 세밀하게 제어할 수 있게 해줍니다.
RBAC로 할 수 있는 일:
- 기존 기본 역할 수정: 예를 들어 편집자(editor)가 보고서를 만들 수 있게.
- fixed roles를 사용자·팀에 할당: 예를 들어 엔지니어링 팀에 데이터 소스 생성 능력 부여.
- custom roles 생성: 예를 들어 대시보드를 만들고 편집할 수 있지만 삭제는 할 수 없는 역할.
RBAC 역할과 권한 (RBAC roles and permissions)
RBAC 역할은 여러 권한과 연관되며, 각 권한은 action 과 scope 를 가집니다:
- 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 사용 시 권한 actions와 scopes의 고유한 조합을 만드는 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:readaction은 사용자가 각 팀과 연관된 역할 목록을 볼 수 있게 합니다.teams:id:1scope는 사용자의 작업을 ID1팀으로 제한합니다.teams.roles:readaction과 짝지으면 이 권한은 사용자가 팀 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_editor와 basic_viewer 역할은 흔히 다음을 포함합니다:
{
"action": "plugins.app:access",
"scope": "plugins:\\*"
}
이것은 사용자가 필요하지 않거나 라이선스가 없는 IRM, Machine Learning, Synthetics 같은 모든 현재·미래 플러그인에 접근하게 해줍니다. 이를 방지하려면:
- 와일드카드 접근 제거.
- 원하는 앱에 대해서만 명시적 플러그인 권한 추가.
단계:
- 현재 역할 정의를 가져옵니다. 자세한 내용은 View role definitions 참고.
- 역할 정의를 수정합니다. 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 문서를 참고하세요.