서버에 인증하기¶
이 항목에서는 Snowflake SQL API를 사용할 때 서버를 인증하는 방법에 대해 설명합니다.
요청을 보낼 때 요청에 인증 정보가 포함되어야 합니다. 다음 섹션에서는 이 정보를 요청에 추가하는 방법을 설명합니다.
OAuth 사용하기¶
OAuth를 사용하려면 다음 단계를 수행하십시오.
인증을 위해 OAuth를 설정합니다.
OAuth를 설정하고 OAuth 토큰을 가져오는 방법에 대한 자세한 내용은 OAuth 소개 를 참조하십시오.
생성된 Snowflake CLI 토큰을 사용하여 Snowflake에 연결할 수 있는지 OAuth을 사용하여 확인합니다.
Linux 및 MacOS 시스템의 경우
Windows 시스템의 경우
보내는 각 API 요청에서 다음 헤더를 설정합니다.
Authorization: Bearer oauth_token여기서
oauth_token은 생성된 OAuth 토큰입니다.(선택 사항)
X-Snowflake-Authorization-Token-Type: OAUTHX-Snowflake-Authorization-Token-Type헤더를 생략할 경우 Snowflake는 토큰을 검사하여 토큰 유형을 결정합니다.이 헤더는 선택 사항이지만 이 헤더를 지정하도록 선택할 수 있습니다. 헤더를 다음 값 중 하나로 설정할 수 있습니다.
KEYPAIR_JWT(키 페어 인증의 경우)OAUTH(OAuth 용)PROGRAMMATIC_ACCESS_TOKEN(프로그래밍 방식 액세스 토큰 용)
키 페어 인증 사용하기¶
키 페어 인증을 사용하려면 다음 단계를 수행하십시오.
키 페어 인증을 설정합니다.
이 프로세스의 일부로서 다음을 수행해야 합니다.
공개-개인 키 페어를 생성합니다. 생성된 개인 키는 파일(예: 이름이
rsa_key.p8인 파일)에 있어야 합니다.Snowflake 사용자에게 공개 키를 할당합니다. 사용자에게 키를 할당한 후 DESCRIBE USER 명령을 실행합니다. 출력에서
RSA_PUBLIC_KEY_FP속성은 사용자에게 할당된 공개 키의 지문으로 설정되어야 합니다.
키 페어를 생성하고 사용자에게 키를 할당하는 방법에 대한 지침은 키 페어 인증 및 키 페어 순환 을 참조하십시오. 지문 생성과 JWT 토큰 생성의 언어별 예시는 다음을 참조하십시오.
생성된 개인 키를 사용하여 Snowflake CLI Snowflake에 연결 :ref:`<label-snowcli_private_key> 할 수 있는지 `을 사용하여 확인합니다.
이 명령은 연결을 완료하기 위해 개인 키 암호를 입력하라는 메시지를 표시합니다.
PRIVATE_KEY_PASSPHRASE환경 변수에 암호 구문을 제공하면 프롬프트를 사용하지 않아도 됩니다.애플리케이션 코드에서:
사용자에 대한 공개 키의 지문(SHA-256 해시)을 생성합니다. 지문에
SHA256:접두사를 붙입니다. 예:SHA256:hashSQL DESCRIBE USER 명령을 실행하여 RSA_PUBLIC_KEY_FP 속성에서 값을 가져올 수도 있습니다.
페이로드에서 다음 필드를 사용하여 JSON 웹 토큰(JWT) 을 생성합니다.
필드
설명
예
issJWT의 발급자입니다. 이를 다음 값으로 설정합니다.
account_identifier.user.SHA256:public_key_fingerprint여기서,
account_identifier는 Snowflake 계정 식별자 입니다.계정 로케이터 를 사용하는 경우 계정 로케이터에서 모든 리전 정보를 제외하십시오.
user는 Snowflake 사용자 이름입니다.SHA256:public_key_fingerprint는 이전 단계에서 생성한 지문입니다.
참고
The
account_identifieranduservalues must use all uppercase characters. 계정 ID에 마침표(.)가 포함된 경우 계정 식별자의 마침표로 인해 JWT가 유효하지 않게 되므로 마침표를 하이픈(-)으로 바꿔야 합니다.MYORGANIZATION-MYACCOUNT.MYUSER.SHA256:public_key_fingerprintsubJWT의 제목입니다. 이를 다음 값으로 설정합니다.
account_identifier.userMYORGANIZATION-MYACCOUNT.MYUSERiatJWT의 발급 시간(UTC)입니다. 값을 초 또는 밀리초 단위의 현재 시간 값으로 설정합니다.
1615370644(초) .1615370644000(밀리초)expJWT의 만료 시간(UTC)입니다. 값을 초 또는 밀리초 단위로 지정할 수 있습니다.
참고
JWT는 만료 시간을 더 길게 지정하더라도 토큰 발급 후 최대 1시간 동안 유효합니다.
1615374184(초) .1615374184000(밀리초)보내는 각 API 요청에서 다음 헤더를 설정합니다.
Authorization: Bearer JWT여기서
JWT는 생성한 토큰입니다.(선택 사항)
X-Snowflake-Authorization-Token-Type: KEYPAIR_JWTX-Snowflake-Authorization-Token-Type헤더를 생략할 경우 Snowflake는 토큰을 검사하여 토큰 유형을 결정합니다.이 헤더는 선택 사항이지만 이 헤더를 지정하도록 선택할 수 있습니다. 헤더를 다음 값 중 하나로 설정할 수 있습니다.
KEYPAIR_JWT(키 페어 인증의 경우)OAUTH(OAuth 용)PROGRAMMATIC_ACCESS_TOKEN(프로그래밍 방식 액세스 토큰 용)
Python 예제¶
다음 섹션에서는 Python을 사용하여 JWT와 지문을 생성하는 방법을 설명합니다.
Python에서 JWT를 생성하는 예는 sql-api-generate-jwt.py 를 참조하십시오. sql-api-generate-jwt.py 예에서는 다음을 실행하여 설치할 수 있는 PyJWT 모듈 을 사용합니다.
Python으로 JWT 생성하기¶
다음 코드 섹션은 JWT를 생성하는 방법을 보여줍니다. 전체 예는 sql-api-generate-jwt.py 를 참조하십시오.
참고
이 예는 참조용으로만 제공되는 예입니다. 프로덕션 애플리케이션 또는 환경에서는 이 코드를 사용하지 마십시오.
Python으로 지문 생성하기¶
다음 코드 섹션은 지문을 생성하는 방법을 보여줍니다. 전체 예는 sql-api-generate-jwt.py 를 참조하십시오.
Snowflake CLI 예제¶
Snowflake CLI snow connection generate-jwt 명령을 사용하여 키 페어 인증용 JWT를 생성할 수 있습니다. 자세한 내용은 snow connection generate-jwt 섹션을 참조하십시오.
이 예제에서는 rsa_key.p8 의 개인 키를 사용하여 TEST 계정과 JDOE 사용자에 대한 토큰을 생성합니다.
이 명령은 연결을 완료하기 위해 개인 키 암호를 입력하라는 메시지를 표시합니다. PRIVATE_KEY_PASSPHRASE 환경 변수에 암호 구문을 제공하면 프롬프트를 사용하지 않아도 됩니다.
Java 예제¶
Java에서 JWT를 생성하는 예제는 SimpleStatementsApi.java 를 참조하십시오.
참고
이 예는 참조용으로만 제공되는 예입니다. 프로덕션 애플리케이션 또는 환경에서는 이 코드를 사용하지 마십시오.
이 예제에서는 다음 서드 파티 라이브러리를 사용합니다.
Swagger Codegen: REST API 및 애플리케이션 개발에 유용한 오픈 소스 라이브러리입니다.
Auth0: 인증과 JWT 토큰 생성을 위해 Java API를 제공합니다.
Node.js 예제¶
Node.js에서 JWT를 생성하는 예제는 sql-api-generate-jwt.js 를 참조하십시오.
참고
이 예는 참조용으로만 제공되는 예입니다. 프로덕션 애플리케이션 또는 환경에서는 이 코드를 사용하지 마십시오.