google-apis-securitycenter_v1 0.67.0 → 0.69.0

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