Access Control
Overview
Access Control 페이지에서 관리자는 사용자 또는 그룹에 데이터베이스 접근 권한을 직접 부여할 수 있습니다.
11.5.0부터 스키마(논리DB) 수준의 접근제어 기능이 추가되었습니다.
Access Control 목록 조회하기
Access Control 페이지에서는 QueryPie에 등록된 사용자 및 그룹별로 부여된 DB 권한(Privilege) 및 관리자 역할 현황을 조회할 수 있습니다.
- Group / Users 탭 : Group 및 사용자의 목록을 표시하고 현황을 볼 수 있습니다.
- Locked Accounts : 계정 잠금 조건으로 인해 잠긴 사용자를 확인할 수 있고 잠금을 해제할 수 있습니다.

Administrator > Databases > DB Access Control > Access Control
사용자/그룹별 Access Control 상세 내역 조회하기
Access Control 페이지 내 Groups / Users 탭의 목록에서 특정 사용자 또는 그룹 행을 클릭하면 상세 화면에서 privilege를 부여받은 대상 정보를 확인할 수 있습니다.

특정 사용자의 접근제어 상세 페이지
- 검색 : Connection Name 으로 조회 가능
- 기본 정보
- Type : USER 또는 Group으로 분류 유형을 표시합니다.
- Auth Provider : 해당 사용자가 인증에 사용하는 인증서비스 제공자가 무엇인지 표시합니다.
- Admin Roles : 해당 사용자에게 할당되어 있는 Admin Role을 표시합니다.
- Members : 선택한 대상이 Group일 경우 해당 group의 구성원을 표시합니다.
- Email : 해당 사용자의 email 주소입니다.
- Privilege를 부여받은 대상 목록 : privilege를 부여받은 connection이 없는 경우 목록에는 아무것도 표시되지 않습니다.
- Connection Name : 대상 커넥션의 이름입니다.
- Database Type****: DB 유형 (eg. MySQL, MariaDB, PostgreSQL…)
- Host : 커넥션에 등록된 Host 주소입니다.
- Port : 커넥션에 등록된 Port 주소입니다.
- Access Control Level : access control의 수준을 나타냅니다. 11.5.0부터 스키마(논리 DB) 수준의 제어를 할 수 있게 되면서 Host 또는 Schema(Logical DB)로 표시됩니다.
- Assigned Privilege : 대상에 할당된 privilege입니다.
- Status : privilege 의 상태 표시입니다.
- Active ; 해당 사용자에게 커넥션의 권한이 정상적으로 부여되어 있는 상태
- Deactivated : 커넥션에 대한 권한이 있지만, 관리자에 의해 설정된 기간 동안 커넥션에 접속하지 않은 경우 비활성화된 상태
- Expired : 해당 사용자의 권한이 만료일자에 도래하여 회수된 상태
- Expiration date : Privilege 만료일
- Renewed At : deactivated 상태에서 다시 관리자에 의해 active 상태가 된 시점입니다.
- Granted At : privilege를 부여받은 시점입니다.
- Last Accessed At : 사용자 대상에 접근한 가장 최근 시점입니다.
- Granted By : privilege를 부여한 관리자 또는 승인자입니다.
Access Control 권한 부여하기 - Host Level
- Database 설정 메뉴에서 Access Control 메뉴로 이동합니다.
- 목록에서 권한을 부여할 사용자 또는 그룹을 선택하여 상세 페이지로 이동합니다.
Grant Privilege버튼을 클릭합니다.- 팝업 창에서 Access Control Level 에서 Host 를 선택합니다. (기본값 : Host)

- privilege를 부여할 커넥션을 선택하고 특정 privilege type을 선택합니다.

- 필요한 경우 Expiration date에 privilege 만료일을 설정한 뒤
Grant버튼을 누릅니다. - 권한을 부여할 커넥션 여러 개를 선택하여 일괄적으로 권한을 부여할 수도 있습니다.

이제 권한을 부여받은 사용자는 해당 권한으로 커넥션에 접속할 수 있으며, 권한 부여 내역은 Access Control Logs 로그에 Access Control Granted 이벤트로 기록됩니다.
Access Control 권한 부여하기 - Schema(Logical DB) Level
11.5.0 버전 현재 Schema Level 권한 부여가 가능한 DBMS :
Athena,Azure SQL, BigQuery, Cassandra, ClickHouse, DocumentDB, DynamoDB, Hive, Impala, MariaDB, MongoDB, MySQL, Oracle, PostgreSQL, Redshift, SAP Hana, ScyllaDB, ShardingSphere, Single Store, Spanner, SQLServer, Trino, Vertica
- Database 설정 메뉴에서 Access Control 메뉴로 이동합니다.
- 목록에서 권한을 부여할 사용자 또는 그룹을 선택하여 상세 페이지로 이동합니다.
Grant Privilege버튼을 클릭합니다.- 팝업 창에서 Access Control Level 에서 Schema(Logical DB) 를 선택합니다. (기본값 : Host)

- Connections 항목에서 대상 커넥션을 선택합니다. 스키마 레벨은 한 번에 여러 개의 커넥션에 다중 설정이 불가합니다. 커넥션을 선택하면 우측의 privilege 항목에 기본적으로 select 권한이 필요한 스키마에 자동으로 SELECT privilege가 부여된 것을 볼 수 있습니다. 관리자는 이 항목을 지울 수도 있지만 그랬을 때 Web editor 또는 proxy에서 스키마 구조를 조회하는 시점에 오류가 발생할 수 있으니 가급적 이 항목을 제거하지 않는 것을 권장합니다.
- privilege 를 할당할 특정 스키마(논리 DB)를 지정하기 위해
Add Item버튼을 누릅니다.
아래에 대상을 추가할 수 있는 행이 추가됩니다. schema 구조가 있는 DBMS (Oracle, Postgres 등)은 대상 이름을 입력할 때 반드시{database 이름}.{schema 이름}의 형식으로 입력해야 합니다. MySQL 과 같이 schema 구조가 없는 DBMS는 논리 DB 이름만 입력하면 됩니다.
- Oracle 예시 : ORCLDB.TESTUSER
- PostgreSQL 예시 : testdb.test_schema
- MySQL 예시 : sakila

- privilege 할당은 먼저 팝업 창 우측 상단의 Host Level Privilege 항목에서 원하는 privilege type을 선택합니다. ( 스키마 레벨 privilege는 host level privilege 의 범위 내에서만 부여가 가능하기 때문입니다. 예를 들어 Read/Write를 Host Level Privilege 로 선택했다면 그 범위 내에서 SELECT, INSERT 등을 부여할 수 있지만 Read-Only를 Host Level Privilege로 선택했다면 SELECT만 지정할 수 있습니다.)

- 아래에 표시되는 Host Level Others, Host Level Functions는 설정을 보기만 할 수 있습니다. 수정하기 위해서는 Databases > DB Access Control > Privilege Type 메뉴에서 해당 Privilege Type을 수정해야 합니다. Host Level의 Privilege의 속성에 의해 Schema Level도 privilege가 종속되기 때문에 상위의 정보를 확인하는 용도로 사용됩니다.

- 필요한 경우 Expiration date에 privilege 만료일을 설정한 뒤
Grant버튼을 누릅니다.
이제 권한을 부여받은 사용자는 해당 권한으로 커넥션에 접속할 수 있으며, 권한 부여 내역은 Access Control Logs 로그에 Access Control Granted 이벤트로 기록됩니다.
- PostgreSQL은 schema level 제어 대상이 Database입니다. PostgreSQL은 schema 라는 이름의 구조를 가지고 있으나 이는 privilege 할당의 대상이 되는 것이 아니라 구분의 용도로 사용되기 때문입니다.
- Oracle, Presto, Trino, SAP HANA는 schema level 제어 대상이 Schema입니다.
- Schema 또는 Logical DB 대상 입력을 할 때 정규식을 사용할 수 있습니다. 이때 단어의 시작을 나타내는 ^, 단어의 끝을 나타내는 $를 사용할 수 없을 수 있습니다. 내부적으로 database.schema.table의 구조를 모두 인식하여 처리하기 때문에 schema 이름에 해당하는 정규식만 입력하면 오류가 발생합니다.
사용자가 그룹에 포함된 경우, 그룹과 사용자를 대상으로 같은 커넥션에 대해 각각 다른 권한을 적용하면 어떻게 되나요? 사용자에 개별 사용자 권한 및 그룹의 권한으로 여러 개의 Privilege이 부여된 경우, 사용자 커넥션 접속 시 Default Privilege를 선택하고 접속할 수 있습니다.
Access Control 권한 회수하기

Administrator > Databases > DB Access Control > Access Control > Details
- Database 설정 메뉴에서 Access Control 메뉴로 이동합니다.
- 목록에서 권한을 회수할 사용자 또는 그룹을 선택하여 디테일 페이지로 이동합니다.
- 권한을 회수할 커넥션을 찾아 체크박스 선택 후 Revoke 버튼을 통해 권한을 회수합니다.
- 권한을 회수할 커넥션 여러 개를 선택하여 일괄적으로 권한을 회수할 수도 있습니다.
이제 권한이 회수된 사용자는 더 이상 해당 커넥션에 접속할 수 없으며, 권한 회수 내역은 Access Control Logs 로그에 Access Control Revoked 항목으로 기록됩니다.
Access Control Details 패널에서의 Status 설명
- Active : 해당 사용자에게 커넥션의 권한이 정상적으로 부여되어 있는 상태입니다.
- Deactivated : 해당 사용자가 커넥션에 대한 권한이 있지만, 관리자에 의해 설정된 기간 동안 커넥션에 접속하지 않은 경우 비활성화된 상태입니다. 이 경우, 사용자는 해당 커넥션에 일시적으로 접속할 수 없습니다.
- Deactivated 상태 우측의 버튼(
Renew)을 통해 비활성화된 권한을 갱신하여 다시 활성화할 수 있습니다. - 비활성화된 권한을 갱신한 경우 Renewed At 컬럼에 갱신 시점이 표시됩니다.
Access Control Details 패널에 대한 세부 설명
- 해당 권한이 부여된 최초 시점은 Granted At 컬럼을 통해 확인할 수 있습니다.
- 해당 권한을 부여받은 사용자가 커넥션에 마지막으로 접속한 시점은 Last Access At 컬럼을 통해 확인할 수 있습니다.
- 해당 권한이 회수되는 시점은 Expiration Date 컬럼을 통해 확인할 수 있습니다.
- 권한이 부여되었지만 Expiration Date 컬럼에 아무런 표시가 없는 경우 해당 권한은 회수되지 않습니다. 다만, 해당 커넥션 권한에 대한 기본적인 관리는 커넥션 장기미접속 설정(Deactivation Period)의 영향을 받습니다.
커넥션 잠금 계정 해제하기 (Locked Account)

Administrator > Databases > DB Access Control > Access Control > Locked Account
- 데이터베이스 커넥션 보안 정책에 의해 DB 계정 인증 실패(Maximum Login Failures) 횟수 초과로 커넥션이 잠긴 경우에 대해 Locked Account 메뉴에서 조회 가능합니다.
- DB 계정 인증 실패 횟수와 잠긴 시점이 함께 표시됩니다.
- 잠금 해제하고자 하는 항목을 선택 후 우측
Unlock을 클릭하여 커넥션 잠금을 해제합니다.

- 커넥션 잠금 및 잠금 해제 내역은 Audit > Databases > Account Lock History 메뉴에서 확인할 수 있습니다.
테이블 태그로 접근제어하기
Databases > General > Configurations에서 New DAC Policy Management 를 활성화한 경우,

Access Control에서 특정 사용자에 접근 허용된 커넥션에 대해 특정 태그가 부여된 테이블만 접근 가능하도록 제어할 수 있습니다. 이 기능을 사용하기 위해 다음의 조건이 충족되어야 합니다.
- New DAC Policy Management 기능이 Enable이어야 합니다.
- 특정 사용자에게 특정커넥션에 대한 privilege가 할당되어 있어야 합니다.
- Databases > Policy Management > Data Path 에 대상 테이블이 경로로 등록되어 있어야 하고 태그가 부여되어 있어야 합니다.
조건이 만족되었다면 아래와 같이 설정할 수 있습니다.
- Databases > DB Access Control > Access Control에서 특정 사용자에게 privilege가 할당된 특정 커넥션 상세화면으로 이동합니다.
- 상세화면에서 Access Type을 Tag-based table access 를 선택하고 태그를 추가합니다. 이미 존재하는 태그(테이블에 부여된 태그)만 선택하여 사용할 수 있습니다.

만약 Tag-based table access 기능을 활성화한 상태에서 어떤 태그도 등록하지 않으면 해당 커넥션의 모든 테이블에 접근할 수 없게 됩니다.