הקדם
Apache Kafka תומך במספר פרוtokולגים של בטיחות ותהליכים אמונה כדי לוודא שרק אנשים ויישומים מורשים יכולים להתחבר לקבוצה. בהגדרת הבריר המובנית על ידי Kafka, מותרת לכולם לגישה אך אין בה בדיקות בטיחות מוכתבות. אף על פי שזה שימושי לגילוי ופיתוח, ההגדרות הייצואיות חייבות להיות מוגנות בצורה מקובעת לפני שיגור אל החוץ. בנוסף, סביבות אלה חייבות להיות מעקבות על מנת לוודא תפקוד מהימן ולמנוע כשלים אפשריים.
בסידור הלימוד הזה, תגבירו את התאימות הבריר שלכם על ידי הגדרת TLS עבור הצפיפות המצפנת וסיסמה עבור אמון כדי לספק תהליך הכנת שם וסיסמה סטנדרטי. תראו איך להגדיר את הסקripטים המפיקים והמשתמשים שלכם כדי להתחבר לקבוצה מאובטחת. אחר כך, תלמדו איך לשלוט במידע על קבוצת הקאפקה ולמצוג אותו בגרפאנה. תלמדו גם איך לגשת לעמודים ונושאים בקבוצת הקאפקה שלך דרך ממשק רשת קל לשימוש שספקt על ידי AKHQ.
הקדמת הדרישות
כדי להשלים את הלימוד הזה, תזדקקו ל:
- משבץ עם לפחות 4GB זכרון RAM ו-2 CPU. במקרה של שרת Ubuntu, עקוב אחרי ההוראות בסביבת ההתקנה הראשונית של השרת ב-הגדרת השרת הראשונית.
- Apache Kafka מותקן ומוכן על המשבץ שלך. להוראות ההתקנה, עקוב אחרי המדריך הקדמה ל-Kafka. צריך להשלים רק שלב 1 ו-שלב 2.
- הבנה של איך ג 'אווה מתנהלת עם מפתחות ותעודות. למידע נוסף, בקר את המדריך העקרונות של Java Keytool: עבודה עם תיבות המפתחות של Java.
- Grafana מותקן על השרת שלך או המכשיר המקומי שלך. בבקשה בקר את המדריך איך להתקין ולבטח Grafana על Ubuntu להוראות. צריך להשלים רק ארבעת השלבים הראשונים.
- שם דומיין מוכר לגמרי מוכוון למשבץ שלך. המדריך ישתמש ב-
your_domain
לרוחב המדריך ויזהה לאותו שם דומיין כתורת דרושה ל-Grafana. ניתן לרכוש שם דומיין ב-Namecheap, לקבל אחד בחינם ב-Freenom, או להשתמש ברשוי רישום הדומיינים של בחירתך.
שלב 1 – הגדרת מנגנוני הבטיחות של Kafka
בהגדרות המקוריות שלהם, Kafka מאפשרת לכל אחד להתחבר אליה בלי לבדוק את המקור של הבקשה. זה אומר שהמסלול של הקלט נגיש לכל אחד בהגדרה. בעוד שזה נעים עבור בדיקות, בגלל שזה מצמצם את משאבי ההחזקה על המחשבים הפומביים וההתקנויות הפרטיות, התקנויות בייצור ופומביים מוכרחות להפעיל תכונות בטיחות כדי למנוע גישה לא מורשת.
בשלב זה, תסדרו את הספק הקפקא שלכם להשתמש בצפיפורנית TLS עבור התנועה בין הספק לצרכנים. תיצרו גם את המערכת SASL כפרט האמונה לבדיקת הרשאות בזמן התחברות למסלול.
יצירת ציון TLS ומאגרים
כדי ליצור את הציונים והמפתחות הנדרשים עבור התקנת TLS, תשתמשו בסקript מהאחסן כלי הבטיחות של פלטפורמת Confluent. קודם כל, תשלוף את הערימה לתוך הקומף הביתי שלכם על ידי ביציאת הפקודה הבאה:
על ידי ניווט אליו:
הסק립ט שתשתמש בו נקרא kafka-generate-ssl-automatic.sh
, והוא דורש ממך לספק את מדינתך, המדינה, הארגון והעיר בתור משתנים סביבתיים. הפרמטרים האלה משמשים ליצירת התעודות, אך התוכן שלהם לא משנה. תצטרך גם לספק סיסמה, שמשמשת לאבטח את המאגר האמון והמאגר המפתח שייצרות בעזרת הג 'אווה.
בואו נבצע את הפקודות הבאות כדי להגדיר את המשתנים הנדרשים, ותחליף your_tls_password
בערך שלך:
שימו לב שה PASSWORD
צריך להיות לפחות בן שש תווים.
תנו לסקripט הרשמה בפעולה על-ידי:
ואחר כך, ניהל אותו כדי ליצור את הקבצים הנדרשים:
יוצאת ההדבקה תהיה רבה. כשהיא מסתיימת, תרשים את הקבצים בתוך התיקייה:
היצאת התוצאה תיראה דומה לזה:
תראו שהתעודה, המאגר האמון והמאגר המפתח נוצרו בהצלחה.
הגדרת Kafka לשימוש בTLS וSASL
ועכשיו שיש לך את הקבצים הנדרשים כדי לאפשר הצפנה TLS, תתקנית את Kafka להשתמש בהם ולאמת את המשתמשים בעזרת SASL.
תערוך את הקובץ server.properties
שנמצא תחת config/kraft
בתיקיית ההתקנה. התקנת אותו תחת kafka
בתיקיית הבית שלך כחלק מהדרישות הקודמות. תלך אליו על ידי הרצתה:
פתח את קובץ התצורה הראשי לעריכה:
nano config/kraft/server.properties
מצא את השורות הבאות:
שנה אותם כך שיהיו כך, והחלף PLAINTEXT
בBROKER
:
אחר כך, מצא את השורה listener.security.protocol.map
:
קשר BROKER
לSASL_SSL
על ידי הוספת ההגדרה לערך:
כאן, הוספת ההגדרה לעקוב BROKER
השמה שהשתמשת בה בקושינים והוסף אותה לSASL_SSL
, שמייצג שנעשה בשימוש שניהם.
באימוץ הבא, תעבור לסוף הקובץ ותוסף את השורות הבאות:
תתחיל בהגדרת המיקומים והסיסמאות עבור המאגרים האמינים והמפתחים שנוצרים. תגדיר את הפרמטר ssl.client.auth
לrequired
, בו את מודאגת את קאפקה לא לאפשר קישורים שלא מציגים תעודת TLS מוקצבת. אחר כך, תגדיר את המנגנון SASL לPLAIN
, שמאפשר אותו. PLAIN
שונה מPLAINTEXT
במידה שהוא דורש שימוש בקישור מוצפן, ושניהם סמכים על שילוב של סיסמאות של משתמש וסיסמא.
לבסוף, תגדיר את StandardAuthorizer
כמותג אותולוגים, שמבדוק את הרשויות בעזרת קובץ ההגדרות שאתה עומד ליצור בקרוב. אחר כך, תגדיר את הפרמטר allow.everyone.if.no.acl.found
לfalse
, שמגביל את הגישה לקישורים עם רשויות לא מתאימות. אתה גם מסמך את המשתמש admin
כסופר-משתמש, בגלל שחייבת להיות לפחות אחת כדי לבצע משימות אדמיניסטרטיות במערך.
זכרו להחליף your_tls_password
בססמה שנתת לתסך בחלק הקודם, ואחר כך שמור וסגר את הקובץ.
עכשיו שאתה תיגר על הגדרות של Kafka, תצטרך ליצור קובץ שמגדיר את האמונות המורשות להתחברות. Kafka תומך בשירות האמונות והסיומה ב-Java (JAAS), תשתית ליישם עבודות אמון, ומקבל הגדרות אמונות בתבנית JAAS.
תשמר אותם בקובץ בשם kafka-server-jaas.conf
בתוך config/kraft
. ייצר אותו ופתח אותו בצורה לעריכה בעזרת השורה הבאה:
הוסף את השורות הבאות:
השורות username
ו password
מגדירים את האמונות העיקריות שמשמשים לתקשורת בין הברקרים במערך כשיש רבים מנקודות. השורה user_admin
מגדירה משתמש בשם admin
עם סיסמה admin
, שיכול להתחבר לברקר מבחוץ. שמור וסגיר את הקובץ בסוף העבודה.
Kafka צריך להיות מודע לקובץ kafka-server-jaas.conf
בגלל שהוא משלם להגדרות העיקריות. תצטרך לשנות את ההגדרות של השירות kafka
systemd ולהעביר את ההפנייה אליו. בואו על הפקודה הבאה כדי לפתוח את השירות לעריכה:
בעזרת --full
, תקבל גישה לתוכן המלא של השירות. מצא את השורה ExecStart
:
הוסף שורה אחת עליון לה, כך שהיא תיראה כך:
אית כך, אתה מגדיר את הפרמטר java.security.auth.login.config
בתצורה לנתיב של קובץ התצורה של JAAS, מופרד מתצורת Kafka הראשית. לאחר שהשגת את זה, שמור וסגור את הקובץ. רענן את ההגדרה של השרות על ידי הרצת:
אז, הפעל מחדש Kafka:
עכשיו הגדרת גם הצפנה TLS ואימות SASL עבור ההתקנה של Kafka שלך, ותלמד עכשיו איך להתחבר אליו באמצעות סקריפטי המסוף המתןים.
שלב 2 – התחברות לקבוצת מוגנת
בשלב זה, תלמד איך להתחבר לקבוצת Kafka מוגנת באמצעות קבצי תצורת JAAS עם סקריפטי המסוף המתןים.
הסקריפטים המתנים לשליטה בנושאים, יצירת וצריכת מסרים גם משתמשים באנגלית פנימית, ולכן מקבלים תצורת JAAS המפרטת את מיקומי חנות האמון והמפתח, וגם פרטי אימות SASL.
תשמור את התצורה הזו בקובץ בשם client-jaas.conf
בתיקיית הבית שלך. יצירה ופתיחה לעריכה:
הוסף את השורות הבאות:
בדומה לפעם קודמת, תגיעו לסגוריית הפרוטוקול של SASL_SSL
ותספקו את המסלולים והסיסמא למאגרי המפתחים והאמונות שהוספתם. אחר כך, תגיעו למנגנון SASL של PLAIN
ותספקו את המידע האישי למשתמש admin
. תנקישו בבירור את הפרמטר ssl.endpoint.identification.algorithm
כדי למנוע בעיות התחברות, כי השקטים המקוריים מגדירים את שמו המחשב שבו מועדכן כסף הייצוא, שעשוי להיות לא נכון.
חליפו your_tls_password
עם הערך הנכון, אחר כך שינויו וסגירת הקובץ.
כדי להעביר את הקובץ הזה לשירותים, תוכלו להשתמש בפרמטר --command-config
. ניסוי ליצירת טופיק חדש בקהילה בהצגה הבאה:
הפקטיבציה של הפקד צריכה להצליח בהצלחה:
כדי לוודא שזה נוצר, תרצו את כל הטופיקים בקהילה על ידי הרצת:
הידועה תראה ש new_topic
נמצא:
ברשומה הזו, התארגנתם את התקנת קאפקה שלכם להשתמש בהצפנה TLS עבור תנועה וSASL עבור אמת מזהה עם שילובים של שם משתמש וסיסמה. עכשיו, תלמדו איך לשלוח מספר מדדים Kafka דרך JMX בעזרת פרומתרוס.
שלב 3 – ניהול מדדים JMX של Kafka בעזרת פרומתרוס
בחלק זה, תשתמשו בפרומתאוס כדי לאסוף מדדי Kafka ולהפוך אותם לזמינים לחיפוש בגרפנה. זה כולל הקמת יוצר המידע JMX עבור Kafka וחיבורו לפרומתאוס.
[תוספות ניהול ג'אווה (JMX) הן מסגרת ליישומי ג'אווה שמאפשרת למפתחים לאסוף מדדים כלליים ומותאמים אישית על הפעולה של היישום בזמן ההפעלה בפורמט סטנדרטי. מכיוון שקפקא נכתב בג'אווה, הוא תומך בפרוטוקול JMX ומחשף את המדדים המותאמים שלו דרך המכשיר הזה, כמו מצב הנושאים והברוכרים.
הגדרת Kafka ופרומתאוס
לפני שתמשיכו, יהיה עליכם להתקין את פרומתאוס. במכשירים Ubuntu, ניתן להשתמש ב- apt
. עדכנו את מאגרי ההתקנה על-ידי הרצת:
אז, התקנו את פרומתאוס:
לפלטפורמות אחרות, בבקשה עקבו אחר ההוראות להתקנה באתר הרשמי.
ברגע שהתקנת הסיסמה תהיה מוכנה, תצטרך להוסיף ספריית הייצוג JMX עבור Prometheus להתקנת הקafka שלך. תנוע לדף השישורים ובחר את השישור האחרון שעוצב כך שיש בשם את javaagent
. בזמן כתיבתי, הגירסה האחרונה הזמינה היתה 0.20.0
. תשתמש בפקודה הבאה כדי להוריד אותה לתוך המנוע ה libs/
בה מותקן Kafka:
הספרייה הזו של ייצוג JMX יתקבלת עכשיו על ידי Kafka.
לפני שתפעיל את הייצוגן, תצטרך להגדיר את המדגם שהוא ידווח לPrometheus, ותאחסן את ההגדרה הזו בקובץ שנקרא jmx-exporter.yml
מתחת ל config/
של ההתקנת של Kafka. הפרויקט של ייצוג JMX מעניק הגדרה ברת הציבור מותאמת, אז תבצע את הפקודה הבאה כדי לאחסן אותה בתוך jmx-exporter.yml
בתחתית config/
של ההתקנת שלך:
בהמשך, כדי לפעול את הייצוגן, תצטרך לשנות את שירות הKafka systemd. תצטרך לשנות את משמעות המאפיין KAFKA_OPTS
כדי לכלול את הייצוגן ואת ההגדרה שלו. בוא על פנים עם הפקודה הבאה כדי לערוך את השירות:
שינה את שורת Environment
על פנים כך:
כאן, תשתמש באגרון -javaagent
כדי להתחיל את הייצוגן עם ההגדרה שלו.
שמור וסגיר את הקובץ כשהסיימת, והתחיל את Kafka בפקודה הבאה:
אחרי דקה אחת, בד
השורה הזו מראה שהפורט 7075
בשימוש על ידי תהליך ג 'ובה בו מתחילים על ידי שירות קאפקה, שמתייחס למוצע הייצוא JMX.
עכשיו תסו configure Prometheus כדי להשגיח על המדדים JMX המייצאים. הקובץ העיקרי של ההגדרות שלו נמצא במקום /etc/prometheus/prometheus.yml
, אז פתח אותו עבור עריכת:
חיפש את השורות הבאות:
מתחת ל scrape_configs
, שמספר איזורים של מידע של Prometheus צריך להסתכל עליהם, תוסף אזור חדש ללוטת מדדי Kafka:
המשרה kafka
יש מטרית אחת, שמכוונת לנקודת הקצה של JMX exporter.
תזכור להחליף your_domain
בשם הדומיין שלך, אז שמור וסגור את הקובץ. אז, הפעל מחדש את פרומתיאוס על ידי הרצה של:
בדפדפן שלך, נווט לפורט 9090
בדומיין שלך. תגיע לממשק המשתמש של פרומתיאוס. תחת סטטוס, לחץ על מטריצות כדי להציג את המשרות:
שימו לב שפרומתיאוס התקבל את המשרה kafka
והתחיל לסקריף את המטריצות שלה. עכשיו תלמדו איך לגשת אליהן בגרפנה.
חיפוש מדדים בגראפנה
בתור אמצעים קדם נדרשים, התקנתם את גראפנה על הדרפלט שלכם וחשפתם אותה בכוונה your_domain
. תעבורו לה בדפדפן שלכם, ובתחתית קישורים בסדרה, תלחצו על הוסף קישור חדש, ואחר כך תהיו מוזמנים להקליד בשדה החיפוש Prometheus.
תלחצו על Prometheus, ואחר כך תלחצו על הכפתור הוסף מקור נתונים חדש בפינה העליונה הימנית. יש לך להזין את כתובת המיקום של המיקום הפרומתהיס:
הזינו http://your_domain_name:9090
, והחלףו את השם המקומי האמיתי שלכם, אחר כך תדלגו למטה ותלחצו על שמירה ובדיקה. אתה צריך לקבל מסר הצלחה:
החיבור לPrometheus נוסף לגראפנה. תלחצו על התפקדות בסדרה, ותוכלו לבחור מדד. ניתן להקליד kafka_
כדי לרשום את כל המדדים שקשורים למערכת המקום, כפי שרואים:
לדוגמה, בחרו kafka_log_log_size
, שמראה את גודל הלוג הפנימי על הדיסק לכל חלק, ואחר כך תלחצו על בדיקה בפינה העליונה הימנית. אתה תראה את הגודלים המועדים לאורך הזמן עבור כל הנושאים הזמינים:
בשלב זה, הגדרת הייצוא של מדדי JMX שקafka מספקת והגדרת Prometheus כדי לשלוף אותם. אחר כך, התחברת אליהם דרך גראפנס וביצועה של שאילת מדדים על המדדים של Kafka. עכשיו, תלמדו איך לנהל קבצת Kafka בעזרת ממשק אינטרנטי.
שלב 4 – ניהול קבצות Kafka בעזרת AKHQ
בשלב זה, תלמדו איך להגדיר ולהשתמש בAKHQ, אפליקציית רשת לניהול קבצות Kafka. היא מאפשרת לך לרשום ולעבד תיבות נושא, חלקים, קבוצות צרכנים ופרמטרים הגדרה, בנוסף לייצור ולשימוש במסרים מתוך תיבות נושא במקום אחד.
תאחסין את הייצוא המושלם ואת ההגדרות שלו בתוך תיבת שם akhq
. בונים אותה בתיבת הבית שלך על ידי הרצת:
ניווט אליה:
בדפדפן שלך, בואו לדף השיחרורים הרשמיים והעתקו את הקישור לקבץ JAR של השיחרור האחרון. בזמן כתיבת המאמר, הגירסה האחרונה היתה 0.24.0
. בואו ובוצעו הפקודה הבאה כדי להוריד אותו לתיבת הבית שלך:
עכשיו הורידת את AKHQ, ומוכן להגדיר את ההגדרות שלו עבור התחברה לקבצת הקלט שלך. תאחסין את זה בקובץ שנקרא akhq-config.yml
. בונים ופתחו אותו עבור עריכה על ידי הרצת:
הוסף את השורות הבאות:
זו הגדרה בסיסית של AKHQ, שמציינת קבוצה אחת ב־localhost:9092
עם הפרמטרים המתאימים של SASL ו־TLS שצויינו. גם קבוצות מרובות בו־זמנית נתמכות כי אתה יכול להגדיר כמה שיחידות חיבורים אתה רוצה. זה הופך את AKHQ לגמיש לניהול Kafka. לאחר שהשגת את זה, שמור וסגור את הקובץ.
הלאה, יהיה עליך להגדיר שרות systemd
להפעלת AKHQ ברקע. שרותי systemd
יכולים להופעל, להפסק ולהופעל מחדש באופן עקבי.
תטמינ את תצורת השרות בקובץ בשם code-server.service
, בתיקיית /lib/systemd/system
, היכן שsystemd מאחסן את שרותיו. יצירתו באמצעות מערכת העריכה שלך:
הוסף את השורות הבאות:
ראשית תגדיר את התאור של השרות. אז, בחלק ה[Service]
, תגדיר את סוג השרות (simple
אומר שהפקודה פשוט תתבצע) ותספק את הפקודה שתרוץ. תגן גם שהמשתמש שתרוץ תחתיו הוא kafka
ושהשרות יופעל מחדש אם יצא.
בחלק ה[Install]
תכתוב ל־systemd להפעיל את השרות הזה כאשר אתה מתחבר לשרת שלך. לאחר שהשגת את זה, שמור וסגור את הקובץ.
טען את תצורת השרות על ידי הרצת:
הפעל את שרות AKHQ על ידי הרצת הפקודה הבאה:
אז, בדוק אם הוא הופעל כראוי על ידי הצגת מצבו:
הפלט אמור להיראות כך:
אקהקו כעת מופעל ברקע. כברירת מחדל, הוא חשוף בפורט 8080
. בדפדפן שלך, נווט לשם הדומיין שלך עם הפורט הזה כדי לגשת אליו. תראה את התצוגה הברירתית, המציגה את רשימת הנושאים:
אתה יכול להקשיב פעמיים על השורה המלווה של הנושא בטבלה כדי לגשת אליו ולקבל תצוגה מפורטת:
אקהקו מאפשר לך לראות את ההודעות בנושא, כמו גם החלוקות, קבוצות הצרכן, וההגדרות שלהן. אתה יכול גם לרוקן או להעתיק את הנושא באמצעות הכפתורים בצד הימני התחתון.
מאחר והנושא new_topic
ריק, לחץ על הכפתור Produce to topic, שיפתח את הממשק לבחירת הפרמטרים של ההודעה החדשה:
אקהקו ימלא אוטומטית את שם הנושא עבורך. בשדה Value, הקלד Hello World!
, אז לחץ Produce. ההודעה תשלח לקפקא, ותראה אותה בלשונית Data:
מאחר שתוכן ההודעה יכול להיות מאוד גדול, אקהקו רק מציג את השורה הראשונה. כדי לראות את ההודעה השלמה, לחץ על האזור המחשוך אחרי השורה כדי לחשוף אותו.
בסרגל השמאלי, אתה יכול גם לרשום את הברוקרים בקלסטר על ידי לחיצה על Nodes. כרגע, הקלסטר מכיל רק נקודה אחת:
להקשיב פעמיים על נקודה יפתח את ההגדרות שלה, מאפשר לך לשנות כל אחד מההגדרות במרחק:
אחרי שביצעת שינויים, תוכל ליישם אותם על ידי לחיצה על הכפתור עדכן תצורות בפינה הימנית התחתונה. באופן דומה, תוכל להציג ולשנות את התצורה של כל אחד מהנושאים על ידי גישה אליהם ומעבר ללשונית תצורות.
בחלק זה, הקמת את AKHQ, אפליקציה רשת שמספקת ממשק משתמש קל לשימוש לניהול ולמעקב אחר נקודות ונושאים של Kafka מרחוק. היא מאפשרת לך לייצר ולצרוך מסרים בנושאים ולעדכן את פרמטרי התצורה של נושאים ונקודות בזמן אמת.
סיכום
במדריך זה, הבטיחת את ההתקנה של Kafka על ידי תצורת TLS להצפנה ו-SASL לאימות משתמש. גם הקמת את ייצוא מטריקים באמצעות Prometheus והצגתם ב-Grafana. אחר כך, למדת איך להשתמש ב-AKHQ, אפליקציה רשת לניהול קבוצות Kafka.
המחבר בחר לתרום ל־קרן התוכנה האפיפיונית כחלק מתוכנית כתוב עבור תרומות.
Source:
https://www.digitalocean.com/community/developer-center/how-to-secure-and-monitor-kafka