はじめに
Snowflake Key Pair Authentication Writebackコネクターを使用すると、すべてのデータをDomoに格納して正規化した後にSnowflakeに送り返し、同時にクエリでもそれを利用可能にすることが簡単になります。データウェアハウジングソリューションとして既にSnowflakeを使用している場合、このコネクターは、SnowflakeとDomoを併用してデータを最大限に活用するために役立ちます。このコネクターを使用するには、Snowflakeアカウント名、Snowflakeホストへの接続に使用しているユーザー名、シークレットキー、パスフレーズ、およびDomoデベロッパーアカウントの認証情報(クライアントIDとクライアントシークレット)が必要になります。DomoのSnowflake Key Pair Authentication Writebackコネクターを使用すると、DomoのDataSetからSnowflakeアカウントにデータをエクスポートできます。Snowflake APIの詳細については、 https://docs.snowflake.com/ja にアクセスしてください。 このトピックでは、Snowflake Key Pair Authentication Writebackコネクターのユーザーインターフェースに固有のフィールドとメニューについて説明します。DataSetの追加や更新スケジュールの設定、DataSet情報の編集に関する一般的な情報は、「 コネクターを使用してDataSetを追加する 」を参照してください。必要条件
Snowflakeデータベースに接続し、DataSetを作成するには、以下が必要です。- アカウントのフルネーム(Snowflakeが提供)。これは、Snowflake URLの https://の 直後に続く部分です。 アカウントのフルネームには、アカウントがホストされる地域とクラウドプラットフォームを識別する追加のセグメントが含まれる場合があることに注意してください。米国西部地域は account_name 、その他の地域は account_name.region_id です。以下の表に、クラウドプラットフォームまたは地域別のアカウント名の例を示します。各行では、アカウント名が「xy12345」であると仮定しています。

- Snowflakeホストへの接続に使用するユーザー名。
- シークレットキー。
- パスフレーズ。シークレットキーを暗号化する場合、OpenSSLが、シークレットキーファイルの暗号化に使用されるパスフレーズの入力を求めてきます。
パブリック/シークレットキーペアを設定する
パブリック/シークレットキーペアを設定するには、以下のステップに従ってください。-
ターミナルウィンドウのコマンドラインからシークレットキーを生成します。
シークレットキーの暗号化バージョンも、シークレットキーの暗号化されていないバージョンも生成できます。
-
暗号化されていないバージョンを生成するには、以下のコマンドを使用します。
$ 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が提供するファイル許可機構を使用して、ファイルを不正アクセスから保護する必要があります。使用されていないときにファイルをセキュリティ保護するのはユーザーの責任です。
-
ALTER USERを使用して、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パブリックキーの指紋。
- 下のサンプルコードを修正して実行します。このコードはシークレットキーファイルを復号してSnowflakeドライバーに渡し、接続を作成します。
-
セキュリティパラメーターを更新:
- <path>は作成したシークレットキーファイルへのローカルパスを指定します。
-
セッションのパラメーターを更新:
- <user>はSnowflakeログイン名を指定します。
- <account>はアカウントの名前(Snowflakeが提供)を指定します。
-
サンプルコードは以下のとおりです。
java.util.Properties;
-
セキュリティパラメーターを更新:
キーローテーション
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 Key Pair Authentication Writeback コネクターページの [認証情報] ペインと [詳細] ペインのオプションについて説明します。このページのほかのペインの項目である [スケジュール設定] や [DataSetに名前を付け、説明を入力] に関しては、ほとんどのタイプのコネクターで共通しています。詳細については、「 コネクターを使用してDataSetを追加する 」を参照してください。[認証情報]ペイン
このペインには、DomoデベロッパーアカウントとSnowflakeアカウントの認証情報を入力するフィールドがあります。以下の表は、各フィールドに必要な内容を説明しています。フィールド | 説明 |
|---|---|
| Account Name | アカウントのフルネーム(Snowflakeが提供)を入力します。米国西部地域は account_name 、その他の全地域は account_name.region_id です。 |
| Username | Snowflakeホストへの接続に使用するユーザー名を入力します。 |
| Private Key | シークレットキーを入力します。 |
| Passphrase | シークレットキーを暗号化する場合、OpenSSLが、シークレットキーファイルの暗号化に使用されるパスフレーズの入力を求めてきます。パスフレーズをここに入力します。 |
| Role | 権限を入力します。 |
[詳細]ペイン
このペインには、メインとなる [Reports] メニューのほか、選択したレポートタイプに応じて表示/非表示になる様々なメニューが含まれています。メニュー | 説明 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
Input DataSet ID | SnowflakeにコピーするDataSetのDataSet ID(GUID)を入力します。Data CenterでDataSetの詳細ビューを開き、URLの「datasources/」に続く部分でIDを見つけることができます。例えば、URLが https://mycompany.domo.com/datasources/845305d8-da3d-4107-a9d6-13ef3f86d4a4/details/overview であれば、DataSet IDは「845305d8-da3d-4107-a9d6-13ef3f86d4a4」になります。 | ||||||||
Select Table Name | データがコピーされるテーブルの命名方法を選択します。
| ||||||||
Enter Table Name | データをコピーするSnowflakeテーブルの名前を入力します(スペースや特殊文字はアンダースコアに置き換えられます)。 | ||||||||
Warehouses | ウェアハウスを選択します。 | ||||||||
Databases | データベースを選択します。 | ||||||||
Database Schema | スキーマを選択します。 | ||||||||
| Use All Caps for Column Names and Table Name | 列名とテーブル名がすべて大文字で書き戻されます。そのため、Snowflakeでは大文字と小文字の区別がありません。 | ||||||||
| How do you want to update your data in snowflake? |
| ||||||||
| Choose the Escape character | 入力データセットのエスケープ文字を選択します。 |
よくある質問
このコネクターはいつ使用しますか?
このコネクターはいつ使用しますか?
Snowflakeではどの権限が必要ですか?
Snowflakeではどの権限が必要ですか?
このコネクターを起動するにはどのような認証情報が必要ですか?
このコネクターを起動するにはどのような認証情報が必要ですか?
データはどれくらいの頻度で更新されますか?
データはどれくらいの頻度で更新されますか?
注意すべきAPI制限はありますか?
注意すべきAPI制限はありますか?
同じアカウントを使用して複数のDataSetを作成することはできますか?
同じアカウントを使用して複数のDataSetを作成することはできますか?
Snowflakeデータベースに接続できない理由は何ですか?IPアドレスのホワイトリスト登録が必要でしょうか?
Snowflakeデータベースに接続できない理由は何ですか?IPアドレスのホワイトリスト登録が必要でしょうか?
入力DataSet IDはどのように見つけられますか?
入力DataSet IDはどのように見つけられますか?