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 Webトークン(JWT) を生成します。

    フィールド

    説明

    iss

    JWT の発行者。次の値に設定します。

    account_identifier.user.SHA256:public_key_fingerprint

    条件:

    • account_identifier は、Snowflakeの使用する アカウント識別子 です。

      アカウントロケーター を使用している場合は、アカウントロケーターからリージョン情報を除外します。

    • user は、Snowflakeユーザー名です。

    • SHA256:public_key_fingerprint は、前のステップで生成したフィンガープリントです。

    注釈

    account_identifieruser の値は、すべて大文字を使用する必要があります。

    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

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