Microsoft SQL Server(MSSQL)

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

Looker では、Looker アプリケーションとデータベース間のネットワーク トラフィックを暗号化することを強く推奨します。安全なデータベース アクセスの有効化に関するドキュメント ページで説明されているオプションのいずれかを検討します。

SSL 暗号化の使用にご関心がある場合は、Microsoft のドキュメントをご覧ください。

サーバー認証の構成

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

適切に設定しないと、Looker は接続できません。これは、SQL Server のログ メッセージに「SQL 認証を使用してログインできませんでした。サーバーは Windows 認証用にのみ構成されている。

この変更が必要な場合は、以下の手順を実施してください。

  1. SQL Server Management Studio Object Explorer でサーバーを右クリックし、[プロパティ] をクリックします。
  2. [セキュリティ] ページの [サーバー認証] で、新しいサーバー認証モードを選択し、[OK] をクリックします。
  3. [SQL Server Management Studio] ダイアログ ボックスで、[OK] をクリックして、SQL Server を再起動する必要があります。
  4. Object Explorer でサーバーを右クリックし、[Restart] をクリックします。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;

接続の追加

Looker のインターフェースを使用してデータベース接続を構成します。Looker の [Admin] セクションで [Connections] を選択し、[Add Connection] をクリックします。

接続情報を入力します。設定の大半はほとんどのデータベース言語で使用されており、Looker のデータベースへの接続に関するドキュメント ページで説明しています。次のフィールドには、Microsoft SQL Server に適用される追加情報が含まれています。

  • Dialect: Microsoft SQL Server の適切なバージョンを選択します。
  • Remote Host:Port: ホスト名とポートを入力します(デフォルトのポートは 1433)。

    デフォルト以外の 1433 以外のポートを指定する必要があり、データベースでコロンの代わりにカンマを使用する必要がある場合は、接続設定のさらに下の [Additional Params] フィールドに useCommaHostPortSeparator=true を追加できます。これにより、[Remote Host:Port] フィールドにカンマを使用できます。例:

    jdbc:sqlserver://hostname,1434

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

[Add Connection] をクリックして接続を保存します。

Kerberos 認証の構成

MSSQL データベースで Kerberos 認証を使用する場合は、Kerberos を使用して接続するように Looker を構成します。

Looker ホスト型インスタンスの管理者は、MSSQL データベースの Kerberos 認証の設定に関して Looker アナリストに問い合わせる必要があります。

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

まず、複数のソフトウェアを確実にインストールし、Looker マシンにいくつかのファイルを用意しておきます。

Kerberos クライアント

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

たとえば、Redhat/CentOS の場合は次のようになります。

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

Java 8

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

Java 暗号拡張機能

  1. こちらの Oracle サイトから Java 8 用の Java 暗号拡張機能(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. Java と source ~/.bash_profile の正しいインストールを指すように ~looker/.bash_profileJAVA_HOMEPATH を更新するか、ログアウトして再度ログインします。

  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 チケットを取得します。

チケットの自動更新

cron ジョブを頻繁に実行して、アクティブなチケットを Kerberos のチケット キャッシュに保存します。この実行頻度は、クラスタの構成によって異なります。klist には、チケットの有効期限を示します。

Looker 接続の構成

Looker のデータベースへの接続ドキュメント ページの手順に沿って、MSSQL データベースへの接続を作成します。[Connection Settings] ページの [Additional Params] セクションで、次のパラメータを追加します。

;integratedSecurity=true;authenticationScheme=JavaKerberos

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

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

;serverSpn=service_name/FQDN\:PORT@REALM

FQDNPORT@REALM は、実際のネットワーク情報に置き換えます。例:

;serverSpn=MSSQLSvc/dbserver.internal.example.com:1433@AD.EXAMPLE.COM

また、Looker の [Connection Settings] ページでは、[Username] と [Password] にそれぞれ入力する必要がありますが、Kerberos の場合は必須ではありません。これらのフィールドにダミー値を入力します。

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

機能のサポート

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

Looker の最新リリースでは、Microsoft SQL Server 2008+ が次の Looker 機能をサポートしています。

Looker の最新リリースでは、Microsoft SQL Server 2016+ が次の Looker 機能をサポートしています。

Looker の最新リリースでは、Microsoft SQL Server 2017+ が次の Looker 機能をサポートしています。

次のステップ

データベースの構成が完了したら、こちらの手順に沿って Looker からデータベースに接続できます。