- 카테고리:
시스템 함수 (시스템 정보)
EXPLAIN_PRIVILEGES¶
SQL 문을 실행하는 데 필요한 권한을 설명하는 JSON 문자열을 반환합니다. 이 함수는 주어진 SQL 문에 대한 권한 부여 요구 사항을 분석하며, 필수 권한, 오브젝트 유형 및 오브젝트 이름을 보여주는 정형 형식으로 반환합니다.
구문¶
인자¶
statement => 'sql_statement'분석할 SQL 문이 포함된 문자열입니다. 문을 분석하여 문을 실행하는 데 필요한 권한을 결정합니다.
missing_only => boolean출력 모드를 제어하는 부울 값:
false- 현재 사용자 또는 지정된 역할에 이러한 권한이 있는지 여부에 관계없이 문을 실행하는 데 필요한 모든 권한을 반환합니다.true— 누락된 권한(현재 사용자 또는 지정된 역할이 현재 보유하지 않은 권한)만 반환합니다. 필요한 모든 권한이 있는 경우 ``{“authorized”: true}``를 반환합니다.
기본값:
falsefor_role => 'role_name'권한을 확인할 역할의 이름입니다. 이 인자는 ``missing_only => true``인 경우에만 사용됩니다. 문을 실행하기 위해 역할(및 부여된 역할)에 누락된 모든 권한을 반환합니다.
반환¶
함수는 계층 구조에서 필요한 권한을 설명하는 JSON 오브젝트가 포함된 VARCHAR 값을 반환합니다. JSON에는 다음 노드 유형이 포함될 수 있습니다.
권한 노드 — 단일 권한 요구 사항을 나타냅니다.
privilege— 필수 권한의 이름(예: USAGE, SELECT, OWNERSHIP)입니다. 오브젝트에 대한 권한이 충분함을 나타내는 특수 값 ``<ANY>``입니다.objectType— 오브젝트 유형(예: DATABASE, TABLE, SCHEMA, ACCOUNT)입니다.objectName— 오브젝트의 정규화된 이름입니다.
AND 노드 — 포함된 모든 권한이 필요합니다.
OR 노드 — 포함된 권한 중 하나 이상이 필요합니다.
의사결정 노드 — 인증 상태를 나타냅니다.
authorized: true— 모든 필수 권한이 있습니다.authorized: false— 권한 부여로 문에 권한을 부여할 수 없습니다.
액세스 제어 요구 사항¶
SQL 문에서 이름으로 오브젝트를 참조할 수 있는 권한이 있어야 합니다. 가장 일반적으로, 이 요구 사항은 오브젝트에 대해 하나 이상의 권한이 있으면 충족됩니다. RESOLVE ALL ON ACCOUNT 권한도 이 요구 사항을 충족합니다.
사용법 노트¶
statement인자는 상수 식이어야 합니다. 열 값 또는 상수가 아닌 기타 식을 전달할 수 없습니다.다중 문 SQL은 지원되지 않습니다. 함수는 단일 SQL 문만 허용합니다.
일부 SQL 문은 권한 분석에 지원되지 않습니다(예: GRANT, REVOKE, USE ROLE, USE SECONDARY ROLES).
일부 SQL 문에는 권한 분석에 지원되지 않는 권한 확인이 있습니다. 이러한 확인은 출력에서 생략됩니다.
권한 분석에는 일부 간접 권한 확인이 지원되지 않습니다. 이러한 확인은 출력에서 생략됩니다. 예를 들어 RESOLVE ALL ON ACCOUNT는 데이터베이스를 확인하기 위한 옵션으로 포함되지 않습니다.
오브젝트를 확인할 수 없는 경우 함수는 문에 모든 오브젝트에 대한 액세스가 필요하다는 오류를 반환합니다.
<ANY>권한은 오브젝트에 대한 모든 권한이 충분함을 의미합니다(예: OWNERSHIP으로도 충분한 USAGE 확인의 경우).
예¶
다음 예제에서는 EXPLAIN_GRANTABLE_PRIVILEGES 함수를 호출합니다.
DESC 명령에 대한 권한 설명¶
스키마를 설명하는 데 필요한 모든 권한을 표시합니다.
출력 예:
이 출력은 데이터베이스에 대한 MYDB AND 권한 및 스키마 MYDB.MYSCHEMA``에 대한 ``MONITOR 권한이 필요함을 나타냅니다.
누락된 권한만 확인¶
현재 사용자에게 누락된 권한을 확인합니다.
필요한 모든 권한이 있는 경우 다음을 반환합니다.
권한이 누락된 경우 누락된 권한만 반환합니다.
특정 역할에 대해 누락된 권한 확인¶
특정 역할에 어떤 권한이 있는지 확인합니다.
``analyst_role``(부여된 역할의 권한 포함)에 SELECT 문을 실행하는 데 필요한 권한이 있는지 여부를 확인하며, 없는 경우 누락된 권한을 반환합니다.