הפעלת אימות קסנדרה

כברירת מחדל, Cassandra מותקנת בלי אימות. המשמעות היא שכל אחד יכול לגשת ל-Cassandra. אפשר להפעיל אימות אחרי ההתקנה של Edge, או כחלק מתהליך ההתקנה.

אפשר להוסיף, להסיר ולשנות תפקידים באמצעות הצהרות Cassandra CREATE/ALTER/DROP ROLES. למידע נוסף, קראו את המאמרים הבאים:

שיקולים כלליים

  • ברגע שמפעילים את האימות של Cassandra, נוצר אוטומטית משתמש סופר cassandra (עם הסיסמה cassandra) כברירת מחדל על ידי Cassandra. זהו משתמש-על מוכר, ואסור להשתמש בו לצורכי ייצור. בנוסף, כדי לבצע אימות באמצעות משתמש העל הזה, צריך להשיג עקביות של קוורום. לכן, כל החיבורים ל-Cassandra שמאומתים דרך המשתמש הזה דורשים עקביות מחמירה יותר, וכתוצאה מכך הביצועים איטיים יותר ופחות עמידים בכשלים.
  • תהליך עבודה אופייני יכלול הפעלה של אימות ב-Cassandra תוך העברת שם משתמש וסיסמה בהתאמה אישית דרך קובץ התצורה. כך ייצרו משתמש וסיסמה בהתאמה אישית שתוכלו להשתמש בהם בבטחה לצרכים שלכם, ואימות באמצעות משתמשים כאלה לא כפוף להגבלות של עקביות קוורום.
  • חשוב לזכור שגם אם נוצר משתמש בהתאמה אישית, Cassandra עדיין יוצר את משתמש העל cassandra כברירת מחדל, ואפשר לגשת לאשכול Cassandra דרך משתמש העל. בדרך כלל, צריך להשתמש בפקודה ALTER ROLE כדי לשנות את הסיסמה של המשתמש cassandra למשהו אחר, ולא להשאיר את ברירת המחדל cassandra, אחרי שהאימות של Cassandra הופעל בהצלחה באופן גורף ב-Apigee. כדאי לשמור את הסיסמה הזו למקרה הצורך.
  • אל תשנו את הסיסמה של התפקיד שרכיבי edge-* משתמשים בו לאימות, כי זה יגרום להפרעה בשירות באופן מיידי. במקום זאת, צריך ליצור משתמש חדש, לשנות את הרכיבים של edge-*‎ כדי להשתמש במשתמש החדש, ובסיום, להסיר את המשתמש הישן באמצעות הפקודה DROP ROLE.
  • כדי לשנות את התפקיד שמשמש את רכיבי edge-*‎ לאימות Cassandra, פועלים לפי השלבים הבאים:
    1. פועלים לפי השלבים בקטע הפעלת אימות כדי ליצור משתמש חדש. שימו לב: אם האימות כבר מופעל באשכול ושיניתם את הסיסמה של המשתמש cassandra, תצטרכו להעביר שילוב של שם משתמש וסיסמה של משתמש קיים דרך CASS_EXISTING_USERNAME ו-CASS_EXISTING_PASSWORD.
    2. בסיום, מאמתים באמצעות cqlsh שאפשר להתחבר ל-Cassandra גם דרך המשתמש הישן וגם דרך המשתמש החדש.
    3. מגדירים את כל רכיבי edge-*‎ כך שישתמשו במשתמש החדש שנוצר כדי להתחבר ל-Cassandra. לשם כך, פועלים לפי ההוראות במאמר עדכון רכיבי Edge שמתחברים ל-Cassandra.
    4. לבסוף, אחרי שכל הרכיבים משתמשים במשתמש החדש כדי לתקשר עם Cassandra, אפשר להסיר את המשתמש הישן באמצעות הפקודה DROP ROLE. חשוב לזכור שלא צריך למחוק את תפקיד ברירת המחדל cassandra. אתם יכולים להסיר תפקידים בהתאמה אישית שלא נמצאים בשימוש ברכיבי edge-* כדי לתקשר עם Cassandra.
  • חשוב לזכור לעדכן את שם המשתמש והסיסמה הפונקציונליים של Cassandra בקובץ ההגדרות שבו משתמשים להתקנה או לשדרוג של רכיבי Edge. כך אפשר למנוע או לצמצם שיבושים במהלך פעולות קצה.

הפעלת אימות Cassandra במהלך ההתקנה

אפשר להפעיל אימות של Cassandra בזמן ההתקנה.

כדי להפעיל אימות של Cassandra בזמן ההתקנה, צריך לכלול את המאפיין CASS_AUTH בקובץ התצורה של כל הצמתים של Cassandra:

CASS_AUTH=y # The default value is n.

רכיבי Edge הבאים ניגשים ל-Cassandra:

  • שרת ניהול
  • מעבדי הודעות
  • נתבים
  • שרתי Qpid
  • שרתי Postgres

כשמתקינים את הרכיבים האלה, צריך להגדיר שם משתמש וסיסמה בקובץ התצורה:

CASS_USERNAME=cassandra_username
CASS_PASSWORD=cassandra_password

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

כדי לשנות את פרטי הכניסה של Cassandra אחרי ההתקנה של Cassandra:

  1. מתחברים לאחד מ-Cassandra nodes באמצעות הכלי cqlsh ופרטי ברירת המחדל. צריך לשנות את הסיסמה רק בצומת אחד, והיא תועבר לכל צומתי Cassandra בטבעת:
    /opt/apigee/apigee-cassandra/bin/cqlsh cassIP 9042 -u cassandra_username -p cassandra_password

    כאשר:

    1. ‫cassIP היא כתובת ה-IP של צומת Cassandra.
    2. ‫9042 היא יציאת ברירת המחדל של Cassandra.
  2. מריצים את הפקודה הבאה בשורת הפקודה<cqlsh כדי לעדכן את הסיסמה:
    ALTER ROLE <username> WITH PASSWORD='';
  3. יוצאים מהכלי cqlsh, כמו בדוגמה הבאה:
    exit
  4. אם עדיין לא התקנתם את שרת הניהול, מעבדי ההודעות, נתבים, שרתי Qpid או שרתי Postgres, צריך להגדיר את המאפיינים הבאים בקובץ התצורה ואז להתקין את הרכיבים האלה:
    CASS_USERNAME=cassandra_username
    CASS_PASSWORD=new_cassandra_password
  5. אם כבר התקנתם את שרת הניהול, מעבדי הבקשות, הנתבים, שרתי Qpid או שרתי Postgres, עיינו במאמר איפוס סיסמאות Edge כדי לראות איך לעדכן את הרכיבים האלה כך שישתמשו בסיסמה החדשה.

הפעלת אימות ב-Cassandra אחרי ההתקנה

כדי להפעיל אימות אחרי התקנה:

עדכון רכיבי Edge שמתחברים ל-Cassandra

כדי לעדכן את כל רכיבי Edge שמתקשרים עם Cassandra בפרטי הכניסה החדשים, צריך לבצע את הפעולות הבאות. שימו לב שאתם מבצעים את השלב הזה לפני שאתם מעדכנים את פרטי הכניסה של Cassandra:

  1. בצומת Management Server, מריצים את הפקודה הבאה:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server
      store_cassandra_credentials -u cassandra_username -p cassandra_password

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

    apigee-service edge-management-server store_cassandra_credentials  -f configFile

    כאשר הפרמטר configFile מכיל את הפרטים הבאים:

    CASS_USERNAME=cassandra_username # Default is cassandra
    CASS_PASSWORD='cassandra_password' # Default is cassandra; wrap in single quotes if it includes special chars

    הפקודה הזו מפעילה מחדש באופן אוטומטי את שרת הניהול.

  2. חוזרים על שלב 1 לכל אחד מהשירותים הבאים:
    • כל מעבדי הבקשות
    • כל הנתבים
    • כל שרתי Qpid‏ (edge-qpid-server)
    • שרתי Postgres ‏ (edge-postgres-server)

    כשחוזרים על שלב 1 לכל שירות, מחליפים את edge-management-server בפקודה שלמעלה בשם השירות המתאים. לדוגמה, כשמבצעים את השלב בשירות Router, משתמשים בפקודה הבאה:

    /opt/apigee/apigee-service/bin/apigee-service edge-router
      store_cassandra_credentials -u cassandra -p cassandra

הפעלת האימות

כדי להפעיל את האימות של Cassandra ולהגדיר את שם המשתמש והסיסמה:

  1. יוצרים קובץ תצורה שקט עם התוכן שמוצג בהמשך:
    # Specify IP address or DNS name of cassandra node
    IP1=192.168.1.1
    IP2=192.168.1.2
    IP3=192.168.1.3
    # Must resolve to IP address or DNS name of host
    HOSTIP=$(hostname -i)
    # Set to ‘y’ to enable Cassandra authentication.
    CASS_AUTH=y # Possible values are ‘y/n’
    # Cassandra username. If it does not exist, this user would be created as a SUPERUSER
    CASS_USERNAME=cassandra_username # Default value is cassandra - don't use for production
    # Cassandra Password. If CASS_USERNAME does not exist, create SUPERUSER with this as password
    CASS_PASSWORD=cassandra_password # Default value is cassandra - don't use for production
    # Space-separated IP/DNS names of the Cassandra hosts
    CASS_HOSTS="$IP1:1,1 $IP2:1,1 $IP3:1,1"
    
    # Username of an existing C* user. Only needed if you have disabled or changed details of the default cassandra user(‘cassandra’)
    CASS_EXISTING_USERNAME=existing_cassandra_username
    # Password of an existing C* user. Only needed if you have disabled or change password of the default cassandra user(‘cassandra’)
    CASS_EXISTING_PASSWORD=existing_cassandra_password
    # Cassandra port
    CASS_PORT=9042 # The default port is 9042.
  2. מתחברים לצומת הראשון של Cassandra ומריצים את הפקודה הבאה:

    apigee-service apigee-cassandra enable_cassandra_authentication -f CONFIG

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

    CASS_AUTH=y HOSTIP=$(hostname -i) CASS_PORT=9042 CASS_EXISTING_USERNAME=existing_cassandra_username CASS_EXISTING_PASSWORD=existing_cassandra_password CASS_USERNAME=cassandra_username CASS_PASSWORD=cassandra_password  CASS_HOSTS="192.168.1.1:1,1 192.168.1.2:1,1 192.168.1.3:1,1" apigee-service apigee-cassandra enable_cassandra_authentication

    הערות:

    • במקרה של פרטי כניסה שמוגדרים כברירת מחדל ב-Cassandra, הפקודה שלמעלה מפעילה את האימות של Cassandra ומפעילה מחדש את Cassandra.
    • במקרה של פרטי כניסה שאינם ברירת מחדל, הפקודה גם משנה את גורם השכפול, יוצרת משתמש על ומריצה תיקון ב-system_auth keyspace.
  3. חוזרים על שלבים 1 ו-2 בכל צומתי Cassandra.