חתימות דיגיטליות משמשות כדי להבטיח את תקינות הנתונים והאותנטיות שלהם. במאמר הזה מוסבר איך משתמשים ב-CLI של gdcloud כדי לחתום על נתונים ולאמת חתימות באמצעות מפתחות אסימטריים שמנוהלים על ידי Key Management System (KMS).
הדף הזה מיועד לקהלים בקבוצת מפעילי האפליקציות, כמו צוותי DevOps, שמבצעים פעולות של ניהול מפתחות ב-Google Distributed Cloud (GDC) עם air gap. מידע נוסף מופיע במאמר קהלים למסמכי תיעוד של GDC עם air gap.
לפני שמתחילים
כדי לחתום על נתונים ולאמת אותם באמצעות מפתחות, צריך לבקש את ההרשאות הנדרשות, להכין את הסביבה וליצור מפתח חתימה אם עדיין אין לכם כזה.
בקשת תפקידים ב-IAM
צריך לבקש ממנהל החשבון הארגוני ב-IAM להקצות לכם את התפקיד הבא במרחב השמות של הפרויקט:
- מפתח KMS (
kms-developer): צפייה במפתחות וביצוע פעולות קריפטוגרפיות כמו הצפנה, פענוח, חתימה ואימות של נתונים בפרויקט.
הכנת הסביבה
אם עדיין לא עשיתם את זה, מתקינים ומפעילים את gdcloud CLI.
אימות ב-GDC באמצעות gdcloud CLI. בתהליך הזה נדרש אישור 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.