שינוי מפתחות ההצפנה של Looker

‫Looker משתמש בהצפנה מסוג AES-256 Galois/Counter Mode (GCM) כדי להצפין נתונים באופן פנימי. כל פריט נתונים מוצפן באמצעות מפתח נתונים ייחודי, וכולל מעטפת הצפנה חתומה עם מספר גרסה כדי להבטיח אימות. במצב הזה נדרש שימוש במפתח מאסטר חיצוני של הלקוח (CMK). המפתח CMK משמש לגזירה, להצפנה ולפענוח של המפתח להצפנת מפתחות הצפנה (KEK), שבתורו משמש לגזירה, להצפנה ולפענוח של מפתחות נתונים.

התקנות באירוח בצד הלקוח שמשתמשות בהצפנה מדור קודם חייבות להעביר את מסדי הנתונים הפנימיים שלהן להצפנת AES-256 GCM. בהתקנות חדשות של אירוח בצד הלקוח, צריך להגדיר את ההצפנה של ההתקנות ל-AES-256 GCM. הוראות להעברה או להגדרה של התקנת אירוח בצד הלקוח להצפנת AES-256 GCM מופיעות במאמרי העזרה שימוש בהצפנת AES-256 GCM.

אם רוצים לשנות את ה-CMK, או אם רוצים לעבור מהגדרה מקומית שמבוססת על מפתח להגדרה של AWS KMS (או להפך), אפשר לעשות זאת על ידי יצירת CMK חדש והחלפת מפתח ההצפנה AES-256 GCM.

החלפת המפתח מתבצעת במצב אופליין, כלומר צריך לסגור את מכונת Looker. במופעי Looker מקובצים, צריך לכבות את כל הצמתים באשכול.

הצפנה מחדש מבטלת את התוקף של כל המטמון של Looker בדיסק, כולל מטמון תוצאות השאילתות. כתוצאה מכך, אחרי שתשלימו את החלפת המפתח ותפעילו את המופע, יכול להיות שהעומס על מסדי הנתונים של הלקוח יהיה גבוה מהרגיל.

כדי להחליף את מפתח ההצפנה של AES-256 GCM, מבצעים את הפעולות הבאות:

  1. הפסקת Looker ויצירת גיבוי מלא
  2. הגדרה של משתני הסביבה _SOURCE ו-_DESTINATION
  3. מריצים את הפקודה rekey
  4. הגדרה של משתני סביבה חדשים
  5. איך מתחילים להשתמש ב-Looker

הפסקה של 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

אם אתם מפעילים מסד נתונים חיצוני של MySQL כדי לאחסן נתונים של אפליקציית Looker, אתם צריכים לגבות את מסד הנתונים בנפרד. אם מסד הנתונים הוא מכונת MySQL, מצלמים תמונה. מסד הנתונים קטן יחסית, ולכן התהליך יימשך רק כמה דקות.

אם Looker הוא clustered, צריך לעצור כל צומת לפני שממשיכים:

cd looker
./looker stop

אם יש צמתים שעדיין פועלים כשמריצים את הפקודה rekey מאוחר יותר, הפקודה תיכשל ותופיע ההודעה "יש צמתים פעילים אחרים שמחוברים למסד הנתונים הזה של Looker בעורף המערכת". אם Looker הושבת בדקה האחרונה, נסה שוב בקרוב, אחרת ודא שכל הצמתים באשכול הושבתו".

הגדרה של משתני הסביבה _SOURCE ו-_DESTINATION

כשמופע Looker שלכם הועבר להצפנת AES-256 GCM או הוגדר להצפנה הזו, נוצר משתנה סביבתי אחד או יותר שמציין איפה Looker יכול למצוא את מפתח ה-CMK שלכם. המשתנים האלה שונים בהתאם לשאלה אם אתם משתמשים ב-AWS KMS.

פעולת ההצפנה מחדש משתמשת במשתני סביבה נוספים, בהתאם לשאלה אם אתם משתמשים כרגע ב-AWS KMS, והאם תשתמשו ב-AWS KMS אחרי פעולת ההצפנה מחדש. משתני סביבה עם הסיומת _SOURCE מציינים את המיקום שבו Looker יכול למצוא כרגע את ה-CMK, ומשתני סביבה עם הסיומת _DESTINATION מציינים את המיקום שבו Looker יכול למצוא את ה-CMK אחרי פעולת ההצפנה מחדש.

הגדרת משתני _SOURCE

מבצעים את אחד מההליכים הבאים, בהתאם לשאלה אם ההגדרה הנוכחית משתמשת ב-AWS KMS.

אם אתם משתמשים כרגע ב-AWS KMS

אם הגדרתם את ההצפנה באמצעות AWS KMS, יצרתם אחד או שניים ממשתני הסביבה הבאים:

  • LKR_AWS_CMK: מאחסן את ה-AWS CMK_alias.
  • LKR_AWS_CMK_EC: משתנה אופציונלי שמגדיר את הקשר להצפנה שמשמש עם מאגרי מפתחות של AWS KMS.

יוצרים מחדש את משתני הסביבה:

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

לאחר מכן יוצרים את המשתנים _SOURCE. מגדירים את המשתנים החדשים הבאים עם הסיומת _SOURCE:

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

אם אתם לא משתמשים כרגע ב-AWS KMS

אם הגדרתם את ההצפנה בהתחלה באמצעות KMS שאינו AWS, יצרתם אחד ממשתני הסביבה הבאים, בהתאם לאופן שבו אתם מאחסנים את ה-CMK – במשתנה סביבה או בקובץ במופע:

  • LKR_MASTER_KEY_ENV: אם מאחסנים את מפתח ה-CMK במשתנה סביבה, הפקודה הזו מאחסנת את מפתח ה-CMK.
  • LKR_MASTER_KEY_FILE: אם מאחסנים את ה-CMK בקובץ, כאן מאוחסנים הנתיב ושם הקובץ שמכיל את ה-CMK.

יוצרים מחדש את משתנה הסביבה שמשמש להגדרה:

export LKR_MASTER_KEY_FILE=<path_to_key_file>

או:

export LKR_MASTER_KEY_ENV=<CMK_value>

אחר כך יוצרים את המשתנה _SOURCE.

אם אתם מאחסנים את ה-CMK בקובץ, יוצרים את המשתנה הבא:

export LKR_MASTER_KEY_FILE_SOURCE=<path_to_key_file>

אם אתם מאחסנים את ה-CMK במשתנה סביבה, צריך ליצור את המשתנה הבא:

export LKR_MASTER_KEY_ENV_SOURCE=<CMK_value>

הגדרת משתני _DESTINATION

מבצעים את אחד מההליכים הבאים, בהתאם לשאלה אם תשתמשו ב-AWS KMS אחרי פעולת ההצפנה מחדש.

ההגדרה החדשה תשתמש ב-AWS KMS

אם התצורה החדשה תשתמש ב-AWS KMS, צריך ליצור את משתני הסביבה הבאים כדי לציין את המיקום החדש של ה-CMK:

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

ההגדרה החדשה לא תשתמש ב-AWS KMS

אם ההגדרה החדשה שלכם לא תשתמש ב-AWS KMS, תוכלו להשתמש במשתנים LKR_MASTER_KEY_FILE_DESTINATION או LKR_MASTER_KEY_ENV_DESTINATION כדי לציין את יעד ה-CMK.

אם רוצים לאחסן את ה-CMK בקובץ, מריצים את הפקודה הבאה:

export LKR_MASTER_KEY_FILE_DESTINATION=<path_to_new_key_file>

לחלופין, אם רוצים לאחסן את מפתח ה-CMK באמצעות משתנה סביבה, מריצים את הפקודה הבאה:

export LKR_MASTER_KEY_ENV_DESTINATION=<CMK_value>

מריצים את הפקודה rekey.

מריצים את הפקודה הבאה:

./looker rekey

אם מפעילים את מופע Looker באמצעות -d <db.yaml> או --internal-db-creds=<db.yaml> אפשרויות ההפעלה, שכוללות נתיב לקובץ YAML עם פרטי הכניסה למסד הנתונים, צריך לכלול את אותה אפשרות בפקודה rekey.

לדוגמה, java -jar looker.jar rekey -d /path/file/db.yaml.

הגדרת משתני סביבה חדשים

מגדירים משתנה סביבה אחד או יותר מהמשתנים הבאים, בהתאם להגדרות החדשות.

אם ההגדרה החדשה משתמשת ב-AWS KMS:

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

אם ההגדרה החדשה לא משתמשת ב-AWS KMS ואתם מאחסנים את ה-CMK במשתנה סביבה:

export LKR_MASTER_KEY_ENV=<CMK_value>

אם ההגדרה החדשה לא משתמשת ב-AWS KMS ואתם מאחסנים את ה-CMK בקובץ:

export LKR_MASTER_KEY_FILE=<path_to_CMK_file>

אם עברתם ממפתח שמאוחסן באופן מקומי אל AWS KMS או מ-AWS KMS אל מפתח שמאוחסן באופן מקומי, יהיו לכם משתני סביבה מההגדרה הקודמת שלא נחוצים. מוחקים את משתני הסביבה הישנים.

אם עברתם ממפתח שמאוחסן באופן מקומי אל AWS KMS:

unset LKR_MASTER_KEY_FILE

אם עברתם מ-AWS KMS למפתח שמאוחסן באופן מקומי:

unset LKR_AWS_CMK
unset LKR_AWS_CMK_EC

הפעלת Looker

מריצים את הפקודה הבאה:

./looker start