Snowflake를 사용하여 Snowflake REST APIs 인증하기¶
이 항목에서는 Snowflake REST APIs 를 사용할 때 서버를 인증하는 방법에 대해 설명합니다.
요청을 보낼 때 요청에는 다음 중 하나를 사용하는 인증 정보가 포함되어야 합니다.
키 페어 인증 사용하기¶
키 페어 인증을 사용하는 경우 다음 작업을 완료해야 합니다.
키 페어 인증 설정¶
키 페어 인증을 사용하려면 다음 단계를 수행하십시오.
- 키 페어 인증을 설정합니다. - 이 프로세스의 일부로서 다음을 수행해야 합니다. - 공개-개인 키 페어를 생성합니다. 생성된 개인 키는 파일(예: 이름이 - rsa_key.p8인 파일)에 있어야 합니다.
- Snowflake 사용자에게 공개 키를 할당합니다. 사용자에게 키를 할당한 후 DESCRIBE USER 명령을 실행합니다. 출력에서 - RSA_PUBLIC_KEY_FP속성은 사용자에게 할당된 공개 키의 지문으로 설정되어야 합니다.
 - 키 페어를 생성하고 사용자에게 키를 할당하는 방법에 대한 지침은 키 페어 인증 및 키 페어 순환 을 참조하십시오. 
- 생성된 개인 키를 사용하여 |sf-cli|Snowflake에 연결 :ref:`<label-snowcli_private_key> 할 수 있는지 `을 사용하여 확인합니다. - $ snow connection test --account <account_identifier> --user <user> --private-key-path <path>/rsa_key.p8 - 암호화된 개인 키를 생성한 경우, |sf-cli|은 키 생성 시 만든 암호 구문을 입력하라는 메시지를 표시합니다. 
JWT 토큰 생성하기¶
애플리케이션 코드에서 JWT 토큰을 생성하려면 다음 단계를 따릅니다.
- 사용자에 대한 공개 키의 지문(SHA-256 해시)을 생성합니다. 지문에 - SHA256:접두사를 붙입니다.
- 페이로드에서 다음 필드를 사용하여 JSON 웹 토큰(JWT) 을 생성합니다. - 필드 - 설명 - 예 - iss- JWT의 발급자입니다. 이를 다음 값으로 설정합니다. - account_identifier.user.SHA256:public_key_fingerprint- 여기서, - account_identifier는 Snowflake 계정 식별자 입니다.- 계정 로케이터 를 사용하는 경우 계정 로케이터에서 모든 리전 정보를 제외하십시오. 
- user는 Snowflake 사용자 이름입니다.
- SHA256:public_key_fingerprint는 이전 단계에서 생성한 지문입니다.
 - 참고 - The - account_identifierand- uservalues 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(밀리초)
- 보내는 각 API 요청에서 다음 헤더를 설정합니다. - Authorization: Bearer JWT- 여기서 - JWT는 생성한 토큰입니다.
- (선택 사항) - X-Snowflake-Authorization-Token-Type: KEYPAIR_JWT- X-Snowflake-Authorization-Token-Type헤더를 생략할 경우 Snowflake는 토큰을 검사하여 토큰 유형을 결정합니다.- 이 헤더는 선택 사항이지만 이 헤더를 지정하도록 선택할 수 있습니다. 헤더를 다음 값 중 하나로 설정할 수 있습니다. - KEYPAIR_JWT(키 페어 인증의 경우)
- OAUTH(OAuth 용)
- PROGRAMMATIC_ACCESS_TOKEN(프로그래밍 방식 액세스 토큰 용)
 
 
OAuth 사용하기¶
OAuth를 사용하려면 다음 단계를 수행하십시오.
- 인증을 위해 OAuth를 설정합니다. - OAuth를 설정하고 OAuth 토큰을 가져오는 방법에 대한 자세한 내용은 OAuth 소개 를 참조하십시오. 
- 생성된 Snowflake CLI 토큰을 사용하여 Snowflake에 연결할 수 있는지 OAuth을 사용하여 확인합니다. - Linux 및 MacOS 시스템의 경우 
 - $ snow connection test --account <account_identifier> --user <user> --authenticator=oauth --token=<oauth_token> - Windows 시스템의 경우 
 - $ snow connection test --account <account_identifier> --user <user> --authenticator=oauth --token="<oauth_token>" 
- 보내는 각 API 요청에서 다음 헤더를 설정합니다. - Authorization: Bearer oauth_token- 여기서 - oauth_token은 생성된 OAuth 토큰입니다.
- (선택 사항) - X-Snowflake-Authorization-Token-Type: OAUTH- X-Snowflake-Authorization-Token-Type헤더를 생략할 경우 Snowflake는 토큰을 검사하여 토큰 유형을 결정합니다.- 이 헤더는 선택 사항이지만 이 헤더를 지정하도록 선택할 수 있습니다. 헤더를 다음 값 중 하나로 설정할 수 있습니다. - KEYPAIR_JWT(키 페어 인증의 경우)
- OAUTH(OAuth 용)
- PROGRAMMATIC_ACCESS_TOKEN(프로그래밍 방식 액세스 토큰 용)
 
 
프로그래밍 방식 액세스 토큰 (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>"
PAT_INVALID 오류로 요청이 실패하는 경우 다음 이유 중 하나로 인해 오류가 발생했을 수 있습니다.
- 프로그래밍 방식 액세스 토큰과 연결된 사용자를 찾을 수 없습니다. 
- 유효성 검사에 실패했습니다. 
- 프로그래밍 방식 액세스 토큰과 연결된 역할을 찾을 수 없습니다. 
- 사용자가 지정된 프로그래밍 방식 액세스 토큰과 연결되어 있지 않습니다. 
자세한 내용은 프로그래밍 방식의 액세스 토큰을 사용하여 엔드포인트 인증하기 섹션을 참조하십시오.