|sf-rest|로 Snowflake 컨텍스트 지정

|sf-rest|에 요청할 때 Snowflake 컨텍스트의 측면을 지정할 수 있습니다.

요청 헤더를 사용하여 REST API 호출 컨텍스트에서 다음을 지정할 수 있습니다.

  • X-Snowflake-Role 헤더로 요청을 인증하는 데 사용되는 Snowflake 역할

  • X-Snowflake-Warehouse 헤더로 요청을 실행하는 데 사용되는 Snowflake 웨어하우스

사용자의 기본 설정을 사용하지 않고, 이러한 헤더를 사용하면 각 호출이 명시적이고 격리되며 감사가 가능해집니다. 컨텍스트를 설정하기 위한 추가 API 호출 작업 없이 각 요청에 올바른 역할과 웨어하우스가 사용되도록 보장할 수 있습니다.

REST API 요청을 수행할 때 컨텍스트를 지정하여 다음 작업을 수행할 수 있습니다.

  • 상태 비저장 호출을 실행합니다.

    세션 컨텍스트를 설정하기 위해 먼저 별도의 API를 호출하지 않고도 호출에 특정 역할이 사용되도록 보장합니다.

  • 사용자를 변경하지 않습니다.

    느리고 해당 사용자의 다른 모든 세션에 영향을 주는 ALTER USER … SET DEFAULT_ROLE=…을 실행하지 않고 요청별로 역할을 안전하게 전환합니다.

  • 온디맨드 컴퓨팅을 활성화합니다.

    X-Snowflake-Warehouse 헤더를 제공하여 기본 웨어하우스가 없는 사용자 또는 서비스 계정이 쿼리를 실행하거나 프로시저를 생성할 수 있도록 허용합니다.

  • 사용자 관리를 간소화합니다.

    여러 역할(예: READER 및 WRITER)이 부여된 하나의 서비스 사용자를 사용합니다. 그러면 애플리케이션은 X-Snowflake-Role 헤더를 전송하여 올바른 작업에 대해 올바른 권한을 선택합니다. 이러한 방식으로 여러 단일 역할 사용자를 관리하는 것을 피할 수 있습니다.

적용 우선 순위

헤더가 제공되면 다음 순서로 사용자의 기본 설정보다 우선합니다.

  1. 헤더(제공되는 경우)가 사용됩니다.

  2. 그렇지 않으면 세션의 기본 역할 또는 기본 웨어하우스가 사용됩니다.

  3. 필요한 경우임에도 둘 다 사용할 수 없으면 호출이 실패합니다.

요청을 승인할 때 사용할 역할 지정

X-Snowflake-Role 헤더를 사용하여 요청을 승인할 때 사용할 역할을 지정할 수 있습니다.

요구 사항

  • 지정하는 역할은 존재하고 사용자에게 부여되어야 하며 사용 중인 인증 방법에서 허용되어야 합니다.

  • PAT(프로그래밍 방식 액세스 토큰)<label-sfrest_authenticating_pat>`를 사용하는 경우 요청된 역할은 PAT의 :code:`ROLE_RESTRICTION 내에 있어야 합니다. PAT가 허용하는 것보다 권한이 더 많은 역할을 지정하는 경우 사용자에게 지정된 역할이 부여되더라도 요청이 실패합니다.

다음 예에서는 사용자의 기본 역할에 관계없이 인증을 위해 ACCOUNTADMIN 역할을 사용하여 데이터베이스를 생성합니다.

X-Snowflake-Role 헤더의 값을 큰따옴표로 묶거나 따옴표 없이 지정할 수 있습니다.

curl -X POST "$API_BASE/database/databases" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "X-Snowflake-Role: ACCOUNTADMIN" \
  -d '{"name": "HDR_DEMO_DB", "comment": "Created via REST with role header"}'
Copy

문이 실행되어야 하는 웨어하우스 지정

X-Snowflake-Warehouse 헤더를 사용하여 문을 실행할 때 사용할 웨어하우스를 지정할 수 있습니다. 이러한 문에는 프로시저 실행, Python 함수 생성, 컴퓨팅 리소스가 필요한 쿼리 실행 등이 포함됩니다.

요구 사항

  • 유효한 역할에는 웨어하우스에 대해 USAGE 권한이 있어야 합니다.

  • 기본 웨어하우스가 설정되지 않고 이 헤더를 생략하면 웨어하우스 종속 호출이 실패합니다.

다음 예에서는 BUILD_WH 웨어하우스를 사용하는 Python 프로시저를 만듭니다. 지정된 역할에는 웨어하우스에 대한 USAGE 권한이 있어야 합니다. 생성된 PYTHON_WH_TEST 프로시저는 활성 웨어하우스 이름을 반환합니다.

X-Snowflake-Warehouse 헤더의 값을 큰따옴표로 묶거나 따옴표 없이 지정할 수 있습니다.

curl -X POST "$API_BASE/procedure/databases/TEST_DB/schemas/TEST_SCHEMA/procedures" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "X-Snowflake-Role: ACCOUNTADMIN" \
  -H "X-Snowflake-Warehouse: BUILD_WH" \
  -d '{
        "name": "PYTHON_WH_TEST",
        "arguments": [],
        "return_type": {"datatype": "VARIANT", "nullable": true},
        "language_config": {
          "python_function": {
            "handler":"main",
            "runtime_version":"3.11",
            "packages":["snowflake-snowpark-python"]
          }
        },
        "body": "def main(session):\n    return {\"warehouse\": session.get_current_warehouse()}"
      }'
Copy