יומנים לדוגמה של איחוד שירותי אימות הזהויות של כוח העבודה

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

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

‫IAM יכול ליצור יומני ביקורת כשיוצרים מאגרי כוח עבודה ומנהלים אותם. כדי להפעיל יומני ביקורת כשמנהלים מאגרי כוח עבודה, צריך להפעיל את יומני הביקורת לפעילות של Data Access בשביל ממשק ה-API הבא:

  • ‫API של ניהול זהויות והרשאות גישה (IAM) (הפעלת סוג היומן 'קריאת אדמין')

כדי להגדיר יומני ביקורת נוספים לתהליך המרת האסימון או לכניסה למסוףGoogle Cloud (מאוחד), צריך גם להפעיל את יומני הביקורת לפעילות של Data Access בשביל ה-API הבא:

  • ‫API של Security Token Service (הפעלת סוג היומן 'קריאת אדמין')

יומנים ליצירת מאגר כוח עבודה

בדוגמה הבאה מוצגת רשומה ביומן ליצירת מאגר כוח עבודה. בדוגמה הזו, המשתמש sam@example.com יצר מאגר כוח עבודה עם המזהה my-pool בארגון עם המזהה 123456789012.

{
  "logName": "organizations/123456789012/logs/cloudaudit.googleapis.com%2Factivity",
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalEmail": "sam@example.com",
    },
    "methodName": "google.iam.admin.v1.WorkforcePools.CreateWorkforcePool",
    "resourceName": "locations/global/workforcePools/my-pool",
    "serviceName": "iam.googleapis.com",
    "request": {
      "@type": "type.googleapis.com/google.iam.admin.v1.CreateWorkforcePoolRequest",
      "workforcePool": {
        "parent": "organizations/123456789012"
      },
      "workforcePoolId": "my-pool"
    }
  },
  "resource": {
    "type": "audited_resource"
  }
}

יומנים להחלפת אסימון IdP באסימון מאוחד

אחרי שמגדירים את מאגר זהויות כוח העבודה ואת ספק מאגר הזהויות של כוח העבודה, אפשר ליצור אסימון לספק הזהויות (IdP) ולהחליף אותו באסימון מאוחד.

אחרי שמפעילים את יומני הביקורת של Cloud לפעילות של Data Access,‏ IAM יוצר רשומה ביומן הביקורת בכל פעם שחשבון משתמש מחליף אסימון. הרשומה ביומן כוללת את השדות הבאים:

  • protoPayload.authenticationInfo.principalSubject: הנושא של אסימון IdP.
    • לספקי IdP של OIDC, השדה הזה מכיל את הערך sub, או הנושא, שמוצהר באסימון ה-OIDC.
    • לספקי IdP של SAML, השדה הזה מכיל את הערך של מאפיין המשנה NameID של המאפיין Subject בטענת הנכוֹנוּת (assertion) של SAML.
  • protoPayload.metadata.mapped_principal: נושא האסימון באמצעות התחביר של IAM כדי לזהות את חשבון המשתמש:

    principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/IDENTIFIER
    
  • protoPayload.resourceName: הספק של מאגר כוח העבודה שאליו משויך האסימון.

החלפת טוקן מוצלחת

בדוגמה הבאה מופיעה רשומה ביומן הביקורת לבקשה להחליף אסימון. בדוגמה הזו, אסימון OIDC מוחלף באסימון מאוחד:

{
  "logName": "organizations/123456789012/logs/cloudaudit.googleapis.com%2Fdata_access",
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalSubject": "b6112abb-5791-4507-adb5-7e8cc306eb2e"
    },
    "metadata": {
      "mapped_principal": "principal://iam.googleapis.com/locations/global/workforcePools/oidc-pool/subject/a1234bcd-5678-9012-efa3-4b5cd678ef9a"
    },
    "methodName": "google.identity.sts.v1.SecurityTokenService.ExchangeToken",
    "resourceName": "locations/global/workforcePools/oidc-pool/providers/oidc-provider",
    "serviceName": "sts.googleapis.com",
    "request": {
      "@type": "type.googleapis.com/google.identity.sts.v1.SecurityTokenService.ExchangeTokenRequest",
      "audience": "//iam.googleapis.com/locations/global/workforcePools/oidc-pool/providers/oidc-provider",
      "grantType": "urn:ietf:params:oauth:grant-type:token-exchange",
      "requestedTokenType": "urn:ietf:params:oauth:token-type:access_token",
      "subjectTokenType": "urn:ietf:params:oauth:token-type:id_token"
    }
  },
  "resource": {
    "type": "audited_resource"
  }
}

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

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

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

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

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

{
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "status": {
      "code": 3,
      "message": "The current count of 800 mapped attribute google.groups exceeds the 400 count limit. Either modify your attribute mapping or the incoming assertion to produce a mapped attribute that is less than 400."
    },
    "authenticationInfo": {
      "principalSubject": "3Kn-kJQal4N-WXVjxMqcOF1tQcCdBliu97lV-2P-Khc"
    },
    "requestMetadata": {
      "callerIp": "2601:647:4680:9140:9d68:88c9:cab9:a908",
      "callerSuppliedUserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36",
      "requestAttributes": {
        "time": "2025-04-09T18:32:34.979311Z",
        "auth": {}
      },
      "destinationAttributes": {}
    },
    "serviceName": "sts.googleapis.com",
    "methodName": "google.identity.sts.SecurityTokenService.WebSignIn",
    "authorizationInfo": [
      {
        "permission": "sts.identityProviders.checkLogging",
        "granted": false,
        "permissionType": "ADMIN_READ"
      }
    ],
    "resourceName": "locations/global/workforcePools/my-pool/providers/my-provider",
    "request": {
      "@type": "type.googleapis.com/google.identity.sts.SecurityTokenService.WebSignInRequest",
      "provider": "//iam.googleapis.com/locations/global/workforcePools/my-pool/providers/my-provider",
      "host": "auth-staging.corp.cloud.google"
    },
    "metadata": {
      "mappedAttributes": {
        "google.subject": "3Nk-kJQal4N-WXVjxMqcOF1tQcCdBliu97lV-2P-Khc",
        "google.providerId": "my-provider-id",
        "google.groups": "[group-claim-1, group-claim-2, ..., group-claim-800]"
      }
    }
  },
  "insertId": "-llnhbmck3a",
  "resource": {
    "type": "audited_resource",
    "labels": {
      "service": "sts.googleapis.com",
      "method": "google.identity.sts.SecurityTokenService.WebSignIn"
    }
  },
  "timestamp": "2025-04-09T18:32:34.208412Z",
  "severity": "ERROR",
  "logName": "organizations/123456789012/logs/cloudaudit.googleapis.com%2Fdata_access",
  "receiveTimestamp": "2025-04-09T18:32:35.059811619Z"
}

יומנים לטענות נכוֹנוּת (assertion) של SAML חתומות ומוצפנות

בקטע הזה מופיע תיאור של הרשומות ביומני הביקורת של Cloud ש-Security Token Service יוצר בניסיון לאמת טענות נכוֹנוּת (assertions) חתומות של SAML או לפענח טענות נכוֹנוּת (assertions) מוצפנות שנשלחות מה-IdP שלכם.

לאיחוד שירותי אימות הזהות של כוח עבודה, הרשומה הרלוונטית ביומן נראית דומה לפלט הבא:

"keyInfo": [
  {
    "use": "verify"
    "fingerprint": "3C:B2:47:F8:A5:9A:8A:52:BD:1C:BC:96:B5:45:C1:8D:A7:F1:73:2D"
  },
  {
    "use": "decrypt"
    "resourceName": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_NAME/providers/PROVIDER_NAME/keys/KEY_NAME"
  }
]

הפלט הזה כולל את הערכים הבאים:

  • fingerprint: הייצוג ההקסדצימלי של גיבוב SHA-256 של אישור ה-X.509 ששימש לאימות החתימה בפרטי הכניסה של SAML. האישור X.509 נשלף מהמטא-נתונים של XML ב-SAML שמצורף לספק מאגר הזהויות של כוח העבודה.
  • resourceName: שם המשאב של מפתח ספק מאגר הזהויות של כוח העבודה ששימש לפענוח טענת נכוֹנוּת (assertion) המוצפנת של ה-SAML. השדה הזה מוצג רק אם איחוד הזהויות מקבל תגובת SAML מוצפנת מה-IdP.

יומנים לקריאה להפעלת Google Cloud APIs באמצעות אסימון מאוחד

אחרי שמחליפים את האסימון של IdP באסימון מאוחד, אפשר להשתמש באסימון המאוחד כדי להפעיל Google Cloud APIs. יכול להיות שההפעלה של חלק מהשיטות ייצרו יומני ביקורת.

בדוגמה הבאה מוצגת רשומה ביומן הביקורת לבקשה להצגת רשימה של הקטגוריות של Cloud Storage בפרויקט באמצעות אסימון מאוחד.

{
  "logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access",
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalSubject": "principal://iam.googleapis.com/locations/global/workforcePools/oidc-pool/subject/kalani@altostrat.com"
    },
    "methodName": "storage.buckets.list",
    "serviceName": "storage.googleapis.com",
  },
  "resource": {
    "type": "gcs_bucket"
  }
}

יומנים לכניסה לחשבון במסוף (מאוחד) Google Cloud

אחרי שמגדירים מאגרי זהויות של כוח עבודה ואת ספקי ה-IdP שלהם, משתמשים יכולים להיכנס ל- Google Cloud באמצעות המסוף (המאוחד).

יומנים לכניסה מוצלחת

בקטע הזה אפשר לראות דוגמה לרשומת יומני ביקורת של Cloud שנרשמה כתוצאה מכניסה מוצלחת. בדוגמה הזו, המשתמש user@example.com נכנס לחשבון באמצעות ספק locations/global/workforcePools/my-pool/providers/my-provider. במקרה כזה, נוצרת הרשומה הבאה של יומני ביקורת של Cloud:

{
  "logName": "organizations/my-organization-id/logs/cloudaudit.googleapis.com%2Fdata_access",
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalSubject": "user@example.com",
    },
    "serviceName": "sts.googleapis.com",
    "methodName": "google.identity.sts.SecurityTokenService.WebSignIn",
    "resourceName": "locations/global/workforcePools/my-pool/providers/my-provider",
    "request": {
      "@type": "type.googleapis.com/google.identity.sts.SecurityTokenService.WebSignInRequest",
      "provider": "//iam.googleapis.com/locations/global/workforcePools/my-pool/providers/my-provider",
      "continueUrl": "https://console.cloud.google",
      "host": "http://auth.cloud.google",
    },
    "metadata": {
       "mappedPrincipal": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
    }
  },
  "resource": {
    "type": "audited_resource",
    "labels": {
      "service": "sts.googleapis.com",
      "method": "google.identity.sts.SecurityTokenService.WebSignIn",
    }
  },
}

הרשומה של יומני ביקורת של Cloud לספקי SAML יכולה לכלול גם מידע על מפתח חתימה בשדה המטא-נתונים.

{
  "metadata": {
    "mappedPrincipal": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
    "keyInfo": [
      {
        "use": "verify",
        "fingerprint": "AE:CK:LM:EF:LK:OG:EH:IJ:KN:AL:OM:AD:NO",
      }
    ],
  }
}

יומנים לכניסה שנכשלה

בקטע הזה אפשר לראות דוגמה לרשומת יומני ביקורת של Cloud שנרשמה כתוצאה מכניסה שנכשלה. בדוגמה הזו, המשתמש user@example.com מנסה להיכנס באמצעות ספק locations/global/workforcePools/my-pool/providers/my-provider, אבל לא מקבל גישה בגלל אי-עמידה בתנאי של מאפיין. במקרה כזה, נוצרת הרשומה הבאה של יומני ביקורת של Cloud:

{
  "logName": "organizations/my-organization-id/logs/cloudaudit.googleapis.com%2Fdata_access",
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalSubject": "user@example.com",
    },
    "status": {
      "code": 3,
      "message": "The given credential is rejected by the attribute condition.",
    },
    "serviceName": "sts.googleapis.com",
    "methodName": "google.identity.sts.SecurityTokenService.WebSignIn",
    "resourceName": "locations/global/workforcePools/my-pool/subject/user@example.com",
    "request": {
      "@type": "type.googleapis.com/google.identity.sts.SecurityTokenService.WebSignInRequest",
      "provider": "//iam.googleapis.com/locations/global/workforcePools/my-pool/providers/my-provider",
      "host": "http://auth.cloud.google",
    },
    "metadata": {
      "mappedPrincipal": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
    }
  },
  "resource": {
    "type": "audited_resource",
    "labels": {
      "service": "sts.googleapis.com",
      "method": "google.identity.sts.SecurityTokenService.WebSignIn",
    }
  },
}

יומנים ליציאה

בקטע הזה אפשר לראות דוגמה לרשומת יומני ביקורת של Cloud שנרשמה כתוצאה מאירוע יציאה. בדוגמה הזו, המשתמש user@example.com, שנכנס באמצעות ספק locations/global/workforcePools/my-pool/providers/my-provider, יוזם יציאה. במקרה כזה, נוצרת הרשומה הבאה של יומני הביקורת של Cloud:

{
  "logName": "organizations/my-organization-id/logs/cloudaudit.googleapis.com%2Fdata_access",
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalSubject": "user@example.com",
    },
    "serviceName": "sts.googleapis.com",
    "methodName": "google.identity.sts.SecurityTokenService.WebSignOut",
    "resourceName": "locations/global/workforcePools/my-pool/providers/my-provider",
    "request": {
      "@type": "type.googleapis.com/google.identity.sts.SecurityTokenService.WebSignOutRequest",
      "provider": "//iam.googleapis.com/locations/global/workforcePools/my-pool/providers/my-provider",
      "host": "http://auth.cloud.google"
    },
    "metadata": {
      "mappedPrincipal": "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/user@example.com",
    }
  },
  "resource": {
    "type": "audited_resource",
    "labels": {
      "service": "sts.googleapis.com",
      "method": "google.identity.sts.SecurityTokenService.WebSignOut"
    }
  },
}

יומנים לכניסה באמצעות תהליך OAuth

אחרי שמגדירים את מאגר הזהויות של כוח העבודה ואת ספק מאגר הזהויות של כוח העבודה, אפשר להשתמש במשאבים באמצעות תהליך OAuth. Google Cloud

אחרי שמפעילים את יומני הביקורת של Cloud לפעילות של גישה לנתונים, IAM יוצר רשומה ביומן הביקורת בכל פעם שחשבון משתמש מתחבר באמצעות תהליך OAuth. הרשומה ביומן כוללת את השדות הבאים:

  • protoPayload.authenticationInfo.principalSubject: הנושא של אסימון IdP.
    • לספקי IdP של OIDC, השדה הזה מכיל את הערך sub, או הנושא, שמוצהר באסימון ה-OIDC.
    • לספקי IdP של SAML, השדה הזה מכיל את הערך של מאפיין המשנה NameID של המאפיין Subject בטענת הנכוֹנוּת (assertion) של SAML.
  • protoPayload.metadata.mapped_principal: נושא האסימון באמצעות התחביר של IAM כדי לזהות את חשבון המשתמש:

    principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/IDENTIFIER
    
  • protoPayload.resourceName: הספק של מאגר כוח העבודה שאליו משויך האסימון.

בדוגמה הבאה מופיעה רשומה ביומן הביקורת לבקשה להחליף אסימון. בדוגמה הזו, הגורם המורשה מאוחד באמצעות ספק OIDC:

{
  "logName": "organizations/123456789012/logs/cloudaudit.googleapis.com%2Fdata_access",
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalSubject": "b6112abb-5791-4507-adb5-7e8cc306eb2e"
    },
    "metadata": {
      "mapped_principal": "principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/IDENTIFIER"
    },
    "methodName": "google.identity.sts.v1.SecurityTokenService.ExchangeOauthToken",
    "resourceName": "locations/global/workforcePools/POOL_ID/providers/WORKFORCE_PROVIDER_ID",
    "serviceName": "sts.googleapis.com",
    "request": {
      "@type": "type.googleapis.com/google.identity.sts.v1.SecurityTokenService.ExchangeOauthTokenRequest",
      "grantType": "authorization_code",
    }
  },
  "resource": {
    "type": "audited_resource"
  }
}

המאמרים הבאים