dbeaver를 이용하면 revoke, grant를 쓰지 않고도 권한 부여를 간단하게 할 수 있어요. superuser 권한을 가진 유저로 실습을 해 보도록 하겠습니다.
실습을 위한 준비
dbeaver 권한 부여 실습을 위한 준비를 해 봅시다. viewer 계정을 생성하겠습니다. 이 작업을 수행하기 위해, SuperUser 권한을 가지는 유저로 접속하시면 되겠습니다.
![](https://codingdog.pe.kr/wp-content/uploads/2023/07/rol1-2.png)
role을 생성하기 위해, Roles를 오른쪽 버튼 클릭하고 Create New Role 메뉴를 클릭합니다. 그러면, 아이디와 비밀번호를 설정하라는 창이 나올 겁니다. 모두 설정하고 확인을 누릅시다.
![](https://codingdog.pe.kr/wp-content/uploads/2023/07/rol2-1.png)
viewer를 클릭하면, 우측에 유저 properties가 뜨게 됩니다.
![](https://codingdog.pe.kr/wp-content/uploads/2023/07/rol3.png)
맨 위를 보시면 Super User, Inherit, … 등의 권한 여러 개가 있습니다. 이 중, Can Login만 체크해 주겠습니다. Can Login은 로그인을 할 수 있는 권한입니다. 여기까지 하셨다면, viewer로 로그인을 할 수 있습니다.
그런데, 로그인만 할 수 있지, 다른 건 할 수 없습니다. permission을 주지 않았기 때문입니다.
book 테이블 보는 권한만 주기
각 테이블마다 권한을 부여할 수도 있어요.
![](https://codingdog.pe.kr/wp-content/uploads/2023/07/rol4.png)
book을 클릭해 봅시다. 그러면, permission이 쭉 있는데요. 아무 것도 check 표시가 된 게 없습니다. 이 말은, 어떠한 권한도 없다는 의미입니다. 저는 보는 권한만 필요하다 했으므로, select만 체크 표시 하겠습니다.
![](https://codingdog.pe.kr/wp-content/uploads/2023/07/rol5.png)
다음에 밑에 있는 Save를 누르시고 적용하시면 됩니다.
![](https://codingdog.pe.kr/wp-content/uploads/2023/07/rol6.png)
이제, viewer로 접속해서 book의 내용을 조회해 봅시다. 그랬더니 잘 나옵니다. 그런데, 업데이트를 하려는 경우에는 어떨까요?
![](https://codingdog.pe.kr/wp-content/uploads/2023/07/rol15.png)
에러가 발생합니다. 왜? viewer는 어떤 권한만 가지고 있나요? select만 가지고 있습니다. 보는 권한만 있는데 왜 update를 실행하려고 하느냐는 것입니다. 권한이 잘 설정 되었음을 볼 수 있어요.
특정 필드만 보기
그런데, 특정 필드만 보게 할 필요도 있어요. 예를 들어, 민감한 정보가 이에 속하겠지요. 이 때
- 특정 field만 select한 결과를
- view로 선언합니다.
그리고, 해당 view 에만 select 권한을 주면 됩니다.
![](https://codingdog.pe.kr/wp-content/uploads/2023/07/rol7.png)
book_view는 book에 대해, title과 author_id만 얻어오게 됩니다.
![](https://codingdog.pe.kr/wp-content/uploads/2023/07/rol8.png)
그림 9의 1번 쿼리는 book_view 로부터 모든 field를 select 합니다. book_view 로부터 모든 field를 select 하게 되면 title과 author_id만 보이게 됩니다. 당연하게도, id는 안 보이는데요. 해당 view가 book으로부터 id는 가져오지 않기 때문입니다.
![](https://codingdog.pe.kr/wp-content/uploads/2023/07/rol9.png)
이제, book으로부터 select 권한을 회수해 옵시다. select 체크 해제해 주면 됩니다.
![](https://codingdog.pe.kr/wp-content/uploads/2023/07/rol10.png)
대신에 title과 author_id만 볼 수 있는 book_view에 select 권한을 추가해 줍니다. 그리고 밑에 있는 저장을 눌러서 권한을 반영해 보겠습니다. 그리고 viewer로 로그인 해 보겠습니다.
![](https://codingdog.pe.kr/wp-content/uploads/2023/07/rol12.png)
[그림 12]의 2번 쿼리는 오류가 뜹니다. viewer가 book에 대한 권한이 아무것도 없기 때문입니다.
![](https://codingdog.pe.kr/wp-content/uploads/2023/07/rol13.png)
하지만, book_view는 볼 수 있습니다. book_view에는 title과 author_id만 있어요. viewer를 이용해서 특정 유저가 특정 필드들을 못 보게 할 수 있는 셈입니다. 이 글에서는 dbeaver 권한 부여 하는 방법을 간단하게 알아보았어요. 그리고, 특정 테이블의 특정 필드만을 보게 하기 위해
- viewer를 생성하고
- viewer에 권한을 주는 방법
을 배웠습니다.