google-apis-securitycenter_v1 0.68.0 → 0.69.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -875,6 +875,68 @@ module Google
875
875
  end
876
876
  end
877
877
 
878
+ # Result containing the properties and count of a ComplianceSnapshot request.
879
+ class ComplianceSnapshot
880
+ include Google::Apis::Core::Hashable
881
+
882
+ # The category of Findings matching.
883
+ # Corresponds to the JSON property `category`
884
+ # @return [String]
885
+ attr_accessor :category
886
+
887
+ # The compliance standard (ie CIS).
888
+ # Corresponds to the JSON property `complianceStandard`
889
+ # @return [String]
890
+ attr_accessor :compliance_standard
891
+
892
+ # The compliance version (ie 1.3) in CIS 1.3.
893
+ # Corresponds to the JSON property `complianceVersion`
894
+ # @return [String]
895
+ attr_accessor :compliance_version
896
+
897
+ # Total count of findings for the given properties.
898
+ # Corresponds to the JSON property `count`
899
+ # @return [Fixnum]
900
+ attr_accessor :count
901
+
902
+ # The leaf container resource name that is closest to the snapshot.
903
+ # Corresponds to the JSON property `leafContainerResource`
904
+ # @return [String]
905
+ attr_accessor :leaf_container_resource
906
+
907
+ # The compliance snapshot name. Format: //sources//complianceSnapshots/
908
+ # Corresponds to the JSON property `name`
909
+ # @return [String]
910
+ attr_accessor :name
911
+
912
+ # The CRM resource display name that is closest to the snapshot the Findings
913
+ # belong to.
914
+ # Corresponds to the JSON property `projectDisplayName`
915
+ # @return [String]
916
+ attr_accessor :project_display_name
917
+
918
+ # The snapshot time of the snapshot.
919
+ # Corresponds to the JSON property `snapshotTime`
920
+ # @return [String]
921
+ attr_accessor :snapshot_time
922
+
923
+ def initialize(**args)
924
+ update!(**args)
925
+ end
926
+
927
+ # Update properties of this object
928
+ def update!(**args)
929
+ @category = args[:category] if args.key?(:category)
930
+ @compliance_standard = args[:compliance_standard] if args.key?(:compliance_standard)
931
+ @compliance_version = args[:compliance_version] if args.key?(:compliance_version)
932
+ @count = args[:count] if args.key?(:count)
933
+ @leaf_container_resource = args[:leaf_container_resource] if args.key?(:leaf_container_resource)
934
+ @name = args[:name] if args.key?(:name)
935
+ @project_display_name = args[:project_display_name] if args.key?(:project_display_name)
936
+ @snapshot_time = args[:snapshot_time] if args.key?(:snapshot_time)
937
+ end
938
+ end
939
+
878
940
  # Contains information about the IP connection associated with the finding.
879
941
  class Connection
880
942
  include Google::Apis::Core::Hashable
@@ -3073,6 +3135,2506 @@ module Google
3073
3135
  end
3074
3136
  end
3075
3137
 
3138
+ # Represents an access event.
3139
+ class GoogleCloudSecuritycenterV2Access
3140
+ include Google::Apis::Core::Hashable
3141
+
3142
+ # Caller's IP address, such as "1.1.1.1".
3143
+ # Corresponds to the JSON property `callerIp`
3144
+ # @return [String]
3145
+ attr_accessor :caller_ip
3146
+
3147
+ # Represents a geographical location for a given access.
3148
+ # Corresponds to the JSON property `callerIpGeo`
3149
+ # @return [Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Geolocation]
3150
+ attr_accessor :caller_ip_geo
3151
+
3152
+ # The method that the service account called, e.g. "SetIamPolicy".
3153
+ # Corresponds to the JSON property `methodName`
3154
+ # @return [String]
3155
+ attr_accessor :method_name
3156
+
3157
+ # Associated email, such as "foo@google.com". The email address of the
3158
+ # authenticated user or a service account acting on behalf of a third party
3159
+ # principal making the request. For third party identity callers, the `
3160
+ # principal_subject` field is populated instead of this field. For privacy
3161
+ # reasons, the principal email address is sometimes redacted. For more
3162
+ # information, see [Caller identities in audit logs](https://cloud.google.com/
3163
+ # logging/docs/audit#user-id).
3164
+ # Corresponds to the JSON property `principalEmail`
3165
+ # @return [String]
3166
+ attr_accessor :principal_email
3167
+
3168
+ # A string that represents the principal_subject that is associated with the
3169
+ # identity. Unlike `principal_email`, `principal_subject` supports principals
3170
+ # that aren't associated with email addresses, such as third party principals.
3171
+ # For most identities, the format is `principal://iam.googleapis.com/`identity
3172
+ # pool name`/subject/`subject``. Some GKE identities, such as GKE_WORKLOAD,
3173
+ # FREEFORM, and GKE_HUB_WORKLOAD, still use the legacy format `serviceAccount:`
3174
+ # identity pool name`[`subject`]`.
3175
+ # Corresponds to the JSON property `principalSubject`
3176
+ # @return [String]
3177
+ attr_accessor :principal_subject
3178
+
3179
+ # The identity delegation history of an authenticated service account that made
3180
+ # the request. The `serviceAccountDelegationInfo[]` object contains information
3181
+ # about the real authorities that try to access Google Cloud resources by
3182
+ # delegating on a service account. When multiple authorities are present, they
3183
+ # are guaranteed to be sorted based on the original ordering of the identity
3184
+ # delegation events.
3185
+ # Corresponds to the JSON property `serviceAccountDelegationInfo`
3186
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2ServiceAccountDelegationInfo>]
3187
+ attr_accessor :service_account_delegation_info
3188
+
3189
+ # The name of the service account key that was used to create or exchange
3190
+ # credentials when authenticating the service account that made the request.
3191
+ # This is a scheme-less URI full resource name. For example: "//iam.googleapis.
3192
+ # com/projects/`PROJECT_ID`/serviceAccounts/`ACCOUNT`/keys/`key`".
3193
+ # Corresponds to the JSON property `serviceAccountKeyName`
3194
+ # @return [String]
3195
+ attr_accessor :service_account_key_name
3196
+
3197
+ # This is the API service that the service account made a call to, e.g. "iam.
3198
+ # googleapis.com"
3199
+ # Corresponds to the JSON property `serviceName`
3200
+ # @return [String]
3201
+ attr_accessor :service_name
3202
+
3203
+ # The caller's user agent string associated with the finding.
3204
+ # Corresponds to the JSON property `userAgent`
3205
+ # @return [String]
3206
+ attr_accessor :user_agent
3207
+
3208
+ # Type of user agent associated with the finding. For example, an operating
3209
+ # system shell or an embedded or standalone application.
3210
+ # Corresponds to the JSON property `userAgentFamily`
3211
+ # @return [String]
3212
+ attr_accessor :user_agent_family
3213
+
3214
+ # A string that represents a username. The username provided depends on the type
3215
+ # of the finding and is likely not an IAM principal. For example, this can be a
3216
+ # system username if the finding is related to a virtual machine, or it can be
3217
+ # an application login username.
3218
+ # Corresponds to the JSON property `userName`
3219
+ # @return [String]
3220
+ attr_accessor :user_name
3221
+
3222
+ def initialize(**args)
3223
+ update!(**args)
3224
+ end
3225
+
3226
+ # Update properties of this object
3227
+ def update!(**args)
3228
+ @caller_ip = args[:caller_ip] if args.key?(:caller_ip)
3229
+ @caller_ip_geo = args[:caller_ip_geo] if args.key?(:caller_ip_geo)
3230
+ @method_name = args[:method_name] if args.key?(:method_name)
3231
+ @principal_email = args[:principal_email] if args.key?(:principal_email)
3232
+ @principal_subject = args[:principal_subject] if args.key?(:principal_subject)
3233
+ @service_account_delegation_info = args[:service_account_delegation_info] if args.key?(:service_account_delegation_info)
3234
+ @service_account_key_name = args[:service_account_key_name] if args.key?(:service_account_key_name)
3235
+ @service_name = args[:service_name] if args.key?(:service_name)
3236
+ @user_agent = args[:user_agent] if args.key?(:user_agent)
3237
+ @user_agent_family = args[:user_agent_family] if args.key?(:user_agent_family)
3238
+ @user_name = args[:user_name] if args.key?(:user_name)
3239
+ end
3240
+ end
3241
+
3242
+ # Conveys information about a Kubernetes access review (such as one returned by
3243
+ # a [`kubectl auth can-i`](https://kubernetes.io/docs/reference/access-authn-
3244
+ # authz/authorization/#checking-api-access) command) that was involved in a
3245
+ # finding.
3246
+ class GoogleCloudSecuritycenterV2AccessReview
3247
+ include Google::Apis::Core::Hashable
3248
+
3249
+ # The API group of the resource. "*" means all.
3250
+ # Corresponds to the JSON property `group`
3251
+ # @return [String]
3252
+ attr_accessor :group
3253
+
3254
+ # The name of the resource being requested. Empty means all.
3255
+ # Corresponds to the JSON property `name`
3256
+ # @return [String]
3257
+ attr_accessor :name
3258
+
3259
+ # Namespace of the action being requested. Currently, there is no distinction
3260
+ # between no namespace and all namespaces. Both are represented by "" (empty).
3261
+ # Corresponds to the JSON property `ns`
3262
+ # @return [String]
3263
+ attr_accessor :ns
3264
+
3265
+ # The optional resource type requested. "*" means all.
3266
+ # Corresponds to the JSON property `resource`
3267
+ # @return [String]
3268
+ attr_accessor :resource
3269
+
3270
+ # The optional subresource type.
3271
+ # Corresponds to the JSON property `subresource`
3272
+ # @return [String]
3273
+ attr_accessor :subresource
3274
+
3275
+ # A Kubernetes resource API verb, like get, list, watch, create, update, delete,
3276
+ # proxy. "*" means all.
3277
+ # Corresponds to the JSON property `verb`
3278
+ # @return [String]
3279
+ attr_accessor :verb
3280
+
3281
+ # The API version of the resource. "*" means all.
3282
+ # Corresponds to the JSON property `version`
3283
+ # @return [String]
3284
+ attr_accessor :version
3285
+
3286
+ def initialize(**args)
3287
+ update!(**args)
3288
+ end
3289
+
3290
+ # Update properties of this object
3291
+ def update!(**args)
3292
+ @group = args[:group] if args.key?(:group)
3293
+ @name = args[:name] if args.key?(:name)
3294
+ @ns = args[:ns] if args.key?(:ns)
3295
+ @resource = args[:resource] if args.key?(:resource)
3296
+ @subresource = args[:subresource] if args.key?(:subresource)
3297
+ @verb = args[:verb] if args.key?(:verb)
3298
+ @version = args[:version] if args.key?(:version)
3299
+ end
3300
+ end
3301
+
3302
+ # An attack exposure contains the results of an attack path simulation run.
3303
+ class GoogleCloudSecuritycenterV2AttackExposure
3304
+ include Google::Apis::Core::Hashable
3305
+
3306
+ # The resource name of the attack path simulation result that contains the
3307
+ # details regarding this attack exposure score. Example: organizations/123/
3308
+ # attackExposureResults/456
3309
+ # Corresponds to the JSON property `attackExposureResult`
3310
+ # @return [String]
3311
+ attr_accessor :attack_exposure_result
3312
+
3313
+ # The number of high value resources that are exposed as a result of this
3314
+ # finding.
3315
+ # Corresponds to the JSON property `exposedHighValueResourcesCount`
3316
+ # @return [Fixnum]
3317
+ attr_accessor :exposed_high_value_resources_count
3318
+
3319
+ # The number of high value resources that are exposed as a result of this
3320
+ # finding.
3321
+ # Corresponds to the JSON property `exposedLowValueResourcesCount`
3322
+ # @return [Fixnum]
3323
+ attr_accessor :exposed_low_value_resources_count
3324
+
3325
+ # The number of medium value resources that are exposed as a result of this
3326
+ # finding.
3327
+ # Corresponds to the JSON property `exposedMediumValueResourcesCount`
3328
+ # @return [Fixnum]
3329
+ attr_accessor :exposed_medium_value_resources_count
3330
+
3331
+ # The most recent time the attack exposure was updated on this finding.
3332
+ # Corresponds to the JSON property `latestCalculationTime`
3333
+ # @return [String]
3334
+ attr_accessor :latest_calculation_time
3335
+
3336
+ # A number between 0 (inclusive) and infinity that represents how important this
3337
+ # finding is to remediate. The higher the score, the more important it is to
3338
+ # remediate.
3339
+ # Corresponds to the JSON property `score`
3340
+ # @return [Float]
3341
+ attr_accessor :score
3342
+
3343
+ # Output only. What state this AttackExposure is in. This captures whether or
3344
+ # not an attack exposure has been calculated or not.
3345
+ # Corresponds to the JSON property `state`
3346
+ # @return [String]
3347
+ attr_accessor :state
3348
+
3349
+ def initialize(**args)
3350
+ update!(**args)
3351
+ end
3352
+
3353
+ # Update properties of this object
3354
+ def update!(**args)
3355
+ @attack_exposure_result = args[:attack_exposure_result] if args.key?(:attack_exposure_result)
3356
+ @exposed_high_value_resources_count = args[:exposed_high_value_resources_count] if args.key?(:exposed_high_value_resources_count)
3357
+ @exposed_low_value_resources_count = args[:exposed_low_value_resources_count] if args.key?(:exposed_low_value_resources_count)
3358
+ @exposed_medium_value_resources_count = args[:exposed_medium_value_resources_count] if args.key?(:exposed_medium_value_resources_count)
3359
+ @latest_calculation_time = args[:latest_calculation_time] if args.key?(:latest_calculation_time)
3360
+ @score = args[:score] if args.key?(:score)
3361
+ @state = args[:state] if args.key?(:state)
3362
+ end
3363
+ end
3364
+
3365
+ # Configures how to deliver Findings to BigQuery Instance.
3366
+ class GoogleCloudSecuritycenterV2BigQueryExport
3367
+ include Google::Apis::Core::Hashable
3368
+
3369
+ # Output only. The time at which the BigQuery export was created. This field is
3370
+ # set by the server and will be ignored if provided on export on creation.
3371
+ # Corresponds to the JSON property `createTime`
3372
+ # @return [String]
3373
+ attr_accessor :create_time
3374
+
3375
+ # The dataset to write findings' updates to. Its format is "projects/[project_id]
3376
+ # /datasets/[bigquery_dataset_id]". BigQuery Dataset unique ID must contain only
3377
+ # letters (a-z, A-Z), numbers (0-9), or underscores (_).
3378
+ # Corresponds to the JSON property `dataset`
3379
+ # @return [String]
3380
+ attr_accessor :dataset
3381
+
3382
+ # The description of the export (max of 1024 characters).
3383
+ # Corresponds to the JSON property `description`
3384
+ # @return [String]
3385
+ attr_accessor :description
3386
+
3387
+ # Expression that defines the filter to apply across create/update events of
3388
+ # findings. The expression is a list of zero or more restrictions combined via
3389
+ # logical operators `AND` and `OR`. Parentheses are supported, and `OR` has
3390
+ # higher precedence than `AND`. Restrictions have the form ` ` and may have a `-`
3391
+ # character in front of them to indicate negation. The fields map to those
3392
+ # defined in the corresponding resource. The supported operators are: * `=` for
3393
+ # all value types. * `>`, `<`, `>=`, `<=` for integer values. * `:`, meaning
3394
+ # substring matching, for strings. The supported value types are: * string
3395
+ # literals in quotes. * integer literals without quotes. * boolean literals `
3396
+ # true` and `false` without quotes.
3397
+ # Corresponds to the JSON property `filter`
3398
+ # @return [String]
3399
+ attr_accessor :filter
3400
+
3401
+ # Output only. Email address of the user who last edited the BigQuery export.
3402
+ # This field is set by the server and will be ignored if provided on export
3403
+ # creation or update.
3404
+ # Corresponds to the JSON property `mostRecentEditor`
3405
+ # @return [String]
3406
+ attr_accessor :most_recent_editor
3407
+
3408
+ # The relative resource name of this export. See: https://cloud.google.com/apis/
3409
+ # design/resource_names#relative_resource_name. The following list shows some
3410
+ # examples: + `organizations/`organization_id`/locations/`location_id`/
3411
+ # bigQueryExports/`export_id`` + `folders/`folder_id`/locations/`location_id`/
3412
+ # bigQueryExports/`export_id`` + `projects/`project_id`/locations/`location_id`/
3413
+ # bigQueryExports/`export_id`` This field is provided in responses, and is
3414
+ # ignored when provided in create requests.
3415
+ # Corresponds to the JSON property `name`
3416
+ # @return [String]
3417
+ attr_accessor :name
3418
+
3419
+ # Output only. The service account that needs permission to create table and
3420
+ # upload data to the BigQuery dataset.
3421
+ # Corresponds to the JSON property `principal`
3422
+ # @return [String]
3423
+ attr_accessor :principal
3424
+
3425
+ # Output only. The most recent time at which the BigQuery export was updated.
3426
+ # This field is set by the server and will be ignored if provided on export
3427
+ # creation or update.
3428
+ # Corresponds to the JSON property `updateTime`
3429
+ # @return [String]
3430
+ attr_accessor :update_time
3431
+
3432
+ def initialize(**args)
3433
+ update!(**args)
3434
+ end
3435
+
3436
+ # Update properties of this object
3437
+ def update!(**args)
3438
+ @create_time = args[:create_time] if args.key?(:create_time)
3439
+ @dataset = args[:dataset] if args.key?(:dataset)
3440
+ @description = args[:description] if args.key?(:description)
3441
+ @filter = args[:filter] if args.key?(:filter)
3442
+ @most_recent_editor = args[:most_recent_editor] if args.key?(:most_recent_editor)
3443
+ @name = args[:name] if args.key?(:name)
3444
+ @principal = args[:principal] if args.key?(:principal)
3445
+ @update_time = args[:update_time] if args.key?(:update_time)
3446
+ end
3447
+ end
3448
+
3449
+ # Represents a Kubernetes RoleBinding or ClusterRoleBinding.
3450
+ class GoogleCloudSecuritycenterV2Binding
3451
+ include Google::Apis::Core::Hashable
3452
+
3453
+ # Name for the binding.
3454
+ # Corresponds to the JSON property `name`
3455
+ # @return [String]
3456
+ attr_accessor :name
3457
+
3458
+ # Namespace for the binding.
3459
+ # Corresponds to the JSON property `ns`
3460
+ # @return [String]
3461
+ attr_accessor :ns
3462
+
3463
+ # Kubernetes Role or ClusterRole.
3464
+ # Corresponds to the JSON property `role`
3465
+ # @return [Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Role]
3466
+ attr_accessor :role
3467
+
3468
+ # Represents one or more subjects that are bound to the role. Not always
3469
+ # available for PATCH requests.
3470
+ # Corresponds to the JSON property `subjects`
3471
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Subject>]
3472
+ attr_accessor :subjects
3473
+
3474
+ def initialize(**args)
3475
+ update!(**args)
3476
+ end
3477
+
3478
+ # Update properties of this object
3479
+ def update!(**args)
3480
+ @name = args[:name] if args.key?(:name)
3481
+ @ns = args[:ns] if args.key?(:ns)
3482
+ @role = args[:role] if args.key?(:role)
3483
+ @subjects = args[:subjects] if args.key?(:subjects)
3484
+ end
3485
+ end
3486
+
3487
+ # The response to a BulkMute request. Contains the LRO information.
3488
+ class GoogleCloudSecuritycenterV2BulkMuteFindingsResponse
3489
+ include Google::Apis::Core::Hashable
3490
+
3491
+ def initialize(**args)
3492
+ update!(**args)
3493
+ end
3494
+
3495
+ # Update properties of this object
3496
+ def update!(**args)
3497
+ end
3498
+ end
3499
+
3500
+ # The [data profile](https://cloud.google.com/dlp/docs/data-profiles) associated
3501
+ # with the finding.
3502
+ class GoogleCloudSecuritycenterV2CloudDlpDataProfile
3503
+ include Google::Apis::Core::Hashable
3504
+
3505
+ # Name of the data profile, for example, `projects/123/locations/europe/
3506
+ # tableProfiles/8383929`.
3507
+ # Corresponds to the JSON property `dataProfile`
3508
+ # @return [String]
3509
+ attr_accessor :data_profile
3510
+
3511
+ # The resource hierarchy level at which the data profile was generated.
3512
+ # Corresponds to the JSON property `parentType`
3513
+ # @return [String]
3514
+ attr_accessor :parent_type
3515
+
3516
+ def initialize(**args)
3517
+ update!(**args)
3518
+ end
3519
+
3520
+ # Update properties of this object
3521
+ def update!(**args)
3522
+ @data_profile = args[:data_profile] if args.key?(:data_profile)
3523
+ @parent_type = args[:parent_type] if args.key?(:parent_type)
3524
+ end
3525
+ end
3526
+
3527
+ # Details about the Cloud Data Loss Prevention (Cloud DLP) [inspection job](
3528
+ # https://cloud.google.com/dlp/docs/concepts-job-triggers) that produced the
3529
+ # finding.
3530
+ class GoogleCloudSecuritycenterV2CloudDlpInspection
3531
+ include Google::Apis::Core::Hashable
3532
+
3533
+ # Whether Cloud DLP scanned the complete resource or a sampled subset.
3534
+ # Corresponds to the JSON property `fullScan`
3535
+ # @return [Boolean]
3536
+ attr_accessor :full_scan
3537
+ alias_method :full_scan?, :full_scan
3538
+
3539
+ # The type of information (or *[infoType](https://cloud.google.com/dlp/docs/
3540
+ # infotypes-reference)*) found, for example, `EMAIL_ADDRESS` or `STREET_ADDRESS`.
3541
+ # Corresponds to the JSON property `infoType`
3542
+ # @return [String]
3543
+ attr_accessor :info_type
3544
+
3545
+ # The number of times Cloud DLP found this infoType within this job and resource.
3546
+ # Corresponds to the JSON property `infoTypeCount`
3547
+ # @return [Fixnum]
3548
+ attr_accessor :info_type_count
3549
+
3550
+ # Name of the inspection job, for example, `projects/123/locations/europe/
3551
+ # dlpJobs/i-8383929`.
3552
+ # Corresponds to the JSON property `inspectJob`
3553
+ # @return [String]
3554
+ attr_accessor :inspect_job
3555
+
3556
+ def initialize(**args)
3557
+ update!(**args)
3558
+ end
3559
+
3560
+ # Update properties of this object
3561
+ def update!(**args)
3562
+ @full_scan = args[:full_scan] if args.key?(:full_scan)
3563
+ @info_type = args[:info_type] if args.key?(:info_type)
3564
+ @info_type_count = args[:info_type_count] if args.key?(:info_type_count)
3565
+ @inspect_job = args[:inspect_job] if args.key?(:inspect_job)
3566
+ end
3567
+ end
3568
+
3569
+ # Metadata taken from a [Cloud Logging LogEntry](https://cloud.google.com/
3570
+ # logging/docs/reference/v2/rest/v2/LogEntry)
3571
+ class GoogleCloudSecuritycenterV2CloudLoggingEntry
3572
+ include Google::Apis::Core::Hashable
3573
+
3574
+ # A unique identifier for the log entry.
3575
+ # Corresponds to the JSON property `insertId`
3576
+ # @return [String]
3577
+ attr_accessor :insert_id
3578
+
3579
+ # The type of the log (part of `log_name`. `log_name` is the resource name of
3580
+ # the log to which this log entry belongs). For example: `cloudresourcemanager.
3581
+ # googleapis.com/activity` Note that this field is not URL-encoded, unlike in `
3582
+ # LogEntry`.
3583
+ # Corresponds to the JSON property `logId`
3584
+ # @return [String]
3585
+ attr_accessor :log_id
3586
+
3587
+ # The organization, folder, or project of the monitored resource that produced
3588
+ # this log entry.
3589
+ # Corresponds to the JSON property `resourceContainer`
3590
+ # @return [String]
3591
+ attr_accessor :resource_container
3592
+
3593
+ # The time the event described by the log entry occurred.
3594
+ # Corresponds to the JSON property `timestamp`
3595
+ # @return [String]
3596
+ attr_accessor :timestamp
3597
+
3598
+ def initialize(**args)
3599
+ update!(**args)
3600
+ end
3601
+
3602
+ # Update properties of this object
3603
+ def update!(**args)
3604
+ @insert_id = args[:insert_id] if args.key?(:insert_id)
3605
+ @log_id = args[:log_id] if args.key?(:log_id)
3606
+ @resource_container = args[:resource_container] if args.key?(:resource_container)
3607
+ @timestamp = args[:timestamp] if args.key?(:timestamp)
3608
+ end
3609
+ end
3610
+
3611
+ # Contains compliance information about a security standard indicating unmet
3612
+ # recommendations.
3613
+ class GoogleCloudSecuritycenterV2Compliance
3614
+ include Google::Apis::Core::Hashable
3615
+
3616
+ # Policies within the standard or benchmark, for example, A.12.4.1
3617
+ # Corresponds to the JSON property `ids`
3618
+ # @return [Array<String>]
3619
+ attr_accessor :ids
3620
+
3621
+ # Industry-wide compliance standards or benchmarks, such as CIS, PCI, and OWASP.
3622
+ # Corresponds to the JSON property `standard`
3623
+ # @return [String]
3624
+ attr_accessor :standard
3625
+
3626
+ # Version of the standard or benchmark, for example, 1.1
3627
+ # Corresponds to the JSON property `version`
3628
+ # @return [String]
3629
+ attr_accessor :version
3630
+
3631
+ def initialize(**args)
3632
+ update!(**args)
3633
+ end
3634
+
3635
+ # Update properties of this object
3636
+ def update!(**args)
3637
+ @ids = args[:ids] if args.key?(:ids)
3638
+ @standard = args[:standard] if args.key?(:standard)
3639
+ @version = args[:version] if args.key?(:version)
3640
+ end
3641
+ end
3642
+
3643
+ # Contains information about the IP connection associated with the finding.
3644
+ class GoogleCloudSecuritycenterV2Connection
3645
+ include Google::Apis::Core::Hashable
3646
+
3647
+ # Destination IP address. Not present for sockets that are listening and not
3648
+ # connected.
3649
+ # Corresponds to the JSON property `destinationIp`
3650
+ # @return [String]
3651
+ attr_accessor :destination_ip
3652
+
3653
+ # Destination port. Not present for sockets that are listening and not connected.
3654
+ # Corresponds to the JSON property `destinationPort`
3655
+ # @return [Fixnum]
3656
+ attr_accessor :destination_port
3657
+
3658
+ # IANA Internet Protocol Number such as TCP(6) and UDP(17).
3659
+ # Corresponds to the JSON property `protocol`
3660
+ # @return [String]
3661
+ attr_accessor :protocol
3662
+
3663
+ # Source IP address.
3664
+ # Corresponds to the JSON property `sourceIp`
3665
+ # @return [String]
3666
+ attr_accessor :source_ip
3667
+
3668
+ # Source port.
3669
+ # Corresponds to the JSON property `sourcePort`
3670
+ # @return [Fixnum]
3671
+ attr_accessor :source_port
3672
+
3673
+ def initialize(**args)
3674
+ update!(**args)
3675
+ end
3676
+
3677
+ # Update properties of this object
3678
+ def update!(**args)
3679
+ @destination_ip = args[:destination_ip] if args.key?(:destination_ip)
3680
+ @destination_port = args[:destination_port] if args.key?(:destination_port)
3681
+ @protocol = args[:protocol] if args.key?(:protocol)
3682
+ @source_ip = args[:source_ip] if args.key?(:source_ip)
3683
+ @source_port = args[:source_port] if args.key?(:source_port)
3684
+ end
3685
+ end
3686
+
3687
+ # The email address of a contact.
3688
+ class GoogleCloudSecuritycenterV2Contact
3689
+ include Google::Apis::Core::Hashable
3690
+
3691
+ # An email address. For example, "`person123@company.com`".
3692
+ # Corresponds to the JSON property `email`
3693
+ # @return [String]
3694
+ attr_accessor :email
3695
+
3696
+ def initialize(**args)
3697
+ update!(**args)
3698
+ end
3699
+
3700
+ # Update properties of this object
3701
+ def update!(**args)
3702
+ @email = args[:email] if args.key?(:email)
3703
+ end
3704
+ end
3705
+
3706
+ # Details about specific contacts
3707
+ class GoogleCloudSecuritycenterV2ContactDetails
3708
+ include Google::Apis::Core::Hashable
3709
+
3710
+ # A list of contacts
3711
+ # Corresponds to the JSON property `contacts`
3712
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Contact>]
3713
+ attr_accessor :contacts
3714
+
3715
+ def initialize(**args)
3716
+ update!(**args)
3717
+ end
3718
+
3719
+ # Update properties of this object
3720
+ def update!(**args)
3721
+ @contacts = args[:contacts] if args.key?(:contacts)
3722
+ end
3723
+ end
3724
+
3725
+ # Container associated with the finding.
3726
+ class GoogleCloudSecuritycenterV2Container
3727
+ include Google::Apis::Core::Hashable
3728
+
3729
+ # The time that the container was created.
3730
+ # Corresponds to the JSON property `createTime`
3731
+ # @return [String]
3732
+ attr_accessor :create_time
3733
+
3734
+ # Optional container image ID, if provided by the container runtime. Uniquely
3735
+ # identifies the container image launched using a container image digest.
3736
+ # Corresponds to the JSON property `imageId`
3737
+ # @return [String]
3738
+ attr_accessor :image_id
3739
+
3740
+ # Container labels, as provided by the container runtime.
3741
+ # Corresponds to the JSON property `labels`
3742
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Label>]
3743
+ attr_accessor :labels
3744
+
3745
+ # Name of the container.
3746
+ # Corresponds to the JSON property `name`
3747
+ # @return [String]
3748
+ attr_accessor :name
3749
+
3750
+ # Container image URI provided when configuring a pod or container. This string
3751
+ # can identify a container image version using mutable tags.
3752
+ # Corresponds to the JSON property `uri`
3753
+ # @return [String]
3754
+ attr_accessor :uri
3755
+
3756
+ def initialize(**args)
3757
+ update!(**args)
3758
+ end
3759
+
3760
+ # Update properties of this object
3761
+ def update!(**args)
3762
+ @create_time = args[:create_time] if args.key?(:create_time)
3763
+ @image_id = args[:image_id] if args.key?(:image_id)
3764
+ @labels = args[:labels] if args.key?(:labels)
3765
+ @name = args[:name] if args.key?(:name)
3766
+ @uri = args[:uri] if args.key?(:uri)
3767
+ end
3768
+ end
3769
+
3770
+ # CVE stands for Common Vulnerabilities and Exposures. More information: https://
3771
+ # cve.mitre.org
3772
+ class GoogleCloudSecuritycenterV2Cve
3773
+ include Google::Apis::Core::Hashable
3774
+
3775
+ # Common Vulnerability Scoring System version 3.
3776
+ # Corresponds to the JSON property `cvssv3`
3777
+ # @return [Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Cvssv3]
3778
+ attr_accessor :cvssv3
3779
+
3780
+ # The unique identifier for the vulnerability. e.g. CVE-2021-34527
3781
+ # Corresponds to the JSON property `id`
3782
+ # @return [String]
3783
+ attr_accessor :id
3784
+
3785
+ # Additional information about the CVE. e.g. https://cve.mitre.org/cgi-bin/
3786
+ # cvename.cgi?name=CVE-2021-34527
3787
+ # Corresponds to the JSON property `references`
3788
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Reference>]
3789
+ attr_accessor :references
3790
+
3791
+ # Whether upstream fix is available for the CVE.
3792
+ # Corresponds to the JSON property `upstreamFixAvailable`
3793
+ # @return [Boolean]
3794
+ attr_accessor :upstream_fix_available
3795
+ alias_method :upstream_fix_available?, :upstream_fix_available
3796
+
3797
+ def initialize(**args)
3798
+ update!(**args)
3799
+ end
3800
+
3801
+ # Update properties of this object
3802
+ def update!(**args)
3803
+ @cvssv3 = args[:cvssv3] if args.key?(:cvssv3)
3804
+ @id = args[:id] if args.key?(:id)
3805
+ @references = args[:references] if args.key?(:references)
3806
+ @upstream_fix_available = args[:upstream_fix_available] if args.key?(:upstream_fix_available)
3807
+ end
3808
+ end
3809
+
3810
+ # Common Vulnerability Scoring System version 3.
3811
+ class GoogleCloudSecuritycenterV2Cvssv3
3812
+ include Google::Apis::Core::Hashable
3813
+
3814
+ # This metric describes the conditions beyond the attacker's control that must
3815
+ # exist in order to exploit the vulnerability.
3816
+ # Corresponds to the JSON property `attackComplexity`
3817
+ # @return [String]
3818
+ attr_accessor :attack_complexity
3819
+
3820
+ # Base Metrics Represents the intrinsic characteristics of a vulnerability that
3821
+ # are constant over time and across user environments. This metric reflects the
3822
+ # context by which vulnerability exploitation is possible.
3823
+ # Corresponds to the JSON property `attackVector`
3824
+ # @return [String]
3825
+ attr_accessor :attack_vector
3826
+
3827
+ # This metric measures the impact to the availability of the impacted component
3828
+ # resulting from a successfully exploited vulnerability.
3829
+ # Corresponds to the JSON property `availabilityImpact`
3830
+ # @return [String]
3831
+ attr_accessor :availability_impact
3832
+
3833
+ # The base score is a function of the base metric scores.
3834
+ # Corresponds to the JSON property `baseScore`
3835
+ # @return [Float]
3836
+ attr_accessor :base_score
3837
+
3838
+ # This metric measures the impact to the confidentiality of the information
3839
+ # resources managed by a software component due to a successfully exploited
3840
+ # vulnerability.
3841
+ # Corresponds to the JSON property `confidentialityImpact`
3842
+ # @return [String]
3843
+ attr_accessor :confidentiality_impact
3844
+
3845
+ # This metric measures the impact to integrity of a successfully exploited
3846
+ # vulnerability.
3847
+ # Corresponds to the JSON property `integrityImpact`
3848
+ # @return [String]
3849
+ attr_accessor :integrity_impact
3850
+
3851
+ # This metric describes the level of privileges an attacker must possess before
3852
+ # successfully exploiting the vulnerability.
3853
+ # Corresponds to the JSON property `privilegesRequired`
3854
+ # @return [String]
3855
+ attr_accessor :privileges_required
3856
+
3857
+ # The Scope metric captures whether a vulnerability in one vulnerable component
3858
+ # impacts resources in components beyond its security scope.
3859
+ # Corresponds to the JSON property `scope`
3860
+ # @return [String]
3861
+ attr_accessor :scope
3862
+
3863
+ # This metric captures the requirement for a human user, other than the attacker,
3864
+ # to participate in the successful compromise of the vulnerable component.
3865
+ # Corresponds to the JSON property `userInteraction`
3866
+ # @return [String]
3867
+ attr_accessor :user_interaction
3868
+
3869
+ def initialize(**args)
3870
+ update!(**args)
3871
+ end
3872
+
3873
+ # Update properties of this object
3874
+ def update!(**args)
3875
+ @attack_complexity = args[:attack_complexity] if args.key?(:attack_complexity)
3876
+ @attack_vector = args[:attack_vector] if args.key?(:attack_vector)
3877
+ @availability_impact = args[:availability_impact] if args.key?(:availability_impact)
3878
+ @base_score = args[:base_score] if args.key?(:base_score)
3879
+ @confidentiality_impact = args[:confidentiality_impact] if args.key?(:confidentiality_impact)
3880
+ @integrity_impact = args[:integrity_impact] if args.key?(:integrity_impact)
3881
+ @privileges_required = args[:privileges_required] if args.key?(:privileges_required)
3882
+ @scope = args[:scope] if args.key?(:scope)
3883
+ @user_interaction = args[:user_interaction] if args.key?(:user_interaction)
3884
+ end
3885
+ end
3886
+
3887
+ # Represents database access information, such as queries. A database may be a
3888
+ # sub-resource of an instance (as in the case of Cloud SQL instances or Cloud
3889
+ # Spanner instances), or the database instance itself. Some database resources
3890
+ # might not have the [full resource name](https://google.aip.dev/122#full-
3891
+ # resource-names) populated because these resource types, such as Cloud SQL
3892
+ # databases, are not yet supported by Cloud Asset Inventory. In these cases only
3893
+ # the display name is provided.
3894
+ class GoogleCloudSecuritycenterV2Database
3895
+ include Google::Apis::Core::Hashable
3896
+
3897
+ # The human-readable name of the database that the user connected to.
3898
+ # Corresponds to the JSON property `displayName`
3899
+ # @return [String]
3900
+ attr_accessor :display_name
3901
+
3902
+ # The target usernames, roles, or groups of an SQL privilege grant, which is not
3903
+ # an IAM policy change.
3904
+ # Corresponds to the JSON property `grantees`
3905
+ # @return [Array<String>]
3906
+ attr_accessor :grantees
3907
+
3908
+ # Some database resources may not have the [full resource name](https://google.
3909
+ # aip.dev/122#full-resource-names) populated because these resource types are
3910
+ # not yet supported by Cloud Asset Inventory (e.g. Cloud SQL databases). In
3911
+ # these cases only the display name will be provided. The [full resource name](
3912
+ # https://google.aip.dev/122#full-resource-names) of the database that the user
3913
+ # connected to, if it is supported by Cloud Asset Inventory.
3914
+ # Corresponds to the JSON property `name`
3915
+ # @return [String]
3916
+ attr_accessor :name
3917
+
3918
+ # The SQL statement that is associated with the database access.
3919
+ # Corresponds to the JSON property `query`
3920
+ # @return [String]
3921
+ attr_accessor :query
3922
+
3923
+ # The username used to connect to the database. The username might not be an IAM
3924
+ # principal and does not have a set format.
3925
+ # Corresponds to the JSON property `userName`
3926
+ # @return [String]
3927
+ attr_accessor :user_name
3928
+
3929
+ # The version of the database, for example, POSTGRES_14. See [the complete list](
3930
+ # https://cloud.google.com/sql/docs/mysql/admin-api/rest/v1/SqlDatabaseVersion).
3931
+ # Corresponds to the JSON property `version`
3932
+ # @return [String]
3933
+ attr_accessor :version
3934
+
3935
+ def initialize(**args)
3936
+ update!(**args)
3937
+ end
3938
+
3939
+ # Update properties of this object
3940
+ def update!(**args)
3941
+ @display_name = args[:display_name] if args.key?(:display_name)
3942
+ @grantees = args[:grantees] if args.key?(:grantees)
3943
+ @name = args[:name] if args.key?(:name)
3944
+ @query = args[:query] if args.key?(:query)
3945
+ @user_name = args[:user_name] if args.key?(:user_name)
3946
+ @version = args[:version] if args.key?(:version)
3947
+ end
3948
+ end
3949
+
3950
+ # Memory hash detection contributing to the binary family match.
3951
+ class GoogleCloudSecuritycenterV2Detection
3952
+ include Google::Apis::Core::Hashable
3953
+
3954
+ # The name of the binary associated with the memory hash signature detection.
3955
+ # Corresponds to the JSON property `binary`
3956
+ # @return [String]
3957
+ attr_accessor :binary
3958
+
3959
+ # The percentage of memory page hashes in the signature that were matched.
3960
+ # Corresponds to the JSON property `percentPagesMatched`
3961
+ # @return [Float]
3962
+ attr_accessor :percent_pages_matched
3963
+
3964
+ def initialize(**args)
3965
+ update!(**args)
3966
+ end
3967
+
3968
+ # Update properties of this object
3969
+ def update!(**args)
3970
+ @binary = args[:binary] if args.key?(:binary)
3971
+ @percent_pages_matched = args[:percent_pages_matched] if args.key?(:percent_pages_matched)
3972
+ end
3973
+ end
3974
+
3975
+ # A name-value pair representing an environment variable used in an operating
3976
+ # system process.
3977
+ class GoogleCloudSecuritycenterV2EnvironmentVariable
3978
+ include Google::Apis::Core::Hashable
3979
+
3980
+ # Environment variable name as a JSON encoded string.
3981
+ # Corresponds to the JSON property `name`
3982
+ # @return [String]
3983
+ attr_accessor :name
3984
+
3985
+ # Environment variable value as a JSON encoded string.
3986
+ # Corresponds to the JSON property `val`
3987
+ # @return [String]
3988
+ attr_accessor :val
3989
+
3990
+ def initialize(**args)
3991
+ update!(**args)
3992
+ end
3993
+
3994
+ # Update properties of this object
3995
+ def update!(**args)
3996
+ @name = args[:name] if args.key?(:name)
3997
+ @val = args[:val] if args.key?(:val)
3998
+ end
3999
+ end
4000
+
4001
+ # Resource where data was exfiltrated from or exfiltrated to.
4002
+ class GoogleCloudSecuritycenterV2ExfilResource
4003
+ include Google::Apis::Core::Hashable
4004
+
4005
+ # Subcomponents of the asset that was exfiltrated, like URIs used during
4006
+ # exfiltration, table names, databases, and filenames. For example, multiple
4007
+ # tables might have been exfiltrated from the same Cloud SQL instance, or
4008
+ # multiple files might have been exfiltrated from the same Cloud Storage bucket.
4009
+ # Corresponds to the JSON property `components`
4010
+ # @return [Array<String>]
4011
+ attr_accessor :components
4012
+
4013
+ # The resource's [full resource name](https://cloud.google.com/apis/design/
4014
+ # resource_names#full_resource_name).
4015
+ # Corresponds to the JSON property `name`
4016
+ # @return [String]
4017
+ attr_accessor :name
4018
+
4019
+ def initialize(**args)
4020
+ update!(**args)
4021
+ end
4022
+
4023
+ # Update properties of this object
4024
+ def update!(**args)
4025
+ @components = args[:components] if args.key?(:components)
4026
+ @name = args[:name] if args.key?(:name)
4027
+ end
4028
+ end
4029
+
4030
+ # Exfiltration represents a data exfiltration attempt from one or more sources
4031
+ # to one or more targets. The `sources` attribute lists the sources of the
4032
+ # exfiltrated data. The `targets` attribute lists the destinations the data was
4033
+ # copied to.
4034
+ class GoogleCloudSecuritycenterV2Exfiltration
4035
+ include Google::Apis::Core::Hashable
4036
+
4037
+ # If there are multiple sources, then the data is considered "joined" between
4038
+ # them. For instance, BigQuery can join multiple tables, and each table would be
4039
+ # considered a source.
4040
+ # Corresponds to the JSON property `sources`
4041
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2ExfilResource>]
4042
+ attr_accessor :sources
4043
+
4044
+ # If there are multiple targets, each target would get a complete copy of the "
4045
+ # joined" source data.
4046
+ # Corresponds to the JSON property `targets`
4047
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2ExfilResource>]
4048
+ attr_accessor :targets
4049
+
4050
+ # Total exfiltrated bytes processed for the entire job.
4051
+ # Corresponds to the JSON property `totalExfiltratedBytes`
4052
+ # @return [Fixnum]
4053
+ attr_accessor :total_exfiltrated_bytes
4054
+
4055
+ def initialize(**args)
4056
+ update!(**args)
4057
+ end
4058
+
4059
+ # Update properties of this object
4060
+ def update!(**args)
4061
+ @sources = args[:sources] if args.key?(:sources)
4062
+ @targets = args[:targets] if args.key?(:targets)
4063
+ @total_exfiltrated_bytes = args[:total_exfiltrated_bytes] if args.key?(:total_exfiltrated_bytes)
4064
+ end
4065
+ end
4066
+
4067
+ # Representation of third party SIEM/SOAR fields within SCC.
4068
+ class GoogleCloudSecuritycenterV2ExternalSystem
4069
+ include Google::Apis::Core::Hashable
4070
+
4071
+ # References primary/secondary etc assignees in the external system.
4072
+ # Corresponds to the JSON property `assignees`
4073
+ # @return [Array<String>]
4074
+ attr_accessor :assignees
4075
+
4076
+ # The time when the case was last updated, as reported by the external system.
4077
+ # Corresponds to the JSON property `externalSystemUpdateTime`
4078
+ # @return [String]
4079
+ attr_accessor :external_system_update_time
4080
+
4081
+ # The identifier that's used to track the finding's corresponding case in the
4082
+ # external system.
4083
+ # Corresponds to the JSON property `externalUid`
4084
+ # @return [String]
4085
+ attr_accessor :external_uid
4086
+
4087
+ # Full resource name of the external system. The following list shows some
4088
+ # examples: + `organizations/1234/sources/5678/findings/123456/externalSystems/
4089
+ # jira` + `organizations/1234/sources/5678/locations/us/findings/123456/
4090
+ # externalSystems/jira` + `folders/1234/sources/5678/findings/123456/
4091
+ # externalSystems/jira` + `folders/1234/sources/5678/locations/us/findings/
4092
+ # 123456/externalSystems/jira` + `projects/1234/sources/5678/findings/123456/
4093
+ # externalSystems/jira` + `projects/1234/sources/5678/locations/us/findings/
4094
+ # 123456/externalSystems/jira`
4095
+ # Corresponds to the JSON property `name`
4096
+ # @return [String]
4097
+ attr_accessor :name
4098
+
4099
+ # The most recent status of the finding's corresponding case, as reported by the
4100
+ # external system.
4101
+ # Corresponds to the JSON property `status`
4102
+ # @return [String]
4103
+ attr_accessor :status
4104
+
4105
+ def initialize(**args)
4106
+ update!(**args)
4107
+ end
4108
+
4109
+ # Update properties of this object
4110
+ def update!(**args)
4111
+ @assignees = args[:assignees] if args.key?(:assignees)
4112
+ @external_system_update_time = args[:external_system_update_time] if args.key?(:external_system_update_time)
4113
+ @external_uid = args[:external_uid] if args.key?(:external_uid)
4114
+ @name = args[:name] if args.key?(:name)
4115
+ @status = args[:status] if args.key?(:status)
4116
+ end
4117
+ end
4118
+
4119
+ # File information about the related binary/library used by an executable, or
4120
+ # the script used by a script interpreter
4121
+ class GoogleCloudSecuritycenterV2File
4122
+ include Google::Apis::Core::Hashable
4123
+
4124
+ # Prefix of the file contents as a JSON-encoded string.
4125
+ # Corresponds to the JSON property `contents`
4126
+ # @return [String]
4127
+ attr_accessor :contents
4128
+
4129
+ # The length in bytes of the file prefix that was hashed. If hashed_size == size,
4130
+ # any hashes reported represent the entire file.
4131
+ # Corresponds to the JSON property `hashedSize`
4132
+ # @return [Fixnum]
4133
+ attr_accessor :hashed_size
4134
+
4135
+ # True when the hash covers only a prefix of the file.
4136
+ # Corresponds to the JSON property `partiallyHashed`
4137
+ # @return [Boolean]
4138
+ attr_accessor :partially_hashed
4139
+ alias_method :partially_hashed?, :partially_hashed
4140
+
4141
+ # Absolute path of the file as a JSON encoded string.
4142
+ # Corresponds to the JSON property `path`
4143
+ # @return [String]
4144
+ attr_accessor :path
4145
+
4146
+ # SHA256 hash of the first hashed_size bytes of the file encoded as a hex string.
4147
+ # If hashed_size == size, sha256 represents the SHA256 hash of the entire file.
4148
+ # Corresponds to the JSON property `sha256`
4149
+ # @return [String]
4150
+ attr_accessor :sha256
4151
+
4152
+ # Size of the file in bytes.
4153
+ # Corresponds to the JSON property `size`
4154
+ # @return [Fixnum]
4155
+ attr_accessor :size
4156
+
4157
+ def initialize(**args)
4158
+ update!(**args)
4159
+ end
4160
+
4161
+ # Update properties of this object
4162
+ def update!(**args)
4163
+ @contents = args[:contents] if args.key?(:contents)
4164
+ @hashed_size = args[:hashed_size] if args.key?(:hashed_size)
4165
+ @partially_hashed = args[:partially_hashed] if args.key?(:partially_hashed)
4166
+ @path = args[:path] if args.key?(:path)
4167
+ @sha256 = args[:sha256] if args.key?(:sha256)
4168
+ @size = args[:size] if args.key?(:size)
4169
+ end
4170
+ end
4171
+
4172
+ # Security Command Center finding. A finding is a record of assessment data like
4173
+ # security, risk, health, or privacy, that is ingested into Security Command
4174
+ # Center for presentation, notification, analysis, policy testing, and
4175
+ # enforcement. For example, a cross-site scripting (XSS) vulnerability in an App
4176
+ # Engine application is a finding.
4177
+ class GoogleCloudSecuritycenterV2Finding
4178
+ include Google::Apis::Core::Hashable
4179
+
4180
+ # Represents an access event.
4181
+ # Corresponds to the JSON property `access`
4182
+ # @return [Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Access]
4183
+ attr_accessor :access
4184
+
4185
+ # An attack exposure contains the results of an attack path simulation run.
4186
+ # Corresponds to the JSON property `attackExposure`
4187
+ # @return [Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2AttackExposure]
4188
+ attr_accessor :attack_exposure
4189
+
4190
+ # Output only. The canonical name of the finding. The following list shows some
4191
+ # examples: + `organizations/`organization_id`/sources/`source_id`/findings/`
4192
+ # finding_id`` + `organizations/`organization_id`/sources/`source_id`/locations/`
4193
+ # location_id`/findings/`finding_id`` + `folders/`folder_id`/sources/`source_id`/
4194
+ # findings/`finding_id`` + `folders/`folder_id`/sources/`source_id`/locations/`
4195
+ # location_id`/findings/`finding_id`` + `projects/`project_id`/sources/`
4196
+ # source_id`/findings/`finding_id`` + `projects/`project_id`/sources/`source_id`/
4197
+ # locations/`location_id`/findings/`finding_id`` The prefix is the closest CRM
4198
+ # ancestor of the resource associated with the finding.
4199
+ # Corresponds to the JSON property `canonicalName`
4200
+ # @return [String]
4201
+ attr_accessor :canonical_name
4202
+
4203
+ # Immutable. The additional taxonomy group within findings from a given source.
4204
+ # Example: "XSS_FLASH_INJECTION"
4205
+ # Corresponds to the JSON property `category`
4206
+ # @return [String]
4207
+ attr_accessor :category
4208
+
4209
+ # The [data profile](https://cloud.google.com/dlp/docs/data-profiles) associated
4210
+ # with the finding.
4211
+ # Corresponds to the JSON property `cloudDlpDataProfile`
4212
+ # @return [Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2CloudDlpDataProfile]
4213
+ attr_accessor :cloud_dlp_data_profile
4214
+
4215
+ # Details about the Cloud Data Loss Prevention (Cloud DLP) [inspection job](
4216
+ # https://cloud.google.com/dlp/docs/concepts-job-triggers) that produced the
4217
+ # finding.
4218
+ # Corresponds to the JSON property `cloudDlpInspection`
4219
+ # @return [Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2CloudDlpInspection]
4220
+ attr_accessor :cloud_dlp_inspection
4221
+
4222
+ # Contains compliance information for security standards associated to the
4223
+ # finding.
4224
+ # Corresponds to the JSON property `compliances`
4225
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Compliance>]
4226
+ attr_accessor :compliances
4227
+
4228
+ # Contains information about the IP connection associated with the finding.
4229
+ # Corresponds to the JSON property `connections`
4230
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Connection>]
4231
+ attr_accessor :connections
4232
+
4233
+ # Output only. Map containing the points of contact for the given finding. The
4234
+ # key represents the type of contact, while the value contains a list of all the
4235
+ # contacts that pertain. Please refer to: https://cloud.google.com/resource-
4236
+ # manager/docs/managing-notification-contacts#notification-categories ` "
4237
+ # security": ` "contacts": [ ` "email": "person1@company.com" `, ` "email": "
4238
+ # person2@company.com" ` ] ` `
4239
+ # Corresponds to the JSON property `contacts`
4240
+ # @return [Hash<String,Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2ContactDetails>]
4241
+ attr_accessor :contacts
4242
+
4243
+ # Containers associated with the finding. This field provides information for
4244
+ # both Kubernetes and non-Kubernetes containers.
4245
+ # Corresponds to the JSON property `containers`
4246
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Container>]
4247
+ attr_accessor :containers
4248
+
4249
+ # Output only. The time at which the finding was created in Security Command
4250
+ # Center.
4251
+ # Corresponds to the JSON property `createTime`
4252
+ # @return [String]
4253
+ attr_accessor :create_time
4254
+
4255
+ # Represents database access information, such as queries. A database may be a
4256
+ # sub-resource of an instance (as in the case of Cloud SQL instances or Cloud
4257
+ # Spanner instances), or the database instance itself. Some database resources
4258
+ # might not have the [full resource name](https://google.aip.dev/122#full-
4259
+ # resource-names) populated because these resource types, such as Cloud SQL
4260
+ # databases, are not yet supported by Cloud Asset Inventory. In these cases only
4261
+ # the display name is provided.
4262
+ # Corresponds to the JSON property `database`
4263
+ # @return [Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Database]
4264
+ attr_accessor :database
4265
+
4266
+ # Contains more details about the finding.
4267
+ # Corresponds to the JSON property `description`
4268
+ # @return [String]
4269
+ attr_accessor :description
4270
+
4271
+ # The time the finding was first detected. If an existing finding is updated,
4272
+ # then this is the time the update occurred. For example, if the finding
4273
+ # represents an open firewall, this property captures the time the detector
4274
+ # believes the firewall became open. The accuracy is determined by the detector.
4275
+ # If the finding is later resolved, then this time reflects when the finding was
4276
+ # resolved. This must not be set to a value greater than the current timestamp.
4277
+ # Corresponds to the JSON property `eventTime`
4278
+ # @return [String]
4279
+ attr_accessor :event_time
4280
+
4281
+ # Exfiltration represents a data exfiltration attempt from one or more sources
4282
+ # to one or more targets. The `sources` attribute lists the sources of the
4283
+ # exfiltrated data. The `targets` attribute lists the destinations the data was
4284
+ # copied to.
4285
+ # Corresponds to the JSON property `exfiltration`
4286
+ # @return [Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Exfiltration]
4287
+ attr_accessor :exfiltration
4288
+
4289
+ # Output only. Third party SIEM/SOAR fields within SCC, contains external system
4290
+ # information and external system finding fields.
4291
+ # Corresponds to the JSON property `externalSystems`
4292
+ # @return [Hash<String,Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2ExternalSystem>]
4293
+ attr_accessor :external_systems
4294
+
4295
+ # The URI that, if available, points to a web page outside of Security Command
4296
+ # Center where additional information about the finding can be found. This field
4297
+ # is guaranteed to be either empty or a well formed URL.
4298
+ # Corresponds to the JSON property `externalUri`
4299
+ # @return [String]
4300
+ attr_accessor :external_uri
4301
+
4302
+ # File associated with the finding.
4303
+ # Corresponds to the JSON property `files`
4304
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2File>]
4305
+ attr_accessor :files
4306
+
4307
+ # The class of the finding.
4308
+ # Corresponds to the JSON property `findingClass`
4309
+ # @return [String]
4310
+ attr_accessor :finding_class
4311
+
4312
+ # Represents IAM bindings associated with the finding.
4313
+ # Corresponds to the JSON property `iamBindings`
4314
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2IamBinding>]
4315
+ attr_accessor :iam_bindings
4316
+
4317
+ # Represents what's commonly known as an _indicator of compromise_ (IoC) in
4318
+ # computer forensics. This is an artifact observed on a network or in an
4319
+ # operating system that, with high confidence, indicates a computer intrusion.
4320
+ # For more information, see [Indicator of compromise](https://en.wikipedia.org/
4321
+ # wiki/Indicator_of_compromise).
4322
+ # Corresponds to the JSON property `indicator`
4323
+ # @return [Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Indicator]
4324
+ attr_accessor :indicator
4325
+
4326
+ # Kernel mode rootkit signatures.
4327
+ # Corresponds to the JSON property `kernelRootkit`
4328
+ # @return [Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2KernelRootkit]
4329
+ attr_accessor :kernel_rootkit
4330
+
4331
+ # Kubernetes-related attributes.
4332
+ # Corresponds to the JSON property `kubernetes`
4333
+ # @return [Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Kubernetes]
4334
+ attr_accessor :kubernetes
4335
+
4336
+ # The load balancers associated with the finding.
4337
+ # Corresponds to the JSON property `loadBalancers`
4338
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2LoadBalancer>]
4339
+ attr_accessor :load_balancers
4340
+
4341
+ # Log entries that are relevant to the finding.
4342
+ # Corresponds to the JSON property `logEntries`
4343
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2LogEntry>]
4344
+ attr_accessor :log_entries
4345
+
4346
+ # MITRE ATT&CK tactics and techniques related to this finding. See: https://
4347
+ # attack.mitre.org
4348
+ # Corresponds to the JSON property `mitreAttack`
4349
+ # @return [Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2MitreAttack]
4350
+ attr_accessor :mitre_attack
4351
+
4352
+ # Unique identifier of the module which generated the finding. Example: folders/
4353
+ # 598186756061/securityHealthAnalyticsSettings/customModules/56799441161885
4354
+ # Corresponds to the JSON property `moduleName`
4355
+ # @return [String]
4356
+ attr_accessor :module_name
4357
+
4358
+ # Indicates the mute state of a finding (either muted, unmuted or undefined).
4359
+ # Unlike other attributes of a finding, a finding provider shouldn't set the
4360
+ # value of mute.
4361
+ # Corresponds to the JSON property `mute`
4362
+ # @return [String]
4363
+ attr_accessor :mute
4364
+
4365
+ # Records additional information about the mute operation, for example, the [
4366
+ # mute configuration](https://cloud.google.com/security-command-center/docs/how-
4367
+ # to-mute-findings) that muted the finding and the user who muted the finding.
4368
+ # Corresponds to the JSON property `muteInitiator`
4369
+ # @return [String]
4370
+ attr_accessor :mute_initiator
4371
+
4372
+ # Output only. The most recent time this finding was muted or unmuted.
4373
+ # Corresponds to the JSON property `muteUpdateTime`
4374
+ # @return [String]
4375
+ attr_accessor :mute_update_time
4376
+
4377
+ # The [relative resource name](https://cloud.google.com/apis/design/
4378
+ # resource_names#relative_resource_name) of the finding. The following list
4379
+ # shows some examples: + `organizations/`organization_id`/sources/`source_id`/
4380
+ # findings/`finding_id`` + `organizations/`organization_id`/sources/`source_id`/
4381
+ # locations/`location_id`/findings/`finding_id`` + `folders/`folder_id`/sources/`
4382
+ # source_id`/findings/`finding_id`` + `folders/`folder_id`/sources/`source_id`/
4383
+ # locations/`location_id`/findings/`finding_id`` + `projects/`project_id`/
4384
+ # sources/`source_id`/findings/`finding_id`` + `projects/`project_id`/sources/`
4385
+ # source_id`/locations/`location_id`/findings/`finding_id``
4386
+ # Corresponds to the JSON property `name`
4387
+ # @return [String]
4388
+ attr_accessor :name
4389
+
4390
+ # Steps to address the finding.
4391
+ # Corresponds to the JSON property `nextSteps`
4392
+ # @return [String]
4393
+ attr_accessor :next_steps
4394
+
4395
+ # Contains information about the org policies associated with the finding.
4396
+ # Corresponds to the JSON property `orgPolicies`
4397
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2OrgPolicy>]
4398
+ attr_accessor :org_policies
4399
+
4400
+ # The relative resource name of the source and location the finding belongs to.
4401
+ # See: https://cloud.google.com/apis/design/resource_names#
4402
+ # relative_resource_name This field is immutable after creation time. The
4403
+ # following list shows some examples: + `organizations/`organization_id`/sources/
4404
+ # `source_id`` + `folders/`folders_id`/sources/`source_id`` + `projects/`
4405
+ # projects_id`/sources/`source_id`` + `organizations/`organization_id`/sources/`
4406
+ # source_id`/locations/`location_id`` + `folders/`folders_id`/sources/`source_id`
4407
+ # /locations/`location_id`` + `projects/`projects_id`/sources/`source_id`/
4408
+ # locations/`location_id``
4409
+ # Corresponds to the JSON property `parent`
4410
+ # @return [String]
4411
+ attr_accessor :parent
4412
+
4413
+ # Output only. The human readable display name of the finding source such as "
4414
+ # Event Threat Detection" or "Security Health Analytics".
4415
+ # Corresponds to the JSON property `parentDisplayName`
4416
+ # @return [String]
4417
+ attr_accessor :parent_display_name
4418
+
4419
+ # Represents operating system processes associated with the Finding.
4420
+ # Corresponds to the JSON property `processes`
4421
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Process>]
4422
+ attr_accessor :processes
4423
+
4424
+ # Immutable. For findings on Google Cloud resources, the full resource name of
4425
+ # the Google Cloud resource this finding is for. See: https://cloud.google.com/
4426
+ # apis/design/resource_names#full_resource_name When the finding is for a non-
4427
+ # Google Cloud resource, the resourceName can be a customer or partner defined
4428
+ # string.
4429
+ # Corresponds to the JSON property `resourceName`
4430
+ # @return [String]
4431
+ attr_accessor :resource_name
4432
+
4433
+ # User specified security marks that are attached to the parent Security Command
4434
+ # Center resource. Security marks are scoped within a Security Command Center
4435
+ # organization -- they can be modified and viewed by all users who have proper
4436
+ # permissions on the organization.
4437
+ # Corresponds to the JSON property `securityMarks`
4438
+ # @return [Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2SecurityMarks]
4439
+ attr_accessor :security_marks
4440
+
4441
+ # Represents a posture that is deployed on Google Cloud by the Security Command
4442
+ # Center Posture Management service. A posture contains one or more policy sets.
4443
+ # A policy set is a group of policies that enforce a set of security rules on
4444
+ # Google Cloud.
4445
+ # Corresponds to the JSON property `securityPosture`
4446
+ # @return [Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2SecurityPosture]
4447
+ attr_accessor :security_posture
4448
+
4449
+ # The severity of the finding. This field is managed by the source that writes
4450
+ # the finding.
4451
+ # Corresponds to the JSON property `severity`
4452
+ # @return [String]
4453
+ attr_accessor :severity
4454
+
4455
+ # Source specific properties. These properties are managed by the source that
4456
+ # writes the finding. The key names in the source_properties map must be between
4457
+ # 1 and 255 characters, and must start with a letter and contain alphanumeric
4458
+ # characters or underscores only.
4459
+ # Corresponds to the JSON property `sourceProperties`
4460
+ # @return [Hash<String,Object>]
4461
+ attr_accessor :source_properties
4462
+
4463
+ # Output only. The state of the finding.
4464
+ # Corresponds to the JSON property `state`
4465
+ # @return [String]
4466
+ attr_accessor :state
4467
+
4468
+ # Refers to common vulnerability fields e.g. cve, cvss, cwe etc.
4469
+ # Corresponds to the JSON property `vulnerability`
4470
+ # @return [Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Vulnerability]
4471
+ attr_accessor :vulnerability
4472
+
4473
+ def initialize(**args)
4474
+ update!(**args)
4475
+ end
4476
+
4477
+ # Update properties of this object
4478
+ def update!(**args)
4479
+ @access = args[:access] if args.key?(:access)
4480
+ @attack_exposure = args[:attack_exposure] if args.key?(:attack_exposure)
4481
+ @canonical_name = args[:canonical_name] if args.key?(:canonical_name)
4482
+ @category = args[:category] if args.key?(:category)
4483
+ @cloud_dlp_data_profile = args[:cloud_dlp_data_profile] if args.key?(:cloud_dlp_data_profile)
4484
+ @cloud_dlp_inspection = args[:cloud_dlp_inspection] if args.key?(:cloud_dlp_inspection)
4485
+ @compliances = args[:compliances] if args.key?(:compliances)
4486
+ @connections = args[:connections] if args.key?(:connections)
4487
+ @contacts = args[:contacts] if args.key?(:contacts)
4488
+ @containers = args[:containers] if args.key?(:containers)
4489
+ @create_time = args[:create_time] if args.key?(:create_time)
4490
+ @database = args[:database] if args.key?(:database)
4491
+ @description = args[:description] if args.key?(:description)
4492
+ @event_time = args[:event_time] if args.key?(:event_time)
4493
+ @exfiltration = args[:exfiltration] if args.key?(:exfiltration)
4494
+ @external_systems = args[:external_systems] if args.key?(:external_systems)
4495
+ @external_uri = args[:external_uri] if args.key?(:external_uri)
4496
+ @files = args[:files] if args.key?(:files)
4497
+ @finding_class = args[:finding_class] if args.key?(:finding_class)
4498
+ @iam_bindings = args[:iam_bindings] if args.key?(:iam_bindings)
4499
+ @indicator = args[:indicator] if args.key?(:indicator)
4500
+ @kernel_rootkit = args[:kernel_rootkit] if args.key?(:kernel_rootkit)
4501
+ @kubernetes = args[:kubernetes] if args.key?(:kubernetes)
4502
+ @load_balancers = args[:load_balancers] if args.key?(:load_balancers)
4503
+ @log_entries = args[:log_entries] if args.key?(:log_entries)
4504
+ @mitre_attack = args[:mitre_attack] if args.key?(:mitre_attack)
4505
+ @module_name = args[:module_name] if args.key?(:module_name)
4506
+ @mute = args[:mute] if args.key?(:mute)
4507
+ @mute_initiator = args[:mute_initiator] if args.key?(:mute_initiator)
4508
+ @mute_update_time = args[:mute_update_time] if args.key?(:mute_update_time)
4509
+ @name = args[:name] if args.key?(:name)
4510
+ @next_steps = args[:next_steps] if args.key?(:next_steps)
4511
+ @org_policies = args[:org_policies] if args.key?(:org_policies)
4512
+ @parent = args[:parent] if args.key?(:parent)
4513
+ @parent_display_name = args[:parent_display_name] if args.key?(:parent_display_name)
4514
+ @processes = args[:processes] if args.key?(:processes)
4515
+ @resource_name = args[:resource_name] if args.key?(:resource_name)
4516
+ @security_marks = args[:security_marks] if args.key?(:security_marks)
4517
+ @security_posture = args[:security_posture] if args.key?(:security_posture)
4518
+ @severity = args[:severity] if args.key?(:severity)
4519
+ @source_properties = args[:source_properties] if args.key?(:source_properties)
4520
+ @state = args[:state] if args.key?(:state)
4521
+ @vulnerability = args[:vulnerability] if args.key?(:vulnerability)
4522
+ end
4523
+ end
4524
+
4525
+ # Represents a geographical location for a given access.
4526
+ class GoogleCloudSecuritycenterV2Geolocation
4527
+ include Google::Apis::Core::Hashable
4528
+
4529
+ # A CLDR.
4530
+ # Corresponds to the JSON property `regionCode`
4531
+ # @return [String]
4532
+ attr_accessor :region_code
4533
+
4534
+ def initialize(**args)
4535
+ update!(**args)
4536
+ end
4537
+
4538
+ # Update properties of this object
4539
+ def update!(**args)
4540
+ @region_code = args[:region_code] if args.key?(:region_code)
4541
+ end
4542
+ end
4543
+
4544
+ # Represents a particular IAM binding, which captures a member's role addition,
4545
+ # removal, or state.
4546
+ class GoogleCloudSecuritycenterV2IamBinding
4547
+ include Google::Apis::Core::Hashable
4548
+
4549
+ # The action that was performed on a Binding.
4550
+ # Corresponds to the JSON property `action`
4551
+ # @return [String]
4552
+ attr_accessor :action
4553
+
4554
+ # A single identity requesting access for a Cloud Platform resource, for example,
4555
+ # "foo@google.com".
4556
+ # Corresponds to the JSON property `member`
4557
+ # @return [String]
4558
+ attr_accessor :member
4559
+
4560
+ # Role that is assigned to "members". For example, "roles/viewer", "roles/editor"
4561
+ # , or "roles/owner".
4562
+ # Corresponds to the JSON property `role`
4563
+ # @return [String]
4564
+ attr_accessor :role
4565
+
4566
+ def initialize(**args)
4567
+ update!(**args)
4568
+ end
4569
+
4570
+ # Update properties of this object
4571
+ def update!(**args)
4572
+ @action = args[:action] if args.key?(:action)
4573
+ @member = args[:member] if args.key?(:member)
4574
+ @role = args[:role] if args.key?(:role)
4575
+ end
4576
+ end
4577
+
4578
+ # Represents what's commonly known as an _indicator of compromise_ (IoC) in
4579
+ # computer forensics. This is an artifact observed on a network or in an
4580
+ # operating system that, with high confidence, indicates a computer intrusion.
4581
+ # For more information, see [Indicator of compromise](https://en.wikipedia.org/
4582
+ # wiki/Indicator_of_compromise).
4583
+ class GoogleCloudSecuritycenterV2Indicator
4584
+ include Google::Apis::Core::Hashable
4585
+
4586
+ # List of domains associated to the Finding.
4587
+ # Corresponds to the JSON property `domains`
4588
+ # @return [Array<String>]
4589
+ attr_accessor :domains
4590
+
4591
+ # The list of IP addresses that are associated with the finding.
4592
+ # Corresponds to the JSON property `ipAddresses`
4593
+ # @return [Array<String>]
4594
+ attr_accessor :ip_addresses
4595
+
4596
+ # The list of matched signatures indicating that the given process is present in
4597
+ # the environment.
4598
+ # Corresponds to the JSON property `signatures`
4599
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2ProcessSignature>]
4600
+ attr_accessor :signatures
4601
+
4602
+ # The list of URIs associated to the Findings.
4603
+ # Corresponds to the JSON property `uris`
4604
+ # @return [Array<String>]
4605
+ attr_accessor :uris
4606
+
4607
+ def initialize(**args)
4608
+ update!(**args)
4609
+ end
4610
+
4611
+ # Update properties of this object
4612
+ def update!(**args)
4613
+ @domains = args[:domains] if args.key?(:domains)
4614
+ @ip_addresses = args[:ip_addresses] if args.key?(:ip_addresses)
4615
+ @signatures = args[:signatures] if args.key?(:signatures)
4616
+ @uris = args[:uris] if args.key?(:uris)
4617
+ end
4618
+ end
4619
+
4620
+ # Kernel mode rootkit signatures.
4621
+ class GoogleCloudSecuritycenterV2KernelRootkit
4622
+ include Google::Apis::Core::Hashable
4623
+
4624
+ # Rootkit name, when available.
4625
+ # Corresponds to the JSON property `name`
4626
+ # @return [String]
4627
+ attr_accessor :name
4628
+
4629
+ # True if unexpected modifications of kernel code memory are present.
4630
+ # Corresponds to the JSON property `unexpectedCodeModification`
4631
+ # @return [Boolean]
4632
+ attr_accessor :unexpected_code_modification
4633
+ alias_method :unexpected_code_modification?, :unexpected_code_modification
4634
+
4635
+ # True if `ftrace` points are present with callbacks pointing to regions that
4636
+ # are not in the expected kernel or module code range.
4637
+ # Corresponds to the JSON property `unexpectedFtraceHandler`
4638
+ # @return [Boolean]
4639
+ attr_accessor :unexpected_ftrace_handler
4640
+ alias_method :unexpected_ftrace_handler?, :unexpected_ftrace_handler
4641
+
4642
+ # True if interrupt handlers that are are not in the expected kernel or module
4643
+ # code regions are present.
4644
+ # Corresponds to the JSON property `unexpectedInterruptHandler`
4645
+ # @return [Boolean]
4646
+ attr_accessor :unexpected_interrupt_handler
4647
+ alias_method :unexpected_interrupt_handler?, :unexpected_interrupt_handler
4648
+
4649
+ # True if kernel code pages that are not in the expected kernel or module code
4650
+ # regions are present.
4651
+ # Corresponds to the JSON property `unexpectedKernelCodePages`
4652
+ # @return [Boolean]
4653
+ attr_accessor :unexpected_kernel_code_pages
4654
+ alias_method :unexpected_kernel_code_pages?, :unexpected_kernel_code_pages
4655
+
4656
+ # True if `kprobe` points are present with callbacks pointing to regions that
4657
+ # are not in the expected kernel or module code range.
4658
+ # Corresponds to the JSON property `unexpectedKprobeHandler`
4659
+ # @return [Boolean]
4660
+ attr_accessor :unexpected_kprobe_handler
4661
+ alias_method :unexpected_kprobe_handler?, :unexpected_kprobe_handler
4662
+
4663
+ # True if unexpected processes in the scheduler run queue are present. Such
4664
+ # processes are in the run queue, but not in the process task list.
4665
+ # Corresponds to the JSON property `unexpectedProcessesInRunqueue`
4666
+ # @return [Boolean]
4667
+ attr_accessor :unexpected_processes_in_runqueue
4668
+ alias_method :unexpected_processes_in_runqueue?, :unexpected_processes_in_runqueue
4669
+
4670
+ # True if unexpected modifications of kernel read-only data memory are present.
4671
+ # Corresponds to the JSON property `unexpectedReadOnlyDataModification`
4672
+ # @return [Boolean]
4673
+ attr_accessor :unexpected_read_only_data_modification
4674
+ alias_method :unexpected_read_only_data_modification?, :unexpected_read_only_data_modification
4675
+
4676
+ # True if system call handlers that are are not in the expected kernel or module
4677
+ # code regions are present.
4678
+ # Corresponds to the JSON property `unexpectedSystemCallHandler`
4679
+ # @return [Boolean]
4680
+ attr_accessor :unexpected_system_call_handler
4681
+ alias_method :unexpected_system_call_handler?, :unexpected_system_call_handler
4682
+
4683
+ def initialize(**args)
4684
+ update!(**args)
4685
+ end
4686
+
4687
+ # Update properties of this object
4688
+ def update!(**args)
4689
+ @name = args[:name] if args.key?(:name)
4690
+ @unexpected_code_modification = args[:unexpected_code_modification] if args.key?(:unexpected_code_modification)
4691
+ @unexpected_ftrace_handler = args[:unexpected_ftrace_handler] if args.key?(:unexpected_ftrace_handler)
4692
+ @unexpected_interrupt_handler = args[:unexpected_interrupt_handler] if args.key?(:unexpected_interrupt_handler)
4693
+ @unexpected_kernel_code_pages = args[:unexpected_kernel_code_pages] if args.key?(:unexpected_kernel_code_pages)
4694
+ @unexpected_kprobe_handler = args[:unexpected_kprobe_handler] if args.key?(:unexpected_kprobe_handler)
4695
+ @unexpected_processes_in_runqueue = args[:unexpected_processes_in_runqueue] if args.key?(:unexpected_processes_in_runqueue)
4696
+ @unexpected_read_only_data_modification = args[:unexpected_read_only_data_modification] if args.key?(:unexpected_read_only_data_modification)
4697
+ @unexpected_system_call_handler = args[:unexpected_system_call_handler] if args.key?(:unexpected_system_call_handler)
4698
+ end
4699
+ end
4700
+
4701
+ # Kubernetes-related attributes.
4702
+ class GoogleCloudSecuritycenterV2Kubernetes
4703
+ include Google::Apis::Core::Hashable
4704
+
4705
+ # Provides information on any Kubernetes access reviews (privilege checks)
4706
+ # relevant to the finding.
4707
+ # Corresponds to the JSON property `accessReviews`
4708
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2AccessReview>]
4709
+ attr_accessor :access_reviews
4710
+
4711
+ # Provides Kubernetes role binding information for findings that involve [
4712
+ # RoleBindings or ClusterRoleBindings](https://cloud.google.com/kubernetes-
4713
+ # engine/docs/how-to/role-based-access-control).
4714
+ # Corresponds to the JSON property `bindings`
4715
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Binding>]
4716
+ attr_accessor :bindings
4717
+
4718
+ # GKE [node pools](https://cloud.google.com/kubernetes-engine/docs/concepts/node-
4719
+ # pools) associated with the finding. This field contains node pool information
4720
+ # for each node, when it is available.
4721
+ # Corresponds to the JSON property `nodePools`
4722
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2NodePool>]
4723
+ attr_accessor :node_pools
4724
+
4725
+ # Provides Kubernetes [node](https://cloud.google.com/kubernetes-engine/docs/
4726
+ # concepts/cluster-architecture#nodes) information.
4727
+ # Corresponds to the JSON property `nodes`
4728
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Node>]
4729
+ attr_accessor :nodes
4730
+
4731
+ # Kubernetes objects related to the finding.
4732
+ # Corresponds to the JSON property `objects`
4733
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Object>]
4734
+ attr_accessor :objects
4735
+
4736
+ # Kubernetes [Pods](https://cloud.google.com/kubernetes-engine/docs/concepts/pod)
4737
+ # associated with the finding. This field contains Pod records for each
4738
+ # container that is owned by a Pod.
4739
+ # Corresponds to the JSON property `pods`
4740
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Pod>]
4741
+ attr_accessor :pods
4742
+
4743
+ # Provides Kubernetes role information for findings that involve [Roles or
4744
+ # ClusterRoles](https://cloud.google.com/kubernetes-engine/docs/how-to/role-
4745
+ # based-access-control).
4746
+ # Corresponds to the JSON property `roles`
4747
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Role>]
4748
+ attr_accessor :roles
4749
+
4750
+ def initialize(**args)
4751
+ update!(**args)
4752
+ end
4753
+
4754
+ # Update properties of this object
4755
+ def update!(**args)
4756
+ @access_reviews = args[:access_reviews] if args.key?(:access_reviews)
4757
+ @bindings = args[:bindings] if args.key?(:bindings)
4758
+ @node_pools = args[:node_pools] if args.key?(:node_pools)
4759
+ @nodes = args[:nodes] if args.key?(:nodes)
4760
+ @objects = args[:objects] if args.key?(:objects)
4761
+ @pods = args[:pods] if args.key?(:pods)
4762
+ @roles = args[:roles] if args.key?(:roles)
4763
+ end
4764
+ end
4765
+
4766
+ # Represents a generic name-value label. A label has separate name and value
4767
+ # fields to support filtering with the `contains()` function. For more
4768
+ # information, see [Filtering on array-type fields](https://cloud.google.com/
4769
+ # security-command-center/docs/how-to-api-list-findings#array-contains-filtering)
4770
+ # .
4771
+ class GoogleCloudSecuritycenterV2Label
4772
+ include Google::Apis::Core::Hashable
4773
+
4774
+ # Name of the label.
4775
+ # Corresponds to the JSON property `name`
4776
+ # @return [String]
4777
+ attr_accessor :name
4778
+
4779
+ # Value that corresponds to the label's name.
4780
+ # Corresponds to the JSON property `value`
4781
+ # @return [String]
4782
+ attr_accessor :value
4783
+
4784
+ def initialize(**args)
4785
+ update!(**args)
4786
+ end
4787
+
4788
+ # Update properties of this object
4789
+ def update!(**args)
4790
+ @name = args[:name] if args.key?(:name)
4791
+ @value = args[:value] if args.key?(:value)
4792
+ end
4793
+ end
4794
+
4795
+ # Contains information related to the load balancer associated with the finding.
4796
+ class GoogleCloudSecuritycenterV2LoadBalancer
4797
+ include Google::Apis::Core::Hashable
4798
+
4799
+ # The name of the load balancer associated with the finding.
4800
+ # Corresponds to the JSON property `name`
4801
+ # @return [String]
4802
+ attr_accessor :name
4803
+
4804
+ def initialize(**args)
4805
+ update!(**args)
4806
+ end
4807
+
4808
+ # Update properties of this object
4809
+ def update!(**args)
4810
+ @name = args[:name] if args.key?(:name)
4811
+ end
4812
+ end
4813
+
4814
+ # An individual entry in a log.
4815
+ class GoogleCloudSecuritycenterV2LogEntry
4816
+ include Google::Apis::Core::Hashable
4817
+
4818
+ # Metadata taken from a [Cloud Logging LogEntry](https://cloud.google.com/
4819
+ # logging/docs/reference/v2/rest/v2/LogEntry)
4820
+ # Corresponds to the JSON property `cloudLoggingEntry`
4821
+ # @return [Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2CloudLoggingEntry]
4822
+ attr_accessor :cloud_logging_entry
4823
+
4824
+ def initialize(**args)
4825
+ update!(**args)
4826
+ end
4827
+
4828
+ # Update properties of this object
4829
+ def update!(**args)
4830
+ @cloud_logging_entry = args[:cloud_logging_entry] if args.key?(:cloud_logging_entry)
4831
+ end
4832
+ end
4833
+
4834
+ # A signature corresponding to memory page hashes.
4835
+ class GoogleCloudSecuritycenterV2MemoryHashSignature
4836
+ include Google::Apis::Core::Hashable
4837
+
4838
+ # The binary family.
4839
+ # Corresponds to the JSON property `binaryFamily`
4840
+ # @return [String]
4841
+ attr_accessor :binary_family
4842
+
4843
+ # The list of memory hash detections contributing to the binary family match.
4844
+ # Corresponds to the JSON property `detections`
4845
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Detection>]
4846
+ attr_accessor :detections
4847
+
4848
+ def initialize(**args)
4849
+ update!(**args)
4850
+ end
4851
+
4852
+ # Update properties of this object
4853
+ def update!(**args)
4854
+ @binary_family = args[:binary_family] if args.key?(:binary_family)
4855
+ @detections = args[:detections] if args.key?(:detections)
4856
+ end
4857
+ end
4858
+
4859
+ # MITRE ATT&CK tactics and techniques related to this finding. See: https://
4860
+ # attack.mitre.org
4861
+ class GoogleCloudSecuritycenterV2MitreAttack
4862
+ include Google::Apis::Core::Hashable
4863
+
4864
+ # Additional MITRE ATT&CK tactics related to this finding, if any.
4865
+ # Corresponds to the JSON property `additionalTactics`
4866
+ # @return [Array<String>]
4867
+ attr_accessor :additional_tactics
4868
+
4869
+ # Additional MITRE ATT&CK techniques related to this finding, if any, along with
4870
+ # any of their respective parent techniques.
4871
+ # Corresponds to the JSON property `additionalTechniques`
4872
+ # @return [Array<String>]
4873
+ attr_accessor :additional_techniques
4874
+
4875
+ # The MITRE ATT&CK tactic most closely represented by this finding, if any.
4876
+ # Corresponds to the JSON property `primaryTactic`
4877
+ # @return [String]
4878
+ attr_accessor :primary_tactic
4879
+
4880
+ # The MITRE ATT&CK technique most closely represented by this finding, if any.
4881
+ # primary_techniques is a repeated field because there are multiple levels of
4882
+ # MITRE ATT&CK techniques. If the technique most closely represented by this
4883
+ # finding is a sub-technique (e.g. `SCANNING_IP_BLOCKS`), both the sub-technique
4884
+ # and its parent technique(s) will be listed (e.g. `SCANNING_IP_BLOCKS`, `
4885
+ # ACTIVE_SCANNING`).
4886
+ # Corresponds to the JSON property `primaryTechniques`
4887
+ # @return [Array<String>]
4888
+ attr_accessor :primary_techniques
4889
+
4890
+ # The MITRE ATT&CK version referenced by the above fields. E.g. "8".
4891
+ # Corresponds to the JSON property `version`
4892
+ # @return [String]
4893
+ attr_accessor :version
4894
+
4895
+ def initialize(**args)
4896
+ update!(**args)
4897
+ end
4898
+
4899
+ # Update properties of this object
4900
+ def update!(**args)
4901
+ @additional_tactics = args[:additional_tactics] if args.key?(:additional_tactics)
4902
+ @additional_techniques = args[:additional_techniques] if args.key?(:additional_techniques)
4903
+ @primary_tactic = args[:primary_tactic] if args.key?(:primary_tactic)
4904
+ @primary_techniques = args[:primary_techniques] if args.key?(:primary_techniques)
4905
+ @version = args[:version] if args.key?(:version)
4906
+ end
4907
+ end
4908
+
4909
+ # A mute config is a Cloud SCC resource that contains the configuration to mute
4910
+ # create/update events of findings.
4911
+ class GoogleCloudSecuritycenterV2MuteConfig
4912
+ include Google::Apis::Core::Hashable
4913
+
4914
+ # Output only. The time at which the mute config was created. This field is set
4915
+ # by the server and will be ignored if provided on config creation.
4916
+ # Corresponds to the JSON property `createTime`
4917
+ # @return [String]
4918
+ attr_accessor :create_time
4919
+
4920
+ # A description of the mute config.
4921
+ # Corresponds to the JSON property `description`
4922
+ # @return [String]
4923
+ attr_accessor :description
4924
+
4925
+ # Required. An expression that defines the filter to apply across create/update
4926
+ # events of findings. While creating a filter string, be mindful of the scope in
4927
+ # which the mute configuration is being created. E.g., If a filter contains
4928
+ # project = X but is created under the project = Y scope, it might not match any
4929
+ # findings. The following field and operator combinations are supported: *
4930
+ # severity: `=`, `:` * category: `=`, `:` * resource.name: `=`, `:` * resource.
4931
+ # project_name: `=`, `:` * resource.project_display_name: `=`, `:` * resource.
4932
+ # folders.resource_folder: `=`, `:` * resource.parent_name: `=`, `:` * resource.
4933
+ # parent_display_name: `=`, `:` * resource.type: `=`, `:` * finding_class: `=`, `
4934
+ # :` * indicator.ip_addresses: `=`, `:` * indicator.domains: `=`, `:`
4935
+ # Corresponds to the JSON property `filter`
4936
+ # @return [String]
4937
+ attr_accessor :filter
4938
+
4939
+ # Output only. Email address of the user who last edited the mute config. This
4940
+ # field is set by the server and will be ignored if provided on config creation
4941
+ # or update.
4942
+ # Corresponds to the JSON property `mostRecentEditor`
4943
+ # @return [String]
4944
+ attr_accessor :most_recent_editor
4945
+
4946
+ # This field will be ignored if provided on config creation. The following list
4947
+ # shows some examples of the format: + `organizations/`organization`/muteConfigs/
4948
+ # `mute_config`` + `organizations/`organization`locations/`location`//
4949
+ # muteConfigs/`mute_config`` + `folders/`folder`/muteConfigs/`mute_config`` + `
4950
+ # folders/`folder`/locations/`location`/muteConfigs/`mute_config`` + `projects/`
4951
+ # project`/muteConfigs/`mute_config`` + `projects/`project`/locations/`location`/
4952
+ # muteConfigs/`mute_config``
4953
+ # Corresponds to the JSON property `name`
4954
+ # @return [String]
4955
+ attr_accessor :name
4956
+
4957
+ # Output only. The most recent time at which the mute config was updated. This
4958
+ # field is set by the server and will be ignored if provided on config creation
4959
+ # or update.
4960
+ # Corresponds to the JSON property `updateTime`
4961
+ # @return [String]
4962
+ attr_accessor :update_time
4963
+
4964
+ def initialize(**args)
4965
+ update!(**args)
4966
+ end
4967
+
4968
+ # Update properties of this object
4969
+ def update!(**args)
4970
+ @create_time = args[:create_time] if args.key?(:create_time)
4971
+ @description = args[:description] if args.key?(:description)
4972
+ @filter = args[:filter] if args.key?(:filter)
4973
+ @most_recent_editor = args[:most_recent_editor] if args.key?(:most_recent_editor)
4974
+ @name = args[:name] if args.key?(:name)
4975
+ @update_time = args[:update_time] if args.key?(:update_time)
4976
+ end
4977
+ end
4978
+
4979
+ # Kubernetes nodes associated with the finding.
4980
+ class GoogleCloudSecuritycenterV2Node
4981
+ include Google::Apis::Core::Hashable
4982
+
4983
+ # [Full resource name](https://google.aip.dev/122#full-resource-names) of the
4984
+ # Compute Engine VM running the cluster node.
4985
+ # Corresponds to the JSON property `name`
4986
+ # @return [String]
4987
+ attr_accessor :name
4988
+
4989
+ def initialize(**args)
4990
+ update!(**args)
4991
+ end
4992
+
4993
+ # Update properties of this object
4994
+ def update!(**args)
4995
+ @name = args[:name] if args.key?(:name)
4996
+ end
4997
+ end
4998
+
4999
+ # Provides GKE node pool information.
5000
+ class GoogleCloudSecuritycenterV2NodePool
5001
+ include Google::Apis::Core::Hashable
5002
+
5003
+ # Kubernetes node pool name.
5004
+ # Corresponds to the JSON property `name`
5005
+ # @return [String]
5006
+ attr_accessor :name
5007
+
5008
+ # Nodes associated with the finding.
5009
+ # Corresponds to the JSON property `nodes`
5010
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Node>]
5011
+ attr_accessor :nodes
5012
+
5013
+ def initialize(**args)
5014
+ update!(**args)
5015
+ end
5016
+
5017
+ # Update properties of this object
5018
+ def update!(**args)
5019
+ @name = args[:name] if args.key?(:name)
5020
+ @nodes = args[:nodes] if args.key?(:nodes)
5021
+ end
5022
+ end
5023
+
5024
+ # Cloud SCC's Notification
5025
+ class GoogleCloudSecuritycenterV2NotificationMessage
5026
+ include Google::Apis::Core::Hashable
5027
+
5028
+ # Security Command Center finding. A finding is a record of assessment data like
5029
+ # security, risk, health, or privacy, that is ingested into Security Command
5030
+ # Center for presentation, notification, analysis, policy testing, and
5031
+ # enforcement. For example, a cross-site scripting (XSS) vulnerability in an App
5032
+ # Engine application is a finding.
5033
+ # Corresponds to the JSON property `finding`
5034
+ # @return [Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Finding]
5035
+ attr_accessor :finding
5036
+
5037
+ # Name of the notification config that generated current notification.
5038
+ # Corresponds to the JSON property `notificationConfigName`
5039
+ # @return [String]
5040
+ attr_accessor :notification_config_name
5041
+
5042
+ # Information related to the Google Cloud resource.
5043
+ # Corresponds to the JSON property `resource`
5044
+ # @return [Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Resource]
5045
+ attr_accessor :resource
5046
+
5047
+ def initialize(**args)
5048
+ update!(**args)
5049
+ end
5050
+
5051
+ # Update properties of this object
5052
+ def update!(**args)
5053
+ @finding = args[:finding] if args.key?(:finding)
5054
+ @notification_config_name = args[:notification_config_name] if args.key?(:notification_config_name)
5055
+ @resource = args[:resource] if args.key?(:resource)
5056
+ end
5057
+ end
5058
+
5059
+ # Kubernetes object related to the finding, uniquely identified by GKNN. Used if
5060
+ # the object Kind is not one of Pod, Node, NodePool, Binding, or AccessReview.
5061
+ class GoogleCloudSecuritycenterV2Object
5062
+ include Google::Apis::Core::Hashable
5063
+
5064
+ # Pod containers associated with this finding, if any.
5065
+ # Corresponds to the JSON property `containers`
5066
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Container>]
5067
+ attr_accessor :containers
5068
+
5069
+ # Kubernetes object group, such as "policy.k8s.io/v1".
5070
+ # Corresponds to the JSON property `group`
5071
+ # @return [String]
5072
+ attr_accessor :group
5073
+
5074
+ # Kubernetes object kind, such as "Namespace".
5075
+ # Corresponds to the JSON property `kind`
5076
+ # @return [String]
5077
+ attr_accessor :kind
5078
+
5079
+ # Kubernetes object name. For details see https://kubernetes.io/docs/concepts/
5080
+ # overview/working-with-objects/names/.
5081
+ # Corresponds to the JSON property `name`
5082
+ # @return [String]
5083
+ attr_accessor :name
5084
+
5085
+ # Kubernetes object namespace. Must be a valid DNS label. Named "ns" to avoid
5086
+ # collision with C++ namespace keyword. For details see https://kubernetes.io/
5087
+ # docs/tasks/administer-cluster/namespaces/.
5088
+ # Corresponds to the JSON property `ns`
5089
+ # @return [String]
5090
+ attr_accessor :ns
5091
+
5092
+ def initialize(**args)
5093
+ update!(**args)
5094
+ end
5095
+
5096
+ # Update properties of this object
5097
+ def update!(**args)
5098
+ @containers = args[:containers] if args.key?(:containers)
5099
+ @group = args[:group] if args.key?(:group)
5100
+ @kind = args[:kind] if args.key?(:kind)
5101
+ @name = args[:name] if args.key?(:name)
5102
+ @ns = args[:ns] if args.key?(:ns)
5103
+ end
5104
+ end
5105
+
5106
+ # Contains information about the org policies associated with the finding.
5107
+ class GoogleCloudSecuritycenterV2OrgPolicy
5108
+ include Google::Apis::Core::Hashable
5109
+
5110
+ # The resource name of the org policy. Example: "organizations/`organization_id`/
5111
+ # policies/`constraint_name`"
5112
+ # Corresponds to the JSON property `name`
5113
+ # @return [String]
5114
+ attr_accessor :name
5115
+
5116
+ def initialize(**args)
5117
+ update!(**args)
5118
+ end
5119
+
5120
+ # Update properties of this object
5121
+ def update!(**args)
5122
+ @name = args[:name] if args.key?(:name)
5123
+ end
5124
+ end
5125
+
5126
+ # A Kubernetes Pod.
5127
+ class GoogleCloudSecuritycenterV2Pod
5128
+ include Google::Apis::Core::Hashable
5129
+
5130
+ # Pod containers associated with this finding, if any.
5131
+ # Corresponds to the JSON property `containers`
5132
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Container>]
5133
+ attr_accessor :containers
5134
+
5135
+ # Pod labels. For Kubernetes containers, these are applied to the container.
5136
+ # Corresponds to the JSON property `labels`
5137
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Label>]
5138
+ attr_accessor :labels
5139
+
5140
+ # Kubernetes Pod name.
5141
+ # Corresponds to the JSON property `name`
5142
+ # @return [String]
5143
+ attr_accessor :name
5144
+
5145
+ # Kubernetes Pod namespace.
5146
+ # Corresponds to the JSON property `ns`
5147
+ # @return [String]
5148
+ attr_accessor :ns
5149
+
5150
+ def initialize(**args)
5151
+ update!(**args)
5152
+ end
5153
+
5154
+ # Update properties of this object
5155
+ def update!(**args)
5156
+ @containers = args[:containers] if args.key?(:containers)
5157
+ @labels = args[:labels] if args.key?(:labels)
5158
+ @name = args[:name] if args.key?(:name)
5159
+ @ns = args[:ns] if args.key?(:ns)
5160
+ end
5161
+ end
5162
+
5163
+ # Represents an operating system process.
5164
+ class GoogleCloudSecuritycenterV2Process
5165
+ include Google::Apis::Core::Hashable
5166
+
5167
+ # Process arguments as JSON encoded strings.
5168
+ # Corresponds to the JSON property `args`
5169
+ # @return [Array<String>]
5170
+ attr_accessor :args
5171
+
5172
+ # True if `args` is incomplete.
5173
+ # Corresponds to the JSON property `argumentsTruncated`
5174
+ # @return [Boolean]
5175
+ attr_accessor :arguments_truncated
5176
+ alias_method :arguments_truncated?, :arguments_truncated
5177
+
5178
+ # File information about the related binary/library used by an executable, or
5179
+ # the script used by a script interpreter
5180
+ # Corresponds to the JSON property `binary`
5181
+ # @return [Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2File]
5182
+ attr_accessor :binary
5183
+
5184
+ # Process environment variables.
5185
+ # Corresponds to the JSON property `envVariables`
5186
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2EnvironmentVariable>]
5187
+ attr_accessor :env_variables
5188
+
5189
+ # True if `env_variables` is incomplete.
5190
+ # Corresponds to the JSON property `envVariablesTruncated`
5191
+ # @return [Boolean]
5192
+ attr_accessor :env_variables_truncated
5193
+ alias_method :env_variables_truncated?, :env_variables_truncated
5194
+
5195
+ # File information for libraries loaded by the process.
5196
+ # Corresponds to the JSON property `libraries`
5197
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2File>]
5198
+ attr_accessor :libraries
5199
+
5200
+ # The process name, as displayed in utilities like `top` and `ps`. This name can
5201
+ # be accessed through `/proc/[pid]/comm` and changed with `prctl(PR_SET_NAME)`.
5202
+ # Corresponds to the JSON property `name`
5203
+ # @return [String]
5204
+ attr_accessor :name
5205
+
5206
+ # The parent process ID.
5207
+ # Corresponds to the JSON property `parentPid`
5208
+ # @return [Fixnum]
5209
+ attr_accessor :parent_pid
5210
+
5211
+ # The process ID.
5212
+ # Corresponds to the JSON property `pid`
5213
+ # @return [Fixnum]
5214
+ attr_accessor :pid
5215
+
5216
+ # File information about the related binary/library used by an executable, or
5217
+ # the script used by a script interpreter
5218
+ # Corresponds to the JSON property `script`
5219
+ # @return [Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2File]
5220
+ attr_accessor :script
5221
+
5222
+ def initialize(**args)
5223
+ update!(**args)
5224
+ end
5225
+
5226
+ # Update properties of this object
5227
+ def update!(**args)
5228
+ @args = args[:args] if args.key?(:args)
5229
+ @arguments_truncated = args[:arguments_truncated] if args.key?(:arguments_truncated)
5230
+ @binary = args[:binary] if args.key?(:binary)
5231
+ @env_variables = args[:env_variables] if args.key?(:env_variables)
5232
+ @env_variables_truncated = args[:env_variables_truncated] if args.key?(:env_variables_truncated)
5233
+ @libraries = args[:libraries] if args.key?(:libraries)
5234
+ @name = args[:name] if args.key?(:name)
5235
+ @parent_pid = args[:parent_pid] if args.key?(:parent_pid)
5236
+ @pid = args[:pid] if args.key?(:pid)
5237
+ @script = args[:script] if args.key?(:script)
5238
+ end
5239
+ end
5240
+
5241
+ # Indicates what signature matched this process.
5242
+ class GoogleCloudSecuritycenterV2ProcessSignature
5243
+ include Google::Apis::Core::Hashable
5244
+
5245
+ # A signature corresponding to memory page hashes.
5246
+ # Corresponds to the JSON property `memoryHashSignature`
5247
+ # @return [Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2MemoryHashSignature]
5248
+ attr_accessor :memory_hash_signature
5249
+
5250
+ # A signature corresponding to a YARA rule.
5251
+ # Corresponds to the JSON property `yaraRuleSignature`
5252
+ # @return [Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2YaraRuleSignature]
5253
+ attr_accessor :yara_rule_signature
5254
+
5255
+ def initialize(**args)
5256
+ update!(**args)
5257
+ end
5258
+
5259
+ # Update properties of this object
5260
+ def update!(**args)
5261
+ @memory_hash_signature = args[:memory_hash_signature] if args.key?(:memory_hash_signature)
5262
+ @yara_rule_signature = args[:yara_rule_signature] if args.key?(:yara_rule_signature)
5263
+ end
5264
+ end
5265
+
5266
+ # Additional Links
5267
+ class GoogleCloudSecuritycenterV2Reference
5268
+ include Google::Apis::Core::Hashable
5269
+
5270
+ # Source of the reference e.g. NVD
5271
+ # Corresponds to the JSON property `source`
5272
+ # @return [String]
5273
+ attr_accessor :source
5274
+
5275
+ # Uri for the mentioned source e.g. https://cve.mitre.org/cgi-bin/cvename.cgi?
5276
+ # name=CVE-2021-34527.
5277
+ # Corresponds to the JSON property `uri`
5278
+ # @return [String]
5279
+ attr_accessor :uri
5280
+
5281
+ def initialize(**args)
5282
+ update!(**args)
5283
+ end
5284
+
5285
+ # Update properties of this object
5286
+ def update!(**args)
5287
+ @source = args[:source] if args.key?(:source)
5288
+ @uri = args[:uri] if args.key?(:uri)
5289
+ end
5290
+ end
5291
+
5292
+ # Information related to the Google Cloud resource.
5293
+ class GoogleCloudSecuritycenterV2Resource
5294
+ include Google::Apis::Core::Hashable
5295
+
5296
+ # The human readable name of the resource.
5297
+ # Corresponds to the JSON property `displayName`
5298
+ # @return [String]
5299
+ attr_accessor :display_name
5300
+
5301
+ # The full resource name of the resource. See: https://cloud.google.com/apis/
5302
+ # design/resource_names#full_resource_name
5303
+ # Corresponds to the JSON property `name`
5304
+ # @return [String]
5305
+ attr_accessor :name
5306
+
5307
+ # The full resource type of the resource.
5308
+ # Corresponds to the JSON property `type`
5309
+ # @return [String]
5310
+ attr_accessor :type
5311
+
5312
+ def initialize(**args)
5313
+ update!(**args)
5314
+ end
5315
+
5316
+ # Update properties of this object
5317
+ def update!(**args)
5318
+ @display_name = args[:display_name] if args.key?(:display_name)
5319
+ @name = args[:name] if args.key?(:name)
5320
+ @type = args[:type] if args.key?(:type)
5321
+ end
5322
+ end
5323
+
5324
+ # A resource value config (RVC) is a mapping configuration of user's resources
5325
+ # to resource values. Used in Attack path simulations.
5326
+ class GoogleCloudSecuritycenterV2ResourceValueConfig
5327
+ include Google::Apis::Core::Hashable
5328
+
5329
+ # Output only. Timestamp this resource value config was created.
5330
+ # Corresponds to the JSON property `createTime`
5331
+ # @return [String]
5332
+ attr_accessor :create_time
5333
+
5334
+ # Description of the resource value config.
5335
+ # Corresponds to the JSON property `description`
5336
+ # @return [String]
5337
+ attr_accessor :description
5338
+
5339
+ # Name for the resource value config
5340
+ # Corresponds to the JSON property `name`
5341
+ # @return [String]
5342
+ attr_accessor :name
5343
+
5344
+ # List of resource labels to search for, evaluated with AND. E.g. "
5345
+ # resource_labels_selector": `"key": "value", "env": "prod"` will match
5346
+ # resources with labels "key": "value" AND "env": "prod" https://cloud.google.
5347
+ # com/resource-manager/docs/creating-managing-labels
5348
+ # Corresponds to the JSON property `resourceLabelsSelector`
5349
+ # @return [Hash<String,String>]
5350
+ attr_accessor :resource_labels_selector
5351
+
5352
+ # Apply resource_value only to resources that match resource_type. resource_type
5353
+ # will be checked with "AND" of other resources. E.g. "storage.googleapis.com/
5354
+ # Bucket" with resource_value "HIGH" will apply "HIGH" value only to "storage.
5355
+ # googleapis.com/Bucket" resources.
5356
+ # Corresponds to the JSON property `resourceType`
5357
+ # @return [String]
5358
+ attr_accessor :resource_type
5359
+
5360
+ # Required. Resource value level this expression represents
5361
+ # Corresponds to the JSON property `resourceValue`
5362
+ # @return [String]
5363
+ attr_accessor :resource_value
5364
+
5365
+ # Project or folder to scope this config to. For example, "project/456" would
5366
+ # apply this config only to resources in "project/456" scope will be checked
5367
+ # with "AND" of other resources.
5368
+ # Corresponds to the JSON property `scope`
5369
+ # @return [String]
5370
+ attr_accessor :scope
5371
+
5372
+ # Required. Tag values combined with AND to check against. Values in the form "
5373
+ # tagValues/123" E.g. [ "tagValues/123", "tagValues/456", "tagValues/789" ]
5374
+ # https://cloud.google.com/resource-manager/docs/tags/tags-creating-and-managing
5375
+ # Corresponds to the JSON property `tagValues`
5376
+ # @return [Array<String>]
5377
+ attr_accessor :tag_values
5378
+
5379
+ # Output only. Timestamp this resource value config was last updated.
5380
+ # Corresponds to the JSON property `updateTime`
5381
+ # @return [String]
5382
+ attr_accessor :update_time
5383
+
5384
+ def initialize(**args)
5385
+ update!(**args)
5386
+ end
5387
+
5388
+ # Update properties of this object
5389
+ def update!(**args)
5390
+ @create_time = args[:create_time] if args.key?(:create_time)
5391
+ @description = args[:description] if args.key?(:description)
5392
+ @name = args[:name] if args.key?(:name)
5393
+ @resource_labels_selector = args[:resource_labels_selector] if args.key?(:resource_labels_selector)
5394
+ @resource_type = args[:resource_type] if args.key?(:resource_type)
5395
+ @resource_value = args[:resource_value] if args.key?(:resource_value)
5396
+ @scope = args[:scope] if args.key?(:scope)
5397
+ @tag_values = args[:tag_values] if args.key?(:tag_values)
5398
+ @update_time = args[:update_time] if args.key?(:update_time)
5399
+ end
5400
+ end
5401
+
5402
+ # Kubernetes Role or ClusterRole.
5403
+ class GoogleCloudSecuritycenterV2Role
5404
+ include Google::Apis::Core::Hashable
5405
+
5406
+ # Role type.
5407
+ # Corresponds to the JSON property `kind`
5408
+ # @return [String]
5409
+ attr_accessor :kind
5410
+
5411
+ # Role name.
5412
+ # Corresponds to the JSON property `name`
5413
+ # @return [String]
5414
+ attr_accessor :name
5415
+
5416
+ # Role namespace.
5417
+ # Corresponds to the JSON property `ns`
5418
+ # @return [String]
5419
+ attr_accessor :ns
5420
+
5421
+ def initialize(**args)
5422
+ update!(**args)
5423
+ end
5424
+
5425
+ # Update properties of this object
5426
+ def update!(**args)
5427
+ @kind = args[:kind] if args.key?(:kind)
5428
+ @name = args[:name] if args.key?(:name)
5429
+ @ns = args[:ns] if args.key?(:ns)
5430
+ end
5431
+ end
5432
+
5433
+ # User specified security marks that are attached to the parent Security Command
5434
+ # Center resource. Security marks are scoped within a Security Command Center
5435
+ # organization -- they can be modified and viewed by all users who have proper
5436
+ # permissions on the organization.
5437
+ class GoogleCloudSecuritycenterV2SecurityMarks
5438
+ include Google::Apis::Core::Hashable
5439
+
5440
+ # The canonical name of the marks. The following list shows some examples: + `
5441
+ # organizations/`organization_id`/assets/`asset_id`/securityMarks" + `
5442
+ # organizations/`organization_id`/sources/`source_id`/findings/`finding_id`/
5443
+ # securityMarks" + `organizations/`organization_id`/sources/`source_id`/
5444
+ # locations/`location`/findings/`finding_id`/securityMarks" + `folders/`
5445
+ # folder_id`/assets/`asset_id`/securityMarks" + `folders/`folder_id`/sources/`
5446
+ # source_id`/findings/`finding_id`/securityMarks" + `folders/`folder_id`/sources/
5447
+ # `source_id`/locations/`location`/findings/`finding_id`/securityMarks" + `
5448
+ # projects/`project_number`/assets/`asset_id`/securityMarks" + `projects/`
5449
+ # project_number`/sources/`source_id`/findings/`finding_id`/securityMarks" + `
5450
+ # projects/`project_number`/sources/`source_id`/locations/`location`/findings/`
5451
+ # finding_id`/securityMarks"
5452
+ # Corresponds to the JSON property `canonicalName`
5453
+ # @return [String]
5454
+ attr_accessor :canonical_name
5455
+
5456
+ # Mutable user specified security marks belonging to the parent resource.
5457
+ # Constraints are as follows: * Keys and values are treated as case insensitive *
5458
+ # Keys must be between 1 - 256 characters (inclusive) * Keys must be letters,
5459
+ # numbers, underscores, or dashes * Values have leading and trailing whitespace
5460
+ # trimmed, remaining characters must be between 1 - 4096 characters (inclusive)
5461
+ # Corresponds to the JSON property `marks`
5462
+ # @return [Hash<String,String>]
5463
+ attr_accessor :marks
5464
+
5465
+ # The relative resource name of the SecurityMarks. See: https://cloud.google.com/
5466
+ # apis/design/resource_names#relative_resource_name The following list shows
5467
+ # some examples: + `organizations/`organization_id`/assets/`asset_id`/
5468
+ # securityMarks` + `organizations/`organization_id`/sources/`source_id`/findings/
5469
+ # `finding_id`/securityMarks` + `organizations/`organization_id`/sources/`
5470
+ # source_id`/locations/`location`/findings/`finding_id`/securityMarks`
5471
+ # Corresponds to the JSON property `name`
5472
+ # @return [String]
5473
+ attr_accessor :name
5474
+
5475
+ def initialize(**args)
5476
+ update!(**args)
5477
+ end
5478
+
5479
+ # Update properties of this object
5480
+ def update!(**args)
5481
+ @canonical_name = args[:canonical_name] if args.key?(:canonical_name)
5482
+ @marks = args[:marks] if args.key?(:marks)
5483
+ @name = args[:name] if args.key?(:name)
5484
+ end
5485
+ end
5486
+
5487
+ # Represents a posture that is deployed on Google Cloud by the Security Command
5488
+ # Center Posture Management service. A posture contains one or more policy sets.
5489
+ # A policy set is a group of policies that enforce a set of security rules on
5490
+ # Google Cloud.
5491
+ class GoogleCloudSecuritycenterV2SecurityPosture
5492
+ include Google::Apis::Core::Hashable
5493
+
5494
+ # The name of the policy that has been updated, for example, `projects/`
5495
+ # project_id`/policies/`constraint_name``.
5496
+ # Corresponds to the JSON property `changedPolicy`
5497
+ # @return [String]
5498
+ attr_accessor :changed_policy
5499
+
5500
+ # Name of the posture, for example, `organizations/`org_id`/locations/`location`/
5501
+ # postures/`posture_name``.
5502
+ # Corresponds to the JSON property `name`
5503
+ # @return [String]
5504
+ attr_accessor :name
5505
+
5506
+ # The name of the posture deployment, for example, `projects/`project_id`/
5507
+ # posturedeployments/`posture_deployment_id``.
5508
+ # Corresponds to the JSON property `postureDeployment`
5509
+ # @return [String]
5510
+ attr_accessor :posture_deployment
5511
+
5512
+ # The project, folder, or organization on which the posture is deployed, for
5513
+ # example, `projects/`project_id``.
5514
+ # Corresponds to the JSON property `postureDeploymentResource`
5515
+ # @return [String]
5516
+ attr_accessor :posture_deployment_resource
5517
+
5518
+ # The version of the posture, for example, `c7cfa2a8`.
5519
+ # Corresponds to the JSON property `revisionId`
5520
+ # @return [String]
5521
+ attr_accessor :revision_id
5522
+
5523
+ def initialize(**args)
5524
+ update!(**args)
5525
+ end
5526
+
5527
+ # Update properties of this object
5528
+ def update!(**args)
5529
+ @changed_policy = args[:changed_policy] if args.key?(:changed_policy)
5530
+ @name = args[:name] if args.key?(:name)
5531
+ @posture_deployment = args[:posture_deployment] if args.key?(:posture_deployment)
5532
+ @posture_deployment_resource = args[:posture_deployment_resource] if args.key?(:posture_deployment_resource)
5533
+ @revision_id = args[:revision_id] if args.key?(:revision_id)
5534
+ end
5535
+ end
5536
+
5537
+ # Identity delegation history of an authenticated service account.
5538
+ class GoogleCloudSecuritycenterV2ServiceAccountDelegationInfo
5539
+ include Google::Apis::Core::Hashable
5540
+
5541
+ # The email address of a Google account.
5542
+ # Corresponds to the JSON property `principalEmail`
5543
+ # @return [String]
5544
+ attr_accessor :principal_email
5545
+
5546
+ # A string representing the principal_subject associated with the identity. As
5547
+ # compared to `principal_email`, supports principals that aren't associated with
5548
+ # email addresses, such as third party principals. For most identities, the
5549
+ # format will be `principal://iam.googleapis.com/`identity pool name`/subjects/`
5550
+ # subject`` except for some GKE identities (GKE_WORKLOAD, FREEFORM,
5551
+ # GKE_HUB_WORKLOAD) that are still in the legacy format `serviceAccount:`
5552
+ # identity pool name`[`subject`]`
5553
+ # Corresponds to the JSON property `principalSubject`
5554
+ # @return [String]
5555
+ attr_accessor :principal_subject
5556
+
5557
+ def initialize(**args)
5558
+ update!(**args)
5559
+ end
5560
+
5561
+ # Update properties of this object
5562
+ def update!(**args)
5563
+ @principal_email = args[:principal_email] if args.key?(:principal_email)
5564
+ @principal_subject = args[:principal_subject] if args.key?(:principal_subject)
5565
+ end
5566
+ end
5567
+
5568
+ # Represents a Kubernetes subject.
5569
+ class GoogleCloudSecuritycenterV2Subject
5570
+ include Google::Apis::Core::Hashable
5571
+
5572
+ # Authentication type for the subject.
5573
+ # Corresponds to the JSON property `kind`
5574
+ # @return [String]
5575
+ attr_accessor :kind
5576
+
5577
+ # Name for the subject.
5578
+ # Corresponds to the JSON property `name`
5579
+ # @return [String]
5580
+ attr_accessor :name
5581
+
5582
+ # Namespace for the subject.
5583
+ # Corresponds to the JSON property `ns`
5584
+ # @return [String]
5585
+ attr_accessor :ns
5586
+
5587
+ def initialize(**args)
5588
+ update!(**args)
5589
+ end
5590
+
5591
+ # Update properties of this object
5592
+ def update!(**args)
5593
+ @kind = args[:kind] if args.key?(:kind)
5594
+ @name = args[:name] if args.key?(:name)
5595
+ @ns = args[:ns] if args.key?(:ns)
5596
+ end
5597
+ end
5598
+
5599
+ # Refers to common vulnerability fields e.g. cve, cvss, cwe etc.
5600
+ class GoogleCloudSecuritycenterV2Vulnerability
5601
+ include Google::Apis::Core::Hashable
5602
+
5603
+ # CVE stands for Common Vulnerabilities and Exposures. More information: https://
5604
+ # cve.mitre.org
5605
+ # Corresponds to the JSON property `cve`
5606
+ # @return [Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV2Cve]
5607
+ attr_accessor :cve
5608
+
5609
+ def initialize(**args)
5610
+ update!(**args)
5611
+ end
5612
+
5613
+ # Update properties of this object
5614
+ def update!(**args)
5615
+ @cve = args[:cve] if args.key?(:cve)
5616
+ end
5617
+ end
5618
+
5619
+ # A signature corresponding to a YARA rule.
5620
+ class GoogleCloudSecuritycenterV2YaraRuleSignature
5621
+ include Google::Apis::Core::Hashable
5622
+
5623
+ # The name of the YARA rule.
5624
+ # Corresponds to the JSON property `yaraRule`
5625
+ # @return [String]
5626
+ attr_accessor :yara_rule
5627
+
5628
+ def initialize(**args)
5629
+ update!(**args)
5630
+ end
5631
+
5632
+ # Update properties of this object
5633
+ def update!(**args)
5634
+ @yara_rule = args[:yara_rule] if args.key?(:yara_rule)
5635
+ end
5636
+ end
5637
+
3076
5638
  # Request message for grouping by assets.
3077
5639
  class GroupAssetsRequest
3078
5640
  include Google::Apis::Core::Hashable
@@ -4348,7 +6910,7 @@ module Google
4348
6910
  # @return [String]
4349
6911
  attr_accessor :group
4350
6912
 
4351
- # Kubernetes object kind, such as Namespace”.
6913
+ # Kubernetes object kind, such as "Namespace".
4352
6914
  # Corresponds to the JSON property `kind`
4353
6915
  # @return [String]
4354
6916
  attr_accessor :kind