google-apis-securitycenter_v1beta2 0.57.0 → 0.58.0

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