ネットワークトラフィックの暗号化
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.」
この変更が必要な場合は、次の手順を行います。
- [SQL Server Management Studio Object Explorer] で、サーバーを右クリックし、[プロパティ] をクリックします。
- [セキュリティ] ページの [サーバー認証] で新しいサーバー認証モードを選択し、[OK] をクリックします。
- [SQL Server Management Studio] ダイアログで、[OK] をクリックして、SQL Server の再起動の要件を確認します。
- [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 ユーザーの PATH
と JAVA_HOME
にインストールする必要があります。必要に応じて、ローカルの looker
ディレクトリにインストールします。
Java Cryptography Extension
Oracle のダウンロード ページから Java 8 用の Java Cryptography Extension(JCE)をダウンロードしてインストールします。
- Java のインストール用の
jre/lib/security
ディレクトリを見つけます。 - JAR ファイル
local_policy.jar
とUS_export_policy.jar
をこのディレクトリから削除します。 - これら 2 つのファイルは、JCE Unlimited Strength Jurisdiction Policy Files ダウンロードに含まれている JAR ファイルに置き換えます。
JCE がインストールされていれば、Java 8 より前のバージョンの Java を使用できますが、これはおすすめしません。
- Java のインストール用の
~looker/.bash_profile
のJAVA_HOME
とPATH
を更新して、Java とsource ~/.bash_profile
の正しいインストールを指すようにするか、ログアウトして再度ログインします。java -version
を使用して、Java のバージョンを確認します。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 による認証
ユーザー認証
krb5.conf
が/etc/
にない場合は、環境変数KRB5_CONFIG
を使用してその場所を指定します。コマンド
klist
を実行して、Kerberos チケット キャッシュに有効なチケットがあることを確認します。チケットがない場合は、
kinit username@REALM
またはkinit username
を実行してチケットを作成します。Looker で使用されるアカウントはヘッドレスであることが多いため、Kerberos から keytab ファイルを取得して認証情報を保存し、長期間使用できるようにします。
kinit -k -t looker_user.keytab username@REALM
などのコマンドを使用して Kerberos チケットを取得します。
チケットを自動更新する
アクティブなチケットを Kerberos チケット キャッシュに保持するために、頻繁に実行される cron ジョブを設定します。実行する頻度は、クラスタの構成によって異なります。klist
は、チケットが期限切れになるまでの時間を示します。
データベースへの Looker 接続の作成
Looker からデータベースへの接続を作成する手順は次のとおりです。
- Looker の [管理者] セクションで [接続] を選択し、[新しい接続] をクリックします。
[言語] プルダウン メニューから、Microsoft SQL Server のバージョンを選択します。
リモートホストとポート: ホスト名とポートを入力します(デフォルト ポートは 1433)。
デフォルト以外のポート(1433 以外)を指定する必要があり、データベースにコロンではなくカンマの使用が必要な場合は、接続設定で下にある [Additional JDBC parameters] フィールドに
useCommaHostPortSeparator=true
を追加すれば、[Remote Host:Port] でカンマを使用できるようになります。次に例を示します。jdbc:sqlserver://hostname,1434
接続の詳細を入力します。設定の大部分は、ほとんどのデータベース言語に共通するものです。詳細については、Looker をデータベースに接続するのドキュメント ページをご覧ください。
接続が成功したことを確認するには、[テスト] をクリックします。トラブルシューティング情報については、データベース接続のテストのドキュメント ページをご覧ください。
これらの設定を保存するには、[接続] をクリックします。
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
FQDN
と PORT@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 | × |