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

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

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

יומנים עבור יצירת חשבונות שירות

כשיוצרים חשבון שירות או משנים אותו, 'ניהול זהויות והרשאות גישה (IAM)' יוצר רשומות ביומן. בדוגמה הבאה מוצגת רשומה ביומן עבור יצירת חשבון שירות:

{
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalEmail": "example-user@example.com"
    },
    "methodName": "google.iam.admin.v1.CreateServiceAccount",
    "response": {
      "email": "my-service-account@my-project.iam.gserviceaccount.com",
      "@type": "type.googleapis.com/google.iam.admin.v1.ServiceAccount",
      "display_name": "My service account."
    }
  },
  "resource": {
    "type": "service_account"
  }
}

יומנים עבור הענקת תפקידים

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

יומנים עבור הענקת תפקיד המשתמש בחשבון שירות

חשבון משתמש יכול לקבל את אותן ההרשאות שיש לחשבון שירות על-ידי התחזות לחשבון השירות. כדי לאפשר לחשבון משתמש להתחזות לחשבון שירות, אפשר להעניק את תפקיד המשתמש של חשבון השירות (roles/iam.serviceAccountUser) לחשבון המשתמש עבור חשבון השירות.

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

{
  "logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Factivity",
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "methodName": "google.iam.admin.v1.SetIAMPolicy",
    "request": {
      "@type": "type.googleapis.com/google.iam.v1.SetIamPolicyRequest",
      "resource": "projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com"
    },
    "resourceName": "projects/-/serviceAccounts/123456789012345678901",
    "response": {
      "@type": "type.googleapis.com/google.iam.v1.Policy",
      "bindings": [
        {
          "members": [
            "user:my-user@example.com"
          ],
          "role": "roles/iam.serviceAccountUser"
        }
      ]
    }
  },
  "resource": {
    "type": "service_account"
  }
}

כשמעניקים את התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator), שמאפשר לחשבון משתמש ליצור פרטי כניסה לטווח קצר, IAM יוצר רשומת יומן דומה.

יומנים עבור הענקת גישה לחשבון שירות במשאב

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

בדוגמה הבאה מוצגת רשומה ביומן הביקורת להענקת תפקיד לחשבון שירות עבור פרויקט. בדוגמה זו, example-user@example.com העניק את התפקיד 'צפייה בארגון' (roles/resourcemanager.organizationViewer) לחשבון השירות. השדה protoPayload.serviceName מוגדר ל-cloudresourcemanager.googleapis.com, כי 'מנהל המשאבים' הואGoogle Cloud השירות שמנהל פרויקטים. בנוסף, השדה resource.type מוגדר ל-project:

{
  "logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Factivity",
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalEmail": "example-user@example.com"
    },
    "methodName": "SetIamPolicy",
    "request": {
      "@type": "type.googleapis.com/google.iam.v1.SetIamPolicyRequest",
      "resource": "my-project"
    },
    "resourceName": "projects/my-project",
    "response": {
      "@type": "type.googleapis.com/google.iam.v1.Policy",
      "bindings": [
        {
          "members": [
            "serviceAccount:my-service-account@my-project.iam.gserviceaccount.com"
          ],
          "role": "roles/resourcemanager.organizationViewer"
        }
      ]
    },
    "serviceName": "cloudresourcemanager.googleapis.com"
  },
  "resource": {
    "type": "project"
  }
}

יומנים לצירוף חשבונות שירות למשאבים

אם למשתמש יש תפקיד 'משתמש בחשבון שירות' (roles/iam.serviceAccountUser) בחשבון שירות, המשתמש יכול לצרף את חשבון השירות למשאבים. כשקוד שרץ במשאב ניגש Google Cloud לשירותים ולמשאבים, הוא משתמש בחשבון השירות שמצורף למשאב בתור הזהות שלו. לדוגמה, אם מצרפים חשבון שירות למכונה של Compute Engine, והאפליקציות במכונה משתמשות בספריית לקוח כדי לקרוא ל-API של Google Cloud , האפליקציות האלו משתמשות אוטומטית בחשבון השירות המצורף לצורך אימות והרשאה.

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

יומנים לשימוש בהרשאה iam.serviceAccounts.actAs

כדי לצרף חשבון שירות למשאב צריך את ההרשאה iam.serviceAccounts.actAs. כשחשבון משתמש משתמש בהרשאה הזו כדי לצרף חשבון שירות למשאב, נוצר יומן ביקורת.

בדוגמה הבאה מוצגת רשומת יומן של חשבון משתמש שמשתמש בהרשאה iam.serviceAccounts.actAs כדי לצרף חשבון שירות למכונה של Compute Engine.

{
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalEmail": "example-user@example.com"
    },
    "serviceName": "iam.googleapis.com",
    "methodName": "iam.serviceAccounts.actAs",
    "authorizationInfo": [
      {
        "resource": "projects/-/serviceAccounts/sample-service-account@sample-project.iam.gserviceaccount.com",
        "permission": "iam.serviceAccounts.actAs",
        "granted": true,
        "permissionType": "ADMIN_WRITE"
      }
    ],
    "resourceName": "projects/-/serviceAccounts/sample-service-account@sample-project.iam.gserviceaccount.com",
    "request": {
      "name": "sample-service-account@sample-project.iam.gserviceaccount.com",
      "project_number": "787155667719",
      "@type": "type.googleapis.com/CanActAsServiceAccountRequest"
    },
    "response": {
      "success": true,
      "@type": "type.googleapis.com/CanActAsServiceAccountResponse"
    }
  },
  "insertId": "vojt0vd4fdy",
  "resource": {
    "type": "audited_resource",
    "labels": {
      "project_id": "sample-project",
      "method": "iam.serviceAccounts.actAs",
      "service": "iam.googleapis.com"
    }
  },
  "timestamp": "2024-08-05T21:56:56.097601933Z",
  "severity": "NOTICE",
  "logName": "projects/sample-project/logs/cloudaudit.googleapis.com%2Factivity",
  "receiveTimestamp": "2024-08-05T21:56:56.097601933Z"
}

יומנים להגדרת מכונה של Compute Engine להפעלה כחשבון שירות

אם למשתמש יש תפקיד 'משתמש בחשבון שירות' (roles/iam.serviceAccountUser) בחשבון שירות, המשתמש יכול ליצור מכונה וירטואלית (VM) של Compute Engine שתרוץ כחשבון שירות זה. בתרחיש הזה, המשתמש יוצר את מכונת ה-VM עם פרטי הכניסה שלו, והבקשה מציינת חשבון שירות שבו תשתמש מכונת ה-VM.

כשמשתמש יוצר מכונת VM,‏ Compute Engine יוצרת מספר רשומות ביומן. בדוגמה הבאה מוצגת רשומת היומן הראשונה, שמזהה את המשתמש שיצר את מכונת ה-VM ואת חשבון השירות שהמכונה משתמשת בו. בדוגמה הזו, המשתמש example-user@example.com יצר מכונה שמשתמשת בחשבון השירות my-service-account@my-project.iam.gserviceaccount.com. כתוצאה מכך, השדה protoPayload.authenticationInfo.principalEmail מוגדר ל-example-user@example.com והשדה protoPayload.request.serviceAccounts[0].email מוגדר ל-my-service-account@my-project.iam.gserviceaccount.com:

{
  "logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Factivity",
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalEmail": "example-user@example.com"
    },
    "methodName": "v1.compute.instances.insert",
    "request": {
      "@type": "type.googleapis.com/compute.instances.insert",
      "serviceAccounts": [
        {
          "email": "my-service-account@my-project.iam.gserviceaccount.com"
        }
      ]
    },
    "resourceName": "projects/my-project/zones/us-central1-a/instances/my-instance"
  },
  "resource": {
    "type": "gce_instance"
  }
}

יומנים עבור גישה אל Google Cloud באמצעות מפתח לחשבון שירות

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

יומנים עבור יצירת מפתח לחשבון שירות

אם יש לכם את התפקיד 'אדמין של המפתח לחשבון שירות' (roles/iam.serviceAccountKeyAdmin) בחשבון שירות, אתם יכולים ליצור מפתח לחשבון שירות, ואז להשתמש במפתח כדי לאמת בקשות לשירותי Google Cloud .

בדוגמה הבאה מוצגת רשומה ביומן עבור יצירת מפתח לחשבון שירות. בדוגמה זו, המשתמש example-user@example.com יצר מפתח עבור חשבון השירות my-service-account@my-project.iam.gserviceaccount.com:

{
  "logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Factivity",
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalEmail": "example-user@example.com",
    },
    "methodName": "google.iam.admin.v1.CreateServiceAccountKey",
    "request": {
      "@type": "type.googleapis.com/google.iam.admin.v1.CreateServiceAccountKeyRequest",
      "name": "projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com"
    },
    "resourceName": "projects/-/serviceAccounts/123456789012345678901"
  },
  "resource": {
    "type": "service_account"
  }
}

יומנים עבור אימות באמצעות מפתח לחשבון שירות

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

  • protoPayload.authenticationInfo.principalEmail: כתובת האימייל של חשבון השירות שאסימון הגישה מייצג.
  • protoPayload.authenticationInfo.serviceAccountKeyName: המפתח לחשבון השירות שבו נעשה שימוש כדי לבקש את אסימון הגישה מסוג OAuth 2.0. שדה זה מזהה את המפתח לחשבון השירות לפי שם המשאב המלא, המשתמש בפורמט //iam.googleapis.com/projects/project-id/serviceAccounts/service-account-email/keys/key-id.

בדוגמה הבאה מוצגת רשומה ביומן הביקורת עבור בקשה ליצירת Memorystore עבור מכונת Redis. הבקשה אומתה באמצעות אסימון גישה מסוג OAuth 2.0 עבור חשבון שירות. בדוגמה זו, השם של חשבון השירות הוא my-service-account@my-project.iam.gserviceaccount.com ומזהה המפתח של חשבון השירות הוא c71e040fb4b71d798ce4baca14e15ab62115aaef:

{
  "logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Factivity",
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalEmail": "my-service-account@my-project.iam.gserviceaccount.com",
      "serviceAccountKeyName": "//iam.googleapis.com/projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com/keys/c71e040fb4b71d798ce4baca14e15ab62115aaef"
    },
    "methodName": "google.cloud.redis.v1.CloudRedis.CreateInstance",
    "request": {
      "@type": "type.googleapis.com/google.cloud.redis.v1.CreateInstanceRequest"
    }
  }
}

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

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

יומנים עבור יצירת פרטי כניסה לטווח קצר

אם ברשותך התפקיד 'יוצר האסימונים של חשבון השירות' (roles/iam.serviceAccountTokenCreator) עבור חשבון שירות, באפשרותך ליצור פרטי כניסה לטווח קצר עבור חשבון השירות, ולאחר מכן להשתמש בפרטי הכניסה כדי להתחזות לחשבון השירות. לדוגמה, באפשרותכם ליצור פרטי כניסה לטווח קצר כדי להפעיל Google Cloud API מאפליקציה שלא רצה ב- Google Cloud.

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

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

  • protoPayload.authenticationInfo.principalEmail: חשבון המשתמש שיצר את פרטי הכניסה לטווח הקצר.
  • resource.labels.email_id: חשבון השירות שעבורו נוצרו פרטי כניסה לטווח קצר.

בדוגמה הבאה מוצגת רשומה ביומן הביקורת עבור בקשה ליצירת אסימון גישה מסוג OAuth 2.0 לטווח קצר. בדוגמה זו, המשתמש example-user@example.com יצר אסימון גישה עבור חשבון השירות my-service-account@my-project.iam.gserviceaccount.com:

{
  "logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access",
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalEmail": "example-user@example.com"
    },
    "methodName": "GenerateAccessToken",
    "request": {
      "@type": "type.googleapis.com/google.iam.credentials.v1.GenerateAccessTokenRequest",
      "name": "projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com"
    },
    "serviceName": "iamcredentials.googleapis.com"
  },
  "resource": {
    "labels": {
      "email_id": "my-service-account@my-project.iam.gserviceaccount.com",
      "project_id": "my-project",
      "unique_id": "123456789012345678901"
    },
    "type": "service_account"
  }
}

יומנים לאימות באמצעות פרטי כניסה לטווח קצר

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

חלק מה-methods שמפעילים עשויות ליצור יומני ביקורת. באופן כללי, רשומות אלו ביומן מציגות את הזהויות הבאות:

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

לדוגמה, נניח שהמשתמש example-user@example.com יוצר פרטי כניסה לטווח קצר עבור חשבון השירות my-service-account@my-project.iam.gserviceaccount.com. לאחר מכן המשתמש יוצר נושא Pub/Sub חדש, באמצעות פרטי הכניסה לטווח הקצר כדי להתחזות לחשבון השירות. Pub/Sub יוצרת רשומה ביומן שמזהה את חשבון השירות, וכן את המשתמש שמתחזה לחשבון השירות:

{
  "logName": "projects/my-project/logs/cloudaudit.googleapis.com%2Factivity",
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalEmail": "my-service-account@my-project.iam.gserviceaccount.com",
      "serviceAccountDelegationInfo": [
        {
          "firstPartyPrincipal": {
            "principalEmail": "example-user@example.com"
          }
        }
      ]
    },
    "methodName": "google.pubsub.v1.Publisher.CreateTopic",
    "request": {
      "@type": "type.googleapis.com/google.pubsub.v1.Topic",
      "name": "projects/my-project/topics/my-topic"
    },
    "resourceName": "projects/my-project/topics/my-topic"
  },
  "resource": {
    "type": "pubsub_topic"
  }
}

יומנים של פעולות שבוצעו על ידי סוכני שירות

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

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

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

הפרטים הנוספים האלה מופיעים בשדה serviceDelegationHistory של יומן הביקורת, שהוא שדה מקונן בשדה authenticationInfo. השדה הזה מכיל את המידע הבא:

  • המנהל המקורי שיצר את ההזמנה
  • סוכן השירות שביצע את הפעולה
  • השירות שאליו שייך סוכן השירות
  • מזהה המשרה

לדוגמה, נניח שמשתמש example-user@example.com יוצר עבודה באמצעות BigQuery Connection API. כדי שהעבודה הזו תפעל, צריך שאחד מסוכני השירות של BigQuery Connection API יבצע פעולה. במקרה כזה, יומן הביקורת של פעולת סוכן השירות יכיל שדה serviceDelegationHistory שדומה לזה:

{
  "protoPayload": {
    "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
    "authenticationInfo": {
      "principalEmail": "bqcx-442188550395-jujw@gcp-sa-bigquery-condel.iam.gserviceaccount.com",
      "serviceDelegationHistory": {
        "originalPrincipal": "user:my-user@example.com",
        "serviceMetadata": [
          {
            "principalSubject": "serviceAccount:bqcx-442188550395-jujw@gcp-sa-bigquery-condel.iam.gserviceaccount.com",
            "serviceDomain": "bigquery.googleapis.com",
          }
        ]
      }
    }
  }
}

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