google-apis-securitycenter_v1beta1 0.64.0 → 0.65.0

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