INVOKER_ROLE
INVOKER_ROLE
쿼리를 실행하는 객체의 계정 수준 역할 이름을 반환하는 컨텍스트 함수예요. 역할 이름이 데이터베이스 역할이면 NULL을 반환해요. 마스킹 정책에서 호출하는 역할에 따라 다른 값을 보여줄 때 유용합니다.
본문
INVOKER_ROLE()
인자는 없어요.
사용 메모
- 마스킹 정책과 함께 사용한다면 계정이 Enterprise Edition 이상인지 확인하세요.
- 쿼리 컨텍스트에 따라 함수가 평가하는 역할은 아래와 같아요.
| Context | Evaluated role |
|---|---|
| User | |
| Table | CURRENT_ROLE |
| View | 뷰 소유자 역할 |
| UDF | UDF 소유자 역할 |
| Caller's rights 저장 프로시저 | CURRENT_ROLE |
| Owner's rights 저장 프로시저 | 저장 프로시저 소유자 역할 |
| Task | 태스크 소유자 역할 |
| Stream | 주어진 스트림을 조회하는 역할 |
예시 — 마스킹 정책 SQL 표현식에서 INVOKER_ROLE을 사용해 볼게요. 권한 없는 사용자에게 NULL 반환:
CREATE OR REPLACE MASKING POLICY mask_string AS
(val string) RETURNS string ->
CASE
WHEN INVOKER_ROLE() IN ('ANALYST') THEN val
ELSE NULL
END;
권한 없는 사용자에게 고정된 마스킹 값을 반환할 수도 있어요.
CREATE OR REPLACE MASKING POLICY mask_string AS
(val string) RETURNS string ->
CASE
WHEN INVOKER_ROLE() IN ('ANALYST') THEN val
ELSE '********'
END;