במאמר הזה מוסבר איך יוצרים רשות אישורי בסיס (CA) ב-Google Distributed Cloud (GDC) עם air gap.
רשות אישורים בסיסית, שנמצאת בראש ההיררכיה של תשתית של מפתח ציבורי (PKI), יוצרת את ישות העוגן האמינה של ה-PKI. כדי להשתמש באישורים ב-PKI, המכשירים, התוכנות והרכיבים צריכים לסמוך על רשות אישורי הבסיס. ההגדרה הזו מבטיחה אמון בכל האישורים שהונפקו על ידי ה-CA הבסיסי, וכך מאפשרת אמון ב-PKI עצמו.
המסמך הזה מיועד למשתמשים בקבוצת מפעילי האפליקציות, כמו מפתחי אפליקציות או מדעני נתונים, שמנהלים את מחזורי החיים של האישורים בפרויקט שלהם. מידע נוסף מופיע במאמר קהלים למסמכי תיעוד של GDC עם air gap.
לפני שמתחילים
לפני שיוצרים רשות אישורי בסיס, צריך לבקש את ההרשאות הנדרשות ולהכין את הסביבה.
בקשת תפקידים ב-IAM
כדי ליצור, לעדכן ולמחוק רשות אישורי בסיס, צריך לבקש ממנהל הארגון ב-IAM את התפקיד אדמין של שירות רשות האישורים (certificate-authority-service-admin).
הכנת הסביבה
יוצרים קובץ kubeconfig כדי להגדיר את הגישה ל-
kubectl.
יצירת רשות אישורי בסיס
כדי ליצור רשות אישורים בסיסית, צריך להחיל משאב בהתאמה אישית על המכונה של Distributed Cloud air-gapped.
יוצרים משאב
CertificateAuthorityושומרים אותו כקובץ YAML בשםroot-ca.yaml:apiVersion: pki.security.gdc.goog/v1 kind: CertificateAuthority metadata: name: ROOT_CA_NAME namespace: USER_PROJECT_NAMESPACE spec: caProfile: commonName: COMMON_NAME duration: DURATION renewBefore: RENEW_BEFORE organizations: - ORGANIZATION organizationalUnits: - ORGANIZATIONAL_UNITS countries: - COUNTRIES localities: - LOCALTIES provinces: - PROVINCES streetAddresses: - STREET_ADDRESSES postalCodes: - POSTAL_CODES caCertificate: selfSignedCA: {} certificateProfile: keyUsage: - digitalSignature - keyCertSign - crlSign extendedKeyUsage: - EXTENDED_KEY_USAGE secretConfig: secretName: SECRET_NAME privateKeyConfig: algorithm: KEY_ALGORITHM size: KEY_SIZE acme: enabled: ACME_ENABLEDמחליפים את המשתנים הבאים:
משתנה תיאור ROOT_CA_NAME השם של רשות האישורים ברמה הבסיסית (root CA). USER_PROJECT_NAMESPACE השם של מרחב השמות שבו נמצא פרויקט המשתמש. COMMON_NAME השם המוכר של אישור ה-CA. DURATION משך החיים המבוקש של אישור ה-CA. צריך לציין את משך הזמן בשעות (לדוגמה, 1000h). אין תמיכה ביחידות כמו ימים (d) או שנים (y).SECRET_NAME השם של הסוד ב-Kubernetes שמכיל את המפתח הפרטי ואת אישור ה-CA החתום. המשתנים הבאים הם ערכים אופציונליים:
משתנה תיאור RENEW_BEFORE זמן הסבב לפני שפג התוקף של אישור ה-CA. ORGANIZATION הארגון שיופיע באישור. ORGANIZATIONAL_UNITS היחידות הארגוניות שבהן ייעשה שימוש באישור. COUNTRIES המדינות שיופיעו באישור. LOCALITIES הערים שיופיעו באישור. PROVINCES המדינה (State) או המחוז שיופיעו באישור. STREET_ADDRESSES כתובות הרחוב שיופיעו באישור. POSTAL_CODES המיקודים שיופיעו באישור. EXTENDED_KEY_USAGE השימוש המורחב במפתח של האישור. אם מציינים את המאפיין, הערכים המותרים הם serverAuthו-clientAuth.KEY_ALGORITHYM אלגוריתם המפתח הפרטי שמשמש לאישור הזה. הערכים המותרים הם RSA,Ed25519אוECDSA. אם לא מציינים את הגודל, ברירת המחדל היא 256 ל-ECDSAו-2048 ל-RSA. המערכת מתעלמת מגודל המקש ב-Ed25519.KEY_SIZE גודל המפתח הפרטי של האישור הזה, בביטים, תלוי באלגוריתם. RSAמאפשר 2048, 3072, 4096 או 8192 (ברירת המחדל היא 2048).ECDSAמאפשר 256, 384 או 521 (ברירת המחדל היא 256). הפונקציהEd25519מתעלמת מהגודל.ACME_ENABLED אם הערך הוא true, רשות האישורים פועלת במצב ACME ומוציאה את כתובת ה-URL של שרת ACME. לאחר מכן תוכלו להשתמש בלקוח ובפרוטוקול של ACME כדי לנהל את האישורים.מחילים את המשאב בהתאמה אישית על המכונה של Distributed Cloud:
kubectl apply -f root-ca.yaml --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIGמחליפים את
MANAGEMENT_API_SERVER_KUBECONFIGבנתיב לקובץ kubeconfig של שרת Management API.מוודאים שה-CA הבסיסי מוכן. בדרך כלל לוקח כ-40 דקות עד שהרשות לאישורי CA מוכנה:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \ -n USER_PROJECT_NAMESPACE \ get certificateauthority.pki.security.gdc.goog/ROOT_CA_NAME \ -o json | jq -r '.status.conditions[] | select(.type as $id | "Ready" | index($id))'הפלט אמור להיראות כך:
{ "lastTransitionTime": "2025-01-24T17:09:19Z", "message": "CA reconciled", "observedGeneration": 2, "reason": "Ready", "status": "True", "type": "Ready" }
הצגת רשימה של רשויות CA
כדי להציג את כל המשאבים של Certificate Authority Service במכונה של Distributed Cloud עם air gap:
משתמשים בפרמטר certificateauthorities כדי להציג את כל המשאבים של CertificateAuthority:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG -n USER_PROJECT_NAMESPACE get certificateauthorities
הפלט אמור להיראות כך:
NAMESPACE NAME READY REASON AGE
foo root-ca True Ready 7h24m
foo sub-ca True Ready 7h24m