Microsoft SQL Server (MSSQL)

ネットワークトラフィックの暗号化

Looker アプリケーションとデータベース間のネットワーク トラフィックを暗号化することをおすすめします。セキュアなデータベースアクセスを可能にするドキュメント ページに記載されているオプションのいずれかを検討してください。

SSL 暗号化の使用を検討している場合は、Microsoft のドキュメントをご覧ください。

サーバー認証の構成

Looker では、MSSQL サーバーに「SQL Server 認証」が必要です。MSSQL サーバーが「Windows Integrated Authentication」のみに構成されている場合は、サーバーの構成を「Windows Integrated Authentication and SQL Server Authentication」に変更します。

サーバー構成が正しく設定されていないと、Looker は接続できません。次のような SQL Server のログメッセージが表示されます。「An attempt to log in using SQL authentication failed. Server is configured for windows authentication only.」

この変更が必要な場合は、次の手順を行います。

  1. [SQL Server Management Studio Object Explorer] で、サーバーを右クリックし、[プロパティ] をクリックします。
  2. [セキュリティ] ページの [サーバー認証] で新しいサーバー認証モードを選択し、[OK] をクリックします。
  3. [SQL Server Management Studio] ダイアログで、[OK] をクリックして、SQL Server の再起動の要件を確認します。
  4. [Object Explorer] で、サーバーを右クリックし、[再起動] をクリックします。SQL Server エージェントが実行されている場合は、再起動する必要があります。

詳細については、Microsoft のドキュメントをご覧ください。

Looker ユーザーの作成

Looker は、SQL Server 認証を使用してデータベースを認証します。ドメイン アカウントの使用はサポートされていません。

アカウントを作成するには、次のコマンドを実行します。some_password_here を一意の安全なパスワードに変更します。

CREATE LOGIN looker
  WITH PASSWORD = 'some_password_here';
USE MyDatabase;
CREATE USER looker FOR LOGIN looker;
GO

Looker ユーザーにテーブルの SELECT 権限を付与する

Looker ではクエリ対象のテーブルまたはスキーマごとに SELECT 権限が必要です。SELECT 権限を割り当てる方法はいくつかあります。

  • 個々のスキーマに SELECT 権限を付与するには、スキーマごとに次のコマンドを実行します。

    GRANT SELECT on SCHEMA :: 'schema_name' to looker;
    
  • 個々のテーブルに SELECT 権限を付与するには、テーブルごとに次のコマンドを実行します。

    GRANT SELECT on OBJECT :: 'schema_name'.'table_name' to looker;
    
  • MSSQL バージョン 2012 以降では、代わりに以下のコマンドを使用して、Looker ユーザーに db_datareader ロールを割り当てることもできます。

    USE MyDatabase;
    ALTER ROLE db_datareader ADD MEMBER looker;
    GO
    

Looker ユーザーにクエリの実行と停止の権限を付与する

Looker には、実行中のクエリを検出して停止するための権限が必要で、そのために以下の権限が必要です。

  • ALTER ANY CONNECTION
  • VIEW SERVER STATE

これらの権限を付与するには、次のコマンドを実行します。

USE Master;
GRANT ALTER ANY CONNECTION TO looker;
GRANT VIEW SERVER STATE to looker;
GO

Looker ユーザーにテーブルを作成する権限を付与する

Looker ユーザーに PDT を作成する権限を付与するには、次のコマンドを実行します。

USE MyDatabase;
GRANT CREATE TABLE to looker;
GO

一時的スキーマ設定

Looker ユーザーが所有するスキーマを作成し、Looker ユーザーに必要な権限を付与するには、次のコマンドを実行します。

CREATE SCHEMA looker_scratch AUTHORIZATION looker;

Kerberos 認証の構成

MSSQL データベースで Kerberos 認証を使用する場合は、次のセクションで説明する手順に沿って Kerberos を使用して接続するように Looker を構成します。

Kerberos クライアント構成を設定する

まず、Looker マシンにいくつかのソフトウェアをインストールし、いくつかのファイルが存在することを確認します。

Kerberos クライアント

kinit を実行して、Looker マシンに Kerberos クライアントがインストールされていることを確認します。Kerberos クライアントがインストールされていない場合は、Kerberos クライアントのバイナリをインストールします。

たとえば、Redhat または CentOS 上では次のようになります。

sudo yum install krb5-workstation krb5-libs krb5-auth-dialog

Java 8

Java 8 を Looker マシン、および Looker ユーザーの PATHJAVA_HOME にインストールする必要があります。必要に応じて、ローカルの looker ディレクトリにインストールします。

Java Cryptography Extension

  1. Oracle のダウンロード ページから Java 8 用の Java Cryptography Extension(JCE)をダウンロードしてインストールします。

    • Java のインストール用の jre/lib/security ディレクトリを見つけます。
    • JAR ファイル local_policy.jarUS_export_policy.jar をこのディレクトリから削除します。
    • これら 2 つのファイルは、JCE Unlimited Strength Jurisdiction Policy Files ダウンロードに含まれている JAR ファイルに置き換えます。

    JCE がインストールされていれば、Java 8 より前のバージョンの Java を使用できますが、これはおすすめしません。

  2. ~looker/.bash_profileJAVA_HOMEPATH を更新して、Java と source ~/.bash_profile の正しいインストールを指すようにするか、ログアウトして再度ログインします。

  3. java -version を使用して、Java のバージョンを確認します。

  4. echo $JAVA_HOME を使用して、JAVA_HOME 環境変数を確認します。

gss-jaas.conf

looker ディレクトリに、次の内容の gss-jaas.conf ファイルを作成します。

com.sun.security.jgss.initiate {
    com.sun.security.auth.module.Krb5LoginModule required
    useTicketCache=true
    doNotPrompt=true;
};

テストに必要な場合は、このファイルに debug=true を次のように追加できます。

com.sun.security.jgss.initiate {
    com.sun.security.auth.module.Krb5LoginModule required
    useTicketCache=true
    doNotPrompt=true
    debug=true;
};

krb5.conf

Looker を実行しているサーバーには、有効な krb5.conf ファイルも必要です。デフォルトでは、このファイルは /etc/krb5.conf にあります。別の場所にある場合は、環境(シェル環境の KRB5_CONFIG)で指定する必要があります。

これを別の Kerberos クライアント マシンからコピーしなければならない場合があります。

lookerstart.cfg

looker ディレクトリ(looker 起動スクリプトを含むディレクトリ)に以下の行を含む lookerstart.cfg というファイルを作成して、gss-jaas.conf ファイルと krb5.conf ファイルをポイントします。

  JAVAARGS="-Djava.security.auth.login.config=/path/to/gss-jaas.conf -Djavax.security.auth.useSubjectCredsOnly=false -Djava.security.krb5.conf=/etc/krb5.conf"
  LOOKERARGS=""

krb5.conf ファイルが /etc/krb5.conf にない場合、この変数も追加する必要があります。

  -Djava.security.krb5.conf=/path/to/krb5.conf

デバッグ用に、次の変数を追加します。

  -Dsun.security.jgss.debug=true -Dsun.security.krb5.debug=true

次に、./looker restart で Looker を再起動します。

Kerberos による認証

ユーザー認証

  1. krb5.conf/etc/ にない場合は、環境変数 KRB5_CONFIG を使用してその場所を指定します。

  2. コマンド klist を実行して、Kerberos チケット キャッシュに有効なチケットがあることを確認します。

  3. チケットがない場合は、kinit username@REALM または kinit username を実行してチケットを作成します。

  4. Looker で使用されるアカウントはヘッドレスであることが多いため、Kerberos から keytab ファイルを取得して認証情報を保存し、長期間使用できるようにします。kinit -k -t looker_user.keytab username@REALM などのコマンドを使用して Kerberos チケットを取得します。

チケットを自動更新する

アクティブなチケットを Kerberos チケット キャッシュに保持するために、頻繁に実行される cron ジョブを設定します。実行する頻度は、クラスタの構成によって異なります。klist は、チケットが期限切れになるまでの時間を示します。

データベースへの Looker 接続の作成

Looker からデータベースへの接続を作成する手順は次のとおりです。

  1. Looker の [管理者] セクションで [接続] を選択し、[新しい接続] をクリックします。
  2. [言語] プルダウン メニューから、Microsoft SQL Server のバージョンを選択します。

  3. リモートホストポート: ホスト名とポートを入力します(デフォルト ポートは 1433)。

    デフォルト以外のポート(1433 以外)を指定する必要があり、データベースにコロンではなくカンマの使用が必要な場合は、接続設定で下にある [Additional JDBC parameters] フィールドに useCommaHostPortSeparator=true を追加すれば、[Remote Host:Port] でカンマを使用できるようになります。次に例を示します。

    jdbc:sqlserver://hostname,1434

  4. 接続の詳細を入力します。設定の大部分は、ほとんどのデータベース言語に共通するものです。詳細については、Looker をデータベースに接続するのドキュメント ページをご覧ください。

  5. 接続が成功したことを確認するには、[テスト] をクリックします。トラブルシューティング情報については、データベース接続のテストのドキュメント ページをご覧ください。

  6. これらの設定を保存するには、[接続] をクリックします。

Looker 接続の構成

Looker をデータベースに接続するのドキュメント ページの手順に沿って、MSSQL データベースへの接続を作成します。[接続設定] ページの [その他の JDBC パラメータ] セクションに、次の記述を追加します。

;integratedSecurity=true;authenticationScheme=JavaKerberos

一部のネットワークは 2 つの Kerberos レルム(Windows Active Directory 用と、Linux およびその他の Windows 以外のシステム用)で構成されています。この場合、Linux に重点を置いたレルムと Active Directory レルムが互いを信頼するように構成されている場合、「クロスレルム認証」と呼ばれます。

ネットワークでクロスレルム認証を使用する場合は、MSSQL Server の Kerberos プリンシパルを明示的に指定する必要があります。[その他の JDBC パラメータ] フィールドに次の行を追加します。

;serverSpn=service_name/FQDN\:PORT@REALM

FQDNPORT@REALM は、ネットワーク情報に置き換えます。次に例を示します。

;serverSpn=MSSQLSvc/dbserver.internal.example.com:[email protected]

また、Looker の [接続設定] ページの [ユーザー名] と [パスワード] に入力する必要がありますが、Kerberos には入力する必要はありません。これらのフィールドにダミーの値を入力します。

接続をテストして、正しく構成されていることを確認します。

機能のサポート

一部の機能については、Looker でサポートするには、データベース言語が同じ機能に対応している必要があります。

Microsoft SQL Server 2008 以降では、Looker 24.20 の時点で、次の機能をサポートしています。

特徴 サポート対象
サポート レベル
統合
Looker(Google Cloud コア)
×
対称集計
派生テーブル
永続的な SQL 派生テーブル
永続的なネイティブ派生テーブル
安定したビュー
クエリの強制終了
SQL ベースのピボット
タイムゾーン
×
SSL
Subtotals
JDBC の追加パラメータ
大文字と小文字を区別
×
ロケーション タイプ
リストのタイプ
×
パーセンタイル
×
個別のパーセンタイル
×
SQL Runner の表示プロセス
SQL Runner の説明テーブル
SQL Runner 表示インデックス
SQL Runner Select 10
SQL ランナーの数
SQL の説明
×
Oauth 認証情報
×
コンテキスト コメント
接続プーリング
×
HLL スケッチ
×
集計認識
増分PDT
×
ミリ秒
マイクロ秒
マテリアライズド ビュー
×
Approximate Count Distinct
×

Microsoft SQL Server 2016 では、Looker 24.20 の時点で、次の機能をサポートしています。

特徴 サポート対象
サポート レベル
サポート対象
Looker(Google Cloud コア)
×
対称集計
派生テーブル
永続的な SQL 派生テーブル
永続的なネイティブ派生テーブル
安定したビュー
クエリの強制終了
SQL ベースのピボット
タイムゾーン
SSL
Subtotals
JDBC の追加パラメータ
大文字と小文字を区別
×
ロケーション タイプ
リストのタイプ
×
パーセンタイル
×
個別のパーセンタイル
×
SQL Runner の表示プロセス
SQL Runner の説明テーブル
SQL Runner 表示インデックス
SQL Runner Select 10
SQL ランナーの数
SQL の説明
×
Oauth 認証情報
×
コンテキスト コメント
接続プーリング
×
HLL スケッチ
×
集計認識
増分PDT
×
ミリ秒
マイクロ秒
マテリアライズド ビュー
×
Approximate Count Distinct
×

Microsoft SQL Server 2017 以降では、Looker 24.20 の時点で、次の機能をサポートしています。

特徴 サポート対象
サポート レベル
サポート対象
Looker(Google Cloud コア)
対称集計
派生テーブル
永続的な SQL 派生テーブル
永続的なネイティブ派生テーブル
安定したビュー
クエリの強制終了
SQL ベースのピボット
タイムゾーン
SSL
Subtotals
JDBC の追加パラメータ
大文字と小文字を区別
×
ロケーション タイプ
リストのタイプ
×
パーセンタイル
×
個別のパーセンタイル
×
SQL Runner の表示プロセス
SQL Runner の説明テーブル
SQL Runner 表示インデックス
SQL Runner Select 10
SQL ランナーの数
SQL の説明
×
Oauth 認証情報
×
コンテキスト コメント
接続プーリング
×
HLL スケッチ
×
集計認識
増分PDT
×
ミリ秒
マイクロ秒
マテリアライズド ビュー
×
Approximate Count Distinct
×