במאמר הזה מוסבר איך להגדיר את רמת הבקרה של אשכול Google Kubernetes Engine (GKE) באמצעות רשויות אישורים (CA) ומפתחות שאתם מנהלים. ההנחיות האלה מיועדות לאדמינים של אבטחה שיש להם דרישות ספציפיות של תאימות או דרישות המדיניות ארגונית לגבי שליטה בהנפקת אישורים ובחתימה.
בדף הזה מתואר חלק אחד מתוך קבוצה של תכונות אופציונליות של מישור הבקרה ב-GKE, שמאפשרות לבצע משימות כמו אימות של מצב האבטחה של מישור הבקרה או הגדרת הצפנה וחתימה על אישורים במישור הבקרה באמצעות מפתחות שאתם מנהלים. פרטים נוספים זמינים במאמר מידע על הרשאות במישור הבקרה של GKE.
כברירת מחדל, Google Cloud מחיל אמצעי אבטחה שונים על מישור הבקרה המנוהל. בדף הזה מתוארות יכולות אופציונליות שמאפשרות לכם לקבל יותר שקיפות או שליטה במישור הבקרה של GKE.
כדאי להכיר את המושגים הבאים:
רכיבי פרטי הכניסה של מישור הבקרה
אשכולות GKE משתמשים במפתחות וברשויות אישורים ספציפיים כדי להנפיק פרטי כניסה באשכול, כמו אישורי X.509 או אסימונים של חשבון שירות. אתם יכולים ליצור מפתחות ב-Cloud Key Management Service (Cloud KMS) ו-CAs ב-Certificate Authority Service (CA Service) ולהגדיר את האשכולות כך שישתמשו במשאבים האלה במקום במפתחות וב-CAs שמנוהלים על ידי Google Cloud.
מידע נוסף על הרכיבים הספציפיים שאתם יוצרים זמין במאמר רשויות אישורים ומפתחות בניהול עצמי.
שימוש בתכונות אחרות של שליטה במישור הבקרה של GKE
השליטה במישור הבקרה של GKE מספקת את התכונות הבאות שקשורות למפתחות בניהול עצמי:
- הפעלת רשויות אישורים (CA) ומפתחות משלכם (המסמך הזה)
- הצפנה של רכיבי מישור הבקרה
מטרות
- יצירת מפתחות ב-Cloud KMS
- יצירת רשויות אישורים בשירות CA
- הענקת תפקידים לניהול זהויות והרשאות גישה (IAM) לסוכן השירות של GKE
- יצירת אשכול GKE שמשתמש ב-CA ובמפתחות שלכם
- אימות השימוש באישורים ובמפתחות שלכם באשכול
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.
כשמסיימים את המשימות שמתוארות במסמך הזה אפשר למחוק את המשאבים שיצרתם כדי להימנע מחיובים נוספים. מידע נוסף זמין בקטע הסרת המשאבים.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init מפעילים את ממשקי ה-API של Kubernetes Engine, Certificate Authority Service ו-Cloud Key Management Service:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידיםgcloud services enable container.googleapis.com
privateca.googleapis.com cloudkms.googleapis.com -
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init מפעילים את ממשקי ה-API של Kubernetes Engine, Certificate Authority Service ו-Cloud Key Management Service:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידיםgcloud services enable container.googleapis.com
privateca.googleapis.com cloudkms.googleapis.com - מוודאים שהסביבה שלכם עומדת בדרישות לשימוש בתכונות של שליטה במישור הבקרה של GKE. כדי להפעיל את התכונות האלה, צריך לפנות לצוות המכירות. Google Cloud
- כדי לעקוב בצורה מהימנה אחרי הנפקת פרטי כניסה והשימוש בהם, חשוב לוודא שיומני הביקורת הבאים של גישה לנתונים מופעלים:
- Cloud Key Management Service (KMS) API:
DATA_READ - Certificate Authority Service:
ADMIN_READ
הסבר על הפעלת סוגי היומנים האלה מופיע במאמר הפעלת יומני ביקורת של גישה לנתונים.
- Cloud Key Management Service (KMS) API:
תפקידים והרשאות נדרשים
כדי לקבל את ההרשאות שדרושות להרצת רשויות אישורים ומפתחות משלכם, אתם צריכים לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
-
יצירת מפתחות Cloud KMS:
Cloud KMS Admin (
roles/cloudkms.admin) בפרויקט המפתחות -
יצירה של מאגרי CA ו-CAs בסיסיים:
אדמין של שירות CA (
roles/privateca.admin) בפרויקט המפתחות -
יצירת אשכולות GKE:
אדמין אשכול Kubernetes Engine (
roles/container.clusterAdmin) בפרויקט האשכול
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
דרישות
עליכם לעמוד בדרישות הבאות:
- האשכול צריך להריץ את גרסה 1.31.1-gke.1846000 של GKE או גרסה מאוחרת יותר.
כדי להגדיר הצפנת דיסק במישור הבקרה באמצעות מפתחות משלכם, בנוסף להגדרת רשויות אישורים משלכם, צריך ליצור את האשכול באחד מהאזורים הבאים:
asia-east1asia-northeast1asia-southeast1europe-west1europe-west4us-central1us-central2us-east1us-east4us-east5us-south1us-west1us-west3us-west4
מגבלות
ההגבלות הבאות חלות:
- אפשר להשתמש רק במפתחות מ-Cloud KMS. אי אפשר להשתמש בספק KMS אחר או בספק הצפנה אחר.
- אין תמיכה במפתחות של Cloud External Key Manager (Cloud EKM).
- אפשר להשתמש רק ב-CA משירות CA.
הכנת הסביבה
בקטע הזה, תזהו את הפרויקטים שבהם תשתמשו במדריך הזה, ותיצרו אוסף מפתחות ב-Cloud KMS כדי לאחסן את המפתחות שלכם. Google Cloud
זיהוי פרויקטים
מומלץ להשתמש ב Google Cloud פרויקטים נפרדים באופן הבא:
- פרויקט המפתחות: מכיל את כל המפתחות ואת רשויות האישורים.
- פרויקט האשכול: מכיל את אשכולות GKE.
אפשר להשתמש באותו פרויקט למפתחות, לרשויות אישורים ולמקרי GKE, אבל מומלץ להשתמש בפרויקטים נפרדים כדי שהצוותים שמנהלים פעולות קריפטוגרפיות בארגון יהיו נפרדים מהצוותים שמנהלים פעולות של אשכולות.
יצירת אוסף מפתחות
יוצרים אוסף מפתחות בפרויקט המפתחות כדי להכיל את כל המפתחות של אשכול ספציפי. צריך ליצור את אוסף המפתחות באותו מיקום שבו נמצא אשכול GKE.
מריצים את הפקודה הבאה:
gcloud kms keyrings create KEY_RING_NAME \
--location=LOCATION \
--project=KEY_PROJECT_ID
מחליפים את מה שכתוב בשדות הבאים:
-
KEY_RING_NAME: שם לאוסף המפתחות. -
KEY_PROJECT_ID: מזהה הפרויקט של פרויקט המפתח. -
LOCATION: Google Cloud האזור שבו רוצים ליצור את אוסף המפתחות. האזור הזה צריך להיות זהה לאזור שבו נמצא אשכול ה-GKE.
יצירת מפתחות
לכל אחד מהגורמים המוסמכים לאימות, כמו מפתחות של חשבונות שירות ורשויות אישורים, יוצרים מפתח באמצעות Cloud KMS. בקטע הזה מוסבר איך ליצור את המפתחות ש-GKE משתמש בהם כדי לחתום על פרטי הכניסה ולאמת אותם באשכול.
אתם יכולים לציין מאפיינים משלכם למפתחות האלה בהתאם לצרכים של הארגון. פרטים נוספים זמינים בדף יצירת מפתח ובמאמר projects.locations.keyRings.cryptoKeys בנושא הפניית API.
כשיוצרים את המשאבים האלה ב-Cloud KMS, כדאי לקחת בחשבון את הנקודות הבאות:
- אם יש לכם אוסף מפתחות קיים בפרויקט המפתחות, אתם יכולים להשתמש בו כדי לאחסן את כל המפתחות שאתם יוצרים לשימוש עם האשכול.
- כדי לצמצם את זמן האחזור, אוסף המפתחות צריך להיות באותו Google Cloud מיקום כמו האשכול.
- במפתחות צריך לציין את
asymmetric-signingכמטרת המפתח. - משתמשים באלגוריתמים הבאים בהתאם לסוג המפתח:
- מפתחות חתימה של חשבון שירות: אלגוריתם חתימה חזק של RSA PKCS1, כמו
rsa-sign-pkcs1-4096-sha256אוrsa-sign-pkcs1-3072-sha256. - מפתחות של רשות אישורים: אלגוריתם חזק כמו
ec-sign-p256-sha256.
- מפתחות חתימה של חשבון שירות: אלגוריתם חתימה חזק של RSA PKCS1, כמו
- מפתחות חומרה של Cloud HSM נתמכים, אבל רמת ההגנה
softwareמספיקה לרוב תרחישי השימוש. פרטים על מפתחות חומרה זמינים במאמר Cloud HSM. - אל תשנו את משך ברירת המחדל להשמדת מפתחות.
- GKE לא מונע מכם למחוק מפתחות Cloud KMS, כולל מפתחות של CA Service, שנמצאים בשימוש באשכול. לפני שמוחקים מפתחות או רשויות אישורים, צריך לוודא שהמשאבים לא נמצאים בשימוש.
כדי ליצור את המפתחות, מריצים את הפקודות הבאות:
יוצרים את מפתח החתימה של חשבון השירות ב-Kubernetes, שמוגדר גם כמפתח האימות של חשבון השירות במהלך יצירת האשכול:
gcloud kms keys create sa-signing-key \ --keyring=KEY_RING_NAME \ --location=LOCATION \ --purpose="asymmetric-signing" \ --protection-level=hsm \ --default-algorithm=rsa-sign-pkcs1-4096-sha256 \ --project=KEY_PROJECT_IDמחליפים את
KEY_PROJECT_IDבמזהה הפרויקט של פרויקט המפתח הייעודי.יוצרים את מפתח ה-CA הבסיסי של האשכול:
gcloud kms keys create cluster-ca-key \ --keyring=KEY_RING_NAME \ --location=LOCATION \ --purpose="asymmetric-signing" \ --protection-level=hsm \ --default-algorithm=ec-sign-p256-sha256 \ --project=KEY_PROJECT_IDיוצרים את המפתח של רשות האישורים (CA) העליונה של עמיתי etcd:
gcloud kms keys create etcd-peer-ca-key \ --keyring=KEY_RING_NAME \ --location=LOCATION \ --purpose="asymmetric-signing" \ --protection-level=hsm \ --default-algorithm=ec-sign-p256-sha256 \ --project=KEY_PROJECT_IDיוצרים את מפתח ה-CA הבסיסי של etcd API:
gcloud kms keys create etcd-api-ca-key \ --keyring=KEY_RING_NAME \ --location=LOCATION \ --purpose="asymmetric-signing" \ --protection-level=hsm \ --default-algorithm=ec-sign-p256-sha256 \ --project=KEY_PROJECT_IDיוצרים את מפתח ה-CA של שורש הצבירה:
gcloud kms keys create aggregation-ca-key \ --keyring=KEY_RING_NAME \ --location=LOCATION \ --purpose="asymmetric-signing" \ --protection-level=hsm \ --default-algorithm=ec-sign-p256-sha256 \ --project=KEY_PROJECT_ID
יצירת רשויות האישורים
אחרי שיוצרים את המפתחות לכל אחת מהפונקציות של מישור הבקרה, משתמשים בכל מפתח כדי ליצור את מאגרי ה-CA ואת ה-CA הבסיסיים התואמים באמצעות שירות ה-CA:
יוצרים את מאגר רשויות האישורים של האשכול:
gcloud privateca pools create cluster-ca-pool \ --location=LOCATION \ --tier=enterprise \ --project=KEY_PROJECT_ID \ --no-publish-crl --no-publish-ca-certהדגל
--no-publish-crlוהדגל--no-publish-ca-certהם אופציונליים. אם לא מציינים את הדגלים האלה, האישורים מתפרסמים בקטגוריה של Cloud Storage. פרטים נוספים זמינים במאמר בנושא הפעלה של פרסום אישורי CA ו-CRL עבור רשויות אישורים במאגר אישורים.יוצרים את רשות האישורים (CA) הבסיסית של האשכול:
gcloud privateca roots create cluster-root-ca \ --pool=cluster-ca-pool \ --location=LOCATION \ --kms-key-version=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/cluster-ca-key/cryptoKeyVersions/1 \ --subject="CN=cluster-ca, O=ORGANIZATION" \ --project=KEY_PROJECT_ID \ --auto-enableמחליפים את
ORGANIZATIONבשם הארגון.יוצרים את מאגר רשויות האישורים (CA) של עמיתי etcd:
gcloud privateca pools create etcd-peer-ca-pool \ --location=LOCATION \ --tier=enterprise \ --project=KEY_PROJECT_ID \ --no-publish-crl --no-publish-ca-certיוצרים את רשות האישורים (CA) הבסיסית של עמיתי etcd:
gcloud privateca roots create etcd-peer-root-ca \ --pool=etcd-peer-ca-pool \ --location=LOCATION \ --kms-key-version=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/etcd-peer-ca-key/cryptoKeyVersions/1 \ --subject="CN=etcd-peer-ca, O=ORGANIZATION" \ --project=KEY_PROJECT_ID \ --auto-enableיוצרים את מאגר רשויות האישורים של etcd API:
gcloud privateca pools create etcd-api-ca-pool \ --location=LOCATION \ --tier=enterprise \ --project=KEY_PROJECT_ID \ --no-publish-crl --no-publish-ca-certיוצרים את רשות האישורים (CA) הבסיסית של etcd API:
gcloud privateca roots create etcd-api-root-ca \ --pool=etcd-api-ca-pool \ --location=LOCATION \ --kms-key-version=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/etcd-api-ca-key/cryptoKeyVersions/1 \ --subject="CN=etcd-api-ca, O=ORGANIZATION" \ --project=KEY_PROJECT_ID \ --auto-enableיוצרים את מאגר רשויות האישורים המצטבר:
gcloud privateca pools create aggregation-ca-pool \ --location=LOCATION \ --tier=enterprise \ --project=KEY_PROJECT_ID \ --no-publish-crl --no-publish-ca-certיוצרים את רשות האישורים (CA) העליונה של הצבירה:
gcloud privateca roots create aggregation-root-ca \ --pool=aggregation-ca-pool \ --location=LOCATION \ --kms-key-version=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/aggregation-ca-key/cryptoKeyVersions/1 \ --subject="CN=aggregation-ca, O=ORGANIZATION" \ --project=KEY_PROJECT_ID \ --auto-enable
הענקת תפקידי IAM לסוכן השירות של GKE
סוכן השירות של GKE צריך גישה למשאבים שיצרתם ב-Cloud KMS וב-CA Service. סוכן השירות משתמש במשאבים האלה כדי לחתום על פרטי הכניסה, לאמת אותם ולהנפיק אותם באשכול. אפשר להשתמש בתפקידי ה-IAM המוגדרים מראש הבאים:
- Kubernetes Engine KMS Crypto Key User
(
roles/container.cloudKmsKeyUser) - Certificate Manager
(
roles/privateca.certificateManager)
כדי להעניק את התפקידים האלה לסוכן השירות של GKE, מבצעים את הפעולות הבאות:
כדי למצוא את מספר הפרויקט של פרויקט האשכול:
gcloud projects describe CLUSTER_PROJECT_ID \ --format='value(projectNumber)'מחליפים את
CLUSTER_PROJECT_IDבמזהה הפרויקט של אשכול הפרויקט.מקצים את התפקיד 'משתמש במפתח קריפטוגרפי של Kubernetes Engine KMS' למפתח החתימה של חשבון השירות שיצרתם בשלב יצירת מפתחות:
gcloud kms keys add-iam-policy-binding sa-signing-key \ --location=LOCATION \ --keyring=KEY_RING_NAME \ --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \ --role=roles/container.cloudKmsKeyUser \ --project=KEY_PROJECT_IDמחליפים את הערך
CLUSTER_PROJECT_NUMBERבמספר הפרויקט של אשכול הפרויקט.מקצים את התפקיד 'מנהל אישורים של שירות CA' במאגרי ה-CA שיצרתם בשלב יצירת ה-CA:
gcloud privateca pools add-iam-policy-binding cluster-ca-pool \ --location=LOCATION \ --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \ --role=roles/privateca.certificateManager \ --project=KEY_PROJECT_ID gcloud privateca pools add-iam-policy-binding etcd-peer-ca-pool \ --location=LOCATION \ --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \ --role=roles/privateca.certificateManager \ --project=KEY_PROJECT_ID gcloud privateca pools add-iam-policy-binding etcd-api-ca-pool \ --location=LOCATION \ --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \ --role=roles/privateca.certificateManager \ --project=KEY_PROJECT_ID gcloud privateca pools add-iam-policy-binding aggregation-ca-pool \ --location=LOCATION \ --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \ --role=roles/privateca.certificateManager \ --project=KEY_PROJECT_ID
הענקת תפקידים נוספים כשלא משתמשים ב-CLI של gcloud
בקטע הזה מתוארים שלבי הגדרה נוספים שצריך לבצע אם מתכננים להגדיר את רשויות האישורים והמפתחות באמצעות לקוח כמו Terraform או מסוף Google Cloud , במקום באמצעות ה-CLI של gcloud. אם אתם משתמשים ב-CLI של gcloud, דלגו על הקטע הזה ועברו לקטע הגדרת רשויות אישורים ומפתחות באשכול חדש.
כשמשתמשים ב-CLI של gcloud כדי להגדיר את רשויות האישורים והמפתחות, כמו שמתואר במסמך הזה, ה-CLI של gcloud יוצר ומגדיר באופן אוטומטי סוכן שירות בשביל CA Service, ומעניק לו תפקידי IAM. עם זאת, אם אתם משתמשים בלקוח כמו Terraform או במסוף Google Cloud כדי להגדיר את סביבת Google Cloud, אתם צריכים לבצע את שלבי ההגדרה האלה באופן ידני בפרויקט המפתח:
מפעילים את היצירה של סוכן השירות של שירות CA.
gcloud beta services identity create --service=privateca.googleapis.com \ --project=KEY_PROJECT_IDמאתרים את מספר הפרויקט של פרויקט המפתח:
gcloud projects describe KEY_PROJECT_ID \ --format='value(projectNumber)'מקצים את התפקיד Viewer (
roles/viewer) ואת התפקיד Cloud KMS CryptoKey Signer/Verifier (roles/cloudkms.signerVerifier) לכל מפתחות ה-CA הבסיסיים שיצרתם בקטע יצירת מפתחות:for key in cluster-ca-key etcd-peer-ca-key etcd-api-ca-key aggregation-ca-key do gcloud kms keys add-iam-policy-binding $key \ --keyring=KEY_RING_NAME \ --location=LOCATION \ --role=roles/viewer \ --member="serviceAccount:service-KEY_PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com" \ --project=KEY_PROJECT_ID gcloud kms keys add-iam-policy-binding $key \ --keyring=KEY_RING_NAME \ --location=LOCATION \ --role=roles/cloudkms.signerVerifier \ --member="serviceAccount:service-KEY_PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com" \ --project=KEY_PROJECT_ID doneמחליפים את
KEY_PROJECT_NUMBERבמספר פרויקט המפתח מהפלט של השלב הקודם.הפקודה הזו היא לולאת
forשחוזרת על עצמה עבור מפתחות CA בסיסיים, ומעניקה לכל מפתח את התפקיד הזה לסוכן השירות של CA Service. אם השתמשתם בשמות שונים למפתחות של רשות האישורים הבסיסית, צריך להריץ את הפקודות האלה באופן ידני לכל מפתח.
הגדרת רשויות אישורים ומפתחות באשכול חדש
אחרי שיוצרים מפתחות, מאגרי רשויות אישורים, רשויות אישורי בסיס ונותנים תפקידי IAM לסוכן השירות של GKE, יוצרים אשכול חדש שמשתמש במשאבים האלה.
הדגלים שמציינים בפקודה ליצירת אשכול צריכים את נתיבי המשאבים הבאים כערכים:
- נתיב לגרסת מפתח ב-Cloud KMS עבור מפתח החתימה של חשבון השירות שיצרתם בשלב יצירת מפתחות. מציינים את הנתיב הזה לדגל
service-account-signing-keysולדגלservice-account-verification-keys. - הנתיב לכל אחד ממאגרי הרשויות שמנפיקות את האישורים (CA) שיצרתם בקטע יצירת הרשויות שמנפיקות את האישורים.
כדי להגדיר אשכול חדש לשימוש במפתחות וב-CA, מבצעים את השלבים הבאים:
מוצאים את הנתיב לגרסה האחרונה של מפתח החתימה של חשבון השירות שהופעל:
gcloud kms keys versions list \ --key=sa-signing-key \ --keyring=KEY_RING_NAME \ --location=LOCATION \ --project=KEY_PROJECT_ID \ --filter="STATE=ENABLED" --sort-by=~ --format="value(name)" | sed 1qמחליפים את הערך
KEY_PROJECT_IDבמזהה הפרויקט של פרויקט המפתח.הפלט אמור להיראות כך:
projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1מוצאים את הנתיבים לכל מאגרי הרשויות שמנפיקות אישורים שיצרתם:
gcloud privateca pools list --format="get(name)" \ --project=KEY_PROJECT_IDהפלט אמור להיראות כך:
projects/KEY_PROJECT_ID/locations/LOCATION/caPools/cluster-ca-pool projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-peer-ca-pool projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-api-ca-pool projects/KEY_PROJECT_ID/locations/LOCATION/caPools/aggregation-ca-poolמוודאים שהפלט מכיל את כל מאגרי האישורים שנוצרו עבור GKE.
יצירת אשכול
בקטע הזה יוצרים אשכול עם אפשרויות שונות שמוגדרות בהתאם לתכונות של הרשאות הגישה למישור הבקרה של GKE שרוצים להגדיר. אפשר להגדיר את התכונות האלה באוסף רק במהלך יצירת האוסף. הפקודות הבאות יוצרות אשכולות במצב רגיל. כדי ליצור במקום זאת אשכולות במצב אוטומטי, משתמשים באותם דגלים עם הפקודה gcloud container clusters create-auto.
כדי להגדיר רק את רשויות האישורים והמפתחות שיצרתם במדריך הזה, מריצים את הפקודה הבאה:
gcloud container clusters create example-cluster \ --location=LOCATION \ --project=CLUSTER_PROJECT_ID \ --cluster-version=VERSION \ --service-account-signing-keys=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1 \ --service-account-verification-keys=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1 \ --cluster-ca=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/cluster-ca-pool \ --etcd-peer-ca=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-peer-ca-pool \ --etcd-api-ca=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-api-ca-pool \ --aggregation-ca=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/aggregation-ca-poolמחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_PROJECT_ID: מזהה הפרויקט של פרויקט האשכול. -
VERSION: גרסת GKE של האשכול. הגרסה צריכה להיות 1.31.1-gke.1846000 ואילך.
-
כדי להגדיר את רשויות האישורים והמפתחות, וגם את הצפנת דיסק האתחול של מישור הבקרה ואת הצפנת etcd, מבצעים את הפעולות הבאות:
- מבצעים את כל שלבי הגדרת המפתח במאמר הצפנה של דיסקים לאתחול של etcd ושל מישור הבקרה.
- כדי למצוא את הנתיבים לכל אחד מהמפתחות, פועלים לפי ההוראות במאמר שימוש במפתחות הצפנה באשכול.
יצירת אשכול:
gcloud container clusters create example-cluster \ --location=LOCATION \ --project=CLUSTER_PROJECT_ID \ --cluster-version=VERSION \ --service-account-signing-keys=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1 \ --service-account-verification-keys=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1 \ --cluster-ca=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/cluster-ca-pool \ --etcd-peer-ca=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-peer-ca-pool \ --etcd-api-ca=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-api-ca-pool \ --aggregation-ca=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/aggregation-ca-pool \ --control-plane-disk-encryption-key=PATH_TO_DISK_KEY \ --gkeops-etcd-backup-encryption-key=PATH_TO_ETCD_BACKUP_KEYמחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_PROJECT_ID: מזהה הפרויקט של פרויקט האשכול. -
VERSION: גרסת GKE של האשכול. הגרסה צריכה להיות 1.31.1-gke.1846000 ואילך. -
PATH_TO_DISK_KEY: הנתיב למפתח ההצפנה של הדיסק. -
PATH_TO_ETCD_BACKUP_KEY: הנתיב למפתח ההצפנה של הגיבוי הפנימי של etcd.
-
אפשר גם להשתמש בדגלים האלה כשיוצרים אשכול חדש במצב רגיל.
אימות השימוש במפתחות וב-CA שצוינו באשכול
בקטע הזה מוסבר איך לאמת את המפתחות ואת רשויות האישורים שבהם נעשה שימוש במהלך יצירת האשכול. אפשר לבצע את האימות הזה באמצעות Cloud Logging או באמצעות Google Cloud CLI.
שימוש ביומן הרישום כדי לאמת מפתחות ורשויות אישורים
כדי לאמת את המפתחות ואת רשויות האישורים באמצעות Logging, מבצעים את הפעולות הבאות:
נכנסים לדף Logs Explorer במסוף Google Cloud :
מציינים את השאילתה הבאה:
resource.type="gke_cluster" resource.labels.cluster_name="CLUSTER_NAME" resource.labels.location="CLUSTER_LOCATION" protoPayload.serviceName="container.googleapis.com" protoPayload.methodName=~"google.container.v(1|1alpha1|1beta1).ClusterManager.CreateCluster" protoPayload.request.cluster.userManagedKeysConfig:*protoPayload.request.cluster.userManagedKeysConfig:*מסנן את התוצאות של יומני יצירת אשכולות שכוללים מפתחות ורשויות אישורים שאתם מנהלים.לוחצים על Run query.
בתוצאות, מרחיבים את יומן יצירת האשכול. מוודאים שהנתיבים למפתחות ולרשויות האישורים זהים לאלה שיצרתם עבור האשכול הזה, כמו בדוגמה הבאה:
# lines omitted for clarity
userManagedKeysConfig: {
aggregationCa: "projects/KEY_PROJECT_ID/locations/LOCATION/caPools/aggregation-ca-pool"
clusterCa: "projects/KEY_PROJECT_ID/locations/LOCATION/caPools/cluster-ca-pool"
etcdApiCa: "projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-api-ca-pool"
etcdPeerCa: "projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-peer-ca-pool"
serviceAccountSigningKeys: [
0: "projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1"
]
serviceAccountVerificationKeys: [
0: "projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1"
]
}
שימוש ב-CLI של gcloud לאימות מפתחות ורשויות אישורים
כדי לוודא שהאשכול משתמש ב-CA ובמפתחות שיצרתם, מריצים את הפקודה הבאה:
gcloud container clusters describe example-cluster \
--location=LOCATION \
--project=CLUSTER_PROJECT_ID
הפלט צריך לכלול את השדה userManagedKeysConfig כמו בדוגמה הבאה:
# lines omitted for clarity
userManagedKeysConfig:
sa-signing-key: projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1
sa-verification-key: projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1
cluster-ca: projects/KEY_PROJECT_ID/locations/LOCATION/caPools/cluster-ca-pool
etcd-peer-ca: projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-peer-ca-pool
etcd-api-ca: projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-api-ca-pool
aggregation-ca: projects/KEY_PROJECT_ID/locations/LOCATION/caPools/aggregation-ca-pool
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
מחיקת הפרויקטים
כדי למחוק Google Cloud פרויקט:
gcloud projects delete PROJECT_ID
מחיקת משאבים בודדים
מחיקת האשכול:
gcloud container clusters delete example-cluster \ --location=LOCATION \ --project=CLUSTER_PROJECT_IDמשביתים את רשויות האישורים (CA) העליונות:
gcloud privateca roots disable cluster-root-ca \ --location=LOCATION \ --pool=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/cluster-ca-pool \ --project=KEY_PROJECT_ID gcloud privateca roots disable etcd-peer-root-ca \ --location=LOCATION \ --pool=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-peer-ca-pool \ --project=KEY_PROJECT_ID gcloud privateca roots disable etcd-api-root-ca \ --location=LOCATION \ --pool=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-api-ca-pool \ --project=KEY_PROJECT_ID gcloud privateca roots disable aggregation-root-ca \ --location=LOCATION \ --pool=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/aggregation-ca-pool \ --project=KEY_PROJECT_IDמחיקת רשויות האישורים העליונות:
gcloud privateca roots delete cluster-root-ca \ --location=LOCATION \ --pool=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/cluster-ca-pool \ --project=KEY_PROJECT_ID gcloud privateca roots delete etcd-peer-root-ca \ --location=LOCATION \ --pool=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-peer-ca-pool \ --project=KEY_PROJECT_ID gcloud privateca roots delete etcd-api-root-ca \ --location=LOCATION \ --pool=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-api-ca-pool \ --project=KEY_PROJECT_ID gcloud privateca roots delete aggregation-root-ca \ --location=LOCATION \ --pool=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/aggregation-ca-pool \ --project=KEY_PROJECT_IDמוחקים את מאגרי הרשות שמנפיקה את האישורים (CA):
gcloud privateca pools delete cluster-ca-pool --location=LOCATION \ --project=KEY_PROJECT_ID gcloud privateca pools delete etcd-peer-ca-pool --location=LOCATION \ --project=KEY_PROJECT_ID gcloud privateca pools delete etcd-api-ca-pool --location=LOCATION \ --project=KEY_PROJECT_ID gcloud privateca pools delete aggregation-ca-pool --location=LOCATION \ --project=KEY_PROJECT_IDמחיקת המפתחות:
gcloud kms keys versions destroy 1 \ --location=LOCATION \ --keyring=KEY_RING_NAME \ --key=sa-signing-key \ --project=KEY_PROJECT_ID gcloud kms keys versions destroy 1 \ --location=LOCATION \ --keyring=KEY_RING_NAME \ --key=cluster-ca-key \ --project=KEY_PROJECT_ID gcloud kms keys versions destroy 1 \ --location=LOCATION \ --keyring=KEY_RING_NAME \ --key=etcd-peer-ca-key \ --project=KEY_PROJECT_ID gcloud kms keys versions destroy 1 \ --location=LOCATION \ --keyring=KEY_RING_NAME \ --key=etcd-api-ca-key \ --project=KEY_PROJECT_ID gcloud kms keys versions destroy 1 \ --location=LOCATION \ --keyring=KEY_RING_NAME \ --key=aggregation-ca-key \ --project=KEY_PROJECT_ID
אי אפשר למחוק מחזיקי מפתחות מ-Cloud KMS. עם זאת, מחזיקי מפתחות לא כרוכים בעלויות נוספות.
המאמרים הבאים
- מעקב אחרי השימוש בזהות מרגע ההנפקה
- החלפת רשויות האישורים ומפתחות החתימה של חשבון השירות
- כדאי להעמיק את הקריאה ולהכיר דוגמאות לארכיטקטורות, תרשימים ושיטות מומלצות בנושאי Google Cloud. כל אלה זמינים במרכז הארכיטקטורה של Cloud.