שילוב של Atlassian Confluence Server עם Google SecOps

במאמר הזה מוסבר איך לשלב את Atlassian Confluence Server עם Google Security Operations ‏ (Google SecOps).

דרישות מוקדמות

כדי לאמת את שרת Confluence, בוחרים אחת מהאפשרויות הבאות:

  • שם המשתמש והסיסמה של חשבון ייעודי.
  • טוקן הגישה האישי (PAT).

אם שתי אפשרויות האימות מסופקות לשילוב, ל-PAT יש עדיפות על פני שם המשתמש והסיסמה.

כדי לבצע אימות על סמך שם משתמש וסיסמה, צריך ליצור חשבון ייעודי שישמש לשילוב.
כדי לבצע אימות על סמך אסימון הגישה, צריך להגדיר את הרשאות החשבון. אחרי שיוצרים את ה-PAT החדש, הוא יתאים לרמת ההרשאה הנוכחית של החשבון.

כדי ליצור טוקן:

  1. ב-Confluence, עוברים אל Account > Account settings > Personal access tokens (חשבון > הגדרות חשבון > טוקני גישה אישיים).
  2. לוחצים על יצירת טוקן.
  3. נותנים שם לטוקן שיוצרים.
  4. (אופציונלי) כדי לשפר את האבטחה, אתם יכולים להגדיר שהאסימון יפוג באופן אוטומטי אחרי מספר ימים מסוים.
  5. לוחצים על יצירה.

פרמטרים של שילוב

השילוב דורש את הפרמטרים הבאים:

שם הפרמטר סוג ערך ברירת המחדל חובה תיאור
הרמה הבסיסית (root) של ה-API String https://ip_address True מציינים את ה-API Root של שרת Confluence שאליו רוצים להתחבר.
שם משתמש String לא רלוונטי לא נכון מציינים שם משתמש לחיבור. השילוב תומך באימות באמצעות שם משתמש וסיסמה או טוקן גישה אישי.
סיסמה סיסמה לא רלוונטי לא נכון מציינים סיסמה לשימוש בחיבור. השילוב תומך באימות באמצעות שם משתמש וסיסמה או טוקן גישה אישי.
טוקן גישה אישי סיסמה לא רלוונטי לא נכון מציינים את הטוקן שבו רוצים להשתמש לחיבור. השילוב תומך באימות באמצעות שם משתמש וסיסמה או טוקן גישה אישי.
אימות SSL תיבת סימון תיבת הסימון סומנה לא נכון אם המדיניות מופעלת, האישור שהוגדר לשורש ה-API מאומת.

איך מגדירים שילובים ב-Google SecOps

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

פעולות

מידע נוסף על פעולות זמין במאמרים מענה לפעולות בהמתנה משולחן העבודה והפעלה ידנית של פעולה בבקשת התמיכה.

פינג

בודקים את הקישוריות.

פרמטרים

לא רלוונטי

הפעלה ב-

הפעולה לא פועלת על ישויות.

תוצאות הפעולה

תוצאת הסקריפט
שם תוצאת הסקריפט אפשרויות לערכים דוגמה
is_success נכון/לא נכון is_success:False

אם הפעולה בוצעה בהצלחה (יש JSON בתגובה ותגובת השרת היא 200), צריך להגדיר את is_success לערך True. אחרת, False.

קיר נרתיק הטעינה
סוג התוצאות ערך/תיאור סוג (ישות/כללי)
הודעת פלט* הפעולה לא אמורה להיכשל או להפסיק את ההפעלה של הפלייבוק:
  • אם החיבור הצליח:
    הדפסת ההודעה "Successfully connected to the Atlassian Confluence Server instance with the provided connection parameters!‎"
  • אם צוינו גם שם משתמש וסיסמה וגם PAT:
    "גם שם משתמש וסיסמה וגם טוקן גישה אישי סופקו עבור האינטגרציה, טוקן הגישה האישי ישמש להתחברות עם"

הפעולה אמורה להיכשל ולעצור את ההפעלה של הפלייבוק:
  • אם לא צוינו גם (שם משתמש+סיסמה) וגם PAT:
    print "Failed to connect to Atlassian Confluence Server, expecting either username and password, or personal access token to connect with!"‎
  • אם יש שגיאה קריטית, כמו פרטי כניסה שגויים או אובדן קישוריות:
    print "Failed to connect to the Atlassian Confluence Server instance! השגיאה היא {0}".format(exception.stacktrace)
כללי

דפי רשימה

הצגת רשימה של דפים שזמינים במופע של Atlassian Confluence Server על סמך הקריטריונים שצוינו.

פרמטרים

שם הפרמטר סוג ערך ברירת המחדל חובה תיאור
מפתח סינון DDL בוחרים אפשרות אחת

ערכים אפשריים של DDL:
  • כותרת
  • שם המרחב
  • סטטוס
לא נכון מציינים את המפתח שצריך להשתמש בו כדי לסנן דפים.
לוגיקת הסינון DDL לא צוין

ערכים אפשריים של DDL:
  • לא צוינה
  • שווה
  • מכיל
לא נכון מציינים את לוגיקת הסינון שרוצים להחיל. לוגיקת הסינון פועלת על סמך הערך שצוין בפרמטר Filter Key.
ערך המסנן String לא רלוונטי לא נכון מציינים באיזה ערך להשתמש במסנן.
אם בוחרים באפשרות Equal, הפעולה מנסה למצוא את ההתאמה המדויקת בין התוצאות.
אם בוחרים באפשרות Contains, הפעולה מנסה למצוא תוצאות שמכילות את מחרוזת המשנה הזו.
אם לא מציינים ערך בפרמטר הזה, המסנן לא יופעל.
לוגיקת הסינון פועלת על סמך הערך שצוין בפרמטר Filter Key.
מספר הרשומות המקסימלי להחזרה Int 50 לא נכון מציינים כמה רשומות להחזיר.
אם לא מציינים ערך, הפעולה מחזירה 50 רשומות.

הפעלה ב-

הפעולה לא פועלת על ישויות.

תוצאות הפעולה

תוצאת הסקריפט
שם תוצאת הסקריפט אפשרויות לערכים דוגמה
is_success נכון/לא נכון is_success:False

אם הפעולה בוצעה בהצלחה (לא הוחזרו שגיאות, תגובת השרת היא 200 OK), הערך של is_success צריך להיות True.

תוצאת JSON
{
   "results": [
       {
           "id": "PAGE_ID",
           "type": "page",
           "status": "current",
           "title": "Tell people what you think in a comment (step 8 of 9)",
           "space": {
               "id": 131073,
               "key": "ds",
               "name": "Demonstration Space",
               "type": "global",
               "_links": {
                   "webui": "/display/ds",
                   "self": "http://192.0.2.45:8090/rest/api/space/ds"
               },
               "_expandable": {
                   "metadata": "",
                   "icon": "",
                   "description": "",
                   "retentionPolicy": "",
                   "homepage": "/rest/api/content/PAGE_ID"
               }
           },
           "extensions": {
               "position": 7
           },
           "_links": {
               "webui": "/pages/viewpage.action?pageId=PAGE_ID",
               "edit": "/pages/resumedraft.action?draftId=DRAFT_ID",
               "tinyui": "/x/AYAB",
               "self": "http://192.0.2.45:8090/rest/api/content/PAGE_ID"
           },
           "_expandable": {
               "container": "/rest/api/space/ds",
               "metadata": "",
               "operations": "",
               "children": "/rest/api/content/PAGE_ID/child",
               "restrictions": "/rest/api/content/PAGE_ID/restriction/byOperation",
               "history": "/rest/api/content/PAGE_ID/history",
               "ancestors": "",
               "body": "",
               "version": "",
               "descendants": "/rest/api/content/PAGE_ID/descendant"
           }
       },
       ...
   ],
   "start": 0,
   "limit": 5,
   "size": 5,
   "_links": {
       "self": "http://192.0.2.45:8090/rest/api/content?expand=space",
       "next": "/rest/api/content?expand=space&limit=5&start=5",
       "base": "http://192.0.2.45:8090",
       "context": ""
   }
}
קיר נרתיק הטעינה
סוג התוצאות ערך/תיאור סוג (ישות/כללי)
הודעת פלט* הפעולה לא אמורה להיכשל או להפסיק את ההפעלה של הפלייבוק:

  • אם הנתונים זמינים(is_success = true):
print "Successfully found pages for the provided criteria in Atlassian Confluence Server".

  • אם הנתונים לא זמינים (is_success=false)
print "No pages were found for the provided criteria in Atlassian Confluence Server"

  • אם השדה "ערך הסינון" ריק (is_success=true):
המסנן לא הופעל כי הפרמטר "ערך המסנן" ריק.

הפעולה אמורה להיכשל ולעצור את ההפעלה של הפלייבוק:

  • אם מפתח המסנן == "בחירת אפשרות אחת" ולוגיקת המסנן היא "שווה ל-" או "מכיל":
הייתה שגיאה בביצוע הפעולה "{action name}". הסיבה: צריך לבחור שדה מהפרמטר Filter Key.

  • אם צוין ערך לא חוקי בשדה "מספר הרשומות המקסימלי להחזרה":
הייתה שגיאה בביצוע הפעולה "{action name}". סיבה: "צוין ערך לא חוקי בשדה 'מספר הרשומות המקסימלי להחזרה': <הערך שצוין>. צריך לציין מספר חיובי".

  • אם יש שגיאה חמורה, כמו פרטי כניסה שגויים, אין חיבור לשרת או בעיה אחרת:
"שגיאה בהפעלת הפעולה "{action name}". הסיבה: {0}''.format(error.Stacktrace)

  • אם לא מספקים שם משתמש וסיסמה וגם לא PAT:
print "Failed to connect to Atlassian Confluence Server, expecting either username and password, or personal access token to connect with!"‎
כללי
שולחן קיר עם ויטרינה שם: דפי Confluence זמינים
עמודות:
  • מזהה
  • כותרת
  • רווח
  • סטטוס
  • נוצר
כללי

אחזור דף לפי מזהה

קבלת דף של Atlassian Confluence Server לפי מזהה.

פרמטרים

שם הפרמטר סוג ערך ברירת המחדל חובה תיאור
מזהה דף String לא רלוונטי True מציינים את מזהה הדף שרוצים להחזיר.
הרחבה CSV body.storage לא נכון ציינו את הפרמטר expand כדי לקבל מידע נוסף על הדף. הפרמטר מקבל כמה ערכים כרשימה מופרדת בפסיקים.
כברירת מחדל, תוכן הדף מאוחזר באמצעות body.storage.

הפעלה ב-

הפעולה לא פועלת על ישויות.

תוצאות הפעולה

תוצאת הסקריפט
שם תוצאת הסקריפט אפשרויות לערכים דוגמה
is_success נכון/לא נכון is_success:False

אם הפעולה פועלת בהצלחה (הדף מוחזר, תגובת השרת היא 200 OK), צריך להגדיר את is_success לערך True.

תוצאת JSON
{
   "id": "PAGE_ID",
   "type": "page",
   "status": "current",
   "title": "title",
   "body": {
       "storage": {
           "value": "<p>test page</p><p>11</p><p>aa</p><p>aa</p><p>aa</p><p><br /></p><p><br /></p>",
           "representation": "storage",
           "_expandable": {
               "content": "/rest/api/content/PAGE_ID"
           }
       },
       "_expandable": {
           "editor": "",
           "view": "",
           "export_view": "",
           "styled_view": "",
           "anonymous_export_view": ""
       }
   },
   "extensions": {
       "position": "none"
   },
   "_links": {
       "webui": "/display/SIEM/111",
       "edit": "/pages/resumedraft.action?draftId=PAGE_ID&draftShareId=cf8b3a21-8e36-4a83-a696-51fcb4428d1c",
       "tinyui": "/x/TIAB",
       "collection": "/rest/api/content",
       "base": "http://192.0.2.45:8090",
       "context": "",
       "self": "http://192.0.2.45:8090/rest/api/content/PAGE_ID"
   },
   "_expandable": {
       "container": "/rest/api/space/SIEM",
       "metadata": "",
       "operations": "",
       "children": "/rest/api/content/PAGE_ID/child",
       "restrictions": "/rest/api/content/PAGE_ID/restriction/byOperation",
       "history": "/rest/api/content/PAGE_ID/history",
       "ancestors": "",
       "version": "",
       "descendants": "/rest/api/content/PAGE_ID/descendant",
       "space": "/rest/api/space/SIEM"
   }
}
קיר נרתיק הטעינה
סוג התוצאות ערך/תיאור סוג (ישות/כללי)
הודעת פלט* הפעולה לא אמורה להיכשל או להפסיק את ההפעלה של הפלייבוק:

  • אם הדף נמצא (is_success = true):
print "Successfully fetched page information with id: <id>"

  • אם הנתונים לא זמינים (is_success=false):
print "The following page id was not found in the Atlassian Confluence Server: <page id>"

הפעולה אמורה להיכשל ולעצור את ההפעלה של הפלייבוק:

  • אם יש שגיאה חמורה, כמו פרטי כניסה שגויים, אין חיבור לשרת או בעיה אחרת:
"Error executing action "<Action name>". Reason: {0}''.format(error.Stacktrace)

  • אם לא מספקים שם משתמש + סיסמה וגם לא PAT:
print "Failed to connect to Atlassian Confluence Server, expecting either username and password, or personal access token to connect with!"‎
כללי

אחזור דפי משנה

קבלת דפי צאצא של דף Atlassian Confluence Server.

פרמטרים

שם הפרמטר סוג ערך ברירת המחדל חובה תיאור
מזהה דף String לא רלוונטי True מציינים את מזהה הדף שרוצים להחזיר.
מספר הרשומות המקסימלי שיוחזרו Int 10 True מציינים את המגבלה של דפי המשנה שיוחזרו.

הפעלה ב-

הפעולה לא פועלת על ישויות.

תוצאות הפעולה

תוצאת הסקריפט
שם תוצאת הסקריפט אפשרויות לערכים דוגמה
is_success נכון/לא נכון is_success:False

אם הפעולה פועלת בהצלחה (הדף מוחזר, תגובת השרת היא 200 OK), צריך להגדיר את is_success לערך True.

תוצאת JSON
{
   "results": [
       {
           "id": "PAGE_ID",
           "type": "page",
           "status": "current",
           "title": "test child page!",
           "extensions": {
               "position": "none"
           },
           "_links": {
               "webui": "/pages/viewpage.action?pageId=PAGE_ID",
               "edit": "/pages/resumedraft.action?draftId=PAGE_ID&draftShareId=799fd068-5053-4889-9120-c1a3c970fdbd",
               "tinyui": "/x/T4AB",
               "self": "http://192.0.2.45:8090/rest/api/content/PAGE_ID"
           },
           "_expandable": {
               "container": "/rest/api/space/SIEM",
               "metadata": "",
               "operations": "",
               "children": "/rest/api/content/PAGE_ID/child",
               "restrictions": "/rest/api/content/PAGE_ID/restriction/byOperation",
               "history": "/rest/api/content/PAGE_ID/history",
               "ancestors": "",
               "body": "",
               "version": "",
               "descendants": "/rest/api/content/PAGE_ID/descendant",
               "space": "/rest/api/space/SIEM"
           }
       }
   ],
   "start": 0,
   "limit": 1,
   "size": 1,
   "_links": {
       "self": "http://192.0.2.45:8090/rest/api/content/PAGE_ID/child/page",
       "base": "http://192.0.2.45:8090",
       "context": ""
   }
}
קיר נרתיק הטעינה
סוג התוצאות ערך/תיאור סוג (ישות/כללי)
הודעת פלט* הפעולה לא אמורה להיכשל או להפסיק את ההפעלה של הפלייבוק:

אם הנתונים זמינים (is_success = true):
מדפיסים "Successfully found child pages for the provided Atlassian Confluence Server page id: <page_id>".

אם הנתונים לא זמינים (is_success=false)
מדפיסים "No child pages were found for the provided Atlassian Confluence Server page id <page_id>"

הפעולה אמורה להיכשל ולהפסיק את ההפעלה של הפלייבוק:

  • אם צוין ערך לא חוקי בשדה "מספר הרשומות המקסימלי להחזרה":
הייתה שגיאה בביצוע הפעולה "{action name}". סיבה: "צוין ערך לא חוקי בשדה 'מספר הרשומות המקסימלי להחזרה': <הערך שצוין>. צריך לציין מספר חיובי".

  • אם יש שגיאה חמורה, כמו פרטי כניסה שגויים, אין חיבור לשרת או בעיה אחרת:
"שגיאה בהפעלת הפעולה "{action name}". Reason: {0}''.format(error.Stacktrace)
  • אם לא מספקים שם משתמש + סיסמה וגם לא PAT:
print "Failed to connect to Atlassian Confluence Server, expecting either username and password, or personal access token to connect with!"
כללי

קבלת תגובות לדף

קבלת תגובות לדף Atlassian Confluence Server.

פרמטרים

שם הפרמטר סוג ערך ברירת המחדל חובה תיאור
מזהה דף String לא רלוונטי True מציינים את מזהה הדף שרוצים להחזיר.
הרחבה CSV body.storage לא נכון ציינו את הפרמטר expand כדי לקבל מידע נוסף על הדף. הפרמטר מקבל כמה ערכים כרשימה מופרדת בפסיקים.
כברירת מחדל, התוכן של הדף מאוחזר באמצעות body.storage.
מספר הרשומות המקסימלי שיוחזרו Int 10 True מציינים את המגבלה של דפי המשנה שיוחזרו.

הפעלה ב-

הפעולה לא פועלת על ישויות.

תוצאות הפעולה

תוצאת הסקריפט
שם תוצאת הסקריפט אפשרויות לערכים דוגמה
is_success נכון/לא נכון is_success:False

אם הפעולה פועלת בהצלחה (התגובות מוחזרות, תגובת השרת היא 200 OK), הערך של is_success צריך להיות True.

תוצאת JSON
{
   "results": [
       {
           "id": "ID",
           "type": "comment",
           "status": "current",
           "title": "Re: 111",
           "body": {
               "storage": {
                   "value": "<p>comment1</p>",
                   "representation": "storage",
                   "_expandable": {
                       "content": "/rest/api/content/ID"
                   }
               },
               "_expandable": {
                   "editor": "",
                   "view": "",
                   "export_view": "",
                   "styled_view": "",
                   "anonymous_export_view": ""
               }
           },
           "extensions": {
               "location": "footer",
               "_expandable": {
                   "resolution": ""
               }
           },
           "_links": {
               "webui": "/display/SIEM/111?focusedCommentId=98387#comment-ID",
               "self": "http://203.0.113.1:8090/rest/api/content/ID"
           },
           "_expandable": {
               "container": "/rest/api/content/ID",
               "metadata": "",
               "operations": "",
               "children": "/rest/api/content/ID/child",
               "restrictions": "/rest/api/content/ID/restriction/byOperation",
               "history": "/rest/api/content/ID/history",
               "ancestors": "",
               "version": "",
               "descendants": "/rest/api/content/ID/descendant",
               "space": "/rest/api/space/SIEM"
           }
       },
       ...
   ],
   "start": 0,
   "limit": 10,
   "size": 2,
   "_links": {
       "self": "http://203.0.113.1:8090/rest/api/content/ID/child/comment?expand=body.storage",
       "base": "http://203.0.113.1:8090",
       "context": ""
   }
}
קיר נרתיק הטעינה
סוג התוצאות ערך/תיאור סוג (ישות/כללי)
הודעת פלט* הפעולה לא אמורה להיכשל או להפסיק את ההפעלה של הפלייבוק:

  • אם הנתונים זמינים(is_success = true):
print "Successfully fetched page comments for the provided Atlassian Confluence Server page id: <page_id>".

  • אם הנתונים לא זמינים (is_success=false)
print "No page comments were found for the provided Atlassian Confluence Server page id <page_id>"

הפעולה אמורה להיכשל ולעצור את ההפעלה של הפלייבוק:

  • אם צוין ערך לא חוקי בשדה "מספר הרשומות המקסימלי להחזרה":
הייתה שגיאה בביצוע הפעולה "{action name}". סיבה: "צוין ערך לא חוקי בשדה 'מספר הרשומות המקסימלי להחזרה': <הערך שצוין>. צריך לציין מספר חיובי".

  • אם יש שגיאה חמורה, כמו פרטי כניסה שגויים, אין חיבור לשרת או בעיה אחרת:
"שגיאה בהפעלת הפעולה "{action name}". הסיבה: {0}''.format(error.Stacktrace)

  • אם לא מספקים שם משתמש + סיסמה וגם לא PAT:
print "Failed to connect to Atlassian Confluence Server, expecting either username and password, or טוקן גישה to connect with!"
כללי

הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.