Snowflake Knowledge - INSIGHT LAB

【小ネタ】カスタムクライアントOauth認可を設定してみました

作成者: Chris Hirasawa|2022年12月15日

はじめに

みなさま

日々の業務お疲れ様です。

この度、Qiita様の「Snowflake Advent Calendar 2022」に参加する機会をいただきまして誠にありがとうございます。私の記事は12月13日(火)投稿予定だったのですが、諸事情で間に合いませんでした(汗。。。許すまじ流行り病。。。サイトには素敵な記事がたくさん掲載されてありますので是非サイトを御覧ください。

https://qiita.com/advent-calendar/2022/snowflake

また、記事の内容としては、Qlik Senseの内容にも触れますがあくまでSnowflake側のカスタムクライアントOauthとしてどのような設定をしたかを備忘録として記載させていただければと考えております。

背景・目的

  • 弊社のBIソリューションの1つであるQlik SenseのDirect Queryを社内で検証した際に設定として必要になりました。
  • 下記スライドを参考にさせて頂きました。p.15辺りから該当箇所となります。
  • 因みにOauth(オーオース)をおさらいしますと、Open Authorizationの略でユーザIDやパスワードを利用せずアプリケーション間で認可(誰が、誰に、何の権限をできるようにするか)取り決められるプロトコルです。
  • このプロトコルによってユーザ情報を利用せずにアプリケーション間でアクセス制御が可能になります。

概要

大まかな手順としては下記となります。

  1. Snowflake上で下記のオブジェクトを作成する。
    1. ACCOUNTADMINロールの利用が許可されたUSER
    2. 作成したUSERが利用できるWAREHOUSE(コンピュートリソース)
    3. データベース
    4. スキーマ
    5. テーブル
    6. セキュリティ統合
  2. セキュリティ統合から必要な情報を取得しQlik Senseのコネクションを作成する
  3. Oauth情報を入力し、Snowflakeにリダイレクトされるため認可を行う
  4. 接続確認

※なお、実際のDirect QueryについてはQlik Sense側の記事となりますので本記事では割愛いたします。

手順詳細

①Snowflake側の準備

01. テスト用オブジェクト作成

02. セキュリティ統合の作成と認可情報の取得

02. 補足 - 認可情報はJSONで取得

②Qlik Sense側の認可設定の実施

01. 新しい接続を追加

01. 補足 - Authentication Mechanismで「Oauth」を選択すること

02. 各種設定項目入力

(重要)項目と入力例を下記に記載します。

  • Database properties
    • Server : <組織名>-<アカウント名>.snowflakecomputing.com
    • Port : 443
    • Database : QS_DIRECT_QUERY_DB
    • Schema : QS_DIRECT_QUERY_SC
    • Warehouse : QS_DIRECT_QUERY_WH
    • Role : SYSADMIN
  • Authentication
    • Authentcation Mechanism : Oauth
    • Oauth Server (Authorize):https://<組織名>-<アカウント名>.snowflakecomputing.com/oauth/authorize
    • Oauth Server (Token):https://<組織名>-<アカウント名>.snowflakecomputing.com/oauth/token-request
    • Client Id:<手順①-02で取得したJSONから>
    • Client Secret:<手順①-02で取得したJSONから>

03. 入力内容の検証

下記の図のようにAuthenticateを押下すると入力したOauth Serverの宛先が正しければそのSnowflake側のアカウントへサインインするようリダイレクトされます。

04. Qlik Sense側の認証

前手順で許可を押下し続行すると認証コードが表示されるのでCopy to clipboardを押下してコピーします。

  • 上記の値をクリップボードにコピーします (必ず文字列全体をコピーしてください)。
  • Qlik Connectors に戻り、値を貼り付けて、認証プロセスを完了します。
  • その後、このページを閉じることができます。

と記載されています。

Verifyを押下して認証コードを検証します。

成功すればStatus: Authenticated succesfullyと表示されます。

05. 接続の作成

最後にテスト接続で接続の成功を確認した後、作成を押下します。

これでOauth認証を利用した接続の完成です。

あとは、この接続をもとにDirect Queryでのデータ取得を行いますが、その部分は割愛させて頂きます。

まとめ

いかがでしたでしょうか。

セキュリティ統合を作成して、その認証情報をクライアント側で利用して接続を許可する流れでした。

特に難しいこともしておりません。

他にもカスタムではなく、パートナーアプリケーション用に準備されているOauth手順もあるようですので、下記にドキュメントのリンクを記載いたします。

https://docs.snowflake.com/ja/user-guide/oauth-partner.html

特にAlationに興味があるので是非触ってみようかと思います。

今回は、小ネタ(備忘録)としてカスタムクライアントOauthの設定をしてみました。
ここまで見ていただきありがとうございました。

参考