חתימות דיגיטליות משמשות כדי להבטיח את התקינות והאותנטיות של הנתונים. במאמר הזה מוסבר איך משתמשים ב-CLI של gdcloud כדי לחתום על נתונים ולאמת חתימות באמצעות מפתחות אסימטריים שמנוהלים על ידי Key Management System (KMS).
הדף הזה מיועד לקהלים בקבוצת מפעילים של אפליקציות, כמו צוותי DevOps, שמבצעים פעולות של ניהול מפתחות ב-Google Distributed Cloud (GDC) עם בידוד פיזי. מידע נוסף מופיע במאמרי העזרה בנושא קהלים ב-GDC עם פער אבטחה.
לפני שמתחילים
כדי לחתום על נתונים ולאמת אותם באמצעות מפתחות, צריך לבקש את ההרשאות הנדרשות, להכין את הסביבה וליצור מפתח חתימה אם עדיין אין לכם כזה.
שליחת בקשה לתפקידי IAM
פנו לאדמין של IAM בארגון כדי להקצות לכם את התפקיד הבא במרחב השמות של הפרויקט:
- KMS Developer (
kms-developer): הצגת מפתחות וביצוע פעולות קריפטוגרפיות כמו הצפנה, פענוח, חתימה ואימות של נתונים בפרויקט.
הכנת הסביבה
מתקינים ומפעילים את CLI של gcloud, אם עוד לא עשיתם זאת.
מבצעים אימות ל-GDC באמצעות ה-CLI של gdcloud. התהליך הזה מחייב את אישור רשות האישורים (CA) של הקונסולה של הארגון:
מורידים את אישור ה-CA:
echo -n | openssl s_client -showcerts -connect CONSOLE_URL:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > CA_CERT_PATHמחליפים את מה שכתוב בשדות הבאים:
-
CONSOLE_URL: כתובת ה-URL של המסוף של הארגון (למשלconsole.org-1.zone1.google.gdch.test) -
CA_CERT_PATH: הנתיב המלא שבו רוצים לשמור את קובץ אישור ה-CA (לדוגמה,/tmp/my-org-ca.crt)
-
נכנסים באמצעות אישור ה-CA שהורד:
gdcloud auth login --login-config-cert=CA_CERT_PATH
מוודאים שיש מפתח חתימה
כדי לחתום על נתונים ולאמת אותם, צריך להשתמש במפתח חתימה. כדי ליצור מפתח ולאמת אותו צריך הרשאות נפרדות ב-IAM, כמו שמפורט בדפים המקושרים.
- אם אתם צריכים ליצור מפתח חתימה, תוכלו להיעזר בהוראות שבמאמר יצירת מפתח חתימה.
- כדי לוודא שקיים מפתח חתימה, פועלים לפי ההוראות במאמר אימות יצירת מפתח חתימה.
נתוני חתימה
כדי לחתום על נתונים, משתמשים בפקודה gdcloud kms keys asymmetric-sign. הפקודה הזו יוצרת חתימה דיגיטלית של קובץ קלט באמצעות מפתח חתימה, ושומרת את החתימה בקידוד base64:
gdcloud kms keys asymmetric-sign \
namespaces/NAMESPACE/signingKeys/KEY_NAME \
--input-file=INPUT_PATH \
--signature-file=SIGNATURE_FILE
מחליפים את מה שכתוב בשדות הבאים:
- NAMESPACE: מרחב השמות של הפרויקט לדוגמה:
kms-test1 - KEY_NAME: השם של המפתח שמשמש לחתימה לדוגמה:
key-1 - INPUT_PATH: הנתיב של קובץ הקלט שרוצים לחתום עליו
- SIGNATURE_FILE: הנתיב של קובץ הפלט לשמירת החתימה בקידוד base64
אחרי שמריצים את הפקודה, רואים קובץ פלט שצוין בדגל --signature-file ומכיל את החתימה בקידוד base64.
אימות הנתונים
אחרי שחותמים על הנתונים, מאמתים את החתימה הדיגיטלית בפורמט base64 באמצעות הפקודה gdcloud kms keys asymmetric-verify. הפקודה הזו בודקת אם החתימה הדיגיטלית שמקודדת ב-Base64 שמתקבלת אחרי שמריצים את הפקודה gdcloud kms keys asymmetric-sign היא חוקית:
gdcloud kms keys asymmetric-verify \
namespaces/NAMESPACE/signingKeys/KEY_NAME \
--input-file=INPUT_PATH \
--signature-file=SIGNATURE_FILE
מחליפים את מה שכתוב בשדות הבאים:
- NAMESPACE: מרחב השמות של הפרויקט לדוגמה:
kms-test1 - KEY_NAME: השם של המפתח שמשמש לחתימה ‒ לדוגמה:
key-1 - INPUT_PATH: הנתיב של קובץ הקלט המקורי שנחתם
- SIGNATURE_FILE: הנתיב של הקובץ שמכיל את החתימה בקידוד base64 לאימות
אחרי שמריצים את הפקודה, אם היא מצליחה, הפלט Verification OK מוצג. אם התגובה נכשלה, תראו את פלט הכישלון
Verification Failure.