はじめに
Snowflakeは、すべてのデータを簡単にまとめて、分析する必要のあるすべてのユーザーとシステムが利用できるようにするData Warehouseソフトウェアです。DomoのSnowflake Using Key Pair Authenticationコネクターを使用すると、指定したウェアハウス、データベース、そしてデータベーススキーマから、SQL クエリを入力することでデータを取得できるようになります。Snowflake API の詳細については、 https://docs.snowflake.net/manuals を参照してください。 このバージョンのSnowflakeコネクターは、通常のユーザー名/パスワード認証ではなくキーペア認証の使用をサポートしていることを除いて、基本的に標準の Snowflakeコネクター と同じです。この認証方式では2048ビット(最小)のRSAキーペアが必要です。OpenSSLを使用してパブリックキーとシークレットキーのペアを生成することができます。キーペアを生成するステップは以下のとおりです。パブリックキーは、Snowflakeクライアントを使用するSnowflakeユーザーに割り当てられます。 Snowflake Using Key Pair Authenticationコネクターは「データベース」コネクターであり、クエリを使用してデータベースからデータを取得します。Data Centerでは、ウィンドウ上部のツールバーで [データベース] をクリックし、これを含むほかのデータベースコネクターのページにアクセスできます。 このトピックでは、Snowflake Using Key Pair Authenticationコネクターのユーザーインターフェースに固有のフィールドとメニューについて説明します。DataSetの追加、更新スケジュールの設定およびDataSet情報の編集に関する一般的な情報は、「 コネクターを使用してDataSetを追加する 」を参照してください。必要条件
Snowflakeデータベースに接続し、DataSetを作成するには、以下が必要です。-
アカウントのフルネーム(Snowflakeが提供)。これは、Snowflake URLの
https:// の直後に続く部分です。
アカウントのフルネームには、アカウントがホストされる地域とクラウドプラットフォームを識別する追加のセグメントが含まれる場合があることに注意してください。以下の表に、クラウドプラットフォームまたは地域別のアカウント名の例を示します。各行に対して、アカウント名が「xy12345」であると仮定しています。

- Snowflakeホストに接続するために使用されるユーザー名
- Snowflakeシークレットキー
- 暗号化された鍵を作成した場合にシークレットキーファイルを暗号化するために使用するパスフレーズ
パブリックキーペア/シークレットキーペアの設定
パブリック/シークレットキーペアを設定するには、以下のステップに従ってください。-
ターミナルウィンドウのコマンドラインからシークレットキーを生成します。
シークレットキーの暗号化バージョンも、シークレットキーの暗号化されていないバージョンも生成できます。
-
暗号化されていないバージョンを生成するには、以下のコマンドを使用します。
$ openssl genrsa -out rsa_key.pem 2048 -
暗号化されたバージョンを生成するには、以下のコマンドを使用します。
$ openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8通常、暗号化されたバージョンを生成する方が安全です。 2番目のコマンドを使用してシークレットキーを暗号化する場合、OpenSSLが、シークレットキーファイルの暗号化に使用されるパスフレーズの入力を求めてきます。シークレットキーを保護するために強力なパスフレーズを使用することを推奨します。このパスフレーズを安全な場所に記録します。Snowflakeに接続するときにパスフレーズを入力します。パスフレーズはシークレットキーの保護にのみ使用され、Snowflakeに送信されることはないことに注意してください。 PEMシークレットキーの例を以下に示します。
-
暗号化されていないバージョンを生成するには、以下のコマンドを使用します。
-
コマンドラインからシークレットキーを参照してパブリックキーを生成します。シークレットキーが暗号化され、「rsa_key.p8」という名前のファイルに含まれていると仮定して、次のコマンドを使用します。
$ openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub以下がPEMパブリックキーのサンプルです。 - パブリックキーファイルとシークレットキーファイルをローカルディレクトリにコピーして保存します。ファイルのパスを記録します。シークレットキーはPKCS#8(公開鍵暗号標準)フォーマットを使用して保存され、前のステップで指定したパスフレーズで暗号化されることに注意してください。ただし、OSが提供するファイル許可機構を使用して、ファイルを不正アクセスから保護する必要があります。使用されていないときにファイルをセキュリティ保護するのはユーザーの責任です。
-
ALTERUSER
を使用して、Snowflakeユーザーにパブリックキーを割り当てます。例:
alter user jsmith set rsa_public_key='MIIBIjANBgkqh...';注記:- セキュリティ管理者(例えばSECURITYADMIN権限を持つユーザー)以上がユーザーを変更できます。
- SQLステートメント内のパブリックキーヘッダーとフッターを除外します。
-
DESCRIBEUSERを使用してユーザーのパブリックキーの指紋を確認します。
プロパティ 値 デフォルト 説明 名前 JSMITH NULL値 名前 RSA_PUBLIC_KEY_FP SHA256:nvnONUsfiuycCLMXIEWG4eTp4FjhVUZQUQbNpbSHXiA= NULL値 ユーザーのRSAパブリックキーの指紋。 RSA_PUBLIC_KEY_2_FP NULL値 NULL値 ユーザーの2番目のRSAパブリックキーの指紋。 注記: RSA_PUBLIC_KEY_2_FPプロパティの詳細については、「 キーローテーション 」を参照してください。 -
下のサンプルコードを修正して実行します。このコードはシークレットキーファイルを復号してSnowflakeドライバーに渡し、接続を作成します。
-
セキュリティパラメーターを更新:
- <path>は作成したシークレットキーファイルへのローカルパスを指定します。
-
セッションのパラメーターを更新:
- <user>はSnowflakeログイン名を指定します。
- <account>はアカウントの名前を指定します(Snowflakeにより提供される)。
-
サンプルコードは以下のとおりです。
-
セキュリティパラメーターを更新:
キーローテーション
Snowflakeは、中断しないローテーションができるように、複数のアクティブキーをサポートします。内部で従っている有効期限スケジュールにもとづき、パブリックキーとシークレットキーをローテーションし、置換します。 現在、ALTER USERではRSA_PUBLIC_KEYとRSA_PUBLIC_KEY_2のパラメーターを使用して、最大2つのパブリックキーを1人のユーザーに関連付けることができます。 キーをローテーションするには、以下の手順を実行します。-
キーペア使用認証のステップを完了します…
- 新しいシークレットキーとパブリックキーのセットを生成します。
-
ユーザーにパブリックキーを割り当てます。パブリックキーの値を
RSA_PUBLIC_KEY または RSA_PUBLIC_KEY_2 (どちらでも、キーの値が現在使用されていないもの)に設定します。
例:
alter user jsmis set rsa_public_key_2='JERUE Htcve...';
- コードを更新してSnowflakeに接続します。新しいシークレットキーを指定します。 Snowflakeは、接続情報とともに送信されたシークレットキーにもとづいて、認証用の正しいアクティブなパブリックキーを検証します。
-
ユーザープロフィールから古いパブリックキーを削除します。例:
alter user jsmith unset rsa_public_key;
Snowflakeアカウントに接続する
このセクションでは、Snowflake Using Key Pair Authenticationコネクターページの [認証情報] および [詳細] ペインのオプションについて説明します。このページ内のほかのペインに含まれるコンポーネントである [スケジュール設定] や [DataSetに名前を付け、説明を入力] に関しては、ほとんどのタイプのコネクターで共通しています。詳細については「 コネクターを使用してDataSetを追加する 」を参照してください。[認証情報]ペイン
このペインには、Snowflakeアカウントに接続するための認証情報を入力するフィールドがあります。下表は、各フィールドに必要な内容を説明しています。フィールド | 説明 |
|---|---|
Account Name | Snowflakeアカウント名を入力します。アカウント名を検索する方法については、「 必要条件 」を参照してください。 |
Username | Snowflakeアカウントに関連するユーザー名を入力します。 |
Private Key | シークレットキーを入力します。シークレットキーの生成の詳細については、「 パブリックキー/シークレットキーペアの設定 」を参照してください。 |
| Passphrase | 暗号化された鍵を作成した場合、シークレットキーファイルの暗号化に使用したパスフレーズを入力します。 |
| Role | ユーザー権限を入力します。 |
[詳細]ペイン
このペインには、SQLクエリを入力したり、取得するデータの場所を指定したりするための多数のフィールドとメニューがあります。パラメーター | 説明 |
|---|---|
Query | データを取得するために使用するSQLクエリを入力します。 [Query Helper] パラメーターを使用して、使用可能なSQLクエリを記述できます。 [Query Helper] を使用するには、以下を実行します。
|
Warehouses | 取得したいデータが格納されているウェアハウスを選択します。このリストには、認証情報にもとづいてアクセスできるすべてのウェアハウスが表示されます。 |
Databases | 取得したいデータが格納されているデータベースを選択します。このリストには、認証情報にもとづいてアクセスできるすべてのデータベースが表示されます。 |
Database Schema | 取得したいデータが含まれているデータベーススキーマを選択します。このリストには、認証情報にもとづいてアクセスできるすべてのスキーマが表示されます。 |
Database Tables(オプション) | 取得するデータベース表を選択します。このリストには、認証情報にもとづいてアクセスできるすべての表が表示されます。データベース表を選択しない場合は、コネクターはデータベーススキーマ全体を取得します。 |
Table Columns(オプション) | 取得する表の列を選択します。このリストには、認証情報にもとづいてアクセスできるすべての列が表示されます。表の列を選択しないと、コネクターは選択したデータベース表全体を取得します。 |
Query Helper(オプション) | 上のメニューから、ウェアハウス、データベース、スキーマ、表などを選択すると、利用可能なSQLクエリがこのフィールドに作成されます。このフィールドのSQLステートメントをコピーして、 [Query] フィールドに貼り付けます。詳細については、上記の「 Query 」を参照してください。 |
| Fetch Size(オプション) | メモリのパフォーマンスのフェッチサイズを入力します。空白にすると、デフォルトサイズの1000が適用されます。DataSetに「メモリ不足」エラーが発生した場合は、フェッチサイズの縮小を試みます。 |
| Convert Null Values to empty string | これを選択すると、Snowflakeのソースの表のすべてのnull値がDomoの空の文字列に変更されます。 |
| Convert Timezone | ここでタイムゾーンを選択すると、コネクターにソースデータのタイムゾーンが通知されます。コネクターは、この情報を使用して、選択したタイムゾーンのタイムスタンプ値をUTCに変換します。 |
その他のペイン
スケジュール設定、再試行、更新に関するオプションなど、コネクターインターフェースのその他のペインに表示されるオプションについては、「 コネクターを使用してDataSetを追加する 」を参照してください。
よくある質問
# 注意すべきAPI制限はありますか?
# 注意すべきAPI制限はありますか?
# データ更新の頻度はどのくらいですか?
# データ更新の頻度はどのくらいですか?
# クエリの記述の際に注意すべき点はありますか?
# クエリの記述の際に注意すべき点はありますか?
# Snowflakeデータベースに接続できない理由は?IPアドレスをホワイトリストに登録する必要がありますか?
# Snowflakeデータベースに接続できない理由は?IPアドレスをホワイトリストに登録する必要がありますか?
# これはプロダクションレベルのコネクターですか?
# これはプロダクションレベルのコネクターですか?
# ウェアハウス、データベース、スキーマなどのリストが正しく設定されていない理由
# ウェアハウス、データベース、スキーマなどのリストが正しく設定されていない理由