카테고리:

시스템 함수 (시스템 정보)

EXPLAIN_GRANTABLE_PRIVILEGES

Snowflake의 각 오브젝트 유형에 대해 부여 가능한 모든 권한을 나타내는 JSON 문자열을 반환합니다. 이 함수는 각 권한에 대해 사용 가능한 권한 부여 유형을 포함하여 다양한 오브젝트 유형에 대해 어떤 권한을 부여할 수 있는지에 대한 포괄적인 정보를 제공합니다.

참고 항목:

GRANT <privileges> … TO ROLE , GRANT CALLER ,

구문

EXPLAIN_GRANTABLE_PRIVILEGES(
  [ grantee => '<grantee_type>' ]
  [, object_type => '<object_type_name>' ]
  [, grant_type => '<grant_type_name>' ])

인자

모든 인자는 선택 사항이며 명명된 매개 변수 구문을 사용합니다.

grantee => 'grantee_type'

피부여자 유형별로 결과를 필터링합니다. 유효한 값:

  • ROLE

  • APPLICATION

기본값: ROLE

피부여자 유형에 따라 사용 가능한 권한이 결정됩니다. 예를 들어, 애플리케이션은 오브젝트에 대한 개별 소유권을 가질 수 없습니다.

object_type => 'object_type_name'

결과를 단일 오브젝트 유형으로 필터링합니다. 오브젝트 유형 이름의 단수 형식을 허용합니다(예: 'DATABASE', 'TABLE', 'SCHEMA'). 텍스트는 대/소문자를 구분하지 않습니다.

grant_type => 'grant_type_name'

특정 권한 부여 유형을 지원하는 권한으로 결과를 필터링합니다. 유효한 값:

  • 'INDIVIDUAL' — 개별 오브젝트에 대한 권한을 부여합니다. GRANT <privileges> … TO ROLE 섹션을 참조하십시오.

  • 'ALL' — 현재 모든 오브젝트에 대한 일괄 권한을 부여합니다(예: GRANT ... ON ALL TABLES IN SCHEMA). GRANT <privileges> … TO ROLE 섹션을 참조하십시오.

  • 'FUTURE' — 향후 오브젝트에 대한 일괄 권한을 부여합니다(예: GRANT ... ON FUTURE TABLES IN SCHEMA). 데이터베이스 또는 스키마 오브젝트에 대한 향후 권한 부여 섹션을 참조하십시오.

  • 'INHERITED' — 컨테이너의 현재 및 향후 오브젝트 모두에 대한 일괄 권한을 부여합니다(ALLFUTURE). GRANT <privileges> … TO ROLE 섹션을 참조하십시오.

  • 'CALLER' — 개별 오브젝트에 대한 호출자 권한을 부여 </developer-guide/restricted-callers-rights>`합니다. :doc:/sql-reference/sql/grant-caller` 섹션을 참조하십시오.

  • 'INHERITED_CALLER' — 컨테이너의 현재 및 향후 오브젝트 모두에 대한 일괄 호출자 권한을 부여합니다(예: GRANT INHERITED CALLER ... ON ALL TABLES IN SCHEMA). GRANT CALLER 섹션을 참조하십시오.

텍스트는 대소문자를 구분하지 않습니다.

반환

함수는 JSON 배열이 포함된 VARCHAR를 반환합니다. 배열의 각 요소는 오브젝트 유형을 나타내는 JSON 오브젝트이며, 구조는 다음과 같습니다.

{
  "parent": "<parent_object_type>",
  "singular": "<singular_name>",
  "plural": "<plural_name>",
  "privileges": {
    "<privilege_name>": ["<grant_type>", /* ... additional grant types */],
    /* ... additional privileges */
  }
}

JSON 필드:

  • parent — 오브젝트 계층 구조의 상위 오브젝트 유형입니다(예: SCHEMA는 TABLE의 상위 오브젝트임). ACCOUNT와 같은 최상위 오브젝트의 경우 문자열이 비어 있습니다.

  • singular — 오브젝트 유형 이름의 단수 형식입니다(예: DATABASE). 개별 권한 부여에 사용됩니다.

  • 오브젝트 유형 이름의 복수 형식입니다(예: plural 또는 DATABASES). 일괄 권한 부여에 사용됩니다.

  • privileges — 각 키가 권한 이름이고 각 값이 해당 권한을 부여하는 방법을 나타내는 권한 부여 유형 이름의 배열인 맵입니다.

사용법 노트

  • 모든 인자는 상수 식이어야 합니다. 열 값 또는 상수가 아닌 기타 식을 전달할 수 없습니다.

  • 인자가 제공되지 않으면 함수는 모든 오브젝트 유형에서 역할에 부여할 수 있는 모든 권한을 반환합니다.

다음 예제에서는 EXPLAIN_GRANTABLE_PRIVILEGES 함수를 호출합니다.

역할에 부여할 수 있는 모든 권한 가져오기

모든 오브젝트 유형 및 역할에 대해 부여할 수 있는 권한을 반환합니다.

CALL EXPLAIN_GRANTABLE_PRIVILEGES();

특정 오브젝트 유형에 대한 권한 가져오기

'DATABASE' 오브젝트 유형에 대한 권한만 반환합니다.

CALL EXPLAIN_GRANTABLE_PRIVILEGES(object_type => 'DATABASE');

출력 예:

[
  {
    "parent": "ACCOUNT",
    "singular": "DATABASE",
    "plural": "DATABASES",
    "privileges": {
      "APPLYBUDGET": ["ALL", "FUTURE", "INDIVIDUAL", "INHERITED"],
      "CREATE SCHEMA": ["INDIVIDUAL"],
      "IMPORTED PRIVILEGES": ["INDIVIDUAL"],
      "MODIFY": ["ALL", "FUTURE", "INDIVIDUAL", "INHERITED"],
      "MONITOR": ["ALL", "FUTURE", "INDIVIDUAL", "INHERITED"],
      "OWNERSHIP": ["INDIVIDUAL"],
      "REFERENCE_USAGE": ["ALL", "FUTURE", "INDIVIDUAL", "INHERITED"],
      "USAGE": ["ALL", "FUTURE", "INDIVIDUAL", "INHERITED"]
    }
  }
]

피부여자 유형별 필터링

애플리케이션에 사용할 수 있는 권한을 반환합니다.

CALL EXPLAIN_GRANTABLE_PRIVILEGES(grantee => 'APPLICATION');

애플리케이션은 개별 소유권을 가질 수 없으므로 OWNERSHIP``은 ``'ALL', 'FUTURE', ``’INHERITED’``와 같은 권한 부여 유형만 표시합니다.