במדריך הזה מוסבר איך להגדיר ולבדוק מדיניות של Binary Authorization שדורשת אימותים (attestations). סוג המדיניות הזה מאבטח את שרשרת האספקה של התוכנה שמבוססת על קונטיינרים, על ידי אימות של קובץ אימג' של קונטיינר באמצעות אישור חתום לפני שמאפשרים את הפריסה של קובץ האימג'.
בזמן הפריסה, Binary Authorization משתמש בגורמים מאמתים כדי לאמת חתימות דיגיטליות באישורים. החותמים יוצרים את האישורים, בדרך כלל כחלק מצינור עיבוד נתונים של אינטגרציה רציפה (CI).
במדריך הזה, אשכול GKE, האישורים והמאמתים ממוקמים כולם בפרויקט אחד. הגדרה של פרויקט יחיד שימושית בעיקר לבדיקה או להתנסות בשירות. דוגמה יותר מציאותית מופיעה במאמר בנושא הגדרות של כמה פרויקטים.
בשלבים הבאים מתוארות משימות שמבצעים בשורת הפקודה. כדי לבצע את השלבים האלה באמצעות מסוף Google Cloud , אפשר לעיין במאמר תחילת העבודה עם מסוף Google Cloud .
מטרות
במדריך הזה תלמדו:
- יצירת אשכול Google Kubernetes Engine (GKE) עם הפעלה של Binary Authorization
- יצירת גורם מאמת (attestor) שהמערכת לאכיפת Binary Authorization משתמשת בו כדי לאמת את החתימה על אימות (attestation)
- הגדרת מדיניות שדורשת אישור
- יצירת זוג מפתחות קריפטוגרפיים לחתימה על אישורים ולאימות שלהם בהמשך
- חתימה על תקציר של קובץ אימג' של קונטיינר, ליצירת חתימה
- יצירת אישור באמצעות החתימה
- בדיקת המדיניות באמצעות פריסת קובץ אימג' של קונטיינר ב-GKE
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init - מתקינים את
kubectlכדי ליצור אינטראקציה עם GKE.
הפעלת Binary Authorization
לפני שמשתמשים ב-Binary Authorization, צריך להגדיר את פרויקט ברירת המחדל ולהפעיל את ממשקי ה-API הנדרשים Google Cloud .
הגדרת פרויקט ברירת מחדל
השלב הראשון הוא להגדיר את פרויקט ברירת המחדל Google Cloud שבו משתמשת הפקודה gcloud:
PROJECT_ID=PROJECT_ID
gcloud config set project ${PROJECT_ID}
מחליפים את PROJECT_ID בשם הפרויקט.
הפעלת ממשקי ה-API הנדרשים
מפעילים את ממשקי ה-API הבאים:
Artifact Registry
gcloud --project=${PROJECT_ID} \
services enable\
container.googleapis.com\
artifactregistry.googleapis.com\
binaryauthorization.googleapis.com
יצירת אשכול עם Binary Authorization מופעל
כדי להגדיר את סביבת Kubernetes, יוצרים אשכול עם Binary Authorization מופעל ומגדירים את kubectl כך שיפעל איתו.
יצירת האשכול
יוצרים אשכול GKE עם Binary Authorization מופעל. זהו האשכול שבו רוצים להפעיל את קובצי האימג' של הקונטיינרים שפרסתם. כשיוצרים את האשכול, מעבירים את הדגל --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE לפקודה gcloud container clusters create.
כדי ליצור את האשכול, מבצעים את השלבים הבאים:
gcloud container clusters create \
--binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE \
--zone us-central1-a \
test-cluster
בדוגמה הזו, יוצרים אשכול בשם test-cluster באזור GKE us-central1-a.
הגדרה של kubectl
צריך גם לעדכן את קובץ kubeconfig המקומי בהתקנת kubectl. הפעולה הזו מספקת את פרטי הכניסה ופרטי נקודת הקצה שנדרשים כדי לגשת לאוסף ב-GKE.
כדי לעדכן את הקובץ kubeconfig המקומי, מריצים את הפקודה הבאה:
gcloud container clusters get-credentials \
--zone us-central1-a \
test-cluster
הצגת מדיניות ברירת המחדל
מדיניות ב-Binary Authorization היא קבוצה של כללים ששולטים על הפריסה של קובצי אימג' של קונטיינרים. אפשר להגדיר מדיניות אחת לכל פרויקט. כברירת מחדל, המדיניות מוגדרת כך שניתן לפרוס את כל קובצי האימג' של הקונטיינרים.
Binary Authorization מאפשרת לייצא ולייבא קובץ מדיניות בפורמט YAML. הפורמט הזה משקף את המבנה של מדיניות כפי שהיא מאוחסנת בשירות. כשמגדירים מדיניות באמצעות פקודות gcloud, עורכים את הקובץ הזה.
כדי לראות את מדיניות ברירת המחדל, מייצאים את קובץ ה-YAML של המדיניות:
gcloud container binauthz policy export
כברירת מחדל, הקובץ מכיל את התוכן הבא:
defaultAdmissionRule: enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG evaluationMode: ALWAYS_ALLOW globalPolicyEvaluationMode: ENABLE name: projects/PROJECT_ID/policy
כלל ברירת המחדל מוגדר בצומת defaultAdmissionRule. evaluationMode מציין שהמדיניות מאפשרת את כל הניסיונות לפריסת תמונות. במדריך הזה תלמדו איך לעדכן את כלל ברירת המחדל כדי לדרוש אישורים.
globalPolicyEvaluationMode
החרגה של קובצי אימג' של המערכת שמנוהלים על ידי Google מאכיפת Binary Authorization.
כדי להוסיף תמונה שפטורה מהכללים לרשימת ההיתרים, מוסיפים את השורה הבאה לקובץ המדיניות:
admissionWhitelistPatterns: - namePattern: EXEMPT_IMAGE_PATH
מחליפים את EXEMPT_IMAGE_PATH בנתיב לתמונה שרוצים להחריג. כדי להחריג תמונות נוספות, מוסיפים עוד רשומות של - namePattern. מידע נוסף על admissionWhitelistPatterns
בדף העזר בנושא מדיניות YAML תוכלו לקרוא על המבנה של מדיניות.
יצירת גורם מאמת
גורם מאמת (attestor) הוא רשות האימות שמאכף Binary Authorization משתמש בה בזמן הפריסה כדי להחליט אם לאפשר ל-GKE לפרוס את קובץ אימג' של קונטיינר החתום המתאים. הגורם המאמת (attestor) מכיל את המפתח הציבורי, ובדרך כלל מנוהל על ידי אנשים בארגון שאחראים על אבטחת שרשרת אספקת התוכנה.
כדי ליצור מאמת:
- יוצרים הערה בArtifact Analysis כדי לאחסן מטא-נתונים מהימנים שמשמשים בתהליך ההרשאה.
- יוצרים את המאמת עצמו ב-Binary Authorization ומשייכים את ההערה שיצרתם.
במדריך הזה יש מאמת אחד בשם test-attestor והערה של ניתוח ארטיפקטים בשם test-attestor-note. בתרחיש מהעולם האמיתי, יכולים להיות מספר כלשהו של גורמים מאמתים (attestor), כשכל אחד מהם מייצג צד שמשתתף בתהליך ההרשאה של קובץ אימג' של קונטיינר.
יצירת ההערה של Artifact Analysis
מגדירים משתנים שמאחסנים את השם של גורם מאמת (attestor) ואת ההערה של Artifact Analysis
ATTESTOR_NAME=test-attestor NOTE_ID=test-attestor-note