google-apis-securitycenter_v1beta2 0.56.0 → 0.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -318,6 +318,48 @@ module Google
318
318
  end
319
319
  end
320
320
 
321
+ # Metadata taken from a [Cloud Logging LogEntry](https://cloud.google.com/
322
+ # logging/docs/reference/v2/rest/v2/LogEntry)
323
+ class CloudLoggingEntry
324
+ include Google::Apis::Core::Hashable
325
+
326
+ # A unique identifier for the log entry.
327
+ # Corresponds to the JSON property `insertId`
328
+ # @return [String]
329
+ attr_accessor :insert_id
330
+
331
+ # The type of the log (part of `log_name`. `log_name` is the resource name of
332
+ # the log to which this log entry belongs). For example: `cloudresourcemanager.
333
+ # googleapis.com/activity`. Note that this field is not URL-encoded, unlike the `
334
+ # LOG_ID` field in `LogEntry`.
335
+ # Corresponds to the JSON property `logId`
336
+ # @return [String]
337
+ attr_accessor :log_id
338
+
339
+ # The organization, folder, or project of the monitored resource that produced
340
+ # this log entry.
341
+ # Corresponds to the JSON property `resourceContainer`
342
+ # @return [String]
343
+ attr_accessor :resource_container
344
+
345
+ # The time the event described by the log entry occurred.
346
+ # Corresponds to the JSON property `timestamp`
347
+ # @return [String]
348
+ attr_accessor :timestamp
349
+
350
+ def initialize(**args)
351
+ update!(**args)
352
+ end
353
+
354
+ # Update properties of this object
355
+ def update!(**args)
356
+ @insert_id = args[:insert_id] if args.key?(:insert_id)
357
+ @log_id = args[:log_id] if args.key?(:log_id)
358
+ @resource_container = args[:resource_container] if args.key?(:resource_container)
359
+ @timestamp = args[:timestamp] if args.key?(:timestamp)
360
+ end
361
+ end
362
+
321
363
  # Contains compliance information about a security standard indicating unmet
322
364
  # recommendations.
323
365
  class Compliance
@@ -350,6 +392,68 @@ module Google
350
392
  end
351
393
  end
352
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
+
353
457
  # Configuration of a module.
354
458
  class Config
355
459
  include Google::Apis::Core::Hashable
@@ -1196,6 +1300,11 @@ module Google
1196
1300
  # @return [Array<Google::Apis::SecuritycenterV1beta2::LoadBalancer>]
1197
1301
  attr_accessor :load_balancers
1198
1302
 
1303
+ # Log entries that are relevant to the finding.
1304
+ # Corresponds to the JSON property `logEntries`
1305
+ # @return [Array<Google::Apis::SecuritycenterV1beta2::LogEntry>]
1306
+ attr_accessor :log_entries
1307
+
1199
1308
  # MITRE ATT&CK tactics and techniques related to this finding. See: https://
1200
1309
  # attack.mitre.org
1201
1310
  # Corresponds to the JSON property `mitreAttack`
@@ -1241,6 +1350,11 @@ module Google
1241
1350
  # @return [String]
1242
1351
  attr_accessor :next_steps
1243
1352
 
1353
+ # Contains information about the org policies associated with the finding.
1354
+ # Corresponds to the JSON property `orgPolicies`
1355
+ # @return [Array<Google::Apis::SecuritycenterV1beta2::OrgPolicy>]
1356
+ attr_accessor :org_policies
1357
+
1244
1358
  # The relative resource name of the source the finding belongs to. See: https://
1245
1359
  # cloud.google.com/apis/design/resource_names#relative_resource_name This field
1246
1360
  # is immutable after creation time. For example: "organizations/`organization_id`
@@ -1339,6 +1453,7 @@ module Google
1339
1453
  @kernel_rootkit = args[:kernel_rootkit] if args.key?(:kernel_rootkit)
1340
1454
  @kubernetes = args[:kubernetes] if args.key?(:kubernetes)
1341
1455
  @load_balancers = args[:load_balancers] if args.key?(:load_balancers)
1456
+ @log_entries = args[:log_entries] if args.key?(:log_entries)
1342
1457
  @mitre_attack = args[:mitre_attack] if args.key?(:mitre_attack)
1343
1458
  @module_name = args[:module_name] if args.key?(:module_name)
1344
1459
  @mute = args[:mute] if args.key?(:mute)
@@ -1346,6 +1461,7 @@ module Google
1346
1461
  @mute_update_time = args[:mute_update_time] if args.key?(:mute_update_time)
1347
1462
  @name = args[:name] if args.key?(:name)
1348
1463
  @next_steps = args[:next_steps] if args.key?(:next_steps)
1464
+ @org_policies = args[:org_policies] if args.key?(:org_policies)
1349
1465
  @parent = args[:parent] if args.key?(:parent)
1350
1466
  @parent_display_name = args[:parent_display_name] if args.key?(:parent_display_name)
1351
1467
  @processes = args[:processes] if args.key?(:processes)
@@ -1780,7 +1896,10 @@ module Google
1780
1896
 
1781
1897
  # This field will be ignored if provided on config creation. Format "
1782
1898
  # organizations/`organization`/muteConfigs/`mute_config`" "folders/`folder`/
1783
- # muteConfigs/`mute_config`" "projects/`project`/muteConfigs/`mute_config`"
1899
+ # muteConfigs/`mute_config`" "projects/`project`/muteConfigs/`mute_config`" "
1900
+ # organizations/`organization`/locations/global/muteConfigs/`mute_config`" "
1901
+ # folders/`folder`/locations/global/muteConfigs/`mute_config`" "projects/`
1902
+ # project`/locations/global/muteConfigs/`mute_config`"
1784
1903
  # Corresponds to the JSON property `name`
1785
1904
  # @return [String]
1786
1905
  attr_accessor :name
@@ -2467,27 +2586,89 @@ module Google
2467
2586
  end
2468
2587
  end
2469
2588
 
2470
- # Represents a particular IAM binding, which captures a member's role addition,
2471
- # removal, or state.
2472
- class IamBinding
2589
+ # Represents an access event.
2590
+ class GoogleCloudSecuritycenterV2Access
2473
2591
  include Google::Apis::Core::Hashable
2474
2592
 
2475
- # The action that was performed on a Binding.
2476
- # Corresponds to the JSON property `action`
2593
+ # Caller's IP address, such as "1.1.1.1".
2594
+ # Corresponds to the JSON property `callerIp`
2477
2595
  # @return [String]
2478
- attr_accessor :action
2596
+ attr_accessor :caller_ip
2479
2597
 
2480
- # A single identity requesting access for a Cloud Platform resource, for example,
2481
- # "foo@google.com".
2482
- # Corresponds to the JSON property `member`
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`
2483
2605
  # @return [String]
2484
- attr_accessor :member
2606
+ attr_accessor :method_name
2485
2607
 
2486
- # Role that is assigned to "members". For example, "roles/viewer", "roles/editor"
2487
- # , or "roles/owner".
2488
- # Corresponds to the JSON property `role`
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`
2489
2616
  # @return [String]
2490
- attr_accessor :role
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
2491
2672
 
2492
2673
  def initialize(**args)
2493
2674
  update!(**args)
@@ -2495,40 +2676,63 @@ module Google
2495
2676
 
2496
2677
  # Update properties of this object
2497
2678
  def update!(**args)
2498
- @action = args[:action] if args.key?(:action)
2499
- @member = args[:member] if args.key?(:member)
2500
- @role = args[:role] if args.key?(:role)
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)
2501
2690
  end
2502
2691
  end
2503
2692
 
2504
- # Represents what's commonly known as an _indicator of compromise_ (IoC) in
2505
- # computer forensics. This is an artifact observed on a network or in an
2506
- # operating system that, with high confidence, indicates a computer intrusion.
2507
- # For more information, see [Indicator of compromise](https://en.wikipedia.org/
2508
- # wiki/Indicator_of_compromise).
2509
- class Indicator
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
2510
2698
  include Google::Apis::Core::Hashable
2511
2699
 
2512
- # List of domains associated to the Finding.
2513
- # Corresponds to the JSON property `domains`
2514
- # @return [Array<String>]
2515
- attr_accessor :domains
2700
+ # The API group of the resource. "*" means all.
2701
+ # Corresponds to the JSON property `group`
2702
+ # @return [String]
2703
+ attr_accessor :group
2516
2704
 
2517
- # The list of IP addresses that are associated with the finding.
2518
- # Corresponds to the JSON property `ipAddresses`
2519
- # @return [Array<String>]
2520
- attr_accessor :ip_addresses
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
2521
2709
 
2522
- # The list of matched signatures indicating that the given process is present in
2523
- # the environment.
2524
- # Corresponds to the JSON property `signatures`
2525
- # @return [Array<Google::Apis::SecuritycenterV1beta2::ProcessSignature>]
2526
- attr_accessor :signatures
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
2527
2715
 
2528
- # The list of URIs associated to the Findings.
2529
- # Corresponds to the JSON property `uris`
2530
- # @return [Array<String>]
2531
- attr_accessor :uris
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
2532
2736
 
2533
2737
  def initialize(**args)
2534
2738
  update!(**args)
@@ -2536,34 +2740,2449 @@ module Google
2536
2740
 
2537
2741
  # Update properties of this object
2538
2742
  def update!(**args)
2539
- @domains = args[:domains] if args.key?(:domains)
2540
- @ip_addresses = args[:ip_addresses] if args.key?(:ip_addresses)
2541
- @signatures = args[:signatures] if args.key?(:signatures)
2542
- @uris = args[:uris] if args.key?(:uris)
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)
2543
2750
  end
2544
2751
  end
2545
2752
 
2546
- # Kernel mode rootkit signatures.
2547
- class KernelRootkit
2753
+ # An attack exposure contains the results of an attack path simulation run.
2754
+ class GoogleCloudSecuritycenterV2AttackExposure
2548
2755
  include Google::Apis::Core::Hashable
2549
2756
 
2550
- # Rootkit name, when available.
2551
- # Corresponds to the JSON property `name`
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`
2552
2761
  # @return [String]
2553
- attr_accessor :name
2762
+ attr_accessor :attack_exposure_result
2554
2763
 
2555
- # True if unexpected modifications of kernel code memory are present.
2556
- # Corresponds to the JSON property `unexpectedCodeModification`
2557
- # @return [Boolean]
2558
- attr_accessor :unexpected_code_modification
2559
- alias_method :unexpected_code_modification?, :unexpected_code_modification
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
2560
2769
 
2561
- # True if `ftrace` points are present with callbacks pointing to regions that
2562
- # are not in the expected kernel or module code range.
2563
- # Corresponds to the JSON property `unexpectedFtraceHandler`
2564
- # @return [Boolean]
2565
- attr_accessor :unexpected_ftrace_handler
2566
- alias_method :unexpected_ftrace_handler?, :unexpected_ftrace_handler
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
+
5089
+ # Represents a particular IAM binding, which captures a member's role addition,
5090
+ # removal, or state.
5091
+ class IamBinding
5092
+ include Google::Apis::Core::Hashable
5093
+
5094
+ # The action that was performed on a Binding.
5095
+ # Corresponds to the JSON property `action`
5096
+ # @return [String]
5097
+ attr_accessor :action
5098
+
5099
+ # A single identity requesting access for a Cloud Platform resource, for example,
5100
+ # "foo@google.com".
5101
+ # Corresponds to the JSON property `member`
5102
+ # @return [String]
5103
+ attr_accessor :member
5104
+
5105
+ # Role that is assigned to "members". For example, "roles/viewer", "roles/editor"
5106
+ # , or "roles/owner".
5107
+ # Corresponds to the JSON property `role`
5108
+ # @return [String]
5109
+ attr_accessor :role
5110
+
5111
+ def initialize(**args)
5112
+ update!(**args)
5113
+ end
5114
+
5115
+ # Update properties of this object
5116
+ def update!(**args)
5117
+ @action = args[:action] if args.key?(:action)
5118
+ @member = args[:member] if args.key?(:member)
5119
+ @role = args[:role] if args.key?(:role)
5120
+ end
5121
+ end
5122
+
5123
+ # Represents what's commonly known as an _indicator of compromise_ (IoC) in
5124
+ # computer forensics. This is an artifact observed on a network or in an
5125
+ # operating system that, with high confidence, indicates a computer intrusion.
5126
+ # For more information, see [Indicator of compromise](https://en.wikipedia.org/
5127
+ # wiki/Indicator_of_compromise).
5128
+ class Indicator
5129
+ include Google::Apis::Core::Hashable
5130
+
5131
+ # List of domains associated to the Finding.
5132
+ # Corresponds to the JSON property `domains`
5133
+ # @return [Array<String>]
5134
+ attr_accessor :domains
5135
+
5136
+ # The list of IP addresses that are associated with the finding.
5137
+ # Corresponds to the JSON property `ipAddresses`
5138
+ # @return [Array<String>]
5139
+ attr_accessor :ip_addresses
5140
+
5141
+ # The list of matched signatures indicating that the given process is present in
5142
+ # the environment.
5143
+ # Corresponds to the JSON property `signatures`
5144
+ # @return [Array<Google::Apis::SecuritycenterV1beta2::ProcessSignature>]
5145
+ attr_accessor :signatures
5146
+
5147
+ # The list of URIs associated to the Findings.
5148
+ # Corresponds to the JSON property `uris`
5149
+ # @return [Array<String>]
5150
+ attr_accessor :uris
5151
+
5152
+ def initialize(**args)
5153
+ update!(**args)
5154
+ end
5155
+
5156
+ # Update properties of this object
5157
+ def update!(**args)
5158
+ @domains = args[:domains] if args.key?(:domains)
5159
+ @ip_addresses = args[:ip_addresses] if args.key?(:ip_addresses)
5160
+ @signatures = args[:signatures] if args.key?(:signatures)
5161
+ @uris = args[:uris] if args.key?(:uris)
5162
+ end
5163
+ end
5164
+
5165
+ # Kernel mode rootkit signatures.
5166
+ class KernelRootkit
5167
+ include Google::Apis::Core::Hashable
5168
+
5169
+ # Rootkit name, when available.
5170
+ # Corresponds to the JSON property `name`
5171
+ # @return [String]
5172
+ attr_accessor :name
5173
+
5174
+ # True if unexpected modifications of kernel code memory are present.
5175
+ # Corresponds to the JSON property `unexpectedCodeModification`
5176
+ # @return [Boolean]
5177
+ attr_accessor :unexpected_code_modification
5178
+ alias_method :unexpected_code_modification?, :unexpected_code_modification
5179
+
5180
+ # True if `ftrace` points are present with callbacks pointing to regions that
5181
+ # are not in the expected kernel or module code range.
5182
+ # Corresponds to the JSON property `unexpectedFtraceHandler`
5183
+ # @return [Boolean]
5184
+ attr_accessor :unexpected_ftrace_handler
5185
+ alias_method :unexpected_ftrace_handler?, :unexpected_ftrace_handler
2567
5186
 
2568
5187
  # True if interrupt handlers that are are not in the expected kernel or module
2569
5188
  # code regions are present.
@@ -2737,6 +5356,26 @@ module Google
2737
5356
  end
2738
5357
  end
2739
5358
 
5359
+ # An individual entry in a log.
5360
+ class LogEntry
5361
+ include Google::Apis::Core::Hashable
5362
+
5363
+ # Metadata taken from a [Cloud Logging LogEntry](https://cloud.google.com/
5364
+ # logging/docs/reference/v2/rest/v2/LogEntry)
5365
+ # Corresponds to the JSON property `cloudLoggingEntry`
5366
+ # @return [Google::Apis::SecuritycenterV1beta2::CloudLoggingEntry]
5367
+ attr_accessor :cloud_logging_entry
5368
+
5369
+ def initialize(**args)
5370
+ update!(**args)
5371
+ end
5372
+
5373
+ # Update properties of this object
5374
+ def update!(**args)
5375
+ @cloud_logging_entry = args[:cloud_logging_entry] if args.key?(:cloud_logging_entry)
5376
+ end
5377
+ end
5378
+
2740
5379
  # A signature corresponding to memory page hashes.
2741
5380
  class MemoryHashSignature
2742
5381
  include Google::Apis::Core::Hashable
@@ -2862,12 +5501,17 @@ module Google
2862
5501
  class Object
2863
5502
  include Google::Apis::Core::Hashable
2864
5503
 
5504
+ # Pod containers associated with this finding, if any.
5505
+ # Corresponds to the JSON property `containers`
5506
+ # @return [Array<Google::Apis::SecuritycenterV1beta2::Container>]
5507
+ attr_accessor :containers
5508
+
2865
5509
  # Kubernetes object group, such as "policy.k8s.io/v1".
2866
5510
  # Corresponds to the JSON property `group`
2867
5511
  # @return [String]
2868
5512
  attr_accessor :group
2869
5513
 
2870
- # Kubernetes object kind, such as Namespace”.
5514
+ # Kubernetes object kind, such as "Namespace".
2871
5515
  # Corresponds to the JSON property `kind`
2872
5516
  # @return [String]
2873
5517
  attr_accessor :kind
@@ -2891,6 +5535,7 @@ module Google
2891
5535
 
2892
5536
  # Update properties of this object
2893
5537
  def update!(**args)
5538
+ @containers = args[:containers] if args.key?(:containers)
2894
5539
  @group = args[:group] if args.key?(:group)
2895
5540
  @kind = args[:kind] if args.key?(:kind)
2896
5541
  @name = args[:name] if args.key?(:name)
@@ -2898,6 +5543,26 @@ module Google
2898
5543
  end
2899
5544
  end
2900
5545
 
5546
+ # Contains information about the org policies associated with the finding.
5547
+ class OrgPolicy
5548
+ include Google::Apis::Core::Hashable
5549
+
5550
+ # The resource name of the org policy. Example: "organizations/`organization_id`/
5551
+ # policies/`constraint_name`"
5552
+ # Corresponds to the JSON property `name`
5553
+ # @return [String]
5554
+ attr_accessor :name
5555
+
5556
+ def initialize(**args)
5557
+ update!(**args)
5558
+ end
5559
+
5560
+ # Update properties of this object
5561
+ def update!(**args)
5562
+ @name = args[:name] if args.key?(:name)
5563
+ end
5564
+ end
5565
+
2901
5566
  # A Kubernetes Pod.
2902
5567
  class Pod
2903
5568
  include Google::Apis::Core::Hashable
@@ -3138,7 +5803,7 @@ module Google
3138
5803
  end
3139
5804
  end
3140
5805
 
3141
- # Resource capturing the settings for Security Center.
5806
+ # Resource capturing the settings for Security Center. Next ID: 12
3142
5807
  class SecurityCenterSettings
3143
5808
  include Google::Apis::Core::Hashable
3144
5809