הגדרת mTLS של Apigee

Edge for Private Cloud גרסה 4.19.01

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

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

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

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

  1. עדכון קובץ התצורה: במחשב הניהול מעדכנים את קובץ התצורה כך שיכלול את ההגדרות של apigee-mtls.
  2. Install 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 של מארחים פרטיים, שבהן מתארחים באשכול צמתים של גן החיות.

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

    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 צריכות להיות מודעים ל-Service mesh.

    חובה להגדיר את הערך הזה כ-"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 (אבטחת שכבת התעבורה) שמתארח בכל צומת
  • הודעת רכילות: מפתח הצפנה בקידוד base-64

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

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

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

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

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

  1. במחשב הניהול, מורידים את הקובץ הבינארי של Consul 1.6.2 מהאתר של HashiCorp.
  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: הפצת קובץ התצורה ופרטי הכניסה

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

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

כדי לחזור על הנקודה הזו, כשמשנים תצורה קיימת של Apigee mTLS:

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