
docker trust key load מייבא את המפתח הפרטי לקליינט המקומי ומבקש סיסמה שמצפינה אותו בדיסק. כך גם אם הדיסק נגנב, המפתח לא ניתן לשימוש בלי הסיסמה.docker trust signer add מוסיף את המפתח הציבורי למאגר המרכזי תחת שם של חותם. זה תהליך חד-פעמי לכל תחנת עבודה.docker trust sign על תגית מסוימת חותם על האימג' ומבקש את הסיסמה של המפתח הפרטי. ב-DTR האימג' מסומן כ-signed.docker trust key load, docker trust signer add, docker trust sign <מאגר>:<תגית>, docker trust inspect --pretty, docker trust revoke, והגדרת DOCKER_CONTENT_TRUST=1 שמפעילה חתימה אוטומטית בכל פוש.docker trust revoke) ולהוציא את החותם מהמאגר.הטקסט המלא של הדקות הראשונות בהרצאה «חתימה דיגיטלית - DTR - Image Sign» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם, בהרצאה הזאת אנחנו רוצים לחתום דיגיטלית על אימג' ולהגיד לקלאסטר ששננו להריץ רק אימג'ים חתומים דיגיטלית.
אז בואו נפתח את האתר של דוקר, content trust in docker, content trust in docker, זה בדיוק הסיפור של החתימה הדיגיטלית על אימג'ים.
אני מגלגל פה הרבה למטה, אני אסביר לכם את הכל לבד, מי שרוצה שיקרא את זה. דבר ראשון, אנחנו צריכים לייצר מפתח הצפנה, שיהיה עם ה-private key שלי וה-public שלו יהיה בשרת.
עכשיו, אני לא צריך להסתבך עם זה, למזלי בתוך הגוי ממשק הגרפי יש אפשרות ישר להוריד אותו, ועשינו את זה בהרצאות קודמות. נכנסנו ל-user, נניח admin, שזה משתמש לכל דבר ועניין, פשוט יש לו הרשאות של אדמיניסטרטור, ובתוך הפרופיל יש כפתור להוריד את הבנדל שזה בעצם הפרייבט קי שלי והפאבליק
כאשר העתק של הפאבליק קי נשאר בשרת זאת אומרת השרת יודע מה הפאבליק קי ואז כשאני אחתום משהו עם הפרייבט הוא יודע לבדוק את זה שימו לב אני לא יכול להוריד פעם שנייה אני יכול לעשות רק חדש למה אי אפשר להוריד פעם שנייה את המפתח כי הפרייבט קי לא נשמר בשרת השרת מייצר לי את הפרייבט ואת הפאבליק רק שולח אותם אליי ושומר אצלו רק את הפאבליק, השרת לא משאיר אצלו את הפרייבט.
הפרייבט נמצא רק אצלי ועשינו את זה לפני כן, בואו אני אזכיר לכם. הלכנו לדאונלואודס פה ויש לנו את הבנדל הזה, נכון? בואו נעשה בדסק טופ תיקייה, נקרא לה image sign certificate ואני רוצה לחלץ לתוכה מה שהורדנו, דיברנו על זה קצת בגדול אני נכנס לטייל סי דוקר ולוקח מפה רק את הכי ואת הסרטיפיקייט
את הכי והסרטיפיקייט שזה הפרייבט קי שלי וזה הפאבליקי שלי מי שרוצה לדעת זה אותו דבר כמו לקחת סרטיפיקייט מפה והפרייבט שלי זה זה כי זה הפרייבט סרטיפיקייט זה התעודה הציבורית זה ה-CA שהנפיק לי אותה שזה ה-CA המובנה בתוך סוורב הוא מנפיק לי את התעודות זה התעודה של האבא שלו סרט פאב זה למעשה אותו אחד רק פה יש רק את הפאבליקי ופה פאבליקי בתוך הסרטיפיקייט
וכאן יש רק את הפאבליקי בשביל לא להסתבך פה עם כל אלו אני ישר אומר לכם תלכו ותעתיקו רק את שני אלו שזה אותו או אותם קבצים אני עשיתי השוואה זה אותם קבצים פשוט הם בידדו לנו אותם כדי שיהיה לנו קל ונגרור אותם זהו זה מה שאני צריך את הפאבליק ואת הפרייבט קי עכשיו בפרייבט קי בוא נראה מה הרשאות הוא ידרוש ממני שזה שתהיה רק גישה רק אליי אחרת הוא יעשה לי בעיות בפרייבט כי
הוא דורש שהגישה מסיבות של סיקיוריטי תהיה רק על היוזר שלי ולא על האחרים נסדר את זה במיידי לפני שיהיו לנו כל מיני התרעות על כך ובואו נתחיל אז דבר ראשון שאנחנו עושים אנחנו צריכים לעשות לוד לקי הזה לתוך הלוקל דוקר בואו נדבר על זה קצת.
קודם כל אני רוצה להיכנס לתיקייה שלנו, cd-desktop, בואו נעשה את זה יותר פשוט, ניכנס פה, זאת התיקיית דסקטופ, נעשה פה כפתור ימיני, אופנינג טרמינל, יופי.
אז ככה, כל המידע על הדוקר הלוקאלי שלי, על הדוקר קליינט שלי, נשמר בתיקיית הבית שלי /.dokr. ואם אני אעשה טרי, אני אראה שכרגע בתוך התיקייה הזאת יש תיקיית טמפלייט ותיקיית קונפיג, אוקיי?
מי שרוצה יכול לעשות cut לקונפיק ולראות את הקונפיק המיקומי, שאין פה מה לראות כל כך, אבל לדוגמה שעברתי עימות מול dtr כזה וכזה. טוב, זה לא מעניין, חוזרים חזרה. אז אמרנו שזה הדוקר המקומי ואני רוצה לייבא תעודות לתוך הדוקר המקומי שלי.
זאת אומרת, את ה-private key שלי אני רוצה לייבא, docker trust keyload. עכשיו, לפני שאנחנו עושים את הפקודה הזאת, בואו נראה מה יש לנו בדוקר trust.
דוקר טראסט עוד לא ראינו, נעשה קונטרול L ונראה שדוקר טראסט זה יחסית חדש, זה מעטפת קטנה שעוזרת לי, אחרת צריך להוריד כלי חיצוני שנקרא Notchery, אז דוקר טראסט יודע לנהל את המפתחות ולנהל את החותמים, יש לי פה אינספקט, ריווק וסיין אימג' פה אני חותם על האימג' עם הסיין הזה.
טוב, בואו נתחיל, דוקר קי, אנחנו נראה את כל הפקודות האלו, בוקר קי מינוס הלפ אני יכול לעשות ג'נרייט לקיפר לייצר זוג מובטחות חדש פאבליק ופרייבט קי לייצר זוג מובטחות חדש או שאני יכול לעשות לורד לפרייבט קי קיים אוקיי אז אנחנו צריכים לעשות לורד לפרייבט קי קיים וניתן לו איזשהו שם שימו לב זה שם שישרת
אותי לזהות לא מעניין אותו שזה היה אדמיניסטרטור או לא אדמיניסטרטור זה לא מעניין אותי זה לא מעניין אותו אני יכול לתת כל שם למפתח זה כמו ישות נפרדת היא לא קשורה באמת ליוזרנרים שלי prodadmins בוא נקרא לזה prodadmins יש לנו דבר כזה prodadmins כאן בוא נראה ב-access control ב-organization
לא אין לנו prodadmins בוא נוסיף prodadmins קבוצה שנקראת prodadmins יופי ונכניס לתוכה יוזר שקוראים לו יוני בוא נכניס לתוכה את היוזר של הדמיניסט עכשיו זה קבוצות לא קשורות בכלל למה שהולך עם המפתחות אני בכוונה אעשה שם אחר, כל שם יתאים לי, לדוגמה prod admin 1,
או prod admin yoni. שימו לב, אחד לא קשור לשני, אין שום קשר בין התעודות הדיגיטליות ללוגינים וליוזרים.
זה מאוד מאוד חשוב להסביר לכם, נקרא לזה image admin, אוקיי? image admin, אני בכוונה עושה image, ככה אני ממציא, ועכשיו אני עושה key load, אני מייבא את ה-private key שלי, והוא מבקש סיסמה כדי להצפין את זה כדי שאם מישהו יפרוץ לדוקר הלוקאלי שלי שלא יוכל לגנוב לי את המפתח.
עכשיו, אתם זוכרים, יש לי את הכי הזה שאני אמור לשמור עליו או להשמיד אותו, ודוקר שומר לי את המפתח בתוך התיקייה החדשה שנקראת Trust ו-Private, וה-Private Key שלי מוצפן עם הסיסמה שהבאתי לו פה.
נכון שהבאתי לו פה את הסיסמה פעמיים? נכון, הכנסתי לו פה סיסמה, אז הוא עשה אימפורט לכאן עם הצפנה של ה-private key עם הסיסמה הזאת.
זאת אומרת, אם מישהו יגנוב את ה-key הזה, הוא לא באמת יגנוב את המפתח, כי המפתח עצמו מוגן ומוצפן על ידי הסיסמה שרק אני יודע מהי, כי רק אני הקלדתי אותה.
אז יש לנו עכשיו מפתח הצפנה, אבל הוא אצלי לוקאלית בארדיסק, הוא לא בשרת נמצא. אוקיי, אז עברנו את השלב הזה. השלב הבא יהיה להעביר את המפתח הזה לשרת, נעביר אותו לשרת וזה נקרא סיינר כבר, דוקר סיינר אד.
אנחנו מוסיפים את הכי, עוד פעם את הכי הזה, רק הפעם אנחנו מוסיפים אותו לשרת ואומרים לו בדיוק לאיזה רפוזיטורים מוסיפים אותו. אז בואו נראה את זה, דוקר טראסט סיינר. אז עוד פעם, דוקר טראסט, אמרנו שפה יש לנו לייצר מפתח חדש או לייבא קיים לוקאלית לווינדוס שלי, תחנה שלי ו-Docker Trust Signer, אם אנחנו נעשה Help, נוכל לעשות Add Siner
ו-Remove Siner חותמים, Manage Entities Who Can Sign Docker Images, כאילו זה כבר קשור לשרת. ואיך הולכת הפקודה?
Docker Siner ו-Command Add, בוא נעשה Add, Docker Trust Siner Add ברפוזיטורי מרוחק. אוקיי, Options זה Key, זאת אומרת אנחנו נותנים לו Docker Key ו-List, ונותנים לו שם ורפוזיטורי בואו נעשה את זה אז נעשה את זה ככה שימו לב עכשיו אני צריך לתת לו את השם שיהיה לו בשרת כמובן שעדיף שכל השמות יהיו זהים אז נשתמש באותו שם שהוא גם
המקומי אז שהוא יהיה גם המרוחק image admin עכשיו שוב מערכת אימון של תעודות דיגיטליות אין לה שום קשר ליוזרנם ופספורט שלי זה כאילו מערכת נפרדת אתה רוצה לעבור זיהוי תציג את הפרייבט כי תכתוב משהו עם פרייבט כי נבדוק אותך עם פאבליקי אז זה כאילו יוזר חדש שנקרא אימג' אדמין שזה חתימה דיגיטלית שלו ועכשיו אנחנו צריכים לתת את הרפוזיטורי.
נניח הרפוזיטורי שלנו יהיה הרפוזיטורי הזה דוקר דמו הנה זה הרפוזיטורי שלנו אז אנחנו רוצים בתוך הרפוזיטורי הזה בשרת להקים בעצם את הישות החותמת את כל המפתחות שלי להעביר לשמה, את הפריביט, את הפאבליקי לשלוח. שימו לב, זה פאבליקי, זה פאבליקי, זה לא פריביטקי.
זה מאוד חשוב, זה פאבליקי. זאת אומרת שאצלי לוקאלית טעון הפריביטקי ואני מעלה לשרת את הפאבליקי. יש?
יש. עכשיו הוא שואל אותי מה הסיסמה בשביל מאגר בשרת, הוא צריך כל מיני מפתחות לייצר בשרת. ו-successfully initialized, הוא התחיל את המאגר של המפתחות והוסיף את הבן אדם הזה בתור חותם מורשה.
מורשה. יפה מאוד. ועכשיו, מה אנחנו עושים אחרי שיש לנו את זה בשרת? אנחנו יכולים לעשות docker trust sign, אנחנו יכולים כבר להתחיל לחתום על אימג'ים.
בואו נחתום על אימג' כלשהו. לפני שאני אחתום על אימג' אני רוצה להראות לכם שהפקודה אכן עבדה. אחרון שהרצנו docker trust sign erad, עכשיו docker trust inspect.
אנחנו בודקים מציגים בצורה יפה מה קורה בתוך