בדף הזה מוסבר איך ליצור מפתח ששותף מראש (PSK) ולהשתמש בו כדי ליצור סוד אימות.
PSK הוא סיסמה סודית משותפת שמשמשת לאימות ולהצפנה של התקשורת בין שני מכשירים. זהו סוג של הצפנה סימטרית.
לפני שמתחילים
כדי ליצור סוד, צריך את התפקידים הנדרשים לניהול זהויות והרשאות גישה:
- אדמין של VPN: יש לו הרשאות קריאה וכתיבה בכל המשאבים שקשורים ל-VPN. בקשו ממנהל חשבון ארגוני ב-IAM להקצות לכם את התפקיד 'אדמין VPN' (
vpn-admin). - צפייה ב-VPN: הרשאות קריאה בכל המשאבים שקשורים ל-VPN. בקשו ממנהל חשבון ארגוני ב-IAM להקצות לכם את התפקיד "צפייה ב-VPN" (
vpn-viewer). - מידע נוסף זמין במאמר הגדרות תפקידים.
יצירת PSK
כדי ליצור מפתח חזק ששותף מראש באורך 32 תווים, אפשר להשתמש בשיטות הבאות.
OpenSSL
מידע נוסף על OpenSSL זמין בכתובת https://www.openssl.org/. במערכת Linux או macOS, מריצים את פקודת OpenSSL הבאה:
openssl rand -base64 24
/dev/urandom
במערכת Linux או macOS, אפשר גם להשתמש ב-/dev/urandom כמקור פסאודו-אקראי כדי ליצור מפתח ששותף מראש:
ב-Linux או ב-macOS, שולחים את הקלט האקראי אל
base64:head -c 24 /dev/urandom | base64מעבירים את הקלט האקראי דרך פונקציית גיבוב (hash), כמו
sha256:ב-Linux:
head -c 4096 /dev/urandom | sha256sum | cut -b1-32ב-macOS:
head -c 4096 /dev/urandom | openssl sha256 | cut -b1-32
JavaScript
אפשר ליצור את המפתח ששותף מראש ישירות במסמך באמצעות JavaScript עם W3C Web Cryptography API. מידע נוסף זמין בכתובת https://www.w3.org/TR/WebCryptoAPI/#Crypto-method-getRandomValues
ה-API הזה משתמש ב-method Crypto.getRandomValues() שמפורטת כאן: https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues, שמספקת דרך קריפטוגרפית תקינה ליצירת מפתח משותף מראש.
הקוד הבא יוצר מערך של 24 בייטים אקראיים, ואז מקודד את הבייטים האלה ב-base64 כדי ליצור מחרוזת אקראית של 32 תווים:
var a = new Uint8Array(24);
window.crypto.getRandomValues(a);
console.log(btoa(String.fromCharCode.apply(null, a)));
יצירת הסוד
יוצרים סוד עם מפתח PSK במרחב השמות של הפלטפורמה:
kubectl --kubeconfig MANAGEMENT_API_SERVER create secret -n platform generic PSK_NAME --from-literal=psk=PSK
מחליפים את מה שכתוב בשדות הבאים:
-
MANAGEMENT_API_SERVER: הנתיב של kubeconfig לשרת ה-API האזורי. אם עדיין לא יצרתם קובץ kubeconfig לשרת ה-API באזור היעד, קראו את הפרטים בקטע כניסה. -
PSK_NAME: השם של מפתח ה-PSK. -
PSK: הערך של מפתח ה-PSK.