보안·권한

부서별 데이터 열람 권한

인사·급여처럼 아무나 보면 안 되는 표를 골라, 볼 수 있는 부서를 정합니다.

대상 · Studio 관리자약 10분문서 내려받기

대상: 회사 관리자 · 데이터베이스 담당자 선행 조건: 데이터베이스 툴킷 사용 중 (DB 연동 가이드) · 웍스AI 조직도 받기 ([설정 › 조직도]) 필요한 커넥터: v0.2.20 이상


이 기능이 하는 일

인사·급여처럼 아무나 보면 안 되는 표만 골라, 볼 수 있는 부서를 정합니다. 설정은 회사 설정의 [설정 › 데이터 열람 권한] 한 곳에서 합니다. 툴킷마다 따로 정하지 않습니다.

  • 기본은 누구나 볼 수 있습니다. 아무것도 정하지 않으시면 지금과 똑같이 동작합니다. 고르지 않은 표도 지금처럼 툴킷을 쓰는 사람 누구나 볼 수 있습니다.
  • 제한 데이터 — 함께 묶어 다룰 표에 이름을 붙인 것입니다(예: 「인사·급여」). 여러 툴킷의 표를 한 번에 고를 수 있습니다.
  • 볼 수 있는 부서 — 그 제한 데이터를 볼 수 있는 부서입니다. 웍스AI 조직도에서 고릅니다.
  • 아래 팀 포함 — 본부를 고르면 그 아래 팀도 모두 볼 수 있고, 나중에 새로 생기는 팀도 포함됩니다.
  • 제외 — 포함한 부서 아래에서 빼야 할 팀만 따로 제외합니다. 포함과 제외가 겹치면 제외가 우선입니다.
  • 저장하면 1분 안에 적용됩니다. 지울 때도 같습니다.

예를 들어 「인사·급여」 제한 데이터에 hr_salary 표를 넣고 볼 수 있는 부서를 「인사팀」으로 정하면, 인사팀과 그 아래 팀은 지금처럼 조회하고, 영업팀은 hr_salary 를 볼 수 없습니다.


1. 시작하기 전에

1-1. 커넥터 v0.2.20 이상

판정은 회사 안의 커넥터가 합니다. 제한한 표가 있는 툴킷의 커넥터가 그보다 오래되었으면, 그 툴킷에서 제한 때문에 막혀야 하는 사람의 조회가 실행되지 않고 "회사 커넥터를 업데이트해야 이 툴킷을 쓸 수 있습니다" 로 안내됩니다. 볼 수 있는 부서의 조회는 그대로 됩니다. 업데이트 방법은 Connector 설치 가이드 의 「재설치 · 업데이트」 절을 봐 주세요.

SQL Server 툴킷은 v0.2.23 이상이어야 제한을 저장할 수 있습니다. 그 전 커넥터는 다른 데이터베이스를 이름으로 읽는 조회 등을 제한대로 막지 못하기 때문입니다. 이미 저장하신 제한은 그대로 동작하고, 목록에 「커넥터 업그레이드 필요」 로 표시됩니다.

1-2. 웍스AI 조직도와 부서 정보

  • 조직도 — [설정 › 조직도] 에 웍스AI 부서가 받아져 있어야 부서를 고를 수 있습니다.
  • 호출마다 오는 부서 정보 — 누가 물었는지는 웍스AI 가 호출마다 알려 주는 부서 코드로 판단합니다. 이 정보는 사용자 신원 확인 엔드포인트로 연결한 도구에서만 옵니다 (WRKS AI 연동 가이드).
    • 고정 토큰(API Key) 엔드포인트로 연결한 도구는 누가 물었는지 알 수 없어 제한한 표를 볼 수 없습니다.
    • 웍스AI 에서 아직 부서 정보가 오지 않는 단계라면 저장 화면이 먼저 알려 드립니다. 그대로 저장하시면 모든 사람이 그 표를 볼 수 없게 됩니다.

1-3. 데이터베이스별 준비

데이터베이스준비할 것
PostgreSQL따로 없습니다.
MySQL뷰를 거쳐 조회하려면 조회 계정에 SHOW VIEW 권한을 스키마 단위로 주세요 — GRANT SHOW VIEW ON <스키마>.* TO <조회 계정>. 뷰가 다른 스키마를 읽으면 그 스키마에도 같이 주셔야 합니다. 없으면 그 뷰를 거치는 조회는 판단할 수 없어 실행되지 않습니다. 뷰가 다른 뷰를 읽으면 그 안쪽 뷰에도 조회(SELECT) 권한이 있어야 합니다. 뷰마다 따로 주시면 제한과 상관없는 뷰 조회도 실행되지 않습니다. 스키마 단위 SHOW VIEW 를 주시면 그 스키마의 표 이름이 조회 계정에 보입니다(값은 보이지 않습니다). MySQL 8.0 · 8.4 에서 확인했습니다. 원래 표는 숨기고 뷰만 조회하게 해 둔 계정에서도 됩니다.
SQL Server조회 계정에 실행 계획을 볼 권한을 주세요 — GRANT SHOWPLAN TO <조회 계정>. 뷰·별칭을 거쳐 조회하려면 그 정의를 볼 권한도 스키마 단위로 필요합니다 — GRANT VIEW DEFINITION ON SCHEMA::<스키마> TO <조회 계정>. 뷰가 다른 스키마를 읽으면 그 스키마에도 주셔야 합니다. 뷰마다 따로 주시면 제한과 상관없는 뷰 조회도 실행되지 않습니다. 권한이 없으면 해당 조회는 실행되지 않습니다.
Oracle조회 계정이 볼 수 있는 객체로만 판단합니다. 원래 표는 숨기고 뷰만 조회하게 해 둔 계정에서도 됩니다. 다만 뷰가 다른 스키마의 뷰를 읽는데 조회 계정이 그 뷰를 볼 수 없으면, 그 뷰를 거치는 조회는 판단할 수 없어 실행되지 않습니다 — 그 뷰에도 조회 권한을 주세요. 뷰가 별칭을 거쳐 표를 읽으면 조회 계정에 그 표의 조회 권한이 있어야 합니다 — 없으면 그 뷰 조회는 판단할 수 없어 실행되지 않습니다.
MariaDBMySQL 과 같습니다 — SHOW VIEW 를 뷰가 읽는 스키마마다 스키마 단위로 주시고, 안쪽 뷰에도 조회 권한을 주세요. 커넥터 v0.2.21 이상이 필요합니다. MariaDB 11.4 에서 확인했습니다.
Microsoft FabricSQL database 는 데이터베이스 안에 앱 사용자를 만들고 실행 계획을 볼 권한을 주세요 — CREATE USER [앱 이름] FROM EXTERNAL PROVIDER; 다음 GRANT SHOWPLAN TO [앱 이름];. 워크스페이스 뷰어만으로는 이 권한이 없어, 제한한 표가 있는 툴킷의 조회가 모두 실행되지 않습니다. Lakehouse · Warehouse SQL 접속 주소에서는 실행 계획으로 확인할 수 없어, 제한한 표가 있는 툴킷의 조회가 모두 실행되지 않습니다 — 제한이 필요하면 SQL database 를 쓰세요. 커넥터 v0.2.22 이상이 필요합니다.

권한을 주는 방법은 DB 연동 가이드 에 데이터베이스별로 정리했습니다.


2. 설정하는 법

  1. [설정 › 데이터 열람 권한] 으로 갑니다.
  2. 추천으로 시작하기 또는 직접 만들기를 고릅니다.
    • 추천은 스키마 사전의 표 이름과 설명, 개인정보가 담긴 칸, 이미 제한한 표와 이어진 표를 보고 만듭니다. 확인하기 전에는 아무것도 바뀌지 않습니다. 스키마 사전을 켜 두셔야 추천이 생깁니다.
  3. 제한할 표 고르기 — 이름(예: 「인사·급여」)을 정하고 표를 고릅니다. 여러 툴킷의 표를 함께 고를 수 있습니다.
  4. 볼 수 있는 부서 고르기 — 예: 「인사팀」(아래 팀 포함). 인사팀 안에서 빼야 할 팀이 있으면 그 팀만 제외합니다.
  5. 부서별로 미리 보기 — 부서를 고르면 그 부서가 볼 수 없게 되는 표를 저장된 설정으로 보여 드립니다.
  6. 저장 — 저장 전에 확인할 내용(부서 정보가 오는지 · 이 표를 쓰는 쓰기 도구)이 있으면 먼저 보여 드립니다. 저장하면 1분 안에 적용됩니다.

툴킷 화면에는 그 툴킷의 표가 어느 제한 데이터에 들어 있는지 요약만 보입니다. 바꾸는 것은 데이터 열람 권한 화면에서 합니다.


3. 적용되면 무엇이 바뀌나

볼 수 없는 부서의 사람이 웍스AI 에서 물으면:

  • AI 에게 표 이름이 보이지 않습니다. 표 목록·스키마·업무 의미 조회에서 그 표가 빠지고, 이름을 짚어 물어도 AI 가 받는 내용은 없는 표를 물었을 때와 같습니다. (응답 시간 같은 작은 차이는 남을 수 있습니다.)
  • 조회가 실행되지 않습니다. AI 가 그 표를 읽는 SQL 을 보내면, 커넥터가 실행하기 전에 데이터베이스에 실행 계획을 물어(EXPLAIN) 읽는 표를 확인하고 거절합니다. 표의 값은 회사 밖으로 나가지 않습니다.
  • 뷰를 제한하면 그 뷰가 읽는 표도 막힙니다. 뷰만 막고 아래 표를 직접 조회하는 우회를 막기 위해서입니다.
  • 대화에서 부르는 지표도 같습니다. 볼 수 없는 표를 읽는 지표는 실행되지 않고, 다른 부서가 먼저 본 결과가 저장되어 있어도 그 결과를 돌려주지 않습니다.
  • 거부된 조회가 화면에 쌓입니다(최근 7일). 필요한 업무라면 거기서 바로 허용하기로 그 부서를 볼 수 있는 부서에 넣을 수 있습니다. 저장해야 적용됩니다.

볼 수 있는 부서의 사람과, 제한한 표를 쓰지 않는 조회는 지금과 같습니다.

관리자 화면에는 적용하지 않습니다. Studio 의 체험 탭, 엔드포인트 테스트, 뷰 도구를 만들 때의 미리 실행과 추천, [인사이트] 대시보드와 추천은 회사 관리자가 쓰는 자리라 제한 없이 동작합니다.

부서를 모르면 닫습니다

아래 경우에는 누가 물었는지 판단할 수 없어, 그 툴킷의 제한한 표를 모두 볼 수 없습니다. 제한하지 않은 표는 그대로 볼 수 있습니다.

  • 고정 토큰(API Key) 엔드포인트로 연결한 도구
  • 웍스AI 가 부서 정보를 보내지 않은 호출
  • 부서 코드가 받아 둔 조직도에 없는 호출 (조직도를 새로 받으면 해결됩니다)

4. 한계 — 알고 쓰셔야 할 것

완전한 차단은 데이터베이스 계정 권한으로 해주세요. 데이터 열람 권한은 저희 서버의 설정을 따르는 열람 정책이고, 데이터베이스 권한을 대신하지 않습니다. 반드시 지켜야 하는 표는 조회 계정에서 권한을 빼 주세요. 이 기능은 그 위의 편의 장치입니다.

제한한 표가 있는 툴킷에서는 판단할 수 없는 조회를 실행하지 않는 쪽으로 동작합니다. 그래서 아래 조회는 제한한 표를 읽지 않더라도 실행되지 않습니다(그 툴킷에서 부서가 막히는 사람에게만).

  • 사용자 정의 함수를 부르는 조회 — 함수 안에서 읽는 표는 실행 계획에 보이지 않습니다. AI 에게 함수 없이 다시 쓰도록 안내합니다.
  • 제한은 툴킷 단위입니다. 같은 표를 다른 툴킷(같은 데이터베이스를 가리키는 다른 툴킷, 또는 다른 데이터베이스 이름을 붙여 읽을 수 있는 툴킷)으로 읽으면 그 툴킷에는 제한이 걸리지 않습니다. 같은 표를 읽을 수 있는 툴킷이 여럿이면 모두 제한해 주시고, 조회 계정이 다른 데이터베이스를 읽지 못하게 해 주세요. Microsoft Fabric 은 같은 워크스페이스의 다른 Lakehouse · Warehouse 를 이름만으로 읽을 수 있습니다.
  • 정의를 볼 수 없는 뷰를 거치는 조회 — 조회 계정이 뷰의 정의나 그 뷰가 읽는 객체를 볼 수 없으면, 그 뷰가 무엇을 읽는지 알 수 없어 실행하지 않습니다(1-3 의 권한을 맞춰 주세요). 제한 대상으로 고르신 뷰가 이런 뷰라면 그 툴킷의 조회가 모두 실행되지 않으니, 제한하시기 전에 권한을 먼저 확인해 주세요.
  • 표 목록·정의 같은 시스템 정보를 읽는 조회 — information_schema 같은 시스템 표와, 표 이름·정의를 돌려주는 함수를 쓰는 조회입니다. 표 목록은 AI 가 스키마 조회 도구로 확인합니다(볼 수 없는 표는 빠져 있습니다).
  • 다른 데이터베이스를 이름으로 읽는 조회(SQL Server) — 다른DB.dbo.표 처럼 데이터베이스 이름을 붙여 읽는 조회는, 시스템 데이터베이스(master 등)를 읽더라도 실행되지 않습니다. 그 데이터베이스의 표는 이 툴킷의 제한으로 가릴 수 없기 때문입니다(커넥터 v0.2.23 이상).
  • SQL 에 오타가 있는 조회 — 데이터베이스가 실행 계획을 만들지 못하면 오류 내용을 돌려주지 않고 판단할 수 없음으로 안내합니다. 오류 내용에 제한한 표의 정보가 섞일 수 있어서입니다.
  • 제한한 표와 같은 이름이 SQL 에 보이는 조회(PostgreSQL) — 제한한 표와 같은 이름의 컬럼·별칭·문자열·CTE 가 SQL 에 있으면 실행되지 않을 수 있습니다. 표를 읽지 않고 컬럼 이름만 알아내는 조회까지 막으려고 이름으로도 판단하기 때문입니다. 별칭이나 CTE 이름을 바꾸면 실행됩니다.

막지 못하는 것도 있습니다.

  • 쓰기 도구는 막지 않습니다. 쓰기 도구는 관리자가 SQL 을 정해 둔 것이라 부서와 상관없이 실행됩니다. 제한한 표를 건드리는 쓰기 도구가 있으면 제한 데이터를 저장할 때, 데이터 열람 권한 목록, 쓰기 도구를 저장할 때 "이 쓰기 도구는 부서와 상관없이 실행됩니다" 로 알려 드립니다. 부서를 가려야 하는 쓰기 도구는 엔드포인트를 따로 나눠 주세요.
  • 코드표는 제한할 수 없습니다. 코드표는 회사 공용 사전이라 고를 수 없게 되어 있습니다. 반대로 이미 제한한 표는 코드표로 지정할 수 없습니다. 코드표로 쓰시려면 데이터 열람 권한에서 먼저 빼 주세요.
  • 사용자 정의 연산자·형 변환, 그리고 데이터베이스 확장 기능이 설치한 함수(저희가 알고 막는 것 밖의 것)는 함수처럼 걸러지지 않을 수 있습니다. 이런 것을 쓰시는 데이터베이스라면 데이터베이스 권한으로 막아 주세요.
  • Oracle 에서 대소문자만 다른 이름의 표·뷰·별칭이 함께 있으면(예: "HrSalary" 와 HRSALARY) 하나만 골라도 모두 제한됩니다. 이름을 대소문자 구분 없이 맞추기 때문입니다.
  • SQL Server 에서는 제한한 표와 이름이 같은 CTE·별칭.컬럼 을 쓴 조회도 실행되지 않을 수 있습니다. 실행 계획에 보이지 않는 표까지 막으려고 SQL 에 나온 이름으로도 판단하기 때문입니다. 별칭이나 CTE 이름을 바꾸면 실행됩니다(커넥터 v0.2.23 이상).
  • MySQL · MariaDB 에서는 제한한 표와 이름이 같은 컬럼·별칭을 쓴 조회도 실행되지 않을 수 있습니다. 조회에 나온 이름을 넓게 보고 판단하기 때문입니다. 제한한 표가 열리는 쪽이 아니라 더 막히는 쪽입니다 (커넥터 v0.2.21 이상).
  • 뷰만 제한하면 그 뷰가 읽는 표의 이름은 AI 에게 보일 수 있습니다. 조회는 막히지만, 이름도 감추시려면 아래 표도 함께 골라 주세요.
  • 사람이 적은 글에 들어 있는 표 이름은 그대로입니다. 지표 설명, 스키마 사전 메모, 툴킷 지시 사항에 직접 적어 두신 표 이름은 AI 에게 보입니다.

5. 되돌리기

  • 제한 데이터를 지우시면 그 표는 1분 안에 다시 툴킷을 쓰는 사람 누구나 볼 수 있습니다.
  • 부서 한 곳만 풀어 주시려면 그 제한 데이터의 볼 수 있는 부서에 넣으시면 됩니다.
  • 기능 전체를 끄는 것은 저희 쪽에서 할 수 있습니다. 끄면 모든 표가 다시 열리므로, 필요하시면 문의해 주세요.