카테고리:

Information Schema , 테이블 함수

POLICY_REFERENCES

지정된 정책이 오브젝트에 할당된 각 오브젝트에 대한 행을 반환하거나 또는 지정된 오브젝트에 할당된 각 정책에 대한 행을 반환합니다.

참고 항목: POLICY_REFERENCES 뷰 (Account Usage 뷰)

구문

네트워크 정책 오브젝트에만 해당:

POLICY_REFERENCES(
      POLICY_NAME => '<string>' ,
      POLICY_KIND => 'NETWORK_POLICY'
      )
Copy

기타 정책 오브젝트의 경우:

POLICY_REFERENCES(
      POLICY_NAME => '<string>'
      )
Copy

모든 정책 오브젝트의 경우:

POLICY_REFERENCES(
    REF_ENTITY_NAME => '<string>' ,
    REF_ENTITY_DOMAIN => '<string>'
    )
Copy

인자

POLICY_NAME => 'string'

정책 이름을 지정합니다.

  • 전체 정책 이름은 작은따옴표로 묶어야 합니다.

  • 정책 이름이 대/소문자를 구분하거나 특수 문자나 공백이 포함된 경우, 대/소문자를 처리하려면 큰따옴표가 필요합니다. 큰따옴표는 작은따옴표로 묶어야 합니다(즉, '"<정책_이름>"').

현재, Snowflake는 정책 이름을 인자로 지정할 때 다음 정책을 지원합니다.

POLICY_KIND => 'NETWORK_POLICY'

POLICY_NAME 값이 네트워크 정책인 경우에만 이 인자를 사용하십시오. 다른 종류의 정책 이름을 지정할 때는 이 인자를 사용하지 마십시오.

REF_ENTITY_NAME => 'string'

정책이 설정된 오브젝트의 이름(예: 테이블 이름, 뷰 이름, 외부 테이블 이름 또는 사용자 이름)입니다.

  • 전체 오브젝트 이름은 작은따옴표로 묶어야 합니다.

  • 오브젝트 이름이 대/소문자를 구분하거나, 특수 문자 또는 공백을 포함하는 경우 대/소문자를 처리하려면 큰따옴표가 필요합니다. 큰따옴표는 작은따옴표로 묶어야 합니다(즉, '"<작업_이름>"').

REF_ENTITY_DOMAIN => 'string'

정책이 설정된 오브젝트 유형입니다.

오브젝트가 외부 테이블인 경우, 'TABLE' 을 인자 값으로 사용합니다.

오브젝트가 구체화된 뷰인 경우, 'VIEW' 를 인자 값으로 사용합니다.

지원되는 도메인은 다음과 같습니다.

  • 'ACCOUNT'

  • 'INTEGRATION'

  • 'TABLE'

  • 'TAG'

  • 'USER'

  • 'VIEW'

반환

이 함수는 다음 열을 반환합니다.

데이터 타입

설명

POLICY_DB

VARCHAR

정책이 설정된 데이터베이스입니다.

POLICY_SCHEMA

VARCHAR

정책이 설정된 스키마입니다.

POLICY_NAME

VARCHAR

정책의 이름입니다.

POLICY_KIND

VARCHAR(17)

Snowflake의 정책 유형입니다.

REF_DATABASE_NAME

VARCHAR

쿼리된 오브젝트가 참조하는 오브젝트를 포함하는 데이터베이스의 이름입니다.

REF_SCHEMA_NAME

VARCHAR

쿼리된 오브젝트가 참조하는 오브젝트를 포함하는 스키마의 이름입니다.

REF_ENTITY_NAME

VARCHAR

정책이 설정된 오브젝트의 이름(즉, 테이블_이름, 뷰_이름, 외부_테이블_이름)입니다.

REF_ENTITY_DOMAIN

VARCHAR

정책이 설정된 오브젝트 유형(즉, 테이블, 뷰)입니다.

REF_COLUMN_NAME

VARCHAR

정책이 설정된 열 이름입니다.

REF_ARG_COLUMN_NAMES

VARCHAR

마스킹 정책이 설정된 쿼리 결과의 행에 대해 NULL을 반환합니다.

TAG_DATABASE

VARCHAR

태그에 할당된 정책이 있는 태그를 포함하는 데이터베이스의 이름 또는 정책이 태그에 할당되지 않은 경우 NULL입니다.

TAG_SCHEMA

VARCHAR

태그에 할당된 정책이 있는 태그를 포함하는 스키마의 이름 또는 정책이 태그에 할당되지 않은 경우 NULL입니다.

TAG_NAME

VARCHAR

태그에 정책이 할당된 태그의 이름 또는 정책이 태그에 할당되지 않은 경우 NULL입니다.

POLICY_STATUS

VARCHAR

ACTIVE, MULTIPLE_MASKING_POLICY_ASSIGNED_TO_THE_COLUMN, COLUMN_IS_MISSING_FOR_SECONDARY_ARG 또는 COLUMN_DATATYPE_MISMATCH_FOR_SECONDARY_ARG 의 값 4개 중 1개가 될 수 있는 정책 상태를 지정합니다.

POLICY_STATUS 열과 관련하여 다음을 참고하십시오.

ACTIVE

태그에 의해 열(즉, REF_COLUMN_NAME)이 단일 정책에만 연결되도록 지정합니다.

MULTIPLE_MASKING_POLICY_ASSIGNED_TO_THE_COLUMN

여러 마스킹 정책이 동일한 열에 할당되도록 지정합니다.

COLUMN_IS_MISSING_FOR_SECONDARY_ARG

정책(즉, POLICY_NAME)이 조건부 마스킹 정책이고 테이블(즉, REF_ENTITY_NAME)에 동일한 이름의 열이 없음을 지정합니다.

COLUMN_DATATYPE_MISMATCH_FOR_SECONDARY_ARG

정책이 조건부 마스킹 정책이고 테이블에 마스킹 정책 서명의 데이터 타입과 이름은 같지만 데이터 타입이 다른 열이 있음을 지정합니다.

사용법 노트

  • 쿼리를 실행하는 역할에 부여된 권한에 따라 결과가 반환됩니다.

    • 역할에 전역 APPLY MASKING POLICY 권한이 있는 경우 Snowflake는 쿼리 결과에 모든 마스킹 정책 연결을 반환합니다.

    • 역할에 전역 APPLY ROW ACCESS POLICY 권한이 있는 경우 Snowflake는 쿼리 결과에 모든 행 액세스 정책 연결을 반환합니다.

    • 주어진 정책에 대한 APPLY 권한이 역할에 있는 경우(예: MASKING POLICY에 대한 APPLY) Snowflake는 쿼리를 실행하는 역할이 소유한 오브젝트에 대해서만 해당 정책의 연결을 반환합니다.

    • 역할에 전역 APPLY 권한 또는 정책에 대한 OWNERSHIP 권한이 있지만 테이블이나 뷰에 대한 OWNERSHIP이 없는 경우(예: 테이블에 대한 SELECT) Snowflake는 쿼리 결과에 정책 연결을 표시하지 않습니다.

    • 역할에 정책 권한이 없지만 테이블에 대한 OWNERSHIP 권한이 있는 경우 Snowflake는 오류 메시지를 반환하고 정책 연결을 표시하지 않습니다.

  • Information Schema 테이블 함수를 호출할 때 세션에는 사용 중인 INFORMATION_SCHEMA 스키마가 있거나 또는 함수가 정규화된 오브젝트 이름을 사용해야 합니다. 자세한 내용은 Snowflake Information Schema 섹션을 참조하십시오.

  • 쿼리를 실행할 구문 변형을 하나 선택하십시오. 인자를 혼합하면 오류 및 쿼리 실패가 발생합니다.

    인자 ref_entity_nameref_entity_domain 은 함께 포함되어야 하며, 그렇지 않으면 쿼리가 실패합니다.

  • 지정된 오브젝트 이름이 존재하지 않거나 쿼리 연산자가 오브젝트에 대한 정책을 볼 권한이 없는 경우 Snowflake는 오류를 반환합니다. 연산자가 정책 연결의 하위 세트를 볼 수 있는 경우 Snowflake는 정책 연결의 결과 세트를 반환할 수 있습니다. ref_entity_domain 으로 나열된 지원되지 않는 오브젝트 유형(예: 'stream')도 오류를 반환합니다.

  • 쿼리 연산자에 정책에 대한 APPLY 또는 OWNERSHIP 권한이 없는 경우 Snowflake는 결과 세트를 반환하지 않습니다.

열에 ssn_mask 라는 마스킹 정책이 설정된 각 오브젝트(예: 테이블 또는 뷰)에 대한 행을 반환합니다.

use database my_db;
use schema information_schema;
select *
  from table(information_schema.policy_references(policy_name => 'my_db.my_schema.ssn_mask'));
Copy

my_table 이라는 테이블에 할당된 각 정책에 대한 행을 반환합니다.

use database my_db;
use schema information_schema;
select *
  from table(information_schema.policy_references(ref_entity_name => 'my_db.my_schema.my_table', ref_entity_domain => 'table'));
Copy