תמיד יש לך עדיפות גבוהה לשמור על סודותיך מליפול לידי רע. אך איך בדיוק אתה מאבטח את הסודות שלך? האם אתה שומר אותם בקובץ טקסט מקומי? בלעדי הצפנה, האפשרות הזו היא יותר מדי פוטנציאלית סוכנת. למה לא להשתמש ב־Ansible Vault כדי להצפין את המשתנים והקבצים שלך?
במדריך הזה, תלמד כיצד לאבטח תוכן רגיש, כמו סיסמאות או מפתחות, באמצעות Ansible Vault.
המשך לקרוא והרחק עיניים תקרואות מהסודות שלך!
דרישות קדם
מדובר בהדגמה מעשית. אם ברצונך להתעקב, וודא שיש לך את הפריטים הבאים.
- A Linux machine – This tutorial uses Ubuntu 20.04, but any Linux distribution will work.
- Ansible מותקן על המכשיר שלך.
הגדרת העורך ברירת מחדל של Ansible Vault
כמנהל מערכת, ייתכן שתעבוד על פלייבוקים שונים של Ansible המכילים שמות משתמש וסיסמאות של שרתים שונים. אין אפשרות לשלוח את הקבצים הללו למערכת בקובץ טקסט פשוט משום שזה לא מאובטח. ולכן, Ansible Vault מגיע לידי עזר.
תכנן כי Ansible Vault מיועד להיות משולב בזרם העבודה הקיים שלך כדי לאחסן את המידע שלך בקובץ מוצפן. אך לפני שתיצור את ה־Ansible Vault הראשון שלך, יהיה עליך להגדיר את העורך המוגדר כברירת מחדל שלך ב־Ansible Vault.
1. פתח את הטרמינל שלך ותתחבר ב־SSH למכשיר שלך.
2. לאחר מכן, פתח את הקובץ ~/.bashrc באמצעות עורך טקסט. קובץ ~/.bashrc הוא סקריפט של המעטפת שרץ כל פעם שיש חיבור חדש למסוף. סקריפט זה אתחיל מסוף אינטראקטיבי ומגדיר משתני סביבה.
3. הוסף את השורה הבאה בסוף קובץ ~/.bashrc, שמור את השינויים וצא מהעורך.
שורה זו מגדירה את המשתנה EDITOR עבור המשתמש המחובר כרגע. משתנה זה מבטיח שהעורך הטקסט המועדף ייבחר בכל פעם שאתה פותח מסוף חדש.
אפשר להגדיר כל עורך טקסט אחר שאתה מעדיף, אך המדריך הזה משתמש בעורך הטקסט nano.

4. לבסוף, הפעל את הפקודות הבאות כדי להחיל את השינויים (source) בלעדייך להתנתק ולהתחבר מחדש, ולהדפיס (echo) את העורך הטקסט המועדף במערכת שלך.
וודא שהמשתנה EDITOR מוגדר לעורך הטקסט המועדף עליך, כפי שמוצג למטה.

יצירת והצפנת ה-Vault הראשונה שלך עם Ansible
אתה הגדרת את עורך הוולט ברירת המחדל שלך, אז זה הזמן ליצור את הוולט הראשון שלך. תיצור ותצפין קובץ המכיל מידע רגיש, כמו שמות משתמש, סיסמאות, מפתחות גישה סודיים, וכו'
. תפעיל את הפקודה ansible-vault, הממשק הראשי להתמודדות עם הוולטים של Ansible
.
1. הרץ את הפקודה הבאה כדי ליצור את הקובץ secret.yml . Ansible משתמשת ב-YAML, פורמט שנקרא יותר קריא עבור בני אדם בהשוואה לפורמטים אחרים כמו JSON
. תתבקש להזין ולאשר סיסמא לקובץ. תשתמש בסיסמא זו כדי להצפין ולפענח את הקובץ secret.yml בהמשך, לכן וודא שבוחר סיסמא חזקה שתוכל לזכור

.
2. לאחר שהגדרת את סיסמת הוולט, העורך הטקסט המותקן ברירת המחדל שלך יפתח קובץ ריק. הזן את המידע הרגיש שברצונך לאחסן בקובץ, שמור אותו וסגור את העורך
. במדריך זה נאחסן את המשתנים aws_access_key ו-aws_secret_key בקובץ secret.yml . בנקודה זו, Ansible מצפין את הקובץ secret.yml, ואף אחד אחר לא יכול לקרוא את תוכנו אלא אם יודע את סיסמת הוולט

.
3. הרץ את הפקודה cat נסה להציג את תוכן הקובץ secret.yml ללא הסיסמא.
ניתן לוודא כי תוכן הקובץ מוצפן אם אתה רואה מספרים אקראיים, כמו שמוצג למטה. הכותרת $ANSIBLE_VAULT;1.1;AES256 בראש הקובץ מציינת כי הקובץ מוצפן באמצעות Ansible Vault באמצעות הצפנה AES256.
אלגוריתם ההצפנה המתקדם (AES) הוא אלגוריתם מפתח סימטרי שמשתמש באותו מפתח להצפנה ופיענוח נתונים.

הצפנת קבצים קיימים
יצרת קובץ מאפס שמוצפן באופן אוטומטי. אבל מה בנוגע להצפנת קבצים קיימים? Ansible מציעה גם את התת-פקודה encrypt להצפנת קובץ מסוים. כדי לראות כיצד להצפין קובץ קיים, תצפין קובץ מסוים שמכיל משתני Ansible.
הריצו את הפקודה הבאה כדי להצפין קובץ (vars.yml
).
כמו כאשר יצרתם את הקובץ secret.yml בפעם הראשונה, יתבקש מכם לספק סיסמה עבור הקובץ vars.yml.
העורך המוגדר כברירת מחדל לא יפתח הפעם מכיוון שהקובץ vars.yml כבר קיים. במקום זאת, תקבלו את הודעת ההצפנה הצליחה המציינת ש-Ansible הציפה את הקובץ, כפי שמוצג למטה.

עכשיו, הריצו את פקודת ה-cat למטה כדי לוודא ש-Ansible הציפה את הקובץ vars.yml.

פיענוח נתונים מ-Ansible Vault
ראית כיצד להצפין קבצים, כך שהם יהיו מאובטחים. אך כאשר תרצה לצפות בתוכן של הקבצים שלך, כיצד תפעיל פענוח על הקבצים שלך? פענוח קובץ שימושי כאשר ברצונך לערוך קובץ מוצפן או לקרוא את התוכן שלו מבלי לספק את הסיסמה בכל פעם. והפקודה המשנית decrypt של Ansible תהיה מועילה.
1. הפעל את הפקודה הבאה כדי לפענח את הקובץ secret.yml.
הפקודה המשנית decrypt מקבלת את נתיב הקובץ המוצפן כפרמטר היחיד שלה.
ספק את הסיסמה לקובץ, ותוכן הקובץ ייפענח ויכתב לדיסק בטקסט פשוט.

2. לאחר מכן, הפעל את הפקודה cat כדי לצפות בתוכן המפוענח של הקובץ secret.yml.
תוכל לראות מתחת את תוכן הקובץ secret.yml מודפס לטרמינל ללא הצפנה. בנקודה זו, תוכל להוסיף, לערוך או למחוק כל שורות בקובץ לפי רצונך.

3. לבסוף, הפעל את הפקודה הבאה כדי להצפין את הקובץ secret.yml ולספק סיסמה כדי לשמור על אבטחת התוכן של הקובץ.

עדכון הסיסמה של כור העבודה של Ansible
ראית שיש צורך להזין סיסמה בכל פעם שתרצה להצפין או לפענח קבצים. אולם אולי תרצה לעדכן את סיסמת הקובץ מבלי לפענח את הקובץ. אם כן, תצטרך להשתמש בפקודת המשנה rekey. פקודת המשנה הזו מאפשרת לך לשנות את סיסמת הקובץ שלך לפי רצונך.
הרץ את הפקודה הבאה כדי לעדכן את הסיסמה עבור קובץ secret.yml
.
הפקודה המשנה rekey לוקחת את נתיב הקובץ המוצפן כפרמטר היחיד שלה.
ספק את הסיסמה הנוכחית עבור הקובץ ואחריה את הסיסמה החדשה, כפי שמוצג למטה.
בנקודה זו, הסיסמה הישנה לא תעבוד יותר לפענח את הקובץ.

כעת, הפעל את הפקודה למטה כדי לנסות ולפענח את secret.yml
.
ספק את הסיסמה הישנה כאשר יתבקש, ותראה הודעת שגיאה אומרת שהפענוח נכשל (Decryption failed), כפי שמוצג למטה. הפלט הזה מאשר שהסיסמה עבור הקובץ עודכנה בהצלחה.

שימוש בנתונים מאובטחים ב Playbooks וב Modules
ראית שהפעלת פקודות להצפנה ופענוח קבצים עובדת. אך אם אתה מתכוון לאוטומטיזציה בצורה מאובטחת עבור היישום שלך, יהיה עליך להשתמש ב- playbooks ו- modules.
1. פתח את קובץ התצורה של Ansible (~/.ansible.cfg) בעורך שלך, אשר מכיל את ההגדרות של Ansible.
העתק והדבק את הקוד הבא בסוף קובץ ~/.ansible.cfg, שמור את השינויים וסגור את העורך. קוד זה אומר ל- Ansible לחפש את קובץ המלאי (~/.ansible-hosts).
2. לאחר מכן, פתח את קובץ ~/.ansible-hosts, אשר מכיל את המלאי של המארחים שה- Ansible שלך יכול לנהל.
מלא את קובץ ~/.ansible-hosts בשורת הקוד הבאה, שמור את השינויים וסגור את הקובץ. קוד זה אומר ל- Ansible שהוא יכול לנהל את המחשב המקומי דרך סוג החיבור המקומי.
3. להריץ את הפקודה הבאה כדי ליצור קובץ מוצפן חדש. אתה יכול לתת שם לקובץ בכל שם שתרצה, אך במדריך זה הקובץ יקרא helloworld.yml.

מלא את הקוד למטה לקובץ helloworld.yml, שמור את השינויים וסגור את העורך.
הקוד הזה הוא פלייבוק בסיסי של Ansible שמדפיס את ההודעת 'שלום עולם' על כל המארחים ברשימת האינוונטורי שלך. הסמל — בראש הבלוק הקוד מציין את תחילת מסמך YAML.
4. לבסוף, הריץ את פקודת ה-ansible-playbook למטה עם האפשרויות –ask-vault-pass כדי להריץ את פלייבוק ה-helloworld.yml על כל המארחים ברשימת האינוונטורי שלך.
ספק את הסיסמה עבור קובץ helloworld.yml כאשר יתבקש. כפי שאתה יכול לראות למטה, הרצת הפלייבוק שלך הצליחה.
- ok=2 – מציין ששני המשימות שלך הוצלחו בהצלחה.
- changed=1 – מציין שהמשימה שלך עשתה שינוי אחד במצב המערכת שלך. במקרה זה, כתבה הודעת 'שלום עולם' לשלט.
- unreachable ו-failed שווים ל-0 – מציין שאין מארחים שלא הגיעו או נכשלו במהלך הריצה.

שימוש ב-Ansible Vault עם קובץ סיסמה
בעוד הזנת סיסמה באופן ידני בעת הרצת משימות חד-פעמיות עובדת, זה לא פרקטי לשימוש בעולם האמיתי.
A better way to provide the password for encrypting and decrypting files is to use a password file. This way, you can store the password in a secure location, and Ansible will read the password from the file needed.
1. הריצו את הפקודה למטה כדי לאחסן את סיסמת ה־Ansible Vault בקובץ בשם .vault_pass. החליפו my_vault_password בסיסמת ה־Vault האמיתית שלכם.
2. לאחר מכן, הריצו כל פקודה למטה כדי לשנות את הבעלות (chown) של הקובץ לroot ולשנות את ההרשאות של קובץ .vault_pass. פקודות אלו מבטיחות כי רק אתם (משתמש ה־root) תוכלו לקרוא ולכתוב בקובץ.
3. לבסוף, הריצו את הפקודה ansible-playbook למטה, עם האפשרות –vault-password-file כדי לבצע playbook (helloworld.yml) באמצעות קובץ סיסמה (.vault_pass).
שימו לב ש־Ansible ביצע את ה־playbook בלי לשאול אחר סיסמת הקובץ המוצפן.

סיכום
במדריך זה, למדתם כיצד להשתמש ב־Ansible Vault כדי להצפין ולפענח נתונים רגישים עבור playbook ומשימות של Ansible. הצפנתם את סיסמת ה־Ansible Vault במיקום מאובטח באמצעות קובץ סיסמה. התנהגות זו מועילה למינימום התערבות מהמשתמש בעת ביצוע playbook.
עם הידע החדש שלך, אתה יכול כעת להצפין נתונים רגישים בביטחון ולשתף את המדריכים שלך עם אחרים בלי לדאוג לביטחון הנתונים שלך.
אם אתה משתמש ב-LastPass לניהול סיסמאות, למה לא לאחסן את סיסמת ה-Vault שלך ב-Ansible ב-LastPass ולתת ל-Ansible לאחזר אותה אוטומטית כאשר נדרש?