Snowflakeでの Snowflake REST APIs 認証¶
このトピックでは、 Snowflake REST APIs を使用するときにサーバーに対して認証する方法について説明します。
リクエストを送信する場合、リクエストには以下のいずれかを使用する認証情報が含まれている必要があります。
キーペア認証の使用¶
キーペア認証を使用する場合は、以下のタスクを完了する必要があります。
キーペア認証を設定する¶
キーペア認証を使用するには、次のステップに従います。
キーペア認証を設定します。
このプロセスの一環として、次を実行する必要があります。
公開キーと秘密キーのペアを生成します。生成された秘密キーはファイル内にある必要があります(例:
rsa_key.p8
という名前)。公開キーをSnowflakeユーザーに割り当てます。ユーザーにキーを割り当てたら、 DESCRIBE USER コマンドを実行します。出力では、
RSA_PUBLIC_KEY_FP
プロパティは、ユーザーに割り当てられた公開キーのフィンガープリントに設定する必要があります。
キーペアを生成してユーザーにキーを割り当てる方法については、 キーペア認証とキーペアローテーション をご参照ください。
生成された秘密キーを使用して Snowflake に接続 できることを確認するために、 SnowSQL を使用します。
$ snowsql -a <account_identifier> -u <user> --private-key-path <path>/rsa_key.p8
暗号化された秘密キーを生成した場合、 SnowSQL は、キーの生成時に作成したパスフレーズの入力を求めます。
JWT トークンの生成¶
アプリケーション・コード内で JWT トークンを生成するには、以下の手順を使用します。
ユーザーの公開キーのフィンガープリント(SHA-256ハッシュ)を生成します。フィンガープリントの前に
SHA256:
を付けます。ペイロードに次のフィールドを含む JSON Webトークン(JWT) を生成します。
フィールド
説明
例
iss
JWT の発行者。次の値に設定します。
account_identifier.user.SHA256:public_key_fingerprint
条件:
account_identifier
は、Snowflakeの使用する アカウント識別子 です。アカウントロケーター を使用している場合は、アカウントロケーターからリージョン情報を除外します。
user
は、Snowflakeユーザー名です。SHA256:public_key_fingerprint
は、前のステップで生成したフィンガープリントです。
注釈
account_identifier
とuser
の値は、すべて大文字を使用する必要があります。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
OAuth の使用¶
OAuth を使用するには、次のステップに従います。
認証のために OAuth を設定します。
OAuth を設定して OAuth トークンを取得する方法の詳細については、 OAuth の紹介 をご参照ください。
生成された OAuth トークンを使用してSnowflakeに接続できることを確認するために、 SnowSQL を使用します。
Linuxおよび MacOS システムの場合
$ snowsql -a <account_identifier> -u <user> --authenticator=oauth --token=<oauth_token>
Windowsシステムの場合
$ snowsql -a <account_identifier> -u <user> --authenticator=oauth --token="<oauth_token>"
送信する各 API リクエストで、次のヘッダーを設定します。
Authorization: Bearer oauth_token
ここで、
oauth_token
は生成された OAuth トークンです。X-Snowflake-Authorization-Token-Type: OAUTH