הגדרת mTLS של Apigee

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

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

בקטע הזה מוסבר איך להגדיר mTLS ב-Apigee מיד אחרי ההתקנה הראשונית. למידע על עדכון של התקנה קיימת של 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 בצמתים האלה.

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

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

  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 וליצור את פרטי הכניסה שמשמשים את הרכיבים עם mTLS.

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

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

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

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

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

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

מידע נוסף על הטמעת ההצפנה ב-Consul:

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

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

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

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

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

    (Primary only)

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