Microsoft SQL Server (MSSQL)

Mengenkripsi traffic jaringan

Praktik terbaiknya adalah mengenkripsi traffic jaringan antara aplikasi Looker dan database Anda. Pertimbangkan salah satu opsi yang dijelaskan di halaman dokumentasi Mengaktifkan akses database yang aman.

Jika Anda tertarik untuk menggunakan enkripsi SSL, lihat dokumentasi Microsoft.

Mengonfigurasi autentikasi server

Looker memerlukan "SQL Server Authentication" di server MSSQL Anda. Jika server MSSQL Anda dikonfigurasi hanya sebagai "Windows Integrated Authentication", ubah konfigurasi server menjadi "Windows Integrated Authentication and SQL Server Authentication".

Jika konfigurasi server tidak ditetapkan dengan benar, Looker tidak akan dapat terhubung. Pesan ini akan muncul dalam pesan log SQL Server seperti: "Upaya login menggunakan autentikasi SQL gagal. Server dikonfigurasi hanya untuk autentikasi Windows."

Jika perubahan ini diperlukan, Anda dapat menyelesaikan langkah-langkah berikut:

  1. Di SQL Server Management Studio Object Explorer, klik kanan server, lalu klik Properties.
  2. Di halaman Security, pada bagian Server authentication, pilih mode autentikasi server baru, lalu klik OK.
  3. Pada dialog SQL Server Management Studio, klik OK untuk mengonfirmasi persyaratan untuk memulai ulang SQL Server.
  4. Di Object Explorer, klik kanan server Anda, lalu klik Restart. Jika berjalan, Agen SQL Server juga harus dimulai ulang.

Anda dapat membaca selengkapnya tentang hal ini di dokumentasi Microsoft.

Membuat pengguna Looker

Looker melakukan autentikasi ke database Anda menggunakan Autentikasi SQL Server. Penggunaan akun domain tidak didukung.

Untuk membuat akun, jalankan perintah berikut. Ubah some_password_here menjadi sandi yang unik dan aman:

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

Memberikan izin kepada pengguna Looker untuk memilih dari tabel

Looker memerlukan izin SELECT untuk setiap tabel atau skema yang ingin Anda buat kuerinya. Ada beberapa cara untuk menetapkan izin SELECT:

  • Untuk memberikan izin SELECT ke setiap skema, jalankan perintah berikut untuk setiap skema:

    GRANT SELECT on SCHEMA :: 'schema_name' to looker;
    
  • Untuk memberikan izin SELECT ke setiap tabel, jalankan perintah berikut untuk setiap tabel:

    GRANT SELECT on OBJECT :: 'schema_name'.'table_name' to looker;
    
  • Untuk MSSQL versi 2012 atau yang lebih baru, Anda dapat menetapkan peran db_datareader kepada pengguna Looker menggunakan perintah berikut:

    USE MyDatabase;
    ALTER ROLE db_datareader ADD MEMBER looker;
    GO
    

Memberikan izin kepada pengguna Looker untuk melihat dan menghentikan kueri yang sedang berjalan

Looker harus diberi otorisasi untuk mendeteksi dan menghentikan kueri yang sedang berjalan, yang memerlukan izin berikut:

  • ALTER ANY CONNECTION
  • VIEW SERVER STATE

Untuk memberikan izin ini, jalankan perintah berikut:

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

Memberikan izin pengguna Looker untuk membuat tabel

Untuk memberi pengguna Looker izin membuat PDT, jalankan perintah berikut:

USE MyDatabase;
GRANT CREATE TABLE to looker;
GO

Penyiapan skema sementara

Untuk membuat skema yang dimiliki oleh pengguna Looker dan memberikan hak yang diperlukan kepada pengguna Looker, jalankan perintah ini:

CREATE SCHEMA looker_scratch AUTHORIZATION looker;

Mengonfigurasi autentikasi Kerberos

Jika Anda menggunakan autentikasi Kerberos dengan database MSSQL, ikuti langkah-langkah untuk mengonfigurasi Looker agar terhubung menggunakan Kerberos, seperti yang dijelaskan di bagian berikut.

Menyiapkan konfigurasi klien Kerberos

Pertama, Anda perlu memastikan penginstalan beberapa software dan keberadaan beberapa file di komputer Looker.

Klien Kerberos

Pastikan klien Kerberos diinstal di komputer Looker dengan menjalankan kinit. Jika klien Kerberos belum diinstal, instal biner klien Kerberos.

Misalnya, di Redhat atau CentOS, perintahnya adalah sebagai berikut:

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

Java 8

Java 8 harus diinstal di mesin Looker dan di PATH dan JAVA_HOME pengguna Looker. Jika perlu, instal secara lokal di direktori looker.

Java Cryptography Extension

  1. Download dan instal Java Cryptography Extension (JCE) untuk Java 8 dari halaman download Oracle ini.

    • Temukan direktori jre/lib/security untuk penginstalan Java.
    • Hapus file JAR berikut dari direktori ini: local_policy.jar dan US_export_policy.jar.
    • Ganti kedua file ini dengan file JAR yang disertakan dalam download File Kebijakan Yurisdiksi Kekuatan Tanpa Batas JCE.

    Anda mungkin dapat menggunakan versi Java sebelum Java 8 dengan JCE yang diinstal, tetapi hal ini tidak direkomendasikan.

  2. Perbarui JAVA_HOME dan PATH di ~looker/.bash_profile agar mengarah ke penginstalan Java dan source ~/.bash_profile yang benar, atau logout dan login lagi.

  3. Verifikasi versi Java dengan java -version.

  4. Verifikasi variabel lingkungan JAVA_HOME dengan echo $JAVA_HOME.

gss-jaas.conf

Buat file gss-jaas.conf di direktori looker dengan konten berikut:

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

Jika diperlukan untuk pengujian, debug=true dapat ditambahkan ke file ini seperti ini:

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

krb5.conf

Server yang menjalankan Looker juga harus memiliki file krb5.conf yang valid. Secara default, file ini berada di /etc/krb5.conf. Jika berada di lokasi lain, hal tersebut harus ditunjukkan di lingkungan (KRB5_CONFIG di lingkungan shell).

Anda mungkin perlu menyalinnya dari komputer klien Kerberos lain.

lookerstart.cfg

Arahkan ke file gss-jaas.conf dan krb5.conf dengan membuat file di direktori looker (direktori yang sama dengan yang berisi skrip startup looker) yang disebut lookerstart.cfg yang berisi baris berikut:

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

Jika file krb5.conf tidak berada di /etc/krb5.conf, Anda juga perlu menambahkan variabel ini:

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

Untuk proses debug, tambahkan variabel berikut:

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

Kemudian, mulai ulang Looker dengan ./looker restart.

Mengautentikasi dengan Kerberos

Autentikasi pengguna

  1. Jika krb5.conf tidak ada di /etc/, gunakan variabel lingkungan KRB5_CONFIG untuk menunjukkan lokasinya.

  2. Jalankan perintah klist untuk memastikan ada tiket yang valid di cache tiket Kerberos.

  3. Jika tidak ada tiket, jalankan kinit username@REALM atau kinit username untuk membuat tiket.

  4. Akun yang digunakan dengan Looker kemungkinan akan headless, sehingga Anda bisa mendapatkan file keytab dari Kerberos untuk menyimpan kredensial untuk penggunaan jangka panjang. Gunakan perintah seperti kinit -k -t looker_user.keytab username@REALM untuk mendapatkan tiket Kerberos.

Memperpanjang tiket secara otomatis

Siapkan tugas cron yang berjalan setiap saat untuk menyimpan tiket aktif di cache tiket Kerberos. Seberapa sering proses ini harus berjalan bergantung pada konfigurasi cluster. klist harus memberikan indikasi kapan tiket akan habis masa berlakunya.

Membuat koneksi Looker ke database Anda

Ikuti langkah-langkah berikut untuk membuat koneksi dari Looker ke database Anda:

  1. Di bagian Admin di Looker, pilih Koneksi, lalu klik Tambahkan Koneksi.
  2. Dari menu drop-down Dialect, pilih versi Microsoft SQL Server Anda.

  3. Untuk Remote Host dan Port, masukkan nama host dan port (port default adalah 1433).

    Jika Anda perlu menentukan port non-default selain 1433 dan database Anda memerlukan penggunaan koma, bukan titik dua, Anda dapat menambahkan useCommaHostPortSeparator=true di kolom Parameter JDBC tambahan di bagian bawah setelan koneksi, yang akan memungkinkan Anda menggunakan koma untuk Host Jarak Jauh:Port. Contoh:

    jdbc:sqlserver://hostname,1434

  4. Isi detail koneksi lainnya. Sebagian besar setelan bersifat umum untuk sebagian besar dialek database. Lihat halaman dokumentasi Menghubungkan Looker ke database Anda untuk mengetahui informasinya.

  5. Untuk memverifikasi bahwa koneksi berhasil, klik Uji. Lihat halaman dokumentasi Menguji konektivitas database untuk mengetahui informasi pemecahan masalah.

  6. Untuk menyimpan setelan ini, klik Hubungkan.

Mengonfigurasi koneksi Looker

Ikuti petunjuk di halaman dokumentasi Menghubungkan Looker ke database untuk membuat koneksi ke database MSSQL Anda. Di bagian Additional JDBC parameters pada halaman Connection Settings, tambahkan hal berikut:

;integratedSecurity=true;authenticationScheme=JavaKerberos

Beberapa jaringan dikonfigurasi untuk dua realm Kerberos, satu untuk Windows Active Directory dan satu lagi untuk Linux dan sistem non-Windows lainnya. Dalam hal ini, saat Realm yang berfokus pada Linux dan Realm Active Directory dikonfigurasi untuk saling memercayai, hal ini disebut "autentikasi lintas-realm".

Jika jaringan Anda menggunakan autentikasi lintas-realm, Anda harus menentukan akun utama Kerberos untuk MSSQL Server secara eksplisit. Di kolom Additional JDBC parameters, tambahkan hal berikut:

;serverSpn=service_name/FQDN\:PORT@REALM

Mengganti FQDN dan PORT@REALM dengan informasi jaringan Anda. Contoh:

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

Selain itu, halaman Setelan Koneksi di Looker memerlukan entri di kolom Nama Pengguna dan Sandi, tetapi kolom ini tidak diperlukan untuk Kerberos. Masukkan nilai dummy di kolom ini.

Uji koneksi untuk memastikan koneksi dikonfigurasi dengan benar.

Dukungan fitur

Agar Looker mendukung beberapa fitur, dialek database Anda juga harus mendukungnya.

Microsoft SQL Server 2008+ mendukung fitur berikut mulai Looker 24.20:

Fitur Didukung?
Level Dukungan
Integrasi
Looker (Google Cloud core)
Tidak
Agregat Simetris
Ya
Tabel Turunan
Ya
Tabel Turunan SQL Persisten
Ya
Tabel Turunan Berbasis Persisten
Ya
Tampilan Stabil
Ya
Penghentian Kueri
Ya
Pivot berbasis SQL
Ya
Zona waktu
Tidak
SSL
Ya
Subtotal
Ya
Parameter Tambahan JDBC
Ya
Peka Huruf Besar/Kecil
Tidak
Jenis Lokasi
Ya
Jenis Daftar
Tidak
Persentil
Tidak
Persentil Berbeda
Tidak
Proses Tampilkan SQL Runner
Ya
SQL Runner Describe Table
Ya
SQL Runner Show Indexes
Ya
SQL Runner Select 10
Ya
Jumlah SQL Runner
Ya
SQL Explain
Tidak
Kredensial Oauth
Tidak
Komentar Konteks
Ya
Penggabungan Koneksi
Tidak
Sketsa HLL
Tidak
Kesadaran Agregat
Ya
PDT inkremental
Tidak
Milidetik
Ya
Mikrodetik
Ya
Tampilan Terwujud
Tidak
Perkiraan Jumlah Berbeda
Tidak

Microsoft SQL Server 2016 mendukung fitur berikut mulai Looker 24.20:

Fitur Didukung?
Level Dukungan
Didukung
Looker (Google Cloud core)
Tidak
Agregat Simetris
Ya
Tabel Turunan
Ya
Tabel Turunan SQL Persisten
Ya
Tabel Turunan Berbasis Persisten
Ya
Tampilan Stabil
Ya
Penghentian Kueri
Ya
Pivot berbasis SQL
Ya
Zona waktu
Ya
SSL
Ya
Subtotal
Ya
Parameter Tambahan JDBC
Ya
Peka Huruf Besar/Kecil
Tidak
Jenis Lokasi
Ya
Jenis Daftar
Tidak
Persentil
Tidak
Persentil Berbeda
Tidak
Proses Tampilkan SQL Runner
Ya
SQL Runner Describe Table
Ya
SQL Runner Show Indexes
Ya
SQL Runner Select 10
Ya
Jumlah SQL Runner
Ya
SQL Explain
Tidak
Kredensial Oauth
Tidak
Komentar Konteks
Ya
Penggabungan Koneksi
Tidak
Sketsa HLL
Tidak
Kesadaran Agregat
Ya
PDT inkremental
Tidak
Milidetik
Ya
Mikrodetik
Ya
Tampilan Terwujud
Tidak
Perkiraan Jumlah Berbeda
Tidak

Microsoft SQL Server 2017+ mendukung fitur berikut mulai Looker 24.20:

Fitur Didukung?
Level Dukungan
Didukung
Looker (Google Cloud core)
Ya
Agregat Simetris
Ya
Tabel Turunan
Ya
Tabel Turunan SQL Persisten
Ya
Tabel Turunan Berbasis Persisten
Ya
Tampilan Stabil
Ya
Penghentian Kueri
Ya
Pivot berbasis SQL
Ya
Zona waktu
Ya
SSL
Ya
Subtotal
Ya
Parameter Tambahan JDBC
Ya
Peka Huruf Besar/Kecil
Tidak
Jenis Lokasi
Ya
Jenis Daftar
Tidak
Persentil
Tidak
Persentil Berbeda
Tidak
Proses Tampilkan SQL Runner
Ya
SQL Runner Describe Table
Ya
SQL Runner Show Indexes
Ya
SQL Runner Select 10
Ya
Jumlah SQL Runner
Ya
SQL Explain
Tidak
Kredensial Oauth
Tidak
Komentar Konteks
Ya
Penggabungan Koneksi
Tidak
Sketsa HLL
Tidak
Kesadaran Agregat
Ya
PDT inkremental
Tidak
Milidetik
Ya
Mikrodetik
Ya
Tampilan Terwujud
Tidak
Perkiraan Jumlah Berbeda
Tidak