여러 대시보드 중 특정 대시보드에 민감한 정보가 있을 때 대시보드마다 권한을 조정할 필요가 있다.
GUI에서 쉽게 설정할 수 있지만, 그라파나를 여러 서버에 설치해야할 때는 api를 스크립트로 만들어 놓으면 편리하다.
예시
아래와 같이 대시보드 2개와 계정 두개를 사용한다고 하자.
- 대시보드 : dashboard1, dashboard2
- 계정 : user1, user2
이 때 dashboard2는 user1에게한 viewer권한을 주고 user2는 안보이게 하고 싶다.
방법
1. user 생성
admin 권한으로 user1과 user2를 생성한다. 아래 명령어는 admin 계정의 아이디와 비번이 admin과 admin 일때(Default) 사용가능하다.
curl -sX POST -H "Content-Type: application/json" -d '{"name":"user1", "email":"user1@user.com", "login":"user1", "password":"password1"}' http://admin:admin@localhost:3000/api/admin/users
curl -sX POST -H "Content-Type: application/json" -d {"name":"user2", "email":"user2@user.com", "login":"user2", "password":"password2"}' http://admin:admin@localhost:3000/api/admin/users
2. 대시보드에 권한 설정
- 새로운 계정을 생성하면 default로 모든 대시보드에 대해 viewer 권한을 가진다.
- dashboard1은 user1과 user2 모두에게 보이게 할 것이므로 별다른 설정이 필요없다.
- dahsboard2는 user2에게는 보이게 하고 싶지 않으므로 dashboard2에 대한 permission 설정에서 user2를 삭제하면 된다.
- 계정 생성과 마찬가지로 admin 계정을 이용하여 api를 실행한다.
- user1과 user2이전에 생성한 계정이 없었고 user1과 user2를 순서대로 생성했다면 user1의 id는 2이다.(admin 계정이 기본으로 있으므로)
- 아래 명령어에서 $dashboard2id 부분은 실제 dashboard2의 id(숫자)를 쓰면된다.
curl -X POST -H "Content-Type: application/json" admin:admin@localhost:3000/api/dashboards/id/$dashboard2id/permissions -d '{"items": [ {"userID": 2, "permission": 1} ] }'
위 명령어 실행전에는 dashboard2의 permission 설정에 admin 계정은 edit 권한을, user1과 user2는 viewer권한 설정이 되어있었다.
위 명령어는 기존 permission 내용을 덮어쓰므로, user ID가 2인 user1이 permission 1(viewer권한)을 가지고, user2에 대한 권한 내용이 생략된다.
따라서 user2는 아무런 권한이 없게 되니까 dashboard2를 볼 수 없게 된다.
참고
permission 1은 viewer 권한,
2는 edit, 4는 admin 권한을 뜻한다.
0 댓글