PracticU

Swarm - Secret

בלי כתוביותעם כתוביות
PracticU › קורס Docker - עם Swarm Cluster › Swarm - Secret
מילון מושגים:
Docker - פלטפורמה להרצת אפליקציות בתוך קונטיינרים מבודדים וקלים, כדי שירוצו באופן אחיד בכל סביבה.
קלאסטר - קבוצת מחשבים או שרתים שעובדים יחד כמערכת אחת, לשם זמינות גבוהה, ביצועים או חלוקת עומס.
QA - הבטחת איכות (Quality Assurance): תחום שעוסק בבדיקת תוכנה ובתהליכים שמבטיחים שהמוצר עומד בדרישות.
הצפנה - המרת מידע לצורה בלתי קריאה בעזרת מפתח, כך שרק מי שמחזיק במפתח המתאים יכול לפענח ולקרוא אותו.
קונטיינר - חבילה קלה ומבודדת שאורזת אפליקציה עם כל תלויותיה, ורצה באופן אחיד בכל סביבה, למשל ב-Docker.
נתיב - מחרוזת שמתארת את מיקומו של קובץ או תיקייה במערכת הקבצים, או כתובת של משאב בתוך אתר.
משתנה סביבה - ערך בעל שם שמוגדר במערכת ההפעלה ומשמש תוכנות להגדרות, כמו נתיבים או מפתחות תצורה.
Linux - מערכת הפעלה בקוד פתוח מבוססת ליבת Linux, נפוצה מאוד בשרתים וקיימת בהפצות רבות כמו Ubuntu.

Swarm - Secret
הרצאה על Docker Secrets: איך מעבירים מידע רגיש, כמו סיסמאות ומפתחות, לקונטיינרים בקלאסטר בלי לכתוב אותו בקבצי ההגדרות או בקוד.
השלבים העיקריים
1. למה לא בקובץ: סיסמה שכתובה בקובץ Compose או בקוד מופיעה בכל מקום שבו הקובץ נמצא. סודות נפרדים מאפשרים לחלק את הסביבות (פיתוח, QA וייצור) בלי לשכפל את הקבצים.
2. איך הסוד נשמר: סוד נשמר בתוך מסד הנתונים של המנהלים בקלאסטר, בצורה מוצפנת, ורק שירותים שקיבלו הרשאה מפורשת יכולים לקרוא אותו.
3. יצירת סוד: docker secret create יוצר סוד חדש. הערך יכול להגיע מקובץ או מקלט הסטנדרטי (stdin). אחרי היצירה אי אפשר לראות את התוכן ב-docker secret inspect.
4. חיבור לשירות: מגדירים את הסוד בשירות עם --secret. הוא מופיע כקובץ בתוך הקונטיינר בנתיב /run/secrets/, והאפליקציה מקבלת את נתיב הקובץ דרך משתנה סביבה.
5. הגנה בזמן ריצה: ב-Linux הקבצים האלה נשמרים בזיכרון בלבד (tmpfs) ולא נכתבים לדיסק, ולכן הם לא נשמרים בתמונת הקונטיינר בעת commit.
פקודות והגדרות
docker secret create <שם> -, docker secret ls, docker secret inspect, docker secret rm, docker service create --secret source=...,target=..., ומקטע secrets בקובץ docker stack deploy.
שימו לב
סודות עובדים רק במצב Swarm ולא במארח בודד. אי אפשר למחוק סוד שמשמש שירות פעיל. ההרצאה הציגה גם שימוש באותו קובץ הגדרות לכל הסביבות, כשכל סביבה משתמשת בסודות משלה.
בסיום יודעים להעביר סיסמאות לשירותים בלי לחשוף אותן בקבצי הפרויקט.
השיעור הבא בקורס: Swarm - NGINX Reverse Proxy

פרקי ההרצאה: Swarm - Secret

  1. 00:00

    מה זה Secret ולמה לא לשמור סודות בקובץ

  2. 00:42

    מה נחשב סוד: סיסמאות ומפתחות

  3. 02:48

    Secrets עובדים רק בתוך קלאסטר Swarm

  4. 06:00

    יצירת סיסמת MySQL כ-Secret

  5. 08:01

    שימוש ב-Secret בשירות MySQL

  6. 10:08

    הסיסמה לא נכתבת בפקודות ובקבצים

  7. 12:10

    בדיקת קובץ הסוד בתוך הקונטיינר

  8. 13:24

    אחסון Secret בזיכרון בלינוקס ובווינדוס

תמלול ההרצאה: Swarm - Secret

הטקסט המלא של הדקות הראשונות בהרצאה «Swarm - Secret» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    ברוכים הבאים להרצאה על דוקר סיקרטס. מה זה סיקרטס? סיקרטס זה מידע סודי שאנחנו רוצים להעביר לתוך הקונטיינר, אבל לא רוצים שזה יהיה בתוך ה-compose file או בתוך כבצי המקור, אלא אנחנו רוצים להעביר את זה בצורה מאובטחת לקונטיינרים ספציפיים, ולדוגמה אם יש לי סביבת פיתוח וסביבת QA וסביבת

  2. 00:30

    פרודקשן, הסיסמאות יכולות להיות שונות, וזה לא יהיה נגיש בצורה פתוחה לכולם. בואו נראה את זה. docker swarm services, הקלאסטר של הדוורם, תומך בסיקרטים. מה זה סיקרט?

  3. 00:50

    סיקרט is a blob of data, מידע כלשהו. זה יכול להיות פאסוור, זה יכול להיות מפתחות SSH כמו certificates, SSLים וכל דבר שאנחנו נחליט שהוא סודי.

  4. 01:06

    מה שחשוב שהמידע הזה לא עובר בצורה לא מוצפנת, To not be transmitted over a network or stored or להישמר unencrypted, אסור שהמידע יהיה זמין בצורה לא מוצפנת ולא אחראית.

  5. 01:27

    אוקיי, וזה התחיל מגרסה 1.13 ו-higher, התחיל מגרסה 1.13, ואתה יכול לנהל אותם בצורה המרכזית, Success Centrally Managed, בצורה Secure Transmission, זאת אומרת הוא עובר בין המחשבים בצורה מובטחת ומוצפנת secrets are encrypted הם מוצפנים בזמן השליחה שלהם בתוך הקלאסטר וסיקרטים רק נגישים

  6. 02:03

    לסרוויסים מסוימים לקונטיינרים מסוימים בלבד והם לא נשמרים כחלק מ-compose file ורק מי שאתה נותן לו גישה ודאית לשם הגישה מפורשת לשם.

  7. 02:26

    אתה יכול להשתמש ב-Secretים כדי לנהל מידע סודי שיהיה בזמן ה-Run Time בלבד, רק בזמן ההרצה של הקונטיינר. לדוגמה, יוזרניים ופאסוורד, לדוגמה, סרטיפיקייט, הקובץ של הסרטיפיקייט, זה יכול להיות גם מילה וזה יכול להיות גם קובץ.

  8. 02:45

    בסוף בסוף זה הכל קבצים רגילים. SSH, מובטחות SSH וכל מה שאתם רוצים. שימו לב, בוקר סיקרט עובדים רק על ה-swarm, רק על הקלאסטר, זה לא עובד על סטנד-אלון.

  9. 03:04

    אם אתה רוצה סטנד-אלון, תעשה קלאסטר עם מכונה אחת בלבד, scale of one, מכונה אחת בלבד בקלאסטר. עוד שימוש נוסף לסיקרטים זה לעשות הפרדה בין development, בין פיתוח, לסביבת QA, לסביבת פרודקשן, כדי שבכל סביבה יהיה לך שם וסיסמה שונים.

  10. 03:36

    זאת אומרת, אנשים שעושים QA לא צריכים לדעת סיסמאות של פרודקשן, של שלטים אמיתיים. יפה מאוד. בווינדוס זה גם נתמך החל מהגרסה 2017, זה החל להתעמך בצורה קצת פחות מאובטחת, אבל זה מספיק טוב.

  11. 03:58

    מה לא מאובטח? שבלינוקס זה נשמר בזיכרון, במייקרוסופט זה לא נשמר בזיכרון, בראם דיסק, אבל זה כל מיני דקויות.

  12. 04:11

    בכל מקרה, כשאני מחבא אותם, עושה docker commit הם לא נשמרים שימו לב גם אם הם מופיעים בתוך הקונטיינר ברגע שאני עושה docker commit זה לא נשמר בפנים טוב בוא נתחיל לראות איך כל הסרוויסים האלה עובדים איך כל הסיקריטים האלה עובדים יש לנו docker secret create docker secret inspect docker secret ls ויש לנו פה דוגמאות איך להשתמש

  13. 04:39

    בהם ואנחנו יכולים לעשות כל מיני דברים אז בוא נתחיל נלך לכאן ונעשה docker secret == help אנחנו יכולים ליצור את ה-secret, לבדוק אותו, inspect, לראות איזה secretים יש לנו ולמחוק אותם.

  14. 05:11

    עכשיו, ה-secretים האלו נשמרים כחלק מדאטאבייס של מנג'רים, נכון? הרב-דאטאבייס, הדאטאבייס הזה ששומר מידע על הקלאסטר עצמו, שם שמורים ה-secretים.

  15. 05:23

    כל secret שניצור, שזה יכול להיות קובץ עם private keys, זה יכול להיות קובץ עם סיסמה, זה יכול להיות סתם טקסט עם סיסמה, הכל נשמר בדאטאבייס של המנג'רים, אלו שמנהלים את הקלאסטר כאילו זה חלק מהמידע לקלאסטר, ואז נותנים גישה למידע הזה, תכף נראה באיזה צורה,

  16. 05:42

    רק למי שנחליט, רק לסרוויס מסוים. אז docker secret ls, אין לנו עדיין כלום. בואו ניצור איזשהו סיקרט. אנחנו לדוגמה נעשה docker secret create mysql password, עוד פעם, אנחנו נעשה ככה, אנחנו נדפיס את המילה סופר סיקרט פסוורד ונכניס

  17. 06:19

    אותה כסטנדרט אינפוט לתוך פקודת דוקר סיקרט קריאייט. בואו אני אראה לכם את זה. דוקר סיקרט ls, קודם כל הוא יצר לי את הסיקרט החדש הזה שנקרא mysqlpassword לפני 5 שניות.

  18. 06:39

    אם אני אעשה docker secret create == help אתם תראו שאני יכול לעשות docker סיקרט קריאט אופצ'אנס אופצ'אנס זה כל מיני דברים כמו כל מיני לייבלים אני יכול לשים על הסיקרטים האלו ואז אני נותן את השם של הסיקרט איזה שם של בא לי זה הסוד של רות אדמיניסטרטור ואז לציין מהו הקובץ הסודי או שאם אין לי קובץ סודי כמו תעודת ssh אני יכול לעשות לו מקף

  19. 07:12

    מה זה מקף זה סטנדרט אינפוט אינפוט רגיל מה זה סטנדרט אינפוט בגלל זה עשיתי אקו למסך והוא לקח את זה כאילו מהמסך הרמתם מה זה הדבר הזה? זה סטנדרט אינפוט. Create a secret from a file or standard input as a content.

  20. 07:32

    יופי, אם אני אעשה עכשיו docker inspect, docker secret inspect, וה-secret היחיד שיש לי, אני אראה פה את המידע לגביו, את התוכן שלו אני לא רואה כאן.

  21. 07:50

    שימו לב כמה שזה מאובטח, אפילו המנהל, המנג'ר, לא רואה את התוכן. אז יש לנו פה docker secret, יש לנו secret אחד, ואנחנו תכף הולכים להשתמש בו, אתם תבינו מה זה אז ראינו קריאט אינספקט ls הרי הם לא צריך לראות עכשיו אני רוצה להראות לכם איך אני יכול להשתמש בו אני יכול ליצור מיי sql ואני רוצה להראות

  22. 08:33

    לכם איך אני יוצר את הדוקר סרוויס קריאט נכון אנחנו נותנים שם דאטה בייס סרוויס db סרוויס נכון יוצרים סרוויס של sql אנחנו גם נראה איך לעשות את אותו הדבר עם הסיקרטים גם בקומפוז פייל אני רוצה רפליקה אחת אני רוצה לחבר אותו למיי נטוורק שזה ו-overlay mount, דיברנו על ה-mount,

  23. 08:45

    הנה זה, זאת שורת המחץ. שימו לב מה אני אומר לו, secret, source, mysql root password, מה זה ה-mysql root password? זה זה, אתם רואים?

  24. 09:00

    זה השם של ה-secret. השם של ה-secret שהקמתי, אז זה secret mysql root password, target, מה ה-target שלו?

  25. 09:09

    וזה מאוד מאוד חשוב, זה ה-target שלו. זה יהיה קובץ שנקרא mysql root password file, בתוך הקונטיינר, אני עושה אותו בתוך הקונטיינר, ויש לי פה עוד סיקרט, מה sql password, שזה לא root, זה user רגיל, זו סיסמה של user רגיל, וזאת סיסמה של root, רק אני עוד לא שכחתי ליצור אותו,

  26. 09:37

    ואז אני עושה ctrl+c, מבטל את זה, בואו ניצור סיסמה לuser רגיל, נעשה just a password docker secret create my password מתוך std in, וזה יהיה just a password.

  27. 09:51

    שימו לב, בעצם מה שאני מנסה לעשות איתכם זה אותן פקודות שיצרנו את ה-MySQL ואת ה-Wordpress רק הפעם ליצור אותו עם ה-Secretים.

  28. 10:03

    מה ההבדל? שהסיסמה של לא נכתבת בפקודות באופן מפורש וגם לא תישמר בקובץ tech באופן מפורש. היא תהיה אך ורק על המנאג'רים של הקלאסטר ואני יכול לקחת ולהעביר את זה מקלאסטר לקלאסטר ולכל מנאג'ר יהיה את הסיסמאות של הסביבה שלו.

  29. 10:32

    אז אני רוצה להראות לכם. עשיתי mysql-password כ-root, נכון? זה השם הזה, mysql-password, זה שם של ה-Secret, זה שם של ה-Secret.

  30. 10:47

    חיברנו אותו לתוך הקובץ ב-Hardisk, ועכשיו שימו לב מה אנחנו עושים. עכשיו אנחנו עושים mysql-root-password-file, שימו לב, כף תחתון, פייל, זה משתנה סביבה.

  31. 11:02

    אני אומר לו, תיקח את זה מכאן. עוד פעם, הקובץ הזה, ה-Secret נשמר בנתיב הזה. סיקרט נשמר בנתיב run/secret/mysql.root.password.file, שם שמור הסוד.

  32. 11:20

    הסוד הזה כקובץ כולו עובר למשתנה סביבה הזה. יש? יש. עכשיו, השאלה זה איך נוצר הקובץ. הקובץ הזה נוצר על ידי אופציה מינוס מינוס סיקרט, שאומרת תיקח את הסיקרט מתוך המחשב שלי, מתוך המנאג'ר שלי הנוכחי, ותכניס אותו כקובץ בשם הזה.

  33. 11:48

    השם הזה זה השם הזה אחד לאחד אני מקווה שאתם מבינים בואו ניכנס לתוך הקונטיינר ונראה דורקר פי אס הנה יש לי את זה פה דורקר אקזק מינוס איי טי חמש אפ על הקונטיינר חמש אפ תריץ באש אנחנו בתוך הקונטיינר נעשה ll/run/secret איפה ה-secret שלנו לא יודע מה זה ll ls-l הנה ה-secretים שלנו cut ה-sql root password

  34. 12:47

    הנה אנחנו רואים את הסופר סיקרט פספורט שלנו. עכשיו תגידו, אז מה זה משנה? נכון, הקונטיינר עצמו יכול לגשת לסיקרט מבפנים, אבל הסיקרט הזה לא מטייל כחלק מהגדרות או פיתוח, ויותר מזה, הוא גם משתנה לפי הסביבה שלו, כן?

  35. 13:05

    הוא כאילו תלוי בנודים, תלוי בקלאסטר ולא תלוי בתוכנה. וגם הוא בזיכרון ראם. בואו נראה אם יש פה מאונט, יש פה מאונט?

  36. 13:21

    כן. שימו לב run secrets mysql password file הוא מסוג tempfs וtmpfs זה רק בזיכרון הראם זה כמו ראם דיסק דרך אגב ווינדוס לא יודע לעשות את זה ראם דיסק ובגלל זה זה ההבדל בין לינוקס לווינדוס שלינוקס יודע לעשות ראם דיסק כחלק ממערכת קבצים הרגילה לכן זה רץ רק בראם וזה לא חלק מהדיסק כביכול זה נראה לנו אותו דבר זה כמו ווליום שהוא מעונטד פנימה מארט

  37. 13:57

    דיסק הפיזי לתוך הקונטיינר ככה ראם דיסק זה רץ למעשה בתוך הראם בתוך הזיכרון והוא נמצא ב-read only שימו לב הוא נמצא ב-read only אותו דבר זה הקובץ השני הוא גם temp 0 שזה אומר ראם דיסק שהוא בזיכרון ואם אנחנו נעשה קומיט הוא לא ישמר וזה read only אנחנו רואים שזה קבצים רגילים בעצם ב-hard disk ואנחנו יכולים ממש לעשות על זה cut על הקובץ הזה זה קובץ

  38. 13:59

    רגיל לחלוטין ראינו אז מבחינתו של הקונטיינר זה קובץ רגיל לחלוטין ואם אנחנו נצא מקונטיינר מבחינתנו כשיצרנו אותו יצרנו אותו גם ללא ידיעה מי שכותב לנו יוצר לנו את הסרוויס יוצר לנו

לקורס המלא: קורס Docker עם Swarm Cluster

ההרצאה הקודמת: Swarm - Stack

ההרצאה הבאה: Swarm - NGINX Reverse Proxy

הרצאות קשורות מקורסים אחרים

  • הסבר על secret - Kubernetes
  • יצירת ConnectionString - ב-App Secret

קורסים נוספים במסלול

  • קורס AWS - ניהול מכונה וירטואלית בענן
  • קורס Terraform - DevOps - Azure & AWS
  • קורס קוברנטיקס - Kubernetes
  • קורס DevOps - Ansible
  • קורס PowerShell
  • קורס Git ו-GitHub עם Visual Studio