אחרי שמתקינים את Apigee mTLS בכל הצמתים באשכול, צריך להגדיר את רכיב apigee-mtls
ולהפעיל אותו. כדי לעשות את זה, צריך ליצור זוג מפתחות/אישורים ולעדכן את קובץ ההגדרות במחשב הניהול. לאחר מכן פורסים את אותם קבצים שנוצרו ואת קובץ ההגדרות בכל הצמתים באשכול ומאתחלים את רכיב apigee-mtls
המקומי.
הגדרת apigee-mtls (אחרי ההתקנה הראשונית)
בקטע הזה מוסבר איך להגדיר mTLS ב-Apigee מיד אחרי ההתקנה הראשונית. למידע על עדכון של התקנה קיימת של Apigee mTLS, אפשר לעיין במאמר בנושא שינוי של הגדרת apigee-mtls קיימת.
הקטע הזה רלוונטי להתקנות במרכז נתונים יחיד. מידע על הגדרת Apigee mTLS בהגדרה של מספר מרכזי נתונים זמין במאמר בנושא הגדרת מספר מרכזי נתונים ל-Apigee mTLS.
התהליך הכללי להגדרת apigee-mtls
הוא כזה:
- מעדכנים את קובץ ההגדרות: במחשב הניהול, מעדכנים את קובץ ההגדרות כדי לכלול את ההגדרות של
apigee-mtls
. - מתקינים את Consul ויוצרים פרטי כניסה: מתקינים את Consul ומשתמשים בו (אופציונלית) כדי ליצור פרטי כניסה ל-TLS (פעם אחת בלבד).
בנוסף, עורכים את קובץ ההגדרות של Apigee mTLS כדי:
- הוספת פרטי הכניסה
- הגדרת הטופולוגיה של האשכול
שימו לב שאפשר להשתמש בפרטי הכניסה הקיימים או ליצור אותם באמצעות Consul.
- מפיצים את פרטי הכניסה ואת קובץ התצורה: מפיצים את אותו צמד של אישור/מפתח שנוצר ואת קובץ התצורה המעודכן לכל הצמתים באשכול.
- מא初始化 apigee-mtls: מאתחלים את רכיב
apigee-mtls
בכל צומת.
כל אחד מהשלבים האלה מתואר בפירוט בסעיפים הבאים.
שלב 1: מעדכנים את קובץ ההגדרות
בקטע הזה מוסבר איך לשנות את קובץ ההגדרות כדי לכלול מאפייני הגדרה של mTLS. מידע כללי נוסף על קובץ ההגדרות זמין במאמר יצירת קובץ הגדרות.
אחרי שמעדכנים את קובץ ההגדרות עם המאפיינים שקשורים ל-mTLS, מעתיקים אותו לכל הצמתים באשכול לפני שמפעילים את רכיב apigee-mtls
בצמתים האלה.
כדי לעדכן את קובץ ההגדרות:
- במחשב הניהול, פותחים את קובץ ההגדרות לעריכה.
- מעתיקים את קבוצת מאפייני ההגדרה הבאה של mTLS ומדביקים אותם בקובץ ההגדרות:
ALL_IP="ALL_PRIVATE_IPS_IN_CLUSTER" ZK_MTLS_HOSTS="ZOOKEEPER_PRIVATE_IPS" CASS_MTLS_HOSTS="CASSANDRA_PRIVATE_IPS" PG_MTLS_HOSTS="POSTGRES_PRIVATE_IPS" RT_MTLS_HOSTS="ROUTER_PRIVATE_IPS" MS_MTLS_HOSTS="MGMT_SERVER_PRIVATE_IPS" MP_MTLS_HOSTS="MESSAGE_PROCESSOR_PRIVATE_IPS" QP_MTLS_HOSTS="QPID_PRIVATE_IPS" LDAP_MTLS_HOSTS="OPENLDAP_PRIVATE_IPS" MTLS_ENCAPSULATE_LDAP="y" ENABLE_SIDECAR_PROXY="y" ENCRYPT_DATA="BASE64_GOSSIP_MESSAGE" PATH_TO_CA_CERT="PATH/TO/consul-agent-ca.pem" PATH_TO_CA_KEY="PATH/TO/consul-agent-ca-key.pem" APIGEE_MTLS_NUM_DAYS_CERT_VALID_FOR="NUMBER_OF_DAYS"
מגדירים את הערך של כל נכס כך שיתאים להגדרה.
בטבלה הבאה מתוארים מאפייני ההגדרה האלה:
נכס תיאור ALL_IP
רשימה של כתובות ה-IP של המארחים הפרטיים של כל הצמתים באשכול, מופרדות ברווחים. הסדר של כתובות ה-IP לא משנה, אבל הוא חייב להיות זהה בכל קובצי התצורה באשכול.
אם מגדירים Apigee mTLS עבור כמה מרכזי נתונים, צריך לפרט את כל כתובות ה-IP של כל המארחים בכל האזורים.
LDAP_MTLS_HOSTS
כתובת ה-IP הפרטית של המארח של צומת SymasLDAP באשכול. ZK_MTLS_HOSTS
רשימה של כתובות IP פרטיות של מארחים שמופרדות ברווחים, שבהן מתארחים צמתי ZooKeeper באשכול.
שימו לב: על סמך הדרישות, צריכים להיות לפחות שלושה צמתים של ZooKeeper.
CASS_MTLS_HOSTS
רשימה של כתובות IP של מארחים פרטיים שמופרדות ברווחים, שבהן מתארחים שרתי Cassandra באשכול. PG_MTLS_HOSTS
רשימה של כתובות IP של מארחים פרטיים שמופרדות ברווחים, שבהן מתארחים שרתי Postgres באשכול. RT_MTLS_HOSTS
רשימה מופרדת ברווחים של כתובות IP פרטיות של מארחים שבהם מתארחים נתבים באשכול. MTLS_ENCAPSULATE_LDAP
הצפנה של תעבורת LDAP בין מעבד ההודעות לשרת LDAP. ההגדרה היא y
.MS_MTLS_HOSTS
רשימה של כתובות IP פרטיות של מארחים שמופרדות ברווחים, שבהן מתארחים צמתי שרת הניהול באשכול. MP_MTLS_HOSTS
רשימה של כתובות IP של מארחים פרטיים שמופרדות ברווחים, שבהן מתארחים מעבדי ההודעות באשכול. QP_MTLS_HOSTS
רשימה מופרדת ברווחים של כתובות IP פרטיות של מארחים שבהם מתארחים שרתי Qpid באשכול. ENABLE_SIDECAR_PROXY
קובעת אם Cassandra ו-Postgres צריכות להיות מודעות לרשת השירותים. צריך להגדיר את הערך הזה כ-y.
ENCRYPT_DATA
מפתח ההצפנה בקידוד Base64 שמשמש את Consul. המפתח הזה נוצר באמצעות הפקודה consul keygen
בשלב 2: התקנת Consul ויצירת פרטי כניסה.הערך הזה חייב להיות זהה בכל הצמתים באשכול.
PATH_TO_CA_CERT
המיקום של קובץ האישור בצומת. יצרתם את הקובץ הזה בשלב 2: התקנה של Consul ויצירת פרטי כניסה. המיקום הזה צריך להיות זהה בכל הצמתים באשכול, כדי שקובצי ההגדרה יהיו זהים.
האישור חייב להיות בקידוד X509v3.
PATH_TO_CA_KEY
המיקום של קובץ המפתח בצומת. יצרתם את הקובץ הזה בשלב 2: התקנה של Consul ויצירת פרטי כניסה. המיקום הזה צריך להיות זהה בכל הצמתים באשכול, כדי שקובצי ההגדרה יהיו זהים.
קובץ המפתח חייב להיות בקידוד X509v3.
APIGEE_MTLS_NUM_DAYS_CERT_VALID_FOR
מספר הימים שהאישור תקף כשיוצרים אישור מותאם אישית.
ערך ברירת המחדל הוא 365. הערך המקסימלי הוא 7,865 ימים (5 שנים).
בנוסף למאפיינים שמופיעים למעלה, מערכת Apigee mTLS משתמשת בכמה מאפיינים נוספים כשמתקינים אותה בהגדרה של כמה מרכזי נתונים. מידע נוסף זמין במאמר בנושא הגדרת כמה מרכזי נתונים.
- מוודאים שהערך של
ENABLE_SIDECAR_PROXY
הוא y. - מעדכנים את כתובות ה-IP במאפיינים שקשורים למארח. חשוב להשתמש בכתובות ה-IP הפרטיות כשמתייחסים לכל צומת, ולא בכתובות ה-IP הציבוריות.
בשלבים הבאים תגדירו את הערכים של מאפיינים אחרים, כמו
ENCRYPT_DATA
,PATH_TO_CA_CERT
ו-PATH_TO_CA_KEY
. עדיין לא מגדירים את הערכים שלהם.כשעורכים את מאפייני ההגדרה
apigee-mtls
, חשוב לשים לב לנקודות הבאות:- כל המאפיינים הם מחרוזות. צריך להקיף את הערכים של כל המאפיינים במירכאות יחידות או כפולות.
- אם לערך שקשור למארח יש יותר מכתובת IP פרטית אחת, צריך להפריד בין כתובות ה-IP באמצעות רווח.
- משתמשים בכתובות IP פרטיות ולא בשמות מארחים או בכתובות IP ציבוריות לכל המאפיינים שקשורים למארח בקובץ ההגדרות.
- סדר כתובות ה-IP בערך של מאפיין צריך להיות זהה בכל קובצי ההגדרות באשכול.
- שומרים את השינויים בקובץ ההגדרות.
שלב 2: מתקינים את Consul ויוצרים פרטי כניסה
בקטע הזה מוסבר איך להתקין את Consul וליצור את פרטי הכניסה שמשמשים את הרכיבים עם mTLS.
צריך לבחור אחת מהשיטות הבאות כדי ליצור את פרטי הכניסה:
- (מומלץ) יוצרים רשות אישורים (CA) משלכם באמצעות Consul, כמו שמתואר בקטע הזה.
- שימוש בפרטי הכניסה של רשות אישורים קיימת עם Apigee mTLS (מתקדם)
מידע על פרטי הכניסה
פרטי הכניסה כוללים את הרכיבים הבאים:
- אישור: אישור ה-TLS
- מפתח: המפתח הציבורי של TLS
- הודעת Gossip: מפתח הצפנה בקידוד Base64
יוצרים גרסה אחת של כל אחד מהקבצים האלה, ורק פעם אחת. לאחר מכן מעתיקים את קובצי המפתח והאישור לכל הצמתים באשכול, ומוסיפים את מפתח ההצפנה לקובץ ההגדרות שגם אותו מעתיקים לכל הצמתים.
מידע נוסף על הטמעת ההצפנה ב-Consul:
התקנה של Consul ויצירה של פרטי כניסה
כדי ליצור פרטי כניסה ש-Apigee mTLS משתמש בהם לאימות תקשורת מאובטחת בין הצמתים באשכול Private Cloud, משתמשים בקובץ בינארי מקומי של Consul . לכן, צריך להתקין את Consul במכונת הניהול לפני שאפשר ליצור אישורים.
כדי להתקין את Consul וליצור פרטי כניסה ל-mTLS:
- במחשב הניהול, מורידים את הקובץ הבינארי של Consul 1.8.0 מהאתר של HashiCorp.
- מחלצים את התוכן של קובץ הארכיון שהורד. לדוגמה, חילוץ התוכן אל
/opt/consul/
. - במכונת הניהול, יוצרים רשות אישורים (CA) חדשה על ידי הפעלת הפקודה הבאה:
/opt/consul/consul tls ca create
Consul יוצר את הקבצים הבאים, שמהווים זוג מפתחות/אישורים:
consul-agent-ca.pem
(אישור)consul-agent-ca-key.pem
(מפתח)
כברירת מחדל, קובצי האישורים והמפתחות מקודדים ב-X509v3.
בהמשך תעתיקו את הקבצים האלה לכל הצמתים באשכול. אבל בשלב הזה, צריך רק להחליט איפה בצמתים תמקמו את הקבצים האלה. הם צריכים להיות באותו מיקום בכל צומת. לדוגמה,
/opt/apigee/
. - בקובץ ההגדרות, מגדירים את הערך של
PATH_TO_CA_CERT
למיקום שאליו תעתיקו את הקובץconsul-agent-ca.pem
בצומת. לדוגמה:PATH_TO_CA_CERT="/opt/apigee/consul-agent-ca.pem"
- מגדירים את הערך של
PATH_TO_CA_KEY
למיקום שאליו רוצים להעתיק את קובץconsul-agent-ca-key.pem
בצומת. לדוגמה:PATH_TO_CA_KEY="/opt/apigee/consul-agent-ca-key.pem"
- כדי ליצור מפתח הצפנה ל-Consul, מריצים את הפקודה הבאה:
/opt/consul/consul keygen
הפלט של Consul הוא מחרוזת אקראית שדומה לזו:
QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY=
- מעתיקים את המחרוזת שנוצרה ומגדירים אותה כערך של המאפיין
ENCRYPT_DATA
בקובץ ההגדרות. לדוגמה:ENCRYPT_DATA="
QbhgD+EXAMPLE+Y9u0742X
/IqX3X429/x1cIQ+JsQvY=" - שומרים את קובץ ההגדרות.
בדוגמה הבאה מוצגות ההגדרות שקשורות ל-mTLS בקובץ תצורה (עם ערכים לדוגמה):
... IP1=10.126.0.121 IP2=10.126.0.124 IP3=10.126.0.125 IP4=10.126.0.127 IP5=10.126.0.130 ALL_IP="$IP1 $IP2 $IP3 $IP4 $IP5" LDAP_MTLS_HOSTS="$IP3" ZK_MTLS_HOSTS="$IP3 $IP4 $IP5" CASS_MTLS_HOSTS="$IP3 $IP4 $IP5" PG_MTLS_HOSTS="$IP2 $IP1" RT_MTLS_HOSTS="$IP4 $IP5" MS_MTLS_HOSTS="$IP3" MP_MTLS_HOSTS="$IP4 $IP5" QP_MTLS_HOSTS="$IP2 $IP1" ENABLE_SIDECAR_PROXY="y" ENCRYPT_DATA="QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY=" PATH_TO_CA_CERT="/opt/apigee/consul-agent-ca.pem" PATH_TO_CA_KEY="/opt/apigee/consul-agent-ca-key.pem" ...
שלב 3: הפצת קובץ התצורה ופרטי הכניסה
מעתיקים את הקבצים הבאים לכל הצמתים באמצעות כלי כמו scp
:
- קובץ ההגדרות: מעתיקים את הגרסה המעודכנת של הקובץ הזה ומחליפים את הגרסה הקיימת בכל הצמתים (לא רק בצמתים שבהם פועל ZooKeeper).
- consul-agent-ca.pem: מעתיקים למיקום שצוין כערך של
PATH_TO_CA_CERT
בקובץ ההגדרות. - consul-agent-ca-key.pem: מעתיקים למיקום שצוין כערך של
PATH_TO_CA_KEY
בקובץ התצורה.
חשוב לוודא שהמיקומים שאליהם מעתיקים את קובצי האישור והמפתח תואמים לערכים שהגדרתם בקובץ ההגדרות בשלב 2: התקנת Consul ויצירת פרטי כניסה.
שלב 4: הפעלת apigee-mtls
אחרי שמתקינים את apigee-mtls
בכל צומת, מעדכנים את קובץ ההגדרות ומעתיקים אותו ואת פרטי הכניסה לכל הצמתים באשכול, אפשר לאתחל את הרכיב apigee-mtls
בכל צומת.
כדי לאתחל את apigee-mtls:
- מתחברים לצומת באשכול כמשתמש root. אפשר לבצע את השלבים האלה בצמתים בכל סדר שרוצים.
- הופכים את המשתמש
apigee:apigee
לבעלים של קובץ התצורה המעודכן, כמו בדוגמה הבאה:chown apigee:apigee config_file
- מגדירים את הרכיב
apigee-mtls
באמצעות הפקודה הבאה:/opt/apigee/apigee-service/bin/apigee-service apigee-mtls setup -f config_file
- (אופציונלי) מריצים את הפקודה הבאה כדי לוודא שההגדרה בוצעה בהצלחה:
/opt/apigee/apigee-mtls/lib/actions/iptables.sh validate
- מריצים את הפקודה הבאה כדי להפעיל את Apigee mTLS:
/opt/apigee/apigee-service/bin/apigee-service apigee-mtls start
אחרי שמתקינים את Apigee mTLS, צריך להפעיל את הרכיב הזה לפני כל רכיב אחר בצומת.
- (רק בצמתי Cassandra) כדי ש-Cassandra יפעל בתוך רשת האבטחה, צריך להוסיף לו ארגומנטים. לכן, צריך להריץ את הפקודות הבאות בכל צומת של Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra setup -f config_file
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- (רק לצמתי Postgres) כדי ש-Postgres יפעל בתוך רשת האבטחה, צריך להוסיף ארגומנטים. לכן, צריך לבצע את הפעולות הבאות בצמתי Postgres:
(Primary only)
- מריצים את הפקודות הבאות בצומת הראשי של Postgres:
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup -f config_file
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql configure
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart
(המתנה בלבד)
- מגבים את נתוני Postgres הקיימים. כדי להתקין את Apigee mTLS, צריך לאתחל מחדש את הצמתים הראשיים או את צמתי הגיבוי, ולכן יהיה אובדן נתונים. מידע נוסף זמין במאמר בנושא הגדרה של שכפול ראשי/המתנה ב-Postgres.
- מחיקה של כל הנתונים ב-Postgres:
rm -rf /opt/apigee/data/apigee-postgresql/pgdata
- מגדירים את Postgres ומפעילים מחדש את Postgres, כמו בדוגמה הבאה:
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup -f config_file
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql configure
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart
אם אתם מתקינים בטופולוגיה של כמה מרכזי נתונים, צריך להשתמש בנתיב מוחלט לקובץ ההגדרות.
- מריצים את הפקודות הבאות בצומת הראשי של Postgres:
- מפעילים את שאר רכיבי Apigee בצומת לפי סדר ההפעלה, כמו בדוגמה הבאה:
/opt/apigee/apigee-service/bin/apigee-service component_name start
- חוזרים על התהליך הזה לכל צומת באשכול.
- (אופציונלי) כדי לוודא שההפעלה הצליחה, משתמשים באחת או יותר מהשיטות הבאות:
- אימות ההגדרה של iptables
- אימות הסטטוס של שרת proxy מרוחק
- אימות סטטוס הקוורום
apigee-mtls
כל אחת מהשיטות האלה מתוארת במאמר אימות ההגדרות.
שינוי של הגדרת apigee-mtls קיימת
כדי להתאים אישית הגדרת apigee-mtls
קיימת, צריך להסיר את apigee-mtls
ולהתקין אותו מחדש. בנוסף, חשוב לוודא שההתאמה האישית חלה על כל הצמתים.
כדי להדגיש את הנקודה הזו, כשמשנים הגדרת mTLS קיימת ב-Apigee:
- אם משנים קובץ תצורה, צריך קודם להסיר את
apigee-mtls
ולהפעיל מחדש אתsetup
אוconfigure
:# DO THIS:
/opt/apigee/apigee-service/bin/apigee-service apigee-mtls uninstall
# BEFORE YOU DO THIS:/opt/apigee/apigee-service/bin/apigee-service apigee-mtls setup -f file
OR/opt/apigee/apigee-service/bin/apigee-service apigee-mtls configure
- צריך להסיר את
setup
או אתconfigure
ולהפעיל אותם מחדש בכל הצמתים באשכול, ולא רק בצומת אחד.