ביטול אישור

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

המסמך הזה מיועד למשתמשים בקבוצת מפעילי האפליקציות, כמו מפתחי אפליקציות או מדעני נתונים, שמנהלים את מחזורי החיים של האישורים בפרויקט שלהם. מידע נוסף מופיע במאמר קהלים למסמכי תיעוד של GDC עם air gap.

מידע על ביטול אישורים

ב-CA Service אפשר לבטל אישורים על ידי פרסום רשימות של אישורים שבוטלו (CRL). רשימת CRL היא רשימה של מספרים סידוריים של אישורים שבוטלו ואינם מהימנים יותר. כברירת מחדל, רשימת CRL חדשה מתפרסמת כל 15 דקות. בנוסף, כל ביטול מוצלח של אישור מפעיל באופן אוטומטי יצירה של CRL חדש.

אישורים שמונפקים על ידי שירות CA כוללים תוסף שנקרא נקודת ההפצה של CRL‏ (CDP). התוסף הזה מכיל את כתובת ה-URL שבה אפשר למצוא ולהוריד את ה-CRL של האישור הזה. אפליקציות לקוח משתמשות בכתובת ה-URL הזו כדי לאחזר את ה-CRL ולבדוק אם המספר הסידורי של האישור קיים. אם המספר הסידורי מופיע ברשימה, האישור נחשב לא חוקי וצריך לדחות את החיבור.

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

כדי לבטל אישור, צריך לבקש את ההרשאות הנדרשות ולהכין את הסביבה.

בקשת תפקידים ב-IAM

כדי לבטל אישורים ולראות בקשות ביטול, צריך לבקש ממנהל חשבון ארגוני ב-IAM את התפקיד מנהל תפעול של שירות CA (certificate-authority-service-operation-manager) במרחב השמות של הפרויקט של רשות האישורים.

הכנת הסביבה

ביטול אישור

השיטה לביטול אישור תלויה בשאלה אם מצב ACME מופעל ברשות האישורים (CA) שהנפיקה את האישור. אחרי שמבטלים אישור, המספר הסידורי שלו מופיע בכל רשימות ה-CRL העתידיות של אותו CA עד שתוקף האישור פג.

ביטול אישור מרשות אישורים (CA) שתומכת ב-ACME

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

ביטול אישור מרשות אישורים (CA) שתומכת ב-ACME:

  1. מאחזרים את כתובת ה-URL של שרת ה-ACME של רשות האישורים:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
      get certificateauthorities CA_NAME \
      -n USER_PROJECT_NAMESPACE \
      -ojson | jq -r '.status.acme.uri'
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫MANAGEMENT_API_SERVER_KUBECONFIG: הנתיב לקובץ kubeconfig של שרת Management API.
    • ‫CA_NAME: השם של רשות האישורים שמופעל בה ACME (רשות אישורים בסיסית או משנית).
    • ‫USER_PROJECT_NAMESPACE: מרחב השמות של הפרויקט.
  2. משתמשים בכתובת ה-URL שהתקבלה עם כלי הלקוח של ACME לבחירתכם כדי לשלוח בקשת ביטול. לפרטים, עיינו במסמכי התיעוד של לקוח ה-ACME הספציפי שלכם.

ביטול אישור מרשות אישורים (CA) שבה פרוטוקול ACME מושבת

אם מצב ACME מושבת ב-CA, מבטלים את האישור על ידי יצירה והחלה של משאב RevokeCertificateRequest בהתאמה אישית:

  1. יוצרים קובץ YAML של משאב בהתאמה אישית של RevokeCertificateRequest (למשל revoke-cert-request.yaml):

    apiVersion: pki.security.gdc.goog/v1
    kind: RevokeCertificateRequest
    metadata:
      name: REVOKE_CERT_REQ_NAME
      namespace: USER_PROJECT_NAMESPACE
    spec:
      certificateRequestRef:
        name: CERT_REQ_NAME
        namespace: USER_PROJECT_NAMESPACE
      reason: REASON
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫REVOKE_CERT_REQ_NAME: השם שהמשתמש הגדיר לבקשת הביטול.
    • ‫USER_PROJECT_NAMESPACE: מרחב השמות של הפרויקט.
    • ‫CERT_REQ_NAME: השם של משאב CertificateRequest שמשויך לאישור שרוצים לבטל.
    • ‫REASON: הסיבה לביטול. אלה הסיבות התקינות: Unspecified, KeyCompromise, CaCompromise, AffiliationChanged, Superseded, CessationOfOperation, CertificateHold, RemoveFromCrl, PrivilegeWithdrawn ו-AaCompromise.
  2. מחילים את המשאב בהתאמה אישית:

    kubectl apply -f revoke-cert-request.yaml --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG
    

    מחליפים את MANAGEMENT_API_SERVER_KUBECONFIG בנתיב לקובץ kubeconfig של שרת Management API.

  3. מוודאים שהבקשה לביטול האישור מוכנה:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
      -n USER_PROJECT_NAMESPACE \
      get revokecertificaterequest.pki.security.gdc.goog/REVOKE_CERT_REQ_NAME \
      -ojson | jq -r ' .status.conditions[] | select( .type as $id | "Ready" | index($id))'
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫MANAGEMENT_API_SERVER_KUBECONFIG: הנתיב לקובץ kubeconfig של שרת Management API.
    • ‫USER_PROJECT_NAMESPACE: מרחב השמות של הפרויקט.
    • ‫REVOKE_CERT_REQ_NAME: השם של בקשת הביטול.

    הפלט אמור להיראות כך:

    {
      "lastTransitionTime": "2025-08-19T23:20:22Z",
      "message": "RevokeCertificateRequest reconciled",
      "observedGeneration": 1,
      "reason": "Ready",
      "status": "True",
      "type": "Ready"
    }
    

    התהליך הושלם והמספר הסידורי של האישור נוסף ל-CRL הבא שנוצר.

רשימת בקשות לאישורים שבוטלו

הצגת רשימה של כל המשאבים מסוג RevokeCertificateRequest במרחב שמות של פרויקט:

kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
  -n USER_PROJECT_NAMESPACE \
  get revokecertificaterequests

מחליפים את מה שכתוב בשדות הבאים:

  • ‫MANAGEMENT_API_SERVER_KUBECONFIG: הנתיב לקובץ kubeconfig של שרת Management API.
  • ‫USER_PROJECT_NAMESPACE: מרחב השמות של הפרויקט.

הפלט אמור להיראות כך:

NAMESPACE    NAME                      READY   AGE
foo          revoke-cert-req           True    30s