Looker menggunakan enkripsi Galois/Counter Mode (GCM) AES-256 untuk mengenkripsi data sensitif yang disimpan secara internal, termasuk:
- Pencadangan database internal Looker
- Informasi koneksi database dan layanan
- Informasi autentikasi pengguna
- Nilai atribut pengguna
- Data pelanggan yang di-cache atau disiapkan untuk dikirim
Untuk mengetahui daftar mendetail data yang dienkripsi Looker, buka permintaan dukungan.
Data dienkripsi menggunakan kunci data unik dan berisi amplop enkripsi yang ditandatangani dan diberi versi untuk menjamin verifikasi. Mode ini memerlukan penggunaan Kunci Master Pelanggan (CMK) eksternal. CMK digunakan untuk mendapatkan, mengenkripsi, dan mendekripsi Kunci Enkripsi Kunci (KEK), yang kemudian digunakan untuk mendapatkan, mengenkripsi, dan mendekripsi kunci data.
Enkripsi hanya digunakan untuk database dan cache internal Looker. Database pelanggan tidak terpengaruh oleh enkripsi Looker dengan cara apa pun. Selain itu, hanya data statis (data yang disimpan di disk) yang dienkripsi dengan cara ini.
Penginstalan yang dihosting pelanggan dapat menggunakan akun AWS KMS mereka sendiri atau sistem pengelolaan kunci kustom mereka sendiri. Semua kunci data dan KEK dienkripsi dan digunakan secara internal di penginstalan Looker yang dihosting pelanggan. Jika tidak menggunakan AWS KMS, CMK eksternal harus disimpan dengan aman.
Penginstalan yang dihosting pelanggan yang sudah ada dan ingin menggunakan enkripsi GCM harus dimigrasikan dari enkripsi lama ke enkripsi GCM baru. Penginstalan baru yang dihosting pelanggan memerlukan konfigurasi tambahan untuk enkripsi GCM.
Ikuti prosedur di bagian berikut secara berurutan.
Menghentikan Looker dan membuat cadangan penuh
Jika Anda bermigrasi ke enkripsi GCM dari instance Looker yang ada, pastikan untuk membuat cadangan lengkap jika terjadi masalah dengan migrasi enkripsi. Jika Anda menginstal instance Looker baru, lewati bagian ini.
Jika Anda menggunakan database internal Looker:
cd looker
./looker stop
tar -zcvf /tmp/looker-pre-encrypt.tar.gz /home/lookerops/looker --exclude=.cache --exclude=log --exclude=.tmp --exclude=.snapshots --exclude=looker.jar --exclude=authorized_keys --exclude=dr-log --exclude=core
Jika Anda menjalankan database MySQL eksternal untuk menyimpan data aplikasi Looker, cadangkan database secara terpisah. Jika database adalah instance MySQL, ambil snapshot. Database ini relatif kecil, sehingga hanya memerlukan waktu beberapa menit. Kemudian, hentikan Looker.
Jika Looker dikelompokkan, pastikan untuk menghentikan setiap node sebelum melanjutkan:
cd looker
./looker stop
Jika ada node yang masih berjalan saat Anda nanti mengeluarkan perintah migrasi, perintah tersebut akan gagal dengan pesan, "Ada node aktif lainnya yang terhubung ke database Looker backend ini. Jika Looker dinonaktifkan dalam satu menit terakhir, coba lagi dalam waktu dekat. Jika tidak, pastikan semua node di cluster dinonaktifkan."
Membuat CMK
Jika Anda menggunakan AWS KMS, buat CMK menggunakan AWS Management Console atau API.
Jika Anda tidak menggunakan AWS KMS, buat CMK Base64 32 byte. Anda dapat menyimpan CMK dalam variabel lingkungan atau dalam file.
Untuk membuat CMK dan menyimpannya dalam variabel lingkungan, Anda dapat menggunakan perintah berikut untuk membuat CMK:
openssl rand -base64 32
Setelah membuat CMK, salin, dan gunakan perintah berikut untuk menyimpan CMK di variabel lingkungan
LKR_MASTER_KEY_ENV
(dengan<CMK_value>
adalah CMK yang Anda buat dengan perintah sebelumnya):export LKR_MASTER_KEY_ENV=<CMK_value>
Jika Looker dikelompokkan, jalankan perintah sebelumnya di setiap node dalam cluster.
Untuk membuat dan menyimpan CMK dalam file, Anda dapat menggunakan perintah berikut (dengan
<path_to_CMK_file>
adalah jalur dan nama file untuk menyimpan CMK):openssl rand -base64 32 > <path_to_key_file>
Setelah membuat file CMK, tetapkan izin file kunci ke hanya baca untuk pengguna saat ini:
chmod 0400 <path_to_key_file>
Setelah membuat CMK, pastikan untuk menyimpannya di lokasi yang aman dan permanen sebelum melanjutkan. Kehilangan CMK setelah mengenkripsi database internal dapat menyebabkan hilangnya instance Anda.
Membuat peran AWS IAM
Jika Anda tidak menggunakan AWS KMS, lewati bagian ini.
Jika Anda menggunakan AWS KMS, Looker merekomendasikan agar Anda membuat peran IAM baru yang unik untuk CMK dan melampirkannya dengan instance Looker.
Berikut adalah contoh peran IAM yang berisi izin minimum yang diperlukan untuk CMK Anda:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "kms:GenerateRandom",
"Resource": "*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"kms:Encrypt",
"kms:Generate*",
],
"Resource": "arn:aws:kms:*:*:key/*"
}
]
}
Menyetel variabel lingkungan
Jika Anda menggunakan AWS KMS, tetapkan variabel lingkungan AWS_REGION
ke region AWS, dan variabel lingkungan LKR_AWS_CMK
ke alias CMK Anda:
export AWS_REGION=<AWS_region>
export LKR_AWS_CMK=alias/<CMK_alias>
Secara opsional, Anda juga dapat menetapkan variabel lingkungan LKR_AWS_CMK_EC
untuk menetapkan konteks enkripsi AWS kustom. Jika Anda tidak menetapkan variabel lingkungan ini, Looker akan menggunakan konteks enkripsi default, string Looker_Encryption_Context
.
export LKR_AWS_CMK_EC=<My_Encryption_Context>
Jika Anda tidak menggunakan AWS KMS, dan Anda menyimpan CMK dalam file, tetapkan variabel lingkungan LKR_MASTER_KEY_FILE
ke jalur file CMK:
export LKR_MASTER_KEY_FILE=<path_to_key_file>
Jika Anda tidak menggunakan AWS KMS, dan Anda menyimpan CMK dalam variabel lingkungan, tetapkan variabel lingkungan LKR_MASTER_KEY_ENV
ke nilai CMK:
export LKR_MASTER_KEY_ENV=<CMK_value>
Jika Looker dikelompokkan, jalankan perintah sebelumnya di setiap node dalam cluster.
Mengenkripsi database internal
Jika Anda memigrasikan instance Looker yang ada ke enkripsi GCM, migrasikan database internal Looker dan mulai Looker:
java -jar looker.jar migrate_encryption
./looker start
Jika instance Looker Anda dimulai dengan opsi startup
-d <db.yaml>
atau--internal-db-creds=<db.yaml>
, yang memberikan jalur ke file YAML dengan kredensial database Anda, Anda harus menyertakan opsi yang sama dengan perintahjava -jar looker.jar migrate_encryption
.Misalnya,
java -jar looker.jar migrate_encryption -d /path/file
.
Jika Anda menginstal instance Looker baru, proses enkripsi akan dimulai saat Anda memulai instance Looker baru.
Proses enkripsi biasanya memerlukan waktu kurang dari satu menit. Setelah Looker dimulai, Anda dapat memverifikasi enkripsi baru dengan menelusuri GCM
di log Looker:
grep GCM log/looker.log
2018-10-29 22:42:20.279 +0000 [INFO|007d0|crypt] :: Starting migration from AES-128-CBC Legacy to AES-GCM-256
2018-10-29 22:42:20.468 +0000 [INFO|007d0|db:looker] :: (0.000152s) INSERT INTO "SETTING" ("KEY", "VALUE") VALUES
Pemecahan masalah
Bagian ini mencantumkan beberapa error umum dan resolusi untuk error tersebut:
Tidak dapat menemukan tugas "migrate_encryption": Update instance Looker Anda ke Looker 6.4.
Looker tidak dapat dimulai karena: Keystore pendukung tidak ada: Looker tidak dapat menemukan CMK. Pastikan jalur CMK di variabel lingkungan
LKR_MASTER_KEY_FILE
sudah benar.Looker tidak dapat dimulai karena: Ukuran Kunci Master tidak valid, harus 32 byte, tetapi X: Panjang CMK harus tepat 32 byte.
Looker tidak dapat dimulai karena: Izin untuk file kunci cadangan
harus 0400, tetapi XXX : File CMK harus hanya baca dengan nilaichmod
0400
.