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

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

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

כמה שיקולים כלליים

  • ברגע שמפעילים את האימות ב-Cassandra, המערכת יוצרת באופן אוטומטי סופר-משתמש ברירת מחדל בשם cassandra (עם הסיסמה cassandra). זהו סופר-משתמש ידוע, ואין להשתמש בו לצרכים שלכם בסביבת הייצור. בנוסף, אימות באמצעות סופר-המשתמש הזה מחייב עקביות של кворум. לכן, כל החיבורים ל-Cassandra שמתבצע בהם אימות באמצעות המשתמש הזה דורשים עקביות מחמירה יותר, וכתוצאה מכך הביצועים איטיים יותר וקשה יותר לעמוד בתנאי העבודה שלהם.
  • תהליך עבודה טיפוסי יכלול הפעלת אימות ב-Cassandra תוך העברת שם משתמש וסיסמה בהתאמה אישית דרך קובץ התצורה. הפעולה הזו תיצור את המשתמש והסיסמה המותאמים אישית, שבהם תוכלו להשתמש בבטחה לצרכים שלכם. לאימות באמצעות משתמשים כאלה אין הגבלות על עקביות кворум.
  • חשוב לזכור שגם אם יצרתם משתמש מותאם אישית, Cassandra עדיין יוצרת את סופר המשתמש cassandra שמוגדר כברירת מחדל, וניתן לגשת לאשכולות Cassandra דרך סופר המשתמש. בדרך כלל, אחרי שמפעילים את אימות Cassandra בכל מקום ב-Apigee, צריך להשתמש בפקודה ALTER ROLE כדי לשנות את הסיסמה של המשתמש cassandra למשהו שאינו cassandra שמוגדרת כברירת מחדל. חשוב לשמור את הסיסמה הזו לשימוש עתידי.
  • אין לשנות את הסיסמה של התפקיד שבו נעשה שימוש על ידי רכיבי 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 אחרי שתתקינו את Cassandra. עם זאת, אם כבר התקנתם את שרת הניהול, מעבדי ההודעות, הנתב, שרתי Qpid או שרתי Postgres, תצטרכו לעדכן גם את הרכיבים האלה כדי להשתמש בפרטי הכניסה החדשים.

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

  1. מתחברים לצומת אחד של Cassandra באמצעות הכלי cqlsh ופרטי הכניסה שמוגדרים כברירת מחדל. צריך לשנות את הסיסמה רק בצומת אחד, והיא תשודר לכל הצמתים של Cassandra ב-ring:
    /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. בצומת של שרת הניהול, מריצים את הפקודה הבאה:
    /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.