הגדרת mTLS של Apigee

אחרי שמתקינים את הרכיב apigee-mtls בכל צומת באשכול, צריך להגדיר אותו ולאתחל אותו. כדי לעשות זאת, יוצרים זוג מפתחות/אישורים ומעדכנים את קובץ התצורה במחשב הניהול. לאחר מכן פורסים את אותם הקבצים שנוצרו לכל הצמתים באשכול ומאתחלים את הרכיב apigee-mtls המקומי.

הגדרת apigee-mtls (לאחר ההתקנה הראשונית)

בקטע הזה נסביר איך להגדיר את Apigee mTLS למרכז נתונים יחיד מיד אחרי ההתקנה הראשונית. למידע על עדכון של התקנה קיימת של Apigee mTLS, ראו שינוי של הגדרה קיימת של apigee-mtls. למידע נוסף על הגדרה של מספר מרכזי נתונים, ראו הגדרה של מספר מרכזי נתונים ל-Apigee mTLS.

התהליך הכללי להגדרת apigee-mtls:

  1. עדכון קובץ התצורה: במכונה לניהול, מעדכנים את קובץ התצורה כך שיכלול את ההגדרות של apigee-mtls.
  2. התקנה של Consul ויצירת פרטי כניסה: מתקינים את Consul ומשתמשים בו כדי ליצור את פרטי הכניסה ל-TLS (פעם אחת בלבד).

    בנוסף, עורכים את קובץ התצורה של Apigee mTLS כך:

    1. מוסיפים את פרטי הכניסה
    2. הגדרת הטופולוגיה של האשכול

    שימו לב שאפשר להשתמש בפרטי הכניסה הקיימים או ליצור אותם באמצעות Consul.

  3. הפצת קובץ התצורה ופרטי הכניסה: אם תיצרו את אותו זוג מפתח/אישור וקובץ התצורה המעודכן, תפיץ אותו לכל הצמתים באשכול.
  4. אתחול apigee-mtls: אתחול הרכיב apigee-mtls בכל צומת.

כל אחד מהשלבים האלה מתואר בקטעים הבאים.

שלב 1: מעדכנים את קובץ התצורה

בקטע הזה נסביר איך לשנות את קובץ התצורה כך שיכלול מאפייני תצורה של mTLS. מידע כללי נוסף על קובץ התצורה זמין במאמר יצירת קובץ תצורה.

אחרי שמעדכנים את קובץ התצורה במאפיינים שקשורים ל-mTLS, מעתיקים אותו לכל הצמתים באשכול לפני שמפעילים את הרכיב apigee-mtls בצמתים האלה.

פקודות שמפנות לקובץ התצורה משתמשות ב-config_file כדי לציין שהמיקום שלו משתנה, בהתאם למיקום שבו מאחסנים אותו בכל צומת.

כדי לעדכן את קובץ התצורה:

  1. פותחים את קובץ התצורה במכונה לניהול.
  2. מעתיקים את קבוצת מאפייני התצורה הבאים של 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 הפרטית של המארח של צומת OpenLDAP באשכול.
    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 בהגדרה עם כמה מרכזי נתונים, המערכת משתמשת במספר מאפיינים נוספים. מידע נוסף זמין במאמר הגדרה של כמה מרכזי נתונים.

  3. חשוב לוודא שהמאפיין ENABLE_SIDECAR_PROXY מוגדר ל-'y'.
  4. מעדכנים את כתובות ה-IP בנכסים שקשורים למארח. חשוב להשתמש בכתובות ה-IP הפרטיות כשמתייחסים לכל צומת, ולא בכתובות ה-IP הציבוריות.

    בשלבים הבאים מגדירים את הערכים של הנכסים האחרים, כמו ENCRYPT_DATA, PATH_TO_CA_CERT ו-PATH_TO_CA_KEY. עדיין לא הגדרתם את הערכים שלהם.

    כשעורכים את מאפייני התצורה של apigee-mtls, חשוב לשים לב לדברים הבאים:

    • כל המאפיינים הם מחרוזות. צריך לתחום את הערכים של כל המאפיינים במירכאות יחידות או במירכאות כפולות.
    • אם לערך שקשור למארח יש יותר מכתובת IP פרטית אחת, צריך להפריד בין כתובות ה-IP באמצעות רווח.
    • משתמשים בכתובות IP פרטיות ולא בשמות מארחים או בכתובות IP ציבוריות לכל המאפיינים שקשורים למארח בקובץ התצורה.
    • הסדר של כתובות ה-IP בערך המאפיין צריך להיות זהה בכל קבצי התצורה באשכול.
  5. שומרים את השינויים בקובץ התצורה.

שלב 2: התקנה של Consul ויצירת פרטי כניסה

בקטע הזה מוסבר איך להתקין את Consul וליצור פרטי כניסה.

כדי ליצור פרטי כניסה, צריך לבחור באחת מהשיטות הבאות:

  • ליצור רשות אישורים משלכם באמצעות Consul, כפי שמתואר בקטע הזה (מומלץ)
  • שימוש בפרטי הכניסה של רשות אישורים קיימת עם Apigee mTLS (מתקדם)

מידע על פרטי הכניסה

פרטי הכניסה כוללים את הפרטים הבאים:

  • אישור: אישור ה-TLS שמתארח בכל צומת
  • מפתח: המפתח הציבורי של TLS שמתארח בכל צומת
  • הודעה ב-Gossip: מפתח הצפנה בקידוד Base-64

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

למידע נוסף על הטמעת ההצפנה של Consul, קראו את המאמרים הבאים:

התקנת Consul ויצירת פרטי כניסה

משתמשים בקובץ הבינארי המקומי של Consul כדי ליצור פרטי כניסה שבהם Apigee mTLS משתמש כדי לאמת תקשורת מאובטחת בין הצמתים באשכול הענן הפרטי. לכן, צריך להתקין את Consul במכונה לניהול לפני שאפשר ליצור פרטי כניסה.

כדי להתקין את Consul וליצור פרטי כניסה ל-mTLS:

  1. למכונת הניהול, מורידים את הקובץ הבינארי של Consul 1.6.2 מאתר HasiCorp.
  2. מחלצים את התוכן של קובץ הארכיון שהורדתם. לדוגמה, לחלץ את התוכן אל /opt/consul/.
  3. במכונה לניהול, יוצרים רשות אישורים (CA) חדשה על ידי הפעלת הפקודה הבאה:
    /opt/consul/consul tls ca create

    Consul יוצר את הקבצים הבאים, שהם זוג אישור/מפתח:

    • consul-agent-ca.pem (אישור)
    • consul-agent-ca-key.pem (מפתח)

    כברירת מחדל, קובצי האישורים והמפתחות מקודדים ב-X509v3.

    בהמשך תעתיקו את הקבצים האלה לכל הצמתים באשכול. עם זאת, בשלב הזה צריך להחליט רק איפה בצמתים תציבו את הקבצים האלה. הם צריכים להיות באותו מיקום בכל צומת. לדוגמה, /opt/apigee/.

  4. בקובץ התצורה, מגדירים את הערך של PATH_TO_CA_CERT למיקום שאליו מעתיקים את הקובץ consul-agent-ca.pem בצומת. לדוגמה:
    PATH_TO_CA_CERT="/opt/apigee/consul-agent-ca.pem"
  5. מגדירים את הערך של PATH_TO_CA_KEY למיקום שאליו מעתיקים את הקובץ consul-agent-ca-key.pem בצומת. לדוגמה:
    PATH_TO_CA_KEY="/opt/apigee/consul-agent-ca-key.pem"
  6. כדי ליצור מפתח הצפנה ל-Consul, מריצים את הפקודה הבאה:
    /opt/consul/consul keygen

    Consul יוצר מחרוזת אקראית שנראית כך:

    QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY=
  7. מעתיקים את המחרוזת ומגדירים אותה כערך של המאפיין ENCRYPT_DATA בקובץ התצורה. לדוגמה:
    ENCRYPT_DATA="QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY="
  8. שומרים את קובץ התצורה.

בדוגמה הבאה מוצגות ההגדרות שקשורות ל-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: הפצת קובץ התצורה ופרטי הכניסה

מעתיקים את הקבצים הבאים לצמתים שמריצים את ZooKeeper באמצעות כלי כמו scp:

  • קובץ התצורה: מעתיקים את הגרסה המעודכנת של הקובץ הזה ומחליפים את הגרסה הקיימת בכל הצמתים (לא רק בצמתים שבהם פועלת זואושמירה).
  • 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:

  1. מתחברים לצומת באשכול בתור משתמש root. אפשר לבצע את השלבים האלה בצמתים בסדר הרצוי.
  2. הופכים את המשתמש apigee:apigee לבעלים של קובץ התצורה המעודכן, כפי שמתואר בדוגמה הבאה:
    chown apigee:apigee config_file
  3. מגדירים את הרכיב apigee-mtls על ידי הפעלת הפקודה הבאה:
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls setup -f config_file
  4. (אופציונלי) מריצים את הפקודה הבאה כדי לוודא שההגדרה בוצעה בהצלחה:
    /opt/apigee/apigee-mtls/lib/actions/iptables.sh validate
  5. מפעילים את Apigee mTLS באמצעות הפקודה הבאה:
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls start

    אחרי שמתקינים את Apigee mTLS, צריך להפעיל את הרכיב הזה לפני רכיבים אחרים בצומת.

  6. (לצומתי 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
  7. (צמתים של Postgres בלבד) כדי ש-Postgres יפעל במסגרת רשת האבטחה, נדרשים עוד ארגומנטים. כתוצאה מכך, צריך לבצע את הפעולות הבאות בצמתים של Postgres:

    (בחשבון הניהול בלבד)

    1. מריצים את הפקודות הבאות בצומת המאסטר של 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

    (למצב המתנה בלבד)

    1. מגבים את הנתונים הקיימים ב-Postgres. כדי להתקין את Apigee mTLS, צריך לאתחל מחדש את הצמתים הראשיים/החלופיים, כך שיהיה אובדן נתונים. מידע נוסף זמין במאמר הגדרת רפליקציית מאסטר/המתנה ל-Postgres.
    2. מחיקת כל נתוני Postgres:
      rm -rf /opt/apigee/data/apigee-postgresql/pgdata
    3. מגדירים את 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

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

  8. מתחילים את שאר רכיבי Apigee בצומת בסדר ההתחלה, כפי שמוצג בדוגמה הבאה:
    /opt/apigee/apigee-service/bin/apigee-service component_name start
  9. חוזרים על התהליך הזה לכל צומת באשכול.
  10. (אופציונלי) מוודאים שההפעלה של apigee-mtls בוצעה בהצלחה באמצעות אחת או יותר מהשיטות הבאות:
    1. אימות ההגדרה של iptables
    2. אימות הסטטוס של שרת ה-proxy המרוחק
    3. אימות סטטוס הרוב

    כל אחת מהשיטות האלה מתוארת בקטע אימות ההגדרות.

שינוי של הגדרה קיימת של 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 להריץ אותם מחדש בכל הצמתים באשכול, ולא רק בצומת אחד.