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