
docker secret create יוצר סוד חדש. הערך יכול להגיע מקובץ או מקלט הסטנדרטי (stdin). אחרי היצירה אי אפשר לראות את התוכן ב-docker secret inspect.--secret. הוא מופיע כקובץ בתוך הקונטיינר בנתיב /run/secrets/, והאפליקציה מקבלת את נתיב הקובץ דרך משתנה סביבה.docker secret create <שם> -, docker secret ls, docker secret inspect, docker secret rm, docker service create --secret source=...,target=..., ומקטע secrets בקובץ docker stack deploy.הטקסט המלא של הדקות הראשונות בהרצאה «Swarm - Secret» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
ברוכים הבאים להרצאה על דוקר סיקרטס. מה זה סיקרטס? סיקרטס זה מידע סודי שאנחנו רוצים להעביר לתוך הקונטיינר, אבל לא רוצים שזה יהיה בתוך ה-compose file או בתוך כבצי המקור, אלא אנחנו רוצים להעביר את זה בצורה מאובטחת לקונטיינרים ספציפיים, ולדוגמה אם יש לי סביבת פיתוח וסביבת QA וסביבת
פרודקשן, הסיסמאות יכולות להיות שונות, וזה לא יהיה נגיש בצורה פתוחה לכולם. בואו נראה את זה. docker swarm services, הקלאסטר של הדוורם, תומך בסיקרטים. מה זה סיקרט?
סיקרט is a blob of data, מידע כלשהו. זה יכול להיות פאסוור, זה יכול להיות מפתחות SSH כמו certificates, SSLים וכל דבר שאנחנו נחליט שהוא סודי.
מה שחשוב שהמידע הזה לא עובר בצורה לא מוצפנת, To not be transmitted over a network or stored or להישמר unencrypted, אסור שהמידע יהיה זמין בצורה לא מוצפנת ולא אחראית.
אוקיי, וזה התחיל מגרסה 1.13 ו-higher, התחיל מגרסה 1.13, ואתה יכול לנהל אותם בצורה המרכזית, Success Centrally Managed, בצורה Secure Transmission, זאת אומרת הוא עובר בין המחשבים בצורה מובטחת ומוצפנת secrets are encrypted הם מוצפנים בזמן השליחה שלהם בתוך הקלאסטר וסיקרטים רק נגישים
לסרוויסים מסוימים לקונטיינרים מסוימים בלבד והם לא נשמרים כחלק מ-compose file ורק מי שאתה נותן לו גישה ודאית לשם הגישה מפורשת לשם.
אתה יכול להשתמש ב-Secretים כדי לנהל מידע סודי שיהיה בזמן ה-Run Time בלבד, רק בזמן ההרצה של הקונטיינר. לדוגמה, יוזרניים ופאסוורד, לדוגמה, סרטיפיקייט, הקובץ של הסרטיפיקייט, זה יכול להיות גם מילה וזה יכול להיות גם קובץ.
בסוף בסוף זה הכל קבצים רגילים. SSH, מובטחות SSH וכל מה שאתם רוצים. שימו לב, בוקר סיקרט עובדים רק על ה-swarm, רק על הקלאסטר, זה לא עובד על סטנד-אלון.
אם אתה רוצה סטנד-אלון, תעשה קלאסטר עם מכונה אחת בלבד, scale of one, מכונה אחת בלבד בקלאסטר. עוד שימוש נוסף לסיקרטים זה לעשות הפרדה בין development, בין פיתוח, לסביבת QA, לסביבת פרודקשן, כדי שבכל סביבה יהיה לך שם וסיסמה שונים.
זאת אומרת, אנשים שעושים QA לא צריכים לדעת סיסמאות של פרודקשן, של שלטים אמיתיים. יפה מאוד. בווינדוס זה גם נתמך החל מהגרסה 2017, זה החל להתעמך בצורה קצת פחות מאובטחת, אבל זה מספיק טוב.
מה לא מאובטח? שבלינוקס זה נשמר בזיכרון, במייקרוסופט זה לא נשמר בזיכרון, בראם דיסק, אבל זה כל מיני דקויות.
בכל מקרה, כשאני מחבא אותם, עושה docker commit הם לא נשמרים שימו לב גם אם הם מופיעים בתוך הקונטיינר ברגע שאני עושה docker commit זה לא נשמר בפנים טוב בוא נתחיל לראות איך כל הסרוויסים האלה עובדים איך כל הסיקריטים האלה עובדים יש לנו docker secret create docker secret inspect docker secret ls ויש לנו פה דוגמאות איך להשתמש
בהם ואנחנו יכולים לעשות כל מיני דברים אז בוא נתחיל נלך לכאן ונעשה docker secret == help אנחנו יכולים ליצור את ה-secret, לבדוק אותו, inspect, לראות איזה secretים יש לנו ולמחוק אותם.
עכשיו, ה-secretים האלו נשמרים כחלק מדאטאבייס של מנג'רים, נכון? הרב-דאטאבייס, הדאטאבייס הזה ששומר מידע על הקלאסטר עצמו, שם שמורים ה-secretים.
כל secret שניצור, שזה יכול להיות קובץ עם private keys, זה יכול להיות קובץ עם סיסמה, זה יכול להיות סתם טקסט עם סיסמה, הכל נשמר בדאטאבייס של המנג'רים, אלו שמנהלים את הקלאסטר כאילו זה חלק מהמידע לקלאסטר, ואז נותנים גישה למידע הזה, תכף נראה באיזה צורה,
רק למי שנחליט, רק לסרוויס מסוים. אז docker secret ls, אין לנו עדיין כלום. בואו ניצור איזשהו סיקרט. אנחנו לדוגמה נעשה docker secret create mysql password, עוד פעם, אנחנו נעשה ככה, אנחנו נדפיס את המילה סופר סיקרט פסוורד ונכניס
אותה כסטנדרט אינפוט לתוך פקודת דוקר סיקרט קריאייט. בואו אני אראה לכם את זה. דוקר סיקרט ls, קודם כל הוא יצר לי את הסיקרט החדש הזה שנקרא mysqlpassword לפני 5 שניות.
אם אני אעשה docker secret create == help אתם תראו שאני יכול לעשות docker סיקרט קריאט אופצ'אנס אופצ'אנס זה כל מיני דברים כמו כל מיני לייבלים אני יכול לשים על הסיקרטים האלו ואז אני נותן את השם של הסיקרט איזה שם של בא לי זה הסוד של רות אדמיניסטרטור ואז לציין מהו הקובץ הסודי או שאם אין לי קובץ סודי כמו תעודת ssh אני יכול לעשות לו מקף
מה זה מקף זה סטנדרט אינפוט אינפוט רגיל מה זה סטנדרט אינפוט בגלל זה עשיתי אקו למסך והוא לקח את זה כאילו מהמסך הרמתם מה זה הדבר הזה? זה סטנדרט אינפוט. Create a secret from a file or standard input as a content.
יופי, אם אני אעשה עכשיו docker inspect, docker secret inspect, וה-secret היחיד שיש לי, אני אראה פה את המידע לגביו, את התוכן שלו אני לא רואה כאן.
שימו לב כמה שזה מאובטח, אפילו המנהל, המנג'ר, לא רואה את התוכן. אז יש לנו פה docker secret, יש לנו secret אחד, ואנחנו תכף הולכים להשתמש בו, אתם תבינו מה זה אז ראינו קריאט אינספקט ls הרי הם לא צריך לראות עכשיו אני רוצה להראות לכם איך אני יכול להשתמש בו אני יכול ליצור מיי sql ואני רוצה להראות
לכם איך אני יוצר את הדוקר סרוויס קריאט נכון אנחנו נותנים שם דאטה בייס סרוויס db סרוויס נכון יוצרים סרוויס של sql אנחנו גם נראה איך לעשות את אותו הדבר עם הסיקרטים גם בקומפוז פייל אני רוצה רפליקה אחת אני רוצה לחבר אותו למיי נטוורק שזה ו-overlay mount, דיברנו על ה-mount,
הנה זה, זאת שורת המחץ. שימו לב מה אני אומר לו, secret, source, mysql root password, מה זה ה-mysql root password? זה זה, אתם רואים?
זה השם של ה-secret. השם של ה-secret שהקמתי, אז זה secret mysql root password, target, מה ה-target שלו?
וזה מאוד מאוד חשוב, זה ה-target שלו. זה יהיה קובץ שנקרא mysql root password file, בתוך הקונטיינר, אני עושה אותו בתוך הקונטיינר, ויש לי פה עוד סיקרט, מה sql password, שזה לא root, זה user רגיל, זו סיסמה של user רגיל, וזאת סיסמה של root, רק אני עוד לא שכחתי ליצור אותו,
ואז אני עושה ctrl+c, מבטל את זה, בואו ניצור סיסמה לuser רגיל, נעשה just a password docker secret create my password מתוך std in, וזה יהיה just a password.
שימו לב, בעצם מה שאני מנסה לעשות איתכם זה אותן פקודות שיצרנו את ה-MySQL ואת ה-Wordpress רק הפעם ליצור אותו עם ה-Secretים.
מה ההבדל? שהסיסמה של לא נכתבת בפקודות באופן מפורש וגם לא תישמר בקובץ tech באופן מפורש. היא תהיה אך ורק על המנאג'רים של הקלאסטר ואני יכול לקחת ולהעביר את זה מקלאסטר לקלאסטר ולכל מנאג'ר יהיה את הסיסמאות של הסביבה שלו.
אז אני רוצה להראות לכם. עשיתי mysql-password כ-root, נכון? זה השם הזה, mysql-password, זה שם של ה-Secret, זה שם של ה-Secret.
חיברנו אותו לתוך הקובץ ב-Hardisk, ועכשיו שימו לב מה אנחנו עושים. עכשיו אנחנו עושים mysql-root-password-file, שימו לב, כף תחתון, פייל, זה משתנה סביבה.
אני אומר לו, תיקח את זה מכאן. עוד פעם, הקובץ הזה, ה-Secret נשמר בנתיב הזה. סיקרט נשמר בנתיב run/secret/mysql.root.password.file, שם שמור הסוד.
הסוד הזה כקובץ כולו עובר למשתנה סביבה הזה. יש? יש. עכשיו, השאלה זה איך נוצר הקובץ. הקובץ הזה נוצר על ידי אופציה מינוס מינוס סיקרט, שאומרת תיקח את הסיקרט מתוך המחשב שלי, מתוך המנאג'ר שלי הנוכחי, ותכניס אותו כקובץ בשם הזה.
השם הזה זה השם הזה אחד לאחד אני מקווה שאתם מבינים בואו ניכנס לתוך הקונטיינר ונראה דורקר פי אס הנה יש לי את זה פה דורקר אקזק מינוס איי טי חמש אפ על הקונטיינר חמש אפ תריץ באש אנחנו בתוך הקונטיינר נעשה ll/run/secret איפה ה-secret שלנו לא יודע מה זה ll ls-l הנה ה-secretים שלנו cut ה-sql root password
הנה אנחנו רואים את הסופר סיקרט פספורט שלנו. עכשיו תגידו, אז מה זה משנה? נכון, הקונטיינר עצמו יכול לגשת לסיקרט מבפנים, אבל הסיקרט הזה לא מטייל כחלק מהגדרות או פיתוח, ויותר מזה, הוא גם משתנה לפי הסביבה שלו, כן?
הוא כאילו תלוי בנודים, תלוי בקלאסטר ולא תלוי בתוכנה. וגם הוא בזיכרון ראם. בואו נראה אם יש פה מאונט, יש פה מאונט?
כן. שימו לב run secrets mysql password file הוא מסוג tempfs וtmpfs זה רק בזיכרון הראם זה כמו ראם דיסק דרך אגב ווינדוס לא יודע לעשות את זה ראם דיסק ובגלל זה זה ההבדל בין לינוקס לווינדוס שלינוקס יודע לעשות ראם דיסק כחלק ממערכת קבצים הרגילה לכן זה רץ רק בראם וזה לא חלק מהדיסק כביכול זה נראה לנו אותו דבר זה כמו ווליום שהוא מעונטד פנימה מארט
דיסק הפיזי לתוך הקונטיינר ככה ראם דיסק זה רץ למעשה בתוך הראם בתוך הזיכרון והוא נמצא ב-read only שימו לב הוא נמצא ב-read only אותו דבר זה הקובץ השני הוא גם temp 0 שזה אומר ראם דיסק שהוא בזיכרון ואם אנחנו נעשה קומיט הוא לא ישמר וזה read only אנחנו רואים שזה קבצים רגילים בעצם ב-hard disk ואנחנו יכולים ממש לעשות על זה cut על הקובץ הזה זה קובץ
רגיל לחלוטין ראינו אז מבחינתו של הקונטיינר זה קובץ רגיל לחלוטין ואם אנחנו נצא מקונטיינר מבחינתנו כשיצרנו אותו יצרנו אותו גם ללא ידיעה מי שכותב לנו יוצר לנו את הסרוויס יוצר לנו