במאמר הזה מוסבר איך לשדרג את רשות אישורי הבסיס (CA) שמשמשת לאימות חבילות במכשיר עם פער אבטחה של Google Distributed Cloud (GDC)
אימות חבילות GDC מתבצע באמצעות רשות אישורי בסיס (CA) כדי לאמת אישורים של מפתחות הפצה. אם בהודעת גרסה נדרש שדרוג של רשות אישורים בסיסית, או אם מוצגת הודעת אזהרה במהלך שדרוג המערכת, צריך לשדרג את רשות האישורים הבסיסית.
לפני שמתחילים
כדי לשדרג את אישור האימות של החבילה, צריכות להיות לכם הרשאות זהות וגישה מתאימות:
- מוודאים שיש לכם הרשאת כתיבה ל-ConfigMap
harbor-system/package-validation-root-certs. - צריך לבקש מאדמין האבטחה להקצות לכם את התפקיד 'שדרוג Debugger' (
upgrade-debugger-cp).
אימות שנדרש שדרוג של האישור
לפני שמבצעים את הפעולה, צריך לוודא שנדרג את אישור האימות של החבילה. לשם כך, משווים את ה-ConfigMap הפעיל באשכול לאישור הבסיס העדכני ביותר של הסביבה הזמנית בחבילת השדרוג:
מגדירים את משתנה הסביבה
KUBECONFIG:$ KUBECONFIG=PATH_TO_KUBECONFIG_FILEמחליפים את
PATH_TO_KUBECONFIG_FILEבנתיב לקובץkubeconfigשהתקבל אחרי הפעלת הפקודהgdcloud auth loginבאשכול האדמין הבסיסי.כדי לבדוק אם נדרש שדרוג, משווים את ישות העוגן הנוכחית לישות העוגן העדכנית. הנתונים
ConfigMapבכתובתharbor-system/package-validation-root-certsמושוים לישות העוגן האמינה המקומית:$ CURRENT_TRUST_ANCHOR=$(kubectl --kubeconfig=$KUBECONFIG get cm package-validation-root-certs -n harbor-system -o jsonpath='{.data.ca\.crt}') $ LATEST_TRUST_ANCHOR=$(cat /root/release/staging_root_ca_certificate.crt) $ diff <( echo "$CURRENT_TRUST_ANCHOR" ) <( echo "$LATEST_TRUST_ANCHOR" ) && echo trust anchors are same || echo trust anchors are different, upgrade required!
שדרוג האישור
אם נדרש שדרוג, מעדכנים את האובייקט ConfigMap שנמצא ב-harbor-system/package-validation-root-certs באשכול האדמין הבסיסי. כדי להשלים את המשימה הזו, צריכה להיות לכם הרשאת כתיבה ב-ConfigMap.
מגדירים את משתנה הסביבה
KUBECONFIG:$ KUBECONFIG=PATH_TO_KUBECONFIG_FILEמחליפים את
PATH_TO_KUBECONFIG_FILEבנתיב לקובץkubeconfigשהתקבל אחרי הפעלת הפקודהgdcloud auth loginבאשכול האדמין הבסיסי.יוצרים משתנים ומקצים להם ערכים:
USERNAME=USER_NAME #IO TARGET_FOLDER=/tmp/${USERNAME} OUTPUT="${TARGET_FOLDER}/package-validation-root-certs.yaml" LATEST_TRUST_ANCHOR_CA_FILE=/root/release/staging_root_ca_certificate.crt CONFIGMAP_NAME=package-validation-root-certs NAMESPACE=harbor-systemמחליפים את
USER_NAMEבשם המשתמש ב-IO.יוצרים את תיקיית היעד שתכיל את קובצי הפלט מתהליך השדרוג של האישור:
mkdir -p "${TARGET_FOLDER}"מקבלים את עוגן האמון הנוכחי ומאחסנים אותו בקובץ זמני מקומי:
CURRENT_TRUST_ANCHOR=$(kubectl --kubeconfig=$KUBECONFIG get configmap "${CONFIGMAP_NAME}" -n "${NAMESPACE}" -o jsonpath="{.data.ca\.crt}" ) CURRENT_TRUST_ANCHOR_CA_FILE=$(mktemp) echo "$CURRENT_TRUST_ANCHOR" > "${CURRENT_TRUST_ANCHOR_CA_FILE}"יוצרים את קובץ העוגן המעודכן:
cat <<EOF > "${OUTPUT}" apiVersion: v1 kind: ConfigMap metadata: name: ${CONFIGMAP_NAME} namespace: ${NAMESPACE} data: ca.crt: | $(sed 's/^/ /' "${LATEST_TRUST_ANCHOR_CA_FILE}") $(sed 's/^/ /' "${CURRENT_TRUST_ANCHOR_CA_FILE}") EOFמוודאים שעוגן האמון עודכן כמו שצריך:
עוגן האמון צריך להכיל גם את אישור עוגן האמון הנוכחי וגם את אישור עוגן האמון העדכני ביותר.
$ cat "${OUTPUT}" apiVersion: v1 data: ca.crt: | -----BEGIN CERTIFICATE----- (certificate content) -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- (certificate content) -----END CERTIFICATE----- (other certificate) kind: ConfigMap metadata: name: package-validation-root-certs namespace: harbor-systemמחילים את ההגדרה החדשה באמצעות
kubectl:kubectl --kubeconfig=$KUBECONFIG apply -f ${OUTPUT}מוודאים שהקובץ ca.crt החדש נמצא בתוך
ConfigMap:kubectl --kubeconfig=$KUBECONFIG describe configmap package-validation-root-certs -n harbor-system
הפעולה הזו תדאג לשדרוג של אישור חדש ב-package-validation-root-cert.