אימות חתימה של בקשה שאושרה

כל בקשה שאושרה לאישורי גישה נחתמת באמצעות מפתח קריפטוגרפי אסימטרי כדי לאמת את האישור. אפשר לחתום על בקשות שאושרו באמצעות Google-owned and managed key או מפתח Cloud KMS שסופק על ידי הלקוח.

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

לפני שמתחילים

כדי לוודא שלחשבון השירות של אישור הגישה למשאב יש את ההרשאות הנדרשות לאימות החתימות של הבקשות שאושרו, צריך לבקש מהאדמין להקצות לחשבון השירות של אישור הגישה למשאב את תפקיד ה-IAM ‏Cloud KMS CryptoKey Signer/Verifier ‏ (roles/cloudkms.signerVerifier) במפתח, בצרור המפתחות או בפרויקט המפתח.

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

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

אימות בקשה שנחתמה באמצעות Google-owned and managed key

  1. נכנסים לדף Access Approval במסוף Google Cloud .

    עוברים אל Access Approval

  2. מאתרים את הבקשה שאושרה לאישור גישה שרוצים לאמת ובוחרים אותה. ייפתח הדף פרטי הבקשה.

  3. בקטע מפתח ציבורי בניהול Google, לוחצים על content_copy העתקה.

  4. פותחים את Cloud Shell ושומרים את המפתח הציבורי כקובץ חדש בשם public_key:

    echo GOOGLE_MANAGED_PUBLIC_KEY > ./public_key
    

    מחליפים את GOOGLE_MANAGED_PUBLIC_KEY בתוכן של השדה מפתח ציבורי בניהול Google.

  5. במסוף Google Cloud , בדף Request details (פרטי הבקשה), בקטע Signature (חתימה), לוחצים על content_copy Copy (העתקה).

  6. פותחים את Cloud Shell ושומרים את החתימה כקובץ חדש בשם signature.txt:

    echo SIGNATURE > ./signature.txt
    

    מחליפים את SIGNATURE בתוכן של השדה Signature.

  7. מפענחים את החתימה באמצעות הפקודה base64 ושומרים את התוצאה כ-decoded_signature:

    base64 ./signature.txt -d > ./decoded_signature
    
  8. במסוף Google Cloud , בדף Request details, בקטע Serialized Approval Request, לוחצים על content_copy Copy.

  9. פותחים את Cloud Shell ושומרים את בקשת האישור הסדרתית כקובץ חדש בשם serialized_approval_request.txt:

    echo SERIALIZED_APPROVAL_REQUEST > ./serialized_approval_request.txt
    

    מחליפים את SERIALIZED_APPROVAL_REQUEST בתוכן של השדה Serialized Approval Request.

  10. מפענחים את בקשת האישור שעברה סריאליזציה ושומרים את התוצאה כ-decoded_serialized_approval_request:

    base64 ./serialized_approval_request.txt -d > ./decoded_serialized_approval_request
    
  11. כדי לאמת את החתימה, משתמשים ב-openssl:

    openssl dgst \
        -sha256 \
        -verify ./public_key \
        -signature ./decoded_signature \
        ./decoded_serialized_approval_request
    

    אם החתימה תקינה, הפלט צריך להיות Verified OK. ההודעה הזו מאשרת שהבקשה לאישור שסודרה בפורמט סדרתי היא תקפה.

אימות בקשה שנחתמה באמצעות מפתח שסופק על ידי הלקוח

  1. נכנסים לדף Access Approval במסוף Google Cloud .

    עוברים אל Access Approval

  2. מאתרים את הבקשה שאושרה לאישור גישה שרוצים לאמת ובוחרים אותה. ייפתח הדף פרטי הבקשה.

  3. במסוף Google Cloud , בדף Request details (פרטי הבקשה), בקטע Signature (חתימה), לוחצים על content_copy Copy (העתקה).

  4. פותחים את Cloud Shell ושומרים את החתימה כקובץ חדש בשם signature.txt:

    echo SIGNATURE > ./signature.txt
    

    מחליפים את SIGNATURE בתוכן של השדה Signature.

  5. מפענחים את החתימה ושומרים את התוצאה כ-decoded_signature:

    base64 ./signature.txt -d > ./decoded_signature
    
  6. במסוף Google Cloud , בדף Request details, בקטע Serialized Approval Request, לוחצים על content_copy Copy.

  7. פותחים את Cloud Shell ושומרים את בקשת האישור הסדרתית כקובץ חדש בשם serialized_approval_request.txt:

    echo SERIALIZED_APPROVAL_REQUEST > ./serialized_approval_request.txt
    

    מחליפים את SERIALIZED_APPROVAL_REQUEST בתוכן של השדה Serialized Approval Request.

  8. מפענחים את בקשת האישור שעברה סריאליזציה ושומרים את התוצאה כ-decoded_serialized_approval_request:

    base64 ./serialized_approval_request.txt -d > ./decoded_serialized_approval_request
    
  9. בקטע מפתח מנוהל של לקוח, רושמים את מזהה המשאב של המפתח.

  10. מאחזרים את המפתח הציבורי של המפתח שזיהיתם בשלב הקודם. שומרים את המפתח הציבורי שהורדתם בפורמט PEM בשם ./public_key.

  11. כדי לאמת את החתימה, משתמשים ב-openssl:

    openssl dgst \
        -sha256 \
        -verify ./public_key \
        -signature ./decoded_signature \
        ./decoded_serialized_approval_request
    

    אם החתימה תקינה, הפלט צריך להיות Verified OK. ההודעה הזו מאשרת שהבקשה לאישור שסודרה בפורמט סדרתי היא תקפה.