הגדרת mTLS של Apigee

Edge for Private Cloud v4.19.01

אחרי שמתקינים את הרכיב 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 שמתארח בכל צומת
  • הודעת רכילות: מפתח הצפנה בקידוד base-64

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

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

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

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

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

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

מעתיקים את הקבצים הבאים לצמתים שמריצים את ZooKeeper באמצעות כלי כמו 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:

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