Looker menggunakan enkripsi AES-256 Galois/Counter Mode (GCM) untuk mengenkripsi data sensitif yang disimpan secara internal, termasuk:
- Cadangan database internal Looker
- Informasi koneksi database dan layanan
- Informasi autentikasi pengguna
- Nilai atribut pengguna
- Data pelanggan yang di-cache atau disiapkan untuk dikirim
Untuk melihat 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 memperoleh, mengenkripsi, dan mendekripsi Kunci Enkripsi Kunci (KEK), yang kemudian digunakan untuk memperoleh, 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 atau sistem pengelolaan kunci kustom mereka sendiri. Semua kunci data dan KEK dienkripsi dan digunakan secara internal pada penginstalan Looker yang dihosting oleh pelanggan. Jika tidak menggunakan AWS KMS, CMK eksternal harus disimpan dengan aman.
Penginstalan yang dihosting oleh pelanggan dan ingin menggunakan enkripsi GCM perlu bermigrasi dari enkripsi lama ke enkripsi GCM baru. Penginstalan baru yang dihosting oleh 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 penuh 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 perlu waktu beberapa menit. Kemudian hentikan Looker.
Jika Looker dikelompokkan, pastikan untuk menghentikan setiap node sebelum melanjutkan:
cd looker
./looker stop
Jika node masih berjalan saat Anda mengeluarkan perintah migrasi di lain waktu, perintah tersebut akan gagal dengan pesan, "There are live node connected to this backend Looker database. Jika Looker dihentikan dalam satu menit terakhir, coba segera lagi, jika tidak, pastikan semua node dalam cluster telah dimatikan."
Membuat CMK
Jika Anda menggunakan AWS KMS, buat CMK menggunakan Konsol Pengelolaan AWS atau API.
Jika Anda tidak menggunakan AWS KMS, buat CMK 32 byte Base64. 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 CMK tersebut, lalu 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 pada 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, setel izin file kunci ke akses hanya baca 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 mengakibatkan hilangnya instance Anda.
Membuat peran IAM AWS
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 ke 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 Anda, dan variabel lingkungan LKR_AWS_CMK
ke alias CMK Anda:
export AWS_REGION=<AWS_region>
export LKR_AWS_CMK=alias/<CMK_alias>
Atau, 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 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 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 pada setiap node dalam cluster.
Mengenkripsi {i>database<i} 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 menyediakan jalur ke file YAML dengan kredensial database, 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 solusi untuk error tersebut:
Tidak dapat menemukan tugas "migration_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, tetapi harus 32 byte, tetapi X: CMK harus memiliki panjang tepat 32 byte.
Looker tidak dapat dimulai karena: Izin untuk mencadangkan file kunci
harus 0400, tetapi XXX : File CMK harus bersifat hanya baca dengan nilaichmod
0400
.