Snowflake를 사용하여 Snowflake REST APIs 인증하기

이 항목에서는 Snowflake REST APIs 를 사용할 때 서버를 인증하는 방법에 대해 설명합니다.

요청을 보낼 때 요청에는 다음 중 하나를 사용하는 인증 정보가 포함되어야 합니다.

키 페어 인증 사용하기

키 페어 인증을 사용하는 경우 다음 작업을 완료해야 합니다.

  1. 키 페어 인증 설정

  2. JWT 토큰 생성하기

키 페어 인증 설정

키 페어 인증을 사용하려면 다음 단계를 수행하십시오.

  1. 키 페어 인증을 설정합니다.

    이 프로세스의 일부로서 다음을 수행해야 합니다.

    1. 공개-개인 키 페어를 생성합니다. 생성된 개인 키는 파일(예: 이름이 rsa_key.p8 인 파일)에 있어야 합니다.

    2. Snowflake 사용자에게 공개 키를 할당합니다. 사용자에게 키를 할당한 후 DESCRIBE USER 명령을 실행합니다. 출력에서 RSA_PUBLIC_KEY_FP 속성은 사용자에게 할당된 공개 키의 지문으로 설정되어야 합니다.

    키 페어를 생성하고 사용자에게 키를 할당하는 방법에 대한 지침은 키 페어 인증 및 키 페어 순환 을 참조하십시오.

  2. 생성된 개인 키를 사용하여 Snowflake에 연결 할 수 있는지 SnowSQL을 사용하여 확인합니다.

    $ snowsql -a <account_identifier> -u <user> --private-key-path <path>/rsa_key.p8
    
    Copy

    암호화된 개인 키를 생성한 경우, SnowSQL은 키 생성 시 만든 암호 구문을 입력하라는 메시지를 표시합니다.

JWT 토큰 생성하기

애플리케이션 코드에서 JWT 토큰을 생성하려면 다음 단계를 따릅니다.

  1. 사용자에 대한 공개 키의 지문(SHA-256 해시)을 생성합니다. 지문에 SHA256: 접두사를 붙입니다.

    예:

    SHA256:hash

    SQL DESCRIBE USER 명령을 실행하여 RSA_PUBLIC_KEY_FP 속성에서 값을 가져올 수도 있습니다.

  2. 페이로드에서 다음 필드를 사용하여 JSON 웹 토큰(JWT) 을 생성합니다.

    필드

    설명

    iss

    JWT의 발급자입니다. 이를 다음 값으로 설정합니다.

    account_identifier.user.SHA256:public_key_fingerprint

    여기서,

    • account_identifier 는 Snowflake 계정 식별자 입니다.

      계정 로케이터 를 사용하는 경우 계정 로케이터에서 모든 리전 정보를 제외하십시오.

    • user 는 Snowflake 사용자 이름입니다.

    • SHA256:public_key_fingerprint 는 이전 단계에서 생성한 지문입니다.

    참고

    The account_identifier and user values must use all uppercase characters.

    MYORGANIZATION-MYACCOUNT.MYUSER.SHA256:public_key_fingerprint

    sub

    JWT의 제목입니다. 이를 다음 값으로 설정합니다.

    account_identifier.user

    MYORGANIZATION-MYACCOUNT.MYUSER

    iat

    JWT의 발급 시간(UTC)입니다. 값을 초 또는 밀리초 단위의 현재 시간 값으로 설정합니다.

    1615370644 (초) . 1615370644000 (밀리초)

    exp

    JWT의 만료 시간(UTC)입니다. 값을 초 또는 밀리초 단위로 지정할 수 있습니다.

    참고

    JWT는 만료 시간을 더 길게 지정하더라도 토큰 발급 후 최대 1시간 동안 유효합니다.

    1615374184 (초) . 1615374184000 (밀리초)

  3. 보내는 각 API 요청에서 다음 헤더를 설정합니다.

    • Authorization: Bearer JWT

      여기서 JWT 는 생성한 토큰입니다.

    • (선택 사항) X-Snowflake-Authorization-Token-Type: KEYPAIR_JWT

      X-Snowflake-Authorization-Token-Type 헤더를 생략할 경우 Snowflake는 토큰을 검사하여 토큰 유형을 결정합니다.

      이 헤더는 선택 사항이지만 이 헤더를 지정하도록 선택할 수 있습니다. 헤더를 다음 값 중 하나로 설정할 수 있습니다.

OAuth 사용하기

OAuth를 사용하려면 다음 단계를 수행하십시오.

  1. 인증을 위해 OAuth를 설정합니다.

    OAuth를 설정하고 OAuth 토큰을 가져오는 방법에 대한 자세한 내용은 OAuth 소개 를 참조하십시오.

  2. 생성된 OAuth 토큰을 사용하여 Snowflake에 연결할 수 있는지 SnowSQL을 사용하여 확인합니다.

    • Linux 및 MacOS 시스템의 경우

    $ snowsql -a <account_identifier> -u <user> --authenticator=oauth --token=<oauth_token>
    
    Copy
    • Windows 시스템의 경우

    $ snowsql -a <account_identifier> -u <user> --authenticator=oauth --token="<oauth_token>"
    
    Copy
  3. 보내는 각 API 요청에서 다음 헤더를 설정합니다.

    • Authorization: Bearer oauth_token

      여기서 oauth_token 은 생성된 OAuth 토큰입니다.

    • (선택 사항) X-Snowflake-Authorization-Token-Type: OAUTH

      X-Snowflake-Authorization-Token-Type 헤더를 생략할 경우 Snowflake는 토큰을 검사하여 토큰 유형을 결정합니다.

      이 헤더는 선택 사항이지만 이 헤더를 지정하도록 선택할 수 있습니다. 헤더를 다음 값 중 하나로 설정할 수 있습니다.

프로그래밍 방식 액세스 토큰 (PAT) 사용하기

프로그래밍 방식 액세스 토큰으로 인증하려면 요청에서 다음 HTTP 헤더를 설정합니다.

  • Authorization: Bearer token_secret

  • X-Snowflake-Authorization-Token-Type: PROGRAMMATIC_ACCESS_TOKEN (선택 사항)

예를 들어 cURL을 사용하여 Snowflake REST API 엔드포인트에 요청을 보내는 경우는 다음과 같습니다.

curl --location 'https://myorganization-myaccount.snowflakecomputing.com/api/v2/databases' \
  --header "Authorization: Bearer <token_secret>"
Copy

PAT_INVALID 오류로 요청이 실패하는 경우 다음 이유 중 하나로 인해 오류가 발생했을 수 있습니다.

  • 프로그래밍 방식 액세스 토큰과 연결된 사용자를 찾을 수 없습니다.

  • 유효성 검사에 실패했습니다.

  • 프로그래밍 방식 액세스 토큰과 연결된 역할을 찾을 수 없습니다.

  • 사용자가 지정된 프로그래밍 방식 액세스 토큰과 연결되어 있지 않습니다.

자세한 내용은 프로그래밍 방식의 액세스 토큰을 사용하여 엔드포인트 인증하기 섹션을 참조하십시오.