IS_ORGANIZATION_USER_GROUP_IN_SESSION

IS_ORGANIZATION_USER_GROUP_IN_SESSION (세션 내 조직 사용자 그룹 역할 여부)

역할이 조직 사용자 그룹에서 가져온 것이라고 가정할 때, 그 역할이 세션에 대한 사용자의 활성 기본 역할 또는 보조 역할 계층에 있는지 확인해요.

지정한 역할이 조직 사용자 그룹에 연결되어 있지 않으면 함수는 FALSE를 반환해요.

출처: Snowflake SQL Reference - IS_ORGANIZATION_USER_GROUP_IN_SESSION

본문

구문

IS_ORGANIZATION_USER_GROUP_IN_SESSION( '<string_literal>' )

인자

'<string_literal>'

역할의 이름이에요.

반환 값

TRUE:

현재 사용자의 세션에서 활성 기본 역할 또는 보조 역할이 지정한 역할의 권한을 상속해요. DEFAULT_SECONDARY_ROLES 값이 ALL이면 사용자에게 부여된 모든 역할이 지정한 역할의 권한을 상속해요. 지정한 역할은 현재 기본 역할 또는 보조 역할(즉 각각 CURRENT_ROLE 또는 CURRENT_SECONDARY_ROLES가 반환한 역할)이거나 역할 계층에서 더 낮은 역할일 수 있어요.

FALSE:

다음 중 하나예요:

  • 지정한 역할이 조직 사용자 그룹에 연결되지 않은 로컬 역할이에요.
  • 지정한 역할이 현재 기본 또는 보조 역할의 역할 계층에서 더 높거나, 역할 계층에 전혀 없어요.

NULL:

데이터 공유 소비자 계정에서, 마스킹 정책 조건과 같이 공유 객체(예: 보안 UDF 또는 보안 뷰)를 참조하면 이 함수는 NULL을 반환해요. 이 동작은 데이터 공유 소비자 계정에서 역할 계층이 노출되는 것을 방지해요.

사용 참고 사항

IS_ORGANIZATION_USER_GROUP_IN_SESSION 함수는 IS_DATABASE_ROLE_IN_SESSION 및 IS_ROLE_IN_SESSION 함수와 비슷해요. 다음 사용 참고 사항은 이 모든 컨텍스트 함수에 적용돼요:

  • 이름 구문:
    • 인자로 역할 이름 하나만 전달할 수 있어요.
    • 인자는 문자열이어야 하며, Snowflake에 역할이 저장된 것과 같은 대소문자를 사용해야 해요. 자세한 내용은 식별자 요구 사항을 참고해요.
  • 컬럼 구문:
    • 인자로 컬럼 하나만 전달할 수 있어요.
    • 컬럼은 STRING 데이터 타입이어야 해요.
    • 컬럼을 다음 중 하나로 지정해요: column_name, table_name.column_name, schema_name.table_name.column_name, database_name.schema_name.table_name.column_name
  • 가상 컬럼: 표현식의 계산 결과를 테이블에 저장하지 않고 그 결과를 담는 가상 컬럼은 지원되지 않아요.
SELECT IS_ROLE_IN_SESSION(UPPER(authz_role)) FROM t1;

가상 컬럼은 표현식이 컬럼 이름에 대한 별칭을 가질 때만 지원돼요:

CREATE VIEW v2 AS
SELECT
  authz_role,
  UPPER(authz_role) AS upper_authz_role
FROM t2;

SELECT IS_ROLE_IN_SESSION(upper_authz_role) FROM v2;
  • 정책: 이러한 함수를 마스킹 정책이나 행 액세스 정책과 함께 사용한다면 Snowflake 계정이 Enterprise Edition 이상인지 확인해요. 정책 조건이 역할 계층과 상속된 권한을 평가해야 할 때 이 함수를 사용할 것을 권장해요.
  • 결과 캐시: 마스킹 정책이나 행 액세스 정책에서 이 함수를 사용하고, 정책이나 정책이 보호하는 테이블·컬럼이 이전 쿼리에서 변경되지 않았다면 RESULT_SCAN 함수를 사용해 보호된 테이블에 대한 쿼리 결과를 반환할 수 있어요. 결과 캐시는 비리터럴 구문을 사용할 때만 적용돼요.
  • 이 함수들은 결정적이지 않고 Snowflake가 어떤 데이터를 구체화할지 결정할 수 없으므로, 구체화된 뷰 정의에는 사용할 수 없어요.

예시

다음 예시는 다음이 모두 참일 때 TRUE를 반환해요:

  • 조직 사용자 그룹이 계정에 추가될 때 analyst 역할이 만들어지거나 연결되었어요.
  • analyst 역할에 부여된 권한을 세션의 현재 역할이 상속해요.
SELECT IS_ORGANIZATION_USER_GROUP_IN_SESSION('ANALYST');

더 알아보기