Mengubah kunci enkripsi Looker

Looker menggunakan enkripsi AES-256 Galois/Counter Mode (GCM) untuk mengenkripsi data secara internal. Setiap item data dienkripsi menggunakan kunci data unik dan berisi lapisan enkripsi bertanda tangan dan berversi 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.

Penginstalan yang dihosting pelanggan dan menggunakan enkripsi lama harus memigrasikan database internal mereka ke enkripsi AES-256 GCM. Penginstalan baru yang dihosting oleh pelanggan harus mengonfigurasi penginstalan untuk enkripsi AES-256 GCM. Lihat halaman dokumentasi Menggunakan enkripsi AES-256 GCM untuk mendapatkan petunjuk tentang cara memigrasikan atau mengonfigurasi penginstalan yang dihosting pelanggan untuk enkripsi AES-256 GCM.

Jika Anda ingin mengubah CMK, atau jika Anda ingin beralih dari konfigurasi berbasis kunci lokal ke konfigurasi AWS KMS (atau sebaliknya), Anda dapat melakukannya dengan membuat CMK baru dan mengunci ulang enkripsi AES-256 GCM Anda.

Pengubahan kunci dilakukan secara offline, yang berarti bahwa instance Looker harus dinonaktifkan. Untuk instance Looker dalam cluster, semua node cluster harus dinonaktifkan.

Penguncian ulang akan membuat seluruh cache di disk Looker menjadi tidak valid, termasuk cache hasil kueri. Akibatnya, setelah Anda menyelesaikan kunci ulang dan memulai instance, database klien mungkin mengalami beban yang lebih tinggi dari biasanya.

Untuk mengunci ulang enkripsi AES-256 GCM, lakukan prosedur berikut:

  1. Menghentikan Looker dan membuat cadangan penuh
  2. Menetapkan variabel lingkungan _SOURCE dan _DESTINATION
  3. Menjalankan perintah rekey
  4. Menetapkan variabel lingkungan baru
  5. Mulai Looker

Hentikan Looker dan buat cadangan penuh

Berikan perintah berikut:

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.

Jika Looker dikelompokkan, pastikan untuk menghentikan setiap node sebelum melanjutkan:

cd looker
./looker stop

Jika node masih berjalan saat Anda mengeluarkan perintah rekey 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."

Menetapkan variabel lingkungan _SOURCE dan _DESTINATION

Saat instance Looker Anda dimigrasikan atau dikonfigurasi untuk enkripsi AES-256 GCM pertama, satu atau beberapa variabel lingkungan dibuat yang menunjukkan tempat Looker dapat menemukan CMK Anda. Variabel ini berbeda-beda bergantung pada apakah Anda menggunakan AWS KMS.

Operasi kunci ulang menggunakan variabel lingkungan tambahan, berdasarkan apakah Anda saat ini menggunakan AWS KMS, dan apakah Anda akan menggunakan AWS KMS setelah operasi kunci ulang. Variabel lingkungan dengan akhiran _SOURCE menunjukkan tempat Looker saat ini dapat menemukan CMK Anda, dan variabel lingkungan dengan akhiran _DESTINATION menunjukkan tempat Looker dapat menemukan CMK Anda setelah operasi kunci ulang.

Menetapkan variabel _SOURCE

Lakukan salah satu prosedur berikut, bergantung pada apakah konfigurasi Anda saat ini menggunakan AWS KMS.

Jika saat ini Anda menggunakan AWS KMS

Jika awalnya Anda mengonfigurasi enkripsi menggunakan AWS KMS, Anda telah membuat salah satu atau kedua variabel lingkungan berikut:

  • LKR_AWS_CMK: Menyimpan CMK_alias AWS.
  • LKR_AWS_CMK_EC: Variabel opsional yang menentukan konteks enkripsi yang digunakan dengan keystore AWS KMS.

Buat ulang variabel lingkungan di atas:

export LKR_AWS_CMK=alias/<CMK_alias>
export LKR_AWS_CMK_EC=<encryption_context>

Kemudian, buat variabel _SOURCE. Tetapkan variabel baru berikut dengan akhiran _SOURCE:

export LKR_AWS_CMK_SOURCE=alias/<CMK_alias>
export LKR_AWS_CMK_EC_SOURCE=<encryption_context>

Jika saat ini Anda tidak menggunakan AWS KMS

Jika awalnya Anda mengonfigurasi enkripsi menggunakan KMS selain AWS, Anda membuat salah satu variabel lingkungan berikut, bergantung pada apakah Anda menyimpan CMK dalam variabel lingkungan atau dalam file di instance:

  • LKR_MASTER_KEY_ENV: Jika Anda menyimpan CMK dalam variabel lingkungan, tindakan ini akan menyimpan CMK Anda.
  • LKR_MASTER_KEY_FILE: Jika Anda menyimpan CMK dalam file, tindakan ini akan menyimpan jalur dan nama file file yang berisi CMK Anda.

Buat ulang variabel lingkungan yang digunakan untuk konfigurasi Anda:

export LKR_MASTER_KEY_FILE=<path_to_key_file>

Atau:

export LKR_MASTER_KEY_ENV=<CMK_value>

Lalu, buat variabel _SOURCE.

Jika Anda menyimpan CMK dalam file, buat variabel berikut:

export LKR_MASTER_KEY_FILE_SOURCE=<path_to_key_file>

Jika Anda menyimpan CMK dalam variabel lingkungan, buat variabel berikut:

export LKR_MASTER_KEY_ENV_SOURCE=<CMK_value>

Menetapkan variabel _DESTINATION

Lakukan salah satu prosedur berikut, bergantung pada apakah Anda akan menggunakan AWS KMS setelah operasi kunci ulang.

Konfigurasi baru Anda akan menggunakan AWS KMS

Jika konfigurasi baru Anda akan menggunakan AWS KMS, buat variabel lingkungan berikut untuk menunjukkan lokasi CMK baru:

export LKR_AWS_CMK_DESTINATION=alias/<new_CMK_alias>
export LKR_AWS_CMK_EC_DESTINATION=<new_encryption_context>

Konfigurasi baru Anda tidak akan menggunakan AWS KMS

Jika konfigurasi baru Anda tidak akan menggunakan AWS KMS, Anda memiliki opsi untuk menggunakan variabel LKR_MASTER_KEY_FILE_DESTINATION atau LKR_MASTER_KEY_ENV_DESTINATION untuk menentukan tujuan CMK.

Jika Anda ingin menyimpan CMK dalam sebuah file, berikan perintah berikut:

export LKR_MASTER_KEY_FILE_DESTINATION=<path_to_new_key_file>

Atau, jika Anda ingin menyimpan CMK menggunakan variabel lingkungan, berikan perintah berikut:

export LKR_MASTER_KEY_ENV_DESTINATION=<CMK_value>

Menjalankan perintah rekey

Keluarkan perintah berikut ini:

./looker rekey

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 perintah rekey.

Misalnya, java -jar looker.jar rekey -d /path/file/db.yaml.

Menetapkan variabel lingkungan baru

Tetapkan satu atau beberapa variabel lingkungan berikut sesuai untuk konfigurasi baru Anda.

Jika konfigurasi baru Anda menggunakan AWS KMS:

export LKR_AWS_CMK=alias/<new_CMK_alias>
export LKR_AWS_CMK_EC=<new_encryption_context>

Jika konfigurasi baru Anda tidak menggunakan AWS KMS dan Anda menyimpan CMK dalam variabel lingkungan:

export LKR_MASTER_KEY_ENV=<CMK_value>

Jika konfigurasi baru Anda tidak menggunakan AWS KMS dan Anda menyimpan CMK dalam file:

export LKR_MASTER_KEY_FILE=<path_to_CMK_file>

Jika Anda berpindah dari kunci yang disimpan secara lokal ke AWS KMS atau dari AWS KMS ke kunci yang disimpan secara lokal, Anda akan memiliki variabel lingkungan dari konfigurasi sebelumnya yang tidak diperlukan. Hapus variabel lingkungan lama.

Jika Anda berpindah dari kunci yang disimpan secara lokal ke AWS KMS:

unset LKR_MASTER_KEY_FILE

Jika Anda berpindah dari AWS KMS ke kunci yang disimpan secara lokal:

unset LKR_AWS_CMK
unset LKR_AWS_CMK_EC

Mulai Looker

Keluarkan perintah berikut ini:

./looker start