שילוב של AWS CloudWatch עם Google SecOps

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

תרחישים לדוגמה

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

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

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

שם התצוגה של הפרמטר> Type> ערך ברירת המחדל> חובה> תיאור>
מזהה מפתח הגישה ב-AWS String לא רלוונטי כן מזהה מפתח הגישה של AWS לשימוש בשילוב.
מפתח סודי של AWS סיסמה לא רלוונטי כן מפתח סודי של AWS לשימוש בשילוב.
אזור ברירת המחדל של AWS String לא רלוונטי כן אזור ברירת המחדל של AWS לשימוש בשילוב, לדוגמה us-west-2.

הוראות להגדרת שילוב ב-Google SecOps מופיעות במאמר הגדרת שילובים.

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

פעולות

מידע נוסף על פעולות זמין במאמרים איך מגיבים לפעולות שממתינות לאישור ב-Your Workdesk ואיך מבצעים פעולה ידנית.

פינג

בודקים את הקישוריות ל-AWS CloudWatch.

ריצה

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

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

תוצאת סקריפט
Script Result Name> אפשרויות ערך>
is_success is_success=False
is_success is_success=True
Case Wall
סוג התוצאה ערך / תיאור סוג
הודעת פלט*

הפעולה לא אמורה להיכשל או להפסיק את ההפעלה של ה-Playbook:
אם הפעולה הצליחה: "Successfully connected to the AWS CloudWatch server with the provided connection parameters!"

הפעולה אמורה להיכשל ולהפסיק את ההרצה של ה-playbook:
אם הפעולה לא מצליחה: "Failed to connect to the AWS CloudWatch server! Error is {0}".format(exception.stacktrace)

כללי

הצגת רשימה של קבוצות יומנים

רשימת קבוצות היומנים שזמינות ב-AWS CloudWatch.

פרמטרים

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

ריצה

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

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

תוצאת סקריפט
Script Result Name> אפשרויות ערך>
is_success is_success=False
is_success is_success=True
תוצאת JSON
[
    {
        "arn": "arn:aws:logs:us-east-1:",
        "creationTime": 1611581795766,
        "logGroupName": "CloudTrail/DefaultLogGroup",
        "metricFilterCount": 0,
        "storedBytes": 24529015
    },
    {
        "arn": "arn:aws:logs:us-east-1:",
        "creationTime": 1606993203235,
        "logGroupName": "Example",
        "metricFilterCount": 1,
        "storedBytes": 730
    },
    {
        "arn": "arn:aws:logs:us-east-1:",
        "creationTime": 1611652265055,
        "logGroupName": "aws-cloudtrail-logs",
        "metricFilterCount": 0,
        "storedBytes": 51354815
    }
]
Case Wall
סוג התוצאה ערך / תיאור סוג
הודעת פלט*

הפעולה לא אמורה להיכשל או להפסיק את ההפעלה של playbook:
אם הנתונים זמינים (is_success = true): 'Successfully returned available log groups in AWS CloudWatch'.

אם אין נתונים זמינים (is_success = true): 'לא נמצאו קבוצות יומנים ב-AWS CloudWatch'.

הפעולה אמורה להיכשל ולהפסיק את ההרצה של Playbook:
אם יש שגיאה חמורה, כמו פרטי כניסה שגויים, אין חיבור לשרת, אחר: "Error executing action "List Log Groups". הסיבה: {0}''.format(error.Stacktrace)

כללי
Case Wall Table

שם: 'קבוצות יומנים'

עמודה:

שם

מספר מסנני המדדים

בייטים מאוחסנים

שעת יצירה

כללי

הצגת רשימה של שידורים של יומנים

רשימת זרמי היומן שזמינים ב-AWS CloudWatch.

פרמטרים

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

השם של עדכוני התוכן ביומן

ערכים אפשריים:

השם של עדכוני התוכן ביומן

המועד האחרון של האירוע

לא מציינים את הסדר שבו יומני הסטרימינג יוצגו.
סדר המיון DDL

סדר עולה

ערכים אפשריים:

סדר עולה

סדר יורד

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

ריצה

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

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

תוצאת סקריפט
Script Result Name> אפשרויות ערך>
is_success is_success=False
is_success is_success=True
תוצאת JSON
[{
    "group":"{group name}"
"logStreams": [
        {
            "arn": "arn:aws:logs:us-east-1:log-group:aws-cloudtrail-logs:log-stream:CloudTrail_us-east-1",
            "creationTime": 1611652272827,
            "firstEventTimestamp": 1611652287716,
            "lastEventTimestamp": 1612271538268,
            "lastIngestionTime": 1612271538289,
            "logStreamName": "CloudTrail_us-east-1",
            "storedBytes": 0,
            "uploadSequenceToken": "49039859450784908968417870788122674924958823185025535393"
        }
    ]
}
]
Case Wall
סוג התוצאה ערך / תיאור סוג
הודעת פלט*

הפעולה לא תיכשל ולא תפסיק את ההרצה של ה-Playbook:
אם הנתונים זמינים לפחות לקבוצת יומנים אחת (is_success = true): "Successfully returned available log streams for the following log groups in AWS CloudWatch: {group names}".

אם הנתונים לא זמינים לפחות לקבוצת יומנים אחת (is_success = true): 'לא הייתה אפשרות להחזיר זרמי יומנים זמינים לקבוצות היומנים הבאות ב-AWS CloudWatch: {שמות הקבוצות}'.

אם הנתונים לא זמינים לפחות לקבוצת יומנים אחת (is_success = false): 'לא נמצאו זרמי יומנים לקבוצות היומנים שצוינו ב-AWS CloudWatch'.

הפעולה צריכה להיכשל ולהפסיק את ההרצה של Playbook:
אם יש שגיאה חמורה, כמו פרטי כניסה שגויים, אין חיבור לשרת, אחר: "Error executing action "List Log Streams". Reason: {0}''.format(error.Stacktrace)

כללי
Case Wall Table

שם: "{Group Name}: Log Streams"

עמודה:

שם

בייטים מאוחסנים

שעת יצירה

חותמת הזמן של האירוע האחרון

כללי

אירוע ביומן החיפוש

חיפוש אירועים ביומן ב-AWS CloudWatch.

פרמטרים

שם התצוגה של הפרמטר> Type> ערך ברירת המחדל> חובה> תיאור>
קבוצת יומנים String לא רלוונטי כן מציינים את השם של קבוצת היומנים שבה רוצים לחפש אירועים.
שידורי יומן CSV לא רלוונטי לא מציינים רשימה של מקורות ליומן, מופרדת בפסיקים, שבהם רוצים לחפש אירועים.
מסגרת זמן DDL

בשעה האחרונה

ערכים אפשריים:

בשעה האחרונה

6 השעות האחרונות

24 השעות האחרונות

בשבוע שעבר

בחודש שעבר

בהתאמה אישית

לא מציינים מסגרת זמן לחיפוש. אם בוחרים באפשרות 'בהתאמה אישית', צריך גם להגדיר 'שעת התחלה'.
שעת ההתחלה String לא רלוונטי לא מציינים את שעת ההתחלה של החיפוש. הפרמטר הזה הוא חובה אם בוחרים באפשרות 'מותאם אישית' בפרמטר 'מסגרת זמן'. פורמט: ISO 8601
שעת הסיום String לא רלוונטי לא מציינים את שעת הסיום של החיפוש. פורמט: ISO 8601. אם לא מספקים ערך ובפרמטר Time Frame (מסגרת זמן) בוחרים באפשרות Custom (מותאם אישית), המערכת תשתמש בזמן הנוכחי.
מסנן בהתאמה אישית String לא רלוונטי לא מציינים את המסנן המותאם אישית לחיפוש. מידע נוסף זמין בפורטל התיעוד.
מספר מקסימלי של אירועים להחזרה מספר שלם 50 לא מציינים כמה אירועים להחזיר. ברירת מחדל: 50.

ריצה

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

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

תוצאת סקריפט
Script Result Name> אפשרויות ערך>
is_success is_success=False
is_success is_success=True
תוצאת JSON
[
        {
            "eventId": "ID",
            "ingestionTime": 1611652287896,
            "logStreamName": "CloudTrail_us-east-1",
            "message": {
                "eventVersion": "1.08",
                "userIdentity": {
                    "type": "AssumedRole",
                    "principalId": "ID",
                    "arn":"arn:aw
s:sts: : ACCOUNT_ID:assumed-role/AWSServiceRoleForAmazonMacie/AmazonMacieSession","accountId":"ACCOUNT_ID","accessKeyId":"KEY_ID","sessionC
ontext":{"sessionIssuer":{"type":"Role","principalId":"ID","arn":"arn:aws:iam: : ACCOUNT_ID:role/aws-service-role/macie.amazonaws.com/AW
SServiceRoleForAmazonMacie","accountId":"ACCOUNT_ID","userName":"AWSServiceRoleForAmazonMacie"},"webIdFederationData":{},"attributes":{"mfaAuthenticated": "false",
                    "creationDate": "2021-01-26T08:53:52Z"
                }
            },
            "invokedBy": "AWS Internal",
            "eventTime": "2021-01-26T08:53:52Z",
            "eventSource": "s3.amazonaws.com",
            "eventName": "GetBucketLogging",
            "awsRegion": "us-east-1",
            "sourceIPAddress": "AWSInternal",
            "userAgent": "AWS Internal",
            "requestParameters": {
                "logging": "",
                "bucketName": "example",
                "Host": "example.s3.amazonaws.com"
            },
            "responseElements": null,
            "additionalEventData": {
                "SignatureVersion": "SigV4",
                "CipherSuite": "ECDHE-RSA-AES128-GCM-SHA256",
                "bytesTransferredIn": 0,
                "AuthenticationMethod": "AuthHeader",
                "x-amz-id-2": "PFM+6pyK/gCPy95gh8dtstgtXftrpHkL8s=",
                "bytesTransferredOut": 289
            },
            "requestID": "8FA919A428BC82D7",
            "eventID": "7eb5dd44-7021-4945-b9be-27f5b1e0d8d0",
            "readOnly": true,
            "resources": [
                {
                    "accountId": "ACCOUNT_ID",
                    "type": "AWS::S3::Bucket",
                    "ARN": "arn:aws:s3:::example"
                }
            ],
            "eventType": "AwsApiCall",
            "managementEvent": true,
            "eventCategory": "Management",
            "recipientAccountId": "ACCOUNT_ID"
        },
        "timestamp": 1611652287716
    }
]
Case Wall
סוג התוצאה ערך / תיאור סוג
הודעת פלט*

הפעולה לא אמורה להיכשל או להפסיק את ההפעלה של Playbook:
אם הנתונים זמינים (is_success = true): "Successfully executed search in AWS CloudWatch".

אם הנתונים לא זמינים (is_success = false): 'לא נמצאו נתונים לחיפוש שצוין'.

הפעולה צריכה להיכשל ולהפסיק את ההרצה של תוכנית הפעולה:
אם יש שגיאה חמורה, כמו פרטי כניסה שגויים, אין חיבור לשרת, אחר: "Error executing action "Search Log Events". הסיבה: {0}''.format(error.Stacktrace)

כללי
Case Wall Table

שם: Search Results

עמודה: כל המפתחות הזמינים.

כללי

הגדרת מדיניות שמירת נתונים

הגדרת מדיניות שמירת נתונים לקבוצות יומנים ב-AWS CloudWatch.

פרמטרים

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

1

ערכים אפשריים

‫1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1827 ו-3653

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

ריצה

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

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

תוצאת סקריפט
Script Result Name> אפשרויות ערך>
is_success is_success=False
is_success is_success=True
Case Wall
סוג התוצאה ערך / תיאור סוג
הודעת פלט*

הפעולה לא אמורה להיכשל או להפסיק את ההרצה של playbook:
אם הנתונים הצליחו (is_success = true): "Successfully set the retention policy for log group {group} in AWS CloudWatch".

הפעולה תיכשל והרצת ה-Playbook תיפסק:
אם יש שגיאה חמורה, כמו פרטי כניסה שגויים, אין חיבור לשרת, אחר: 'Error executing action "Set Retention Policy". Reason: {0}''.format(error.Stacktrace)

כללי

הסרה של מדיניות שמירת נתונים

מסירים את מדיניות שמירת הנתונים מקבוצת היומנים ב-AWS CloudWatch.

פרמטרים

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

ריצה

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

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

תוצאת סקריפט
Script Result Name> אפשרויות ערך>
is_success is_success=False
is_success is_success=True
Case Wall
סוג התוצאה ערך / תיאור סוג
הודעת פלט*

הפעולה לא אמורה להיכשל או להפסיק את ההפעלה של playbook:
אם הנתונים הצליחו (is_success = true): "Successfully removed the retention policy from log group {group} in AWS CloudWatch".

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

כללי

יצירת קבוצת יומנים

יוצרים קבוצת יומנים ב-AWS CloudWatch.

פרמטרים

שם התצוגה של הפרמטר> Type> ערך ברירת המחדל> חובה> תיאור>
שם קבוצת היומנים String לא רלוונטי כן מציינים את השם של קבוצת היומנים החדשה.

ריצה

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

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

תוצאת סקריפט
Script Result Name> אפשרויות ערך>
is_success is_success=False
is_success is_success=True
תוצאת JSON
{
"group_name": "GROUP_NAME"
}
Case Wall
סוג התוצאה ערך / תיאור סוג
הודעת פלט*

הפעולה לא אמורה להיכשל או להפסיק את ההפעלה של Playbook:
אם הנתונים תקינים (is_success = true): "Successfully created a new log group {group} in AWS CloudWatch".

הפעולה אמורה להיכשל ולהפסיק את ההרצה של ה-Playbook:
אם יש שגיאה חמורה, כמו פרטי כניסה שגויים, אין חיבור לשרת, או שגיאה אחרת: "Error executing action "Сreate Log Group". Reason: {0}''.format(error.Stacktrace)

כללי

יצירת עדכוני תוכן של יומן

יוצרים זרם יומנים לקבוצת היומנים ב-AWS CloudWatch.

פרמטרים

שם התצוגה של הפרמטר> Type> ערך ברירת המחדל> חובה> תיאור>
קבוצת יומנים String לא רלוונטי כן מציינים את השם של קבוצת היומנים שבה רוצים ליצור זרם יומנים.
השם של עדכוני התוכן ביומן String לא רלוונטי כן מציינים את השם של מקור הנתונים החדש של היומן.

ריצה

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

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

תוצאת סקריפט
Script Result Name> אפשרויות ערך>
is_success is_success=False
is_success is_success=True
תוצאת JSON
{
"log_stream": "STREAM_NAME"
}
Case Wall
סוג התוצאה ערך / תיאור סוג
הודעת פלט*

הפעולה לא אמורה להיכשל או להפסיק את ההפעלה של playbook:
אם הנתונים הצליחו (is_success = true): 'Successfully created a new log stream in log group {group} in AWS CloudWatch'.

הפעולה צריכה להיכשל ולהפסיק את ההרצה של תוכנית הפעולה:
אם יש שגיאה חמורה, כמו פרטי כניסה שגויים, אין חיבור לשרת, או שגיאה אחרת: "Error executing action "Сreate Log Stream". הסיבה: {0}''.format(error.Stacktrace)

כללי

מחיקת קבוצת יומנים

מחיקת קבוצת יומנים ב-AWS CloudWatch.

פרמטרים

שם התצוגה של הפרמטר> Type> ערך ברירת המחדל> חובה> תיאור>
שם קבוצת היומנים String לא רלוונטי כן מציינים את השם של קבוצת היומנים שרוצים למחוק.

ריצה

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

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

תוצאת סקריפט
Script Result Name> אפשרויות ערך>
is_success is_success=False
is_success is_success=True
Case Wall
סוג התוצאה ערך / תיאור סוג
הודעת פלט*

הפעולה לא אמורה להיכשל או להפסיק את ההפעלה של Playbook:
אם הנתונים הצליחו: (is_success = true): "Successfully deleted log group {group} in AWS CloudWatch".

אם הקבוצה לא קיימת (is_success=false): "לא הייתה אפשרות למחוק את קבוצת היומנים {group} ב-AWS CloudWatch. סיבה: קבוצת היומנים {group} לא נמצאה ב-AWS CloudWatch."

הפעולה צריכה להיכשל ולהפסיק את ההפעלה של Playbook:
אם יש שגיאה חמורה, כמו פרטי כניסה שגויים, אין חיבור לשרת, אחר: "Error executing action "Delete Log Group". הסיבה: {0}''.format(error.Stacktrace)

כללי

מחיקת מקור נתונים של יומן

מחיקת זרם יומן בקבוצת יומנים ב-AWS CloudWatch.

פרמטרים

שם התצוגה של הפרמטר> Type> ערך ברירת המחדל> חובה> תיאור>
שם קבוצת היומנים String לא רלוונטי כן מציינים את השם של קבוצת היומנים שמכילה את זרם היומנים.
השם של עדכוני התוכן ביומן String לא רלוונטי כן מציינים את השם של מקור הנתונים של היומן שרוצים למחוק.

ריצה

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

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

תוצאת סקריפט
Script Result Name> אפשרויות ערך>
is_success is_success=False
is_success is_success=True
Case Wall
סוג התוצאה ערך / תיאור סוג
הודעת פלט*

הפעולה לא אמורה להיכשל או להפסיק את ההרצה של פלייבוק:
אם הנתונים הצליחו: (is_success = true): "Successfully deleted log stream {stream} from log group {group} in AWS CloudWatch".

אם הסטרים לא קיים (is_success=false): "לא הייתה אפשרות למחוק את הסטרים של היומן {stream} מקבוצת היומן {group} ב-AWS CloudWatch. הסיבה: הסטרים של היומן {stream} לא נמצא בקבוצת היומן {group} ב-AWS CloudWatch".

אם הקבוצה לא קיימת (is_success=false): "לא הייתה אפשרות למחוק את זרם היומן {stream} מקבוצת היומן {group} ב-AWS CloudWatch. סיבה: קבוצת היומנים {group} לא נמצאה ב-AWS CloudWatch."

הפעולה צריכה להיכשל ולהפסיק את ההפעלה של playbook:
אם יש שגיאה חמורה, כמו פרטי כניסה שגויים, אין חיבור לשרת, או שגיאה אחרת: "Error executing action "Delete Log Stream". הסיבה: {0}''.format(error.Stacktrace)

כללי

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