google-apis-securitycenter_v1 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 12cedc596b21c5731747f31779e804ececabfbab02f3a5042cb505409dfa57d6
4
+ data.tar.gz: 2de273d95659e9240a7143f1c77afb2f0cf6b1a085d5d3c37439a168b65d88e6
5
+ SHA512:
6
+ metadata.gz: 51b265f98a365aab259e4c7db3198007af10684abb646b02e30adbb2d3ca401d992dae047f5eaf95421747316cfe556fe62d0e4dd7e853d38c1ae5d23aa33a3a
7
+ data.tar.gz: d51eb95c3879198d76c545983fa4fe7414084bc25d7e08c9ac453ba7d2dede5e7083402d81bf909dab83061d9c49c8a703d59105c42e9a6164329bbffa27c2cf
@@ -0,0 +1,13 @@
1
+ --hide-void-return
2
+ --no-private
3
+ --verbose
4
+ --title=google-apis-securitycenter_v1
5
+ --markup-provider=redcarpet
6
+ --markup=markdown
7
+ --main OVERVIEW.md
8
+ lib/google/apis/securitycenter_v1/*.rb
9
+ lib/google/apis/securitycenter_v1.rb
10
+ -
11
+ OVERVIEW.md
12
+ CHANGELOG.md
13
+ LICENSE.md
@@ -0,0 +1,7 @@
1
+ # Release history for google-apis-securitycenter_v1
2
+
3
+ ### v0.1.0 (2021-01-07)
4
+
5
+ * Regenerated from discovery document revision 20201231
6
+ * Regenerated using generator version 0.1.1
7
+
@@ -0,0 +1,202 @@
1
+
2
+ Apache License
3
+ Version 2.0, January 2004
4
+ http://www.apache.org/licenses/
5
+
6
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7
+
8
+ 1. Definitions.
9
+
10
+ "License" shall mean the terms and conditions for use, reproduction,
11
+ and distribution as defined by Sections 1 through 9 of this document.
12
+
13
+ "Licensor" shall mean the copyright owner or entity authorized by
14
+ the copyright owner that is granting the License.
15
+
16
+ "Legal Entity" shall mean the union of the acting entity and all
17
+ other entities that control, are controlled by, or are under common
18
+ control with that entity. For the purposes of this definition,
19
+ "control" means (i) the power, direct or indirect, to cause the
20
+ direction or management of such entity, whether by contract or
21
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
22
+ outstanding shares, or (iii) beneficial ownership of such entity.
23
+
24
+ "You" (or "Your") shall mean an individual or Legal Entity
25
+ exercising permissions granted by this License.
26
+
27
+ "Source" form shall mean the preferred form for making modifications,
28
+ including but not limited to software source code, documentation
29
+ source, and configuration files.
30
+
31
+ "Object" form shall mean any form resulting from mechanical
32
+ transformation or translation of a Source form, including but
33
+ not limited to compiled object code, generated documentation,
34
+ and conversions to other media types.
35
+
36
+ "Work" shall mean the work of authorship, whether in Source or
37
+ Object form, made available under the License, as indicated by a
38
+ copyright notice that is included in or attached to the work
39
+ (an example is provided in the Appendix below).
40
+
41
+ "Derivative Works" shall mean any work, whether in Source or Object
42
+ form, that is based on (or derived from) the Work and for which the
43
+ editorial revisions, annotations, elaborations, or other modifications
44
+ represent, as a whole, an original work of authorship. For the purposes
45
+ of this License, Derivative Works shall not include works that remain
46
+ separable from, or merely link (or bind by name) to the interfaces of,
47
+ the Work and Derivative Works thereof.
48
+
49
+ "Contribution" shall mean any work of authorship, including
50
+ the original version of the Work and any modifications or additions
51
+ to that Work or Derivative Works thereof, that is intentionally
52
+ submitted to Licensor for inclusion in the Work by the copyright owner
53
+ or by an individual or Legal Entity authorized to submit on behalf of
54
+ the copyright owner. For the purposes of this definition, "submitted"
55
+ means any form of electronic, verbal, or written communication sent
56
+ to the Licensor or its representatives, including but not limited to
57
+ communication on electronic mailing lists, source code control systems,
58
+ and issue tracking systems that are managed by, or on behalf of, the
59
+ Licensor for the purpose of discussing and improving the Work, but
60
+ excluding communication that is conspicuously marked or otherwise
61
+ designated in writing by the copyright owner as "Not a Contribution."
62
+
63
+ "Contributor" shall mean Licensor and any individual or Legal Entity
64
+ on behalf of whom a Contribution has been received by Licensor and
65
+ subsequently incorporated within the Work.
66
+
67
+ 2. Grant of Copyright License. Subject to the terms and conditions of
68
+ this License, each Contributor hereby grants to You a perpetual,
69
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70
+ copyright license to reproduce, prepare Derivative Works of,
71
+ publicly display, publicly perform, sublicense, and distribute the
72
+ Work and such Derivative Works in Source or Object form.
73
+
74
+ 3. Grant of Patent License. Subject to the terms and conditions of
75
+ this License, each Contributor hereby grants to You a perpetual,
76
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77
+ (except as stated in this section) patent license to make, have made,
78
+ use, offer to sell, sell, import, and otherwise transfer the Work,
79
+ where such license applies only to those patent claims licensable
80
+ by such Contributor that are necessarily infringed by their
81
+ Contribution(s) alone or by combination of their Contribution(s)
82
+ with the Work to which such Contribution(s) was submitted. If You
83
+ institute patent litigation against any entity (including a
84
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
85
+ or a Contribution incorporated within the Work constitutes direct
86
+ or contributory patent infringement, then any patent licenses
87
+ granted to You under this License for that Work shall terminate
88
+ as of the date such litigation is filed.
89
+
90
+ 4. Redistribution. You may reproduce and distribute copies of the
91
+ Work or Derivative Works thereof in any medium, with or without
92
+ modifications, and in Source or Object form, provided that You
93
+ meet the following conditions:
94
+
95
+ (a) You must give any other recipients of the Work or
96
+ Derivative Works a copy of this License; and
97
+
98
+ (b) You must cause any modified files to carry prominent notices
99
+ stating that You changed the files; and
100
+
101
+ (c) You must retain, in the Source form of any Derivative Works
102
+ that You distribute, all copyright, patent, trademark, and
103
+ attribution notices from the Source form of the Work,
104
+ excluding those notices that do not pertain to any part of
105
+ the Derivative Works; and
106
+
107
+ (d) If the Work includes a "NOTICE" text file as part of its
108
+ distribution, then any Derivative Works that You distribute must
109
+ include a readable copy of the attribution notices contained
110
+ within such NOTICE file, excluding those notices that do not
111
+ pertain to any part of the Derivative Works, in at least one
112
+ of the following places: within a NOTICE text file distributed
113
+ as part of the Derivative Works; within the Source form or
114
+ documentation, if provided along with the Derivative Works; or,
115
+ within a display generated by the Derivative Works, if and
116
+ wherever such third-party notices normally appear. The contents
117
+ of the NOTICE file are for informational purposes only and
118
+ do not modify the License. You may add Your own attribution
119
+ notices within Derivative Works that You distribute, alongside
120
+ or as an addendum to the NOTICE text from the Work, provided
121
+ that such additional attribution notices cannot be construed
122
+ as modifying the License.
123
+
124
+ You may add Your own copyright statement to Your modifications and
125
+ may provide additional or different license terms and conditions
126
+ for use, reproduction, or distribution of Your modifications, or
127
+ for any such Derivative Works as a whole, provided Your use,
128
+ reproduction, and distribution of the Work otherwise complies with
129
+ the conditions stated in this License.
130
+
131
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
132
+ any Contribution intentionally submitted for inclusion in the Work
133
+ by You to the Licensor shall be under the terms and conditions of
134
+ this License, without any additional terms or conditions.
135
+ Notwithstanding the above, nothing herein shall supersede or modify
136
+ the terms of any separate license agreement you may have executed
137
+ with Licensor regarding such Contributions.
138
+
139
+ 6. Trademarks. This License does not grant permission to use the trade
140
+ names, trademarks, service marks, or product names of the Licensor,
141
+ except as required for reasonable and customary use in describing the
142
+ origin of the Work and reproducing the content of the NOTICE file.
143
+
144
+ 7. Disclaimer of Warranty. Unless required by applicable law or
145
+ agreed to in writing, Licensor provides the Work (and each
146
+ Contributor provides its Contributions) on an "AS IS" BASIS,
147
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148
+ implied, including, without limitation, any warranties or conditions
149
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150
+ PARTICULAR PURPOSE. You are solely responsible for determining the
151
+ appropriateness of using or redistributing the Work and assume any
152
+ risks associated with Your exercise of permissions under this License.
153
+
154
+ 8. Limitation of Liability. In no event and under no legal theory,
155
+ whether in tort (including negligence), contract, or otherwise,
156
+ unless required by applicable law (such as deliberate and grossly
157
+ negligent acts) or agreed to in writing, shall any Contributor be
158
+ liable to You for damages, including any direct, indirect, special,
159
+ incidental, or consequential damages of any character arising as a
160
+ result of this License or out of the use or inability to use the
161
+ Work (including but not limited to damages for loss of goodwill,
162
+ work stoppage, computer failure or malfunction, or any and all
163
+ other commercial damages or losses), even if such Contributor
164
+ has been advised of the possibility of such damages.
165
+
166
+ 9. Accepting Warranty or Additional Liability. While redistributing
167
+ the Work or Derivative Works thereof, You may choose to offer,
168
+ and charge a fee for, acceptance of support, warranty, indemnity,
169
+ or other liability obligations and/or rights consistent with this
170
+ License. However, in accepting such obligations, You may act only
171
+ on Your own behalf and on Your sole responsibility, not on behalf
172
+ of any other Contributor, and only if You agree to indemnify,
173
+ defend, and hold each Contributor harmless for any liability
174
+ incurred by, or claims asserted against, such Contributor by reason
175
+ of your accepting any such warranty or additional liability.
176
+
177
+ END OF TERMS AND CONDITIONS
178
+
179
+ APPENDIX: How to apply the Apache License to your work.
180
+
181
+ To apply the Apache License to your work, attach the following
182
+ boilerplate notice, with the fields enclosed by brackets "[]"
183
+ replaced with your own identifying information. (Don't include
184
+ the brackets!) The text should be enclosed in the appropriate
185
+ comment syntax for the file format. We also recommend that a
186
+ file or class name and description of purpose be included on the
187
+ same "printed page" as the copyright notice for easier
188
+ identification within third-party archives.
189
+
190
+ Copyright [yyyy] [name of copyright owner]
191
+
192
+ Licensed under the Apache License, Version 2.0 (the "License");
193
+ you may not use this file except in compliance with the License.
194
+ You may obtain a copy of the License at
195
+
196
+ http://www.apache.org/licenses/LICENSE-2.0
197
+
198
+ Unless required by applicable law or agreed to in writing, software
199
+ distributed under the License is distributed on an "AS IS" BASIS,
200
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201
+ See the License for the specific language governing permissions and
202
+ limitations under the License.
@@ -0,0 +1,96 @@
1
+ # Simple REST client for version V1 of the Security Command Center API
2
+
3
+ This is a simple client library for version V1 of the Security Command Center API. It provides:
4
+
5
+ * A client object that connects to the HTTP/JSON REST endpoint for the service.
6
+ * Ruby objects for data structures related to the service.
7
+ * Integration with the googleauth gem for authentication using OAuth, API keys, and service accounts.
8
+ * Control of retry, pagination, and timeouts.
9
+
10
+ Note that although this client library is supported and will continue to be updated to track changes to the service, it is otherwise considered complete and not under active development. Many Google services, especially Google Cloud Platform services, may provide a more modern client that is under more active development and improvement. See the section below titled *Which client should I use?* for more information.
11
+
12
+ ## Getting started
13
+
14
+ ### Before you begin
15
+
16
+ There are a few setup steps you need to complete before you can use this library:
17
+
18
+ 1. If you don't already have a Google account, [sign up](https://www.google.com/accounts).
19
+ 2. If you have never created a Google APIs Console project, read about [Managing Projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects) and create a project in the [Google API Console](https://console.cloud.google.com/).
20
+ 3. Most APIs need to be enabled for your project. [Enable it](https://console.cloud.google.com/apis/library/securitycenter.googleapis.com) in the console.
21
+
22
+ ### Installation
23
+
24
+ Add this line to your application's Gemfile:
25
+
26
+ ```ruby
27
+ gem 'google-apis-securitycenter_v1', '~> 0.1'
28
+ ```
29
+
30
+ And then execute:
31
+
32
+ ```
33
+ $ bundle
34
+ ```
35
+
36
+ Or install it yourself as:
37
+
38
+ ```
39
+ $ gem install google-apis-securitycenter_v1
40
+ ```
41
+
42
+ ### Creating a client object
43
+
44
+ Once the gem is installed, you can load the client code and instantiate a client.
45
+
46
+ ```ruby
47
+ # Load the client
48
+ require "google/apis/securitycenter_v1"
49
+
50
+ # Create a client object
51
+ client = Google::Apis::SecuritycenterV1::SecurityCommandCenterService.new
52
+
53
+ # Authenticate calls
54
+ client.authentication = # ... use the googleauth gem to create credentials
55
+ ```
56
+
57
+ See the class reference docs for information on the methods you can call from a client.
58
+
59
+ ## Documentation
60
+
61
+ More detailed descriptions of the Google simple REST clients are available in two documents.
62
+
63
+ * The [Usage Guide](https://github.com/googleapis/google-api-ruby-client/blob/master/docs/usage-guide.md) discusses how to make API calls, how to use the provided data structures, and how to work the various features of the client library, including media upload and download, error handling, retries, pagination, and logging.
64
+ * The [Auth Guide](https://github.com/googleapis/google-api-ruby-client/blob/master/docs/auth-guide.md) discusses authentication in the client libraries, including API keys, OAuth 2.0, service accounts, and environment variables.
65
+
66
+ (Note: the above documents are written for the simple REST clients in general, and their examples may not reflect the Securitycenter service in particular.)
67
+
68
+ For reference information on specific calls in the Security Command Center API, see the {Google::Apis::SecuritycenterV1::SecurityCommandCenterService class reference docs}.
69
+
70
+ ## Which client should I use?
71
+
72
+ Google provides two types of Ruby API client libraries: **simple REST clients** and **modern clients**.
73
+
74
+ This library, `google-apis-securitycenter_v1`, is a simple REST client. You can identify these clients by their gem names, which are always in the form `google-apis-<servicename>_<serviceversion>`. The simple REST clients connect to HTTP/JSON REST endpoints and are automatically generated from service discovery documents. They support most API functionality, but their class interfaces are sometimes awkward.
75
+
76
+ Modern clients are produced by a modern code generator, sometimes combined with hand-crafted functionality. Most modern clients connect to high-performance gRPC endpoints, although a few are backed by REST services. Modern clients are available for many Google services, especially Google Cloud Platform services, but do not yet support all the services covered by the simple clients.
77
+
78
+ Gem names for modern clients are often of the form `google-cloud-<service_name>`. (For example, [google-cloud-pubsub](https://rubygems.org/gems/google-cloud-pubsub).) Note that most modern clients also have corresponding "versioned" gems with names like `google-cloud-<service_name>-<version>`. (For example, [google-cloud-pubsub-v1](https://rubygems.org/gems/google-cloud-pubsub-v1).) The "versioned" gems can be used directly, but often provide lower-level interfaces. In most cases, the main gem is recommended.
79
+
80
+ **For most users, we recommend the modern client, if one is available.** Compared with simple clients, modern clients are generally much easier to use and more Ruby-like, support more advanced features such as streaming and long-running operations, and often provide much better performance. You may consider using a simple client instead, if a modern client is not yet available for the service you want to use, or if you are not able to use gRPC on your infrastructure.
81
+
82
+ The [product documentation](https://cloud.google.com/security-command-center) may provide guidance regarding the preferred client library to use.
83
+
84
+ ## Supported Ruby versions
85
+
86
+ This library is supported on Ruby 2.5+.
87
+
88
+ Google provides official support for Ruby versions that are actively supported by Ruby Core -- that is, Ruby versions that are either in normal maintenance or in security maintenance, and not end of life. Currently, this means Ruby 2.5 and later. Older versions of Ruby _may_ still work, but are unsupported and not recommended. See https://www.ruby-lang.org/en/downloads/branches/ for details about the Ruby support schedule.
89
+
90
+ ## License
91
+
92
+ This library is licensed under Apache 2.0. Full license text is available in the {file:LICENSE.md LICENSE}.
93
+
94
+ ## Support
95
+
96
+ Please [report bugs at the project on Github](https://github.com/google/google-api-ruby-client/issues). Don't hesitate to [ask questions](http://stackoverflow.com/questions/tagged/google-api-ruby-client) about the client or APIs on [StackOverflow](http://stackoverflow.com).
@@ -0,0 +1,15 @@
1
+ # Copyright 2020 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require "google/apis/securitycenter_v1"
@@ -0,0 +1,37 @@
1
+ # Copyright 2020 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'google/apis/securitycenter_v1/service.rb'
16
+ require 'google/apis/securitycenter_v1/classes.rb'
17
+ require 'google/apis/securitycenter_v1/representations.rb'
18
+ require 'google/apis/securitycenter_v1/gem_version.rb'
19
+
20
+ module Google
21
+ module Apis
22
+ # Security Command Center API
23
+ #
24
+ # Security Command Center API provides access to temporal views of assets and
25
+ # findings within an organization.
26
+ #
27
+ # @see https://cloud.google.com/security-command-center
28
+ module SecuritycenterV1
29
+ # Version of the Security Command Center API this client connects to.
30
+ # This is NOT the gem version.
31
+ VERSION = 'V1'
32
+
33
+ # View and manage your data across Google Cloud Platform services
34
+ AUTH_CLOUD_PLATFORM = 'https://www.googleapis.com/auth/cloud-platform'
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,2128 @@
1
+ # Copyright 2020 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'date'
16
+ require 'google/apis/core/base_service'
17
+ require 'google/apis/core/json_representation'
18
+ require 'google/apis/core/hashable'
19
+ require 'google/apis/errors'
20
+
21
+ module Google
22
+ module Apis
23
+ module SecuritycenterV1
24
+
25
+ # Security Command Center representation of a Google Cloud resource. The Asset
26
+ # is a Security Command Center resource that captures information about a single
27
+ # Google Cloud resource. All modifications to an Asset are only within the
28
+ # context of Security Command Center and don't affect the referenced Google
29
+ # Cloud resource.
30
+ class Asset
31
+ include Google::Apis::Core::Hashable
32
+
33
+ # The time at which the asset was created in Security Command Center.
34
+ # Corresponds to the JSON property `createTime`
35
+ # @return [String]
36
+ attr_accessor :create_time
37
+
38
+ # Cloud IAM Policy information associated with the Google Cloud resource
39
+ # described by the Security Command Center asset. This information is managed
40
+ # and defined by the Google Cloud resource and cannot be modified by the user.
41
+ # Corresponds to the JSON property `iamPolicy`
42
+ # @return [Google::Apis::SecuritycenterV1::IamPolicy]
43
+ attr_accessor :iam_policy
44
+
45
+ # The relative resource name of this asset. See: https://cloud.google.com/apis/
46
+ # design/resource_names#relative_resource_name Example: "organizations/`
47
+ # organization_id`/assets/`asset_id`".
48
+ # Corresponds to the JSON property `name`
49
+ # @return [String]
50
+ attr_accessor :name
51
+
52
+ # Resource managed properties. These properties are managed and defined by the
53
+ # Google Cloud resource and cannot be modified by the user.
54
+ # Corresponds to the JSON property `resourceProperties`
55
+ # @return [Hash<String,Object>]
56
+ attr_accessor :resource_properties
57
+
58
+ # Security Command Center managed properties. These properties are managed by
59
+ # Security Command Center and cannot be modified by the user.
60
+ # Corresponds to the JSON property `securityCenterProperties`
61
+ # @return [Google::Apis::SecuritycenterV1::SecurityCenterProperties]
62
+ attr_accessor :security_center_properties
63
+
64
+ # User specified security marks that are attached to the parent Security Command
65
+ # Center resource. Security marks are scoped within a Security Command Center
66
+ # organization -- they can be modified and viewed by all users who have proper
67
+ # permissions on the organization.
68
+ # Corresponds to the JSON property `securityMarks`
69
+ # @return [Google::Apis::SecuritycenterV1::SecurityMarks]
70
+ attr_accessor :security_marks
71
+
72
+ # The time at which the asset was last updated, added, or deleted in Security
73
+ # Command Center.
74
+ # Corresponds to the JSON property `updateTime`
75
+ # @return [String]
76
+ attr_accessor :update_time
77
+
78
+ def initialize(**args)
79
+ update!(**args)
80
+ end
81
+
82
+ # Update properties of this object
83
+ def update!(**args)
84
+ @create_time = args[:create_time] if args.key?(:create_time)
85
+ @iam_policy = args[:iam_policy] if args.key?(:iam_policy)
86
+ @name = args[:name] if args.key?(:name)
87
+ @resource_properties = args[:resource_properties] if args.key?(:resource_properties)
88
+ @security_center_properties = args[:security_center_properties] if args.key?(:security_center_properties)
89
+ @security_marks = args[:security_marks] if args.key?(:security_marks)
90
+ @update_time = args[:update_time] if args.key?(:update_time)
91
+ end
92
+ end
93
+
94
+ # The configuration used for Asset Discovery runs.
95
+ class AssetDiscoveryConfig
96
+ include Google::Apis::Core::Hashable
97
+
98
+ # The folder ids to use for filtering asset discovery. It consists of only
99
+ # digits, e.g., 756619654966.
100
+ # Corresponds to the JSON property `folderIds`
101
+ # @return [Array<String>]
102
+ attr_accessor :folder_ids
103
+
104
+ # The mode to use for filtering asset discovery.
105
+ # Corresponds to the JSON property `inclusionMode`
106
+ # @return [String]
107
+ attr_accessor :inclusion_mode
108
+
109
+ # The project ids to use for filtering asset discovery.
110
+ # Corresponds to the JSON property `projectIds`
111
+ # @return [Array<String>]
112
+ attr_accessor :project_ids
113
+
114
+ def initialize(**args)
115
+ update!(**args)
116
+ end
117
+
118
+ # Update properties of this object
119
+ def update!(**args)
120
+ @folder_ids = args[:folder_ids] if args.key?(:folder_ids)
121
+ @inclusion_mode = args[:inclusion_mode] if args.key?(:inclusion_mode)
122
+ @project_ids = args[:project_ids] if args.key?(:project_ids)
123
+ end
124
+ end
125
+
126
+ # Specifies the audit configuration for a service. The configuration determines
127
+ # which permission types are logged, and what identities, if any, are exempted
128
+ # from logging. An AuditConfig must have one or more AuditLogConfigs. If there
129
+ # are AuditConfigs for both `allServices` and a specific service, the union of
130
+ # the two AuditConfigs is used for that service: the log_types specified in each
131
+ # AuditConfig are enabled, and the exempted_members in each AuditLogConfig are
132
+ # exempted. Example Policy with multiple AuditConfigs: ` "audit_configs": [ ` "
133
+ # service": "allServices", "audit_log_configs": [ ` "log_type": "DATA_READ", "
134
+ # exempted_members": [ "user:jose@example.com" ] `, ` "log_type": "DATA_WRITE" `,
135
+ # ` "log_type": "ADMIN_READ" ` ] `, ` "service": "sampleservice.googleapis.com",
136
+ # "audit_log_configs": [ ` "log_type": "DATA_READ" `, ` "log_type": "DATA_WRITE"
137
+ # , "exempted_members": [ "user:aliya@example.com" ] ` ] ` ] ` For sampleservice,
138
+ # this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also
139
+ # exempts jose@example.com from DATA_READ logging, and aliya@example.com from
140
+ # DATA_WRITE logging.
141
+ class AuditConfig
142
+ include Google::Apis::Core::Hashable
143
+
144
+ # The configuration for logging of each type of permission.
145
+ # Corresponds to the JSON property `auditLogConfigs`
146
+ # @return [Array<Google::Apis::SecuritycenterV1::AuditLogConfig>]
147
+ attr_accessor :audit_log_configs
148
+
149
+ # Specifies a service that will be enabled for audit logging. For example, `
150
+ # storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special
151
+ # value that covers all services.
152
+ # Corresponds to the JSON property `service`
153
+ # @return [String]
154
+ attr_accessor :service
155
+
156
+ def initialize(**args)
157
+ update!(**args)
158
+ end
159
+
160
+ # Update properties of this object
161
+ def update!(**args)
162
+ @audit_log_configs = args[:audit_log_configs] if args.key?(:audit_log_configs)
163
+ @service = args[:service] if args.key?(:service)
164
+ end
165
+ end
166
+
167
+ # Provides the configuration for logging a type of permissions. Example: ` "
168
+ # audit_log_configs": [ ` "log_type": "DATA_READ", "exempted_members": [ "user:
169
+ # jose@example.com" ] `, ` "log_type": "DATA_WRITE" ` ] ` This enables '
170
+ # DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from
171
+ # DATA_READ logging.
172
+ class AuditLogConfig
173
+ include Google::Apis::Core::Hashable
174
+
175
+ # Specifies the identities that do not cause logging for this type of permission.
176
+ # Follows the same format of Binding.members.
177
+ # Corresponds to the JSON property `exemptedMembers`
178
+ # @return [Array<String>]
179
+ attr_accessor :exempted_members
180
+
181
+ # The log type that this config enables.
182
+ # Corresponds to the JSON property `logType`
183
+ # @return [String]
184
+ attr_accessor :log_type
185
+
186
+ def initialize(**args)
187
+ update!(**args)
188
+ end
189
+
190
+ # Update properties of this object
191
+ def update!(**args)
192
+ @exempted_members = args[:exempted_members] if args.key?(:exempted_members)
193
+ @log_type = args[:log_type] if args.key?(:log_type)
194
+ end
195
+ end
196
+
197
+ # Associates `members` with a `role`.
198
+ class Binding
199
+ include Google::Apis::Core::Hashable
200
+
201
+ # Represents a textual expression in the Common Expression Language (CEL) syntax.
202
+ # CEL is a C-like expression language. The syntax and semantics of CEL are
203
+ # documented at https://github.com/google/cel-spec. Example (Comparison): title:
204
+ # "Summary size limit" description: "Determines if a summary is less than 100
205
+ # chars" expression: "document.summary.size() < 100" Example (Equality): title: "
206
+ # Requestor is owner" description: "Determines if requestor is the document
207
+ # owner" expression: "document.owner == request.auth.claims.email" Example (
208
+ # Logic): title: "Public documents" description: "Determine whether the document
209
+ # should be publicly visible" expression: "document.type != 'private' &&
210
+ # document.type != 'internal'" Example (Data Manipulation): title: "Notification
211
+ # string" description: "Create a notification string with a timestamp."
212
+ # expression: "'New message received at ' + string(document.create_time)" The
213
+ # exact variables and functions that may be referenced within an expression are
214
+ # determined by the service that evaluates it. See the service documentation for
215
+ # additional information.
216
+ # Corresponds to the JSON property `condition`
217
+ # @return [Google::Apis::SecuritycenterV1::Expr]
218
+ attr_accessor :condition
219
+
220
+ # Specifies the identities requesting access for a Cloud Platform resource. `
221
+ # members` can have the following values: * `allUsers`: A special identifier
222
+ # that represents anyone who is on the internet; with or without a Google
223
+ # account. * `allAuthenticatedUsers`: A special identifier that represents
224
+ # anyone who is authenticated with a Google account or a service account. * `
225
+ # user:`emailid``: An email address that represents a specific Google account.
226
+ # For example, `alice@example.com` . * `serviceAccount:`emailid``: An email
227
+ # address that represents a service account. For example, `my-other-app@appspot.
228
+ # gserviceaccount.com`. * `group:`emailid``: An email address that represents a
229
+ # Google group. For example, `admins@example.com`. * `deleted:user:`emailid`?uid=
230
+ # `uniqueid``: An email address (plus unique identifier) representing a user
231
+ # that has been recently deleted. For example, `alice@example.com?uid=
232
+ # 123456789012345678901`. If the user is recovered, this value reverts to `user:`
233
+ # emailid`` and the recovered user retains the role in the binding. * `deleted:
234
+ # serviceAccount:`emailid`?uid=`uniqueid``: An email address (plus unique
235
+ # identifier) representing a service account that has been recently deleted. For
236
+ # example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`.
237
+ # If the service account is undeleted, this value reverts to `serviceAccount:`
238
+ # emailid`` and the undeleted service account retains the role in the binding. *
239
+ # `deleted:group:`emailid`?uid=`uniqueid``: An email address (plus unique
240
+ # identifier) representing a Google group that has been recently deleted. For
241
+ # example, `admins@example.com?uid=123456789012345678901`. If the group is
242
+ # recovered, this value reverts to `group:`emailid`` and the recovered group
243
+ # retains the role in the binding. * `domain:`domain``: The G Suite domain (
244
+ # primary) that represents all the users of that domain. For example, `google.
245
+ # com` or `example.com`.
246
+ # Corresponds to the JSON property `members`
247
+ # @return [Array<String>]
248
+ attr_accessor :members
249
+
250
+ # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`
251
+ # , or `roles/owner`.
252
+ # Corresponds to the JSON property `role`
253
+ # @return [String]
254
+ attr_accessor :role
255
+
256
+ def initialize(**args)
257
+ update!(**args)
258
+ end
259
+
260
+ # Update properties of this object
261
+ def update!(**args)
262
+ @condition = args[:condition] if args.key?(:condition)
263
+ @members = args[:members] if args.key?(:members)
264
+ @role = args[:role] if args.key?(:role)
265
+ end
266
+ end
267
+
268
+ # A generic empty message that you can re-use to avoid defining duplicated empty
269
+ # messages in your APIs. A typical example is to use it as the request or the
270
+ # response type of an API method. For instance: service Foo ` rpc Bar(google.
271
+ # protobuf.Empty) returns (google.protobuf.Empty); ` The JSON representation for
272
+ # `Empty` is empty JSON object ````.
273
+ class Empty
274
+ include Google::Apis::Core::Hashable
275
+
276
+ def initialize(**args)
277
+ update!(**args)
278
+ end
279
+
280
+ # Update properties of this object
281
+ def update!(**args)
282
+ end
283
+ end
284
+
285
+ # Represents a textual expression in the Common Expression Language (CEL) syntax.
286
+ # CEL is a C-like expression language. The syntax and semantics of CEL are
287
+ # documented at https://github.com/google/cel-spec. Example (Comparison): title:
288
+ # "Summary size limit" description: "Determines if a summary is less than 100
289
+ # chars" expression: "document.summary.size() < 100" Example (Equality): title: "
290
+ # Requestor is owner" description: "Determines if requestor is the document
291
+ # owner" expression: "document.owner == request.auth.claims.email" Example (
292
+ # Logic): title: "Public documents" description: "Determine whether the document
293
+ # should be publicly visible" expression: "document.type != 'private' &&
294
+ # document.type != 'internal'" Example (Data Manipulation): title: "Notification
295
+ # string" description: "Create a notification string with a timestamp."
296
+ # expression: "'New message received at ' + string(document.create_time)" The
297
+ # exact variables and functions that may be referenced within an expression are
298
+ # determined by the service that evaluates it. See the service documentation for
299
+ # additional information.
300
+ class Expr
301
+ include Google::Apis::Core::Hashable
302
+
303
+ # Optional. Description of the expression. This is a longer text which describes
304
+ # the expression, e.g. when hovered over it in a UI.
305
+ # Corresponds to the JSON property `description`
306
+ # @return [String]
307
+ attr_accessor :description
308
+
309
+ # Textual representation of an expression in Common Expression Language syntax.
310
+ # Corresponds to the JSON property `expression`
311
+ # @return [String]
312
+ attr_accessor :expression
313
+
314
+ # Optional. String indicating the location of the expression for error reporting,
315
+ # e.g. a file name and a position in the file.
316
+ # Corresponds to the JSON property `location`
317
+ # @return [String]
318
+ attr_accessor :location
319
+
320
+ # Optional. Title for the expression, i.e. a short string describing its purpose.
321
+ # This can be used e.g. in UIs which allow to enter the expression.
322
+ # Corresponds to the JSON property `title`
323
+ # @return [String]
324
+ attr_accessor :title
325
+
326
+ def initialize(**args)
327
+ update!(**args)
328
+ end
329
+
330
+ # Update properties of this object
331
+ def update!(**args)
332
+ @description = args[:description] if args.key?(:description)
333
+ @expression = args[:expression] if args.key?(:expression)
334
+ @location = args[:location] if args.key?(:location)
335
+ @title = args[:title] if args.key?(:title)
336
+ end
337
+ end
338
+
339
+ # Security Command Center finding. A finding is a record of assessment data like
340
+ # security, risk, health, or privacy, that is ingested into Security Command
341
+ # Center for presentation, notification, analysis, policy testing, and
342
+ # enforcement. For example, a cross-site scripting (XSS) vulnerability in an App
343
+ # Engine application is a finding.
344
+ class Finding
345
+ include Google::Apis::Core::Hashable
346
+
347
+ # The additional taxonomy group within findings from a given source. This field
348
+ # is immutable after creation time. Example: "XSS_FLASH_INJECTION"
349
+ # Corresponds to the JSON property `category`
350
+ # @return [String]
351
+ attr_accessor :category
352
+
353
+ # The time at which the finding was created in Security Command Center.
354
+ # Corresponds to the JSON property `createTime`
355
+ # @return [String]
356
+ attr_accessor :create_time
357
+
358
+ # The time at which the event took place, or when an update to the finding
359
+ # occurred. For example, if the finding represents an open firewall it would
360
+ # capture the time the detector believes the firewall became open. The accuracy
361
+ # is determined by the detector. If the finding were to be resolved afterward,
362
+ # this time would reflect when the finding was resolved.
363
+ # Corresponds to the JSON property `eventTime`
364
+ # @return [String]
365
+ attr_accessor :event_time
366
+
367
+ # The URI that, if available, points to a web page outside of Security Command
368
+ # Center where additional information about the finding can be found. This field
369
+ # is guaranteed to be either empty or a well formed URL.
370
+ # Corresponds to the JSON property `externalUri`
371
+ # @return [String]
372
+ attr_accessor :external_uri
373
+
374
+ # The relative resource name of this finding. See: https://cloud.google.com/apis/
375
+ # design/resource_names#relative_resource_name Example: "organizations/`
376
+ # organization_id`/sources/`source_id`/findings/`finding_id`"
377
+ # Corresponds to the JSON property `name`
378
+ # @return [String]
379
+ attr_accessor :name
380
+
381
+ # The relative resource name of the source the finding belongs to. See: https://
382
+ # cloud.google.com/apis/design/resource_names#relative_resource_name This field
383
+ # is immutable after creation time. For example: "organizations/`organization_id`
384
+ # /sources/`source_id`"
385
+ # Corresponds to the JSON property `parent`
386
+ # @return [String]
387
+ attr_accessor :parent
388
+
389
+ # For findings on Google Cloud resources, the full resource name of the Google
390
+ # Cloud resource this finding is for. See: https://cloud.google.com/apis/design/
391
+ # resource_names#full_resource_name When the finding is for a non-Google Cloud
392
+ # resource, the resourceName can be a customer or partner defined string. This
393
+ # field is immutable after creation time.
394
+ # Corresponds to the JSON property `resourceName`
395
+ # @return [String]
396
+ attr_accessor :resource_name
397
+
398
+ # User specified security marks that are attached to the parent Security Command
399
+ # Center resource. Security marks are scoped within a Security Command Center
400
+ # organization -- they can be modified and viewed by all users who have proper
401
+ # permissions on the organization.
402
+ # Corresponds to the JSON property `securityMarks`
403
+ # @return [Google::Apis::SecuritycenterV1::SecurityMarks]
404
+ attr_accessor :security_marks
405
+
406
+ # The severity of the finding. This field is managed by the source that writes
407
+ # the finding.
408
+ # Corresponds to the JSON property `severity`
409
+ # @return [String]
410
+ attr_accessor :severity
411
+
412
+ # Source specific properties. These properties are managed by the source that
413
+ # writes the finding. The key names in the source_properties map must be between
414
+ # 1 and 255 characters, and must start with a letter and contain alphanumeric
415
+ # characters or underscores only.
416
+ # Corresponds to the JSON property `sourceProperties`
417
+ # @return [Hash<String,Object>]
418
+ attr_accessor :source_properties
419
+
420
+ # The state of the finding.
421
+ # Corresponds to the JSON property `state`
422
+ # @return [String]
423
+ attr_accessor :state
424
+
425
+ def initialize(**args)
426
+ update!(**args)
427
+ end
428
+
429
+ # Update properties of this object
430
+ def update!(**args)
431
+ @category = args[:category] if args.key?(:category)
432
+ @create_time = args[:create_time] if args.key?(:create_time)
433
+ @event_time = args[:event_time] if args.key?(:event_time)
434
+ @external_uri = args[:external_uri] if args.key?(:external_uri)
435
+ @name = args[:name] if args.key?(:name)
436
+ @parent = args[:parent] if args.key?(:parent)
437
+ @resource_name = args[:resource_name] if args.key?(:resource_name)
438
+ @security_marks = args[:security_marks] if args.key?(:security_marks)
439
+ @severity = args[:severity] if args.key?(:severity)
440
+ @source_properties = args[:source_properties] if args.key?(:source_properties)
441
+ @state = args[:state] if args.key?(:state)
442
+ end
443
+ end
444
+
445
+ # Message that contains the resource name and display name of a folder resource.
446
+ class Folder
447
+ include Google::Apis::Core::Hashable
448
+
449
+ # Full resource name of this folder. See: https://cloud.google.com/apis/design/
450
+ # resource_names#full_resource_name
451
+ # Corresponds to the JSON property `resourceFolder`
452
+ # @return [String]
453
+ attr_accessor :resource_folder
454
+
455
+ # The user defined display name for this folder.
456
+ # Corresponds to the JSON property `resourceFolderDisplayName`
457
+ # @return [String]
458
+ attr_accessor :resource_folder_display_name
459
+
460
+ def initialize(**args)
461
+ update!(**args)
462
+ end
463
+
464
+ # Update properties of this object
465
+ def update!(**args)
466
+ @resource_folder = args[:resource_folder] if args.key?(:resource_folder)
467
+ @resource_folder_display_name = args[:resource_folder_display_name] if args.key?(:resource_folder_display_name)
468
+ end
469
+ end
470
+
471
+ # Request message for `GetIamPolicy` method.
472
+ class GetIamPolicyRequest
473
+ include Google::Apis::Core::Hashable
474
+
475
+ # Encapsulates settings provided to GetIamPolicy.
476
+ # Corresponds to the JSON property `options`
477
+ # @return [Google::Apis::SecuritycenterV1::GetPolicyOptions]
478
+ attr_accessor :options
479
+
480
+ def initialize(**args)
481
+ update!(**args)
482
+ end
483
+
484
+ # Update properties of this object
485
+ def update!(**args)
486
+ @options = args[:options] if args.key?(:options)
487
+ end
488
+ end
489
+
490
+ # Encapsulates settings provided to GetIamPolicy.
491
+ class GetPolicyOptions
492
+ include Google::Apis::Core::Hashable
493
+
494
+ # Optional. The policy format version to be returned. Valid values are 0, 1, and
495
+ # 3. Requests specifying an invalid value will be rejected. Requests for
496
+ # policies with any conditional bindings must specify version 3. Policies
497
+ # without any conditional bindings may specify any valid value or leave the
498
+ # field unset. To learn which resources support conditions in their IAM policies,
499
+ # see the [IAM documentation](https://cloud.google.com/iam/help/conditions/
500
+ # resource-policies).
501
+ # Corresponds to the JSON property `requestedPolicyVersion`
502
+ # @return [Fixnum]
503
+ attr_accessor :requested_policy_version
504
+
505
+ def initialize(**args)
506
+ update!(**args)
507
+ end
508
+
509
+ # Update properties of this object
510
+ def update!(**args)
511
+ @requested_policy_version = args[:requested_policy_version] if args.key?(:requested_policy_version)
512
+ end
513
+ end
514
+
515
+ # Cloud SCC's Notification
516
+ class GoogleCloudSecuritycenterV1NotificationMessage
517
+ include Google::Apis::Core::Hashable
518
+
519
+ # Security Command Center finding. A finding is a record of assessment data like
520
+ # security, risk, health, or privacy, that is ingested into Security Command
521
+ # Center for presentation, notification, analysis, policy testing, and
522
+ # enforcement. For example, a cross-site scripting (XSS) vulnerability in an App
523
+ # Engine application is a finding.
524
+ # Corresponds to the JSON property `finding`
525
+ # @return [Google::Apis::SecuritycenterV1::Finding]
526
+ attr_accessor :finding
527
+
528
+ # Name of the notification config that generated current notification.
529
+ # Corresponds to the JSON property `notificationConfigName`
530
+ # @return [String]
531
+ attr_accessor :notification_config_name
532
+
533
+ # Information related to the Google Cloud resource.
534
+ # Corresponds to the JSON property `resource`
535
+ # @return [Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV1Resource]
536
+ attr_accessor :resource
537
+
538
+ def initialize(**args)
539
+ update!(**args)
540
+ end
541
+
542
+ # Update properties of this object
543
+ def update!(**args)
544
+ @finding = args[:finding] if args.key?(:finding)
545
+ @notification_config_name = args[:notification_config_name] if args.key?(:notification_config_name)
546
+ @resource = args[:resource] if args.key?(:resource)
547
+ end
548
+ end
549
+
550
+ # Information related to the Google Cloud resource.
551
+ class GoogleCloudSecuritycenterV1Resource
552
+ include Google::Apis::Core::Hashable
553
+
554
+ # Output only. Contains a Folder message for each folder in the assets ancestry.
555
+ # The first folder is the deepest nested folder, and the last folder is the
556
+ # folder directly under the Organization.
557
+ # Corresponds to the JSON property `folders`
558
+ # @return [Array<Google::Apis::SecuritycenterV1::Folder>]
559
+ attr_accessor :folders
560
+
561
+ # The full resource name of the resource. See: https://cloud.google.com/apis/
562
+ # design/resource_names#full_resource_name
563
+ # Corresponds to the JSON property `name`
564
+ # @return [String]
565
+ attr_accessor :name
566
+
567
+ # The full resource name of resource's parent.
568
+ # Corresponds to the JSON property `parent`
569
+ # @return [String]
570
+ attr_accessor :parent
571
+
572
+ # The human readable name of resource's parent.
573
+ # Corresponds to the JSON property `parentDisplayName`
574
+ # @return [String]
575
+ attr_accessor :parent_display_name
576
+
577
+ # The full resource name of project that the resource belongs to.
578
+ # Corresponds to the JSON property `project`
579
+ # @return [String]
580
+ attr_accessor :project
581
+
582
+ # The human readable name of project that the resource belongs to.
583
+ # Corresponds to the JSON property `projectDisplayName`
584
+ # @return [String]
585
+ attr_accessor :project_display_name
586
+
587
+ def initialize(**args)
588
+ update!(**args)
589
+ end
590
+
591
+ # Update properties of this object
592
+ def update!(**args)
593
+ @folders = args[:folders] if args.key?(:folders)
594
+ @name = args[:name] if args.key?(:name)
595
+ @parent = args[:parent] if args.key?(:parent)
596
+ @parent_display_name = args[:parent_display_name] if args.key?(:parent_display_name)
597
+ @project = args[:project] if args.key?(:project)
598
+ @project_display_name = args[:project_display_name] if args.key?(:project_display_name)
599
+ end
600
+ end
601
+
602
+ # Response of asset discovery run
603
+ class GoogleCloudSecuritycenterV1RunAssetDiscoveryResponse
604
+ include Google::Apis::Core::Hashable
605
+
606
+ # The duration between asset discovery run start and end
607
+ # Corresponds to the JSON property `duration`
608
+ # @return [String]
609
+ attr_accessor :duration
610
+
611
+ # The state of an asset discovery run.
612
+ # Corresponds to the JSON property `state`
613
+ # @return [String]
614
+ attr_accessor :state
615
+
616
+ def initialize(**args)
617
+ update!(**args)
618
+ end
619
+
620
+ # Update properties of this object
621
+ def update!(**args)
622
+ @duration = args[:duration] if args.key?(:duration)
623
+ @state = args[:state] if args.key?(:state)
624
+ end
625
+ end
626
+
627
+ # Response of asset discovery run
628
+ class GoogleCloudSecuritycenterV1beta1RunAssetDiscoveryResponse
629
+ include Google::Apis::Core::Hashable
630
+
631
+ # The duration between asset discovery run start and end
632
+ # Corresponds to the JSON property `duration`
633
+ # @return [String]
634
+ attr_accessor :duration
635
+
636
+ # The state of an asset discovery run.
637
+ # Corresponds to the JSON property `state`
638
+ # @return [String]
639
+ attr_accessor :state
640
+
641
+ def initialize(**args)
642
+ update!(**args)
643
+ end
644
+
645
+ # Update properties of this object
646
+ def update!(**args)
647
+ @duration = args[:duration] if args.key?(:duration)
648
+ @state = args[:state] if args.key?(:state)
649
+ end
650
+ end
651
+
652
+ # Security Command Center finding. A finding is a record of assessment data (
653
+ # security, risk, health or privacy) ingested into Security Command Center for
654
+ # presentation, notification, analysis, policy testing, and enforcement. For
655
+ # example, an XSS vulnerability in an App Engine application is a finding.
656
+ class GoogleCloudSecuritycenterV1p1beta1Finding
657
+ include Google::Apis::Core::Hashable
658
+
659
+ # The additional taxonomy group within findings from a given source. This field
660
+ # is immutable after creation time. Example: "XSS_FLASH_INJECTION"
661
+ # Corresponds to the JSON property `category`
662
+ # @return [String]
663
+ attr_accessor :category
664
+
665
+ # The time at which the finding was created in Security Command Center.
666
+ # Corresponds to the JSON property `createTime`
667
+ # @return [String]
668
+ attr_accessor :create_time
669
+
670
+ # The time at which the event took place, or when an update to the finding
671
+ # occurred. For example, if the finding represents an open firewall it would
672
+ # capture the time the detector believes the firewall became open. The accuracy
673
+ # is determined by the detector. If the finding were to be resolved afterward,
674
+ # this time would reflect when the finding was resolved.
675
+ # Corresponds to the JSON property `eventTime`
676
+ # @return [String]
677
+ attr_accessor :event_time
678
+
679
+ # The URI that, if available, points to a web page outside of Security Command
680
+ # Center where additional information about the finding can be found. This field
681
+ # is guaranteed to be either empty or a well formed URL.
682
+ # Corresponds to the JSON property `externalUri`
683
+ # @return [String]
684
+ attr_accessor :external_uri
685
+
686
+ # The relative resource name of this finding. See: https://cloud.google.com/apis/
687
+ # design/resource_names#relative_resource_name Example: "organizations/`
688
+ # organization_id`/sources/`source_id`/findings/`finding_id`"
689
+ # Corresponds to the JSON property `name`
690
+ # @return [String]
691
+ attr_accessor :name
692
+
693
+ # The relative resource name of the source the finding belongs to. See: https://
694
+ # cloud.google.com/apis/design/resource_names#relative_resource_name This field
695
+ # is immutable after creation time. For example: "organizations/`organization_id`
696
+ # /sources/`source_id`"
697
+ # Corresponds to the JSON property `parent`
698
+ # @return [String]
699
+ attr_accessor :parent
700
+
701
+ # For findings on Google Cloud resources, the full resource name of the Google
702
+ # Cloud resource this finding is for. See: https://cloud.google.com/apis/design/
703
+ # resource_names#full_resource_name When the finding is for a non-Google Cloud
704
+ # resource, the resourceName can be a customer or partner defined string. This
705
+ # field is immutable after creation time.
706
+ # Corresponds to the JSON property `resourceName`
707
+ # @return [String]
708
+ attr_accessor :resource_name
709
+
710
+ # User specified security marks that are attached to the parent Security Command
711
+ # Center resource. Security marks are scoped within a Security Command Center
712
+ # organization -- they can be modified and viewed by all users who have proper
713
+ # permissions on the organization.
714
+ # Corresponds to the JSON property `securityMarks`
715
+ # @return [Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV1p1beta1SecurityMarks]
716
+ attr_accessor :security_marks
717
+
718
+ # The severity of the finding. This field is managed by the source that writes
719
+ # the finding.
720
+ # Corresponds to the JSON property `severity`
721
+ # @return [String]
722
+ attr_accessor :severity
723
+
724
+ # Source specific properties. These properties are managed by the source that
725
+ # writes the finding. The key names in the source_properties map must be between
726
+ # 1 and 255 characters, and must start with a letter and contain alphanumeric
727
+ # characters or underscores only.
728
+ # Corresponds to the JSON property `sourceProperties`
729
+ # @return [Hash<String,Object>]
730
+ attr_accessor :source_properties
731
+
732
+ # The state of the finding.
733
+ # Corresponds to the JSON property `state`
734
+ # @return [String]
735
+ attr_accessor :state
736
+
737
+ def initialize(**args)
738
+ update!(**args)
739
+ end
740
+
741
+ # Update properties of this object
742
+ def update!(**args)
743
+ @category = args[:category] if args.key?(:category)
744
+ @create_time = args[:create_time] if args.key?(:create_time)
745
+ @event_time = args[:event_time] if args.key?(:event_time)
746
+ @external_uri = args[:external_uri] if args.key?(:external_uri)
747
+ @name = args[:name] if args.key?(:name)
748
+ @parent = args[:parent] if args.key?(:parent)
749
+ @resource_name = args[:resource_name] if args.key?(:resource_name)
750
+ @security_marks = args[:security_marks] if args.key?(:security_marks)
751
+ @severity = args[:severity] if args.key?(:severity)
752
+ @source_properties = args[:source_properties] if args.key?(:source_properties)
753
+ @state = args[:state] if args.key?(:state)
754
+ end
755
+ end
756
+
757
+ # Message that contains the resource name and display name of a folder resource.
758
+ class GoogleCloudSecuritycenterV1p1beta1Folder
759
+ include Google::Apis::Core::Hashable
760
+
761
+ # Full resource name of this folder. See: https://cloud.google.com/apis/design/
762
+ # resource_names#full_resource_name
763
+ # Corresponds to the JSON property `resourceFolder`
764
+ # @return [String]
765
+ attr_accessor :resource_folder
766
+
767
+ # The user defined display name for this folder.
768
+ # Corresponds to the JSON property `resourceFolderDisplayName`
769
+ # @return [String]
770
+ attr_accessor :resource_folder_display_name
771
+
772
+ def initialize(**args)
773
+ update!(**args)
774
+ end
775
+
776
+ # Update properties of this object
777
+ def update!(**args)
778
+ @resource_folder = args[:resource_folder] if args.key?(:resource_folder)
779
+ @resource_folder_display_name = args[:resource_folder_display_name] if args.key?(:resource_folder_display_name)
780
+ end
781
+ end
782
+
783
+ # Security Command Center's Notification
784
+ class GoogleCloudSecuritycenterV1p1beta1NotificationMessage
785
+ include Google::Apis::Core::Hashable
786
+
787
+ # Security Command Center finding. A finding is a record of assessment data (
788
+ # security, risk, health or privacy) ingested into Security Command Center for
789
+ # presentation, notification, analysis, policy testing, and enforcement. For
790
+ # example, an XSS vulnerability in an App Engine application is a finding.
791
+ # Corresponds to the JSON property `finding`
792
+ # @return [Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV1p1beta1Finding]
793
+ attr_accessor :finding
794
+
795
+ # Name of the notification config that generated current notification.
796
+ # Corresponds to the JSON property `notificationConfigName`
797
+ # @return [String]
798
+ attr_accessor :notification_config_name
799
+
800
+ # Information related to the Google Cloud resource.
801
+ # Corresponds to the JSON property `resource`
802
+ # @return [Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV1p1beta1Resource]
803
+ attr_accessor :resource
804
+
805
+ def initialize(**args)
806
+ update!(**args)
807
+ end
808
+
809
+ # Update properties of this object
810
+ def update!(**args)
811
+ @finding = args[:finding] if args.key?(:finding)
812
+ @notification_config_name = args[:notification_config_name] if args.key?(:notification_config_name)
813
+ @resource = args[:resource] if args.key?(:resource)
814
+ end
815
+ end
816
+
817
+ # Information related to the Google Cloud resource.
818
+ class GoogleCloudSecuritycenterV1p1beta1Resource
819
+ include Google::Apis::Core::Hashable
820
+
821
+ # Output only. Contains a Folder message for each folder in the assets ancestry.
822
+ # The first folder is the deepest nested folder, and the last folder is the
823
+ # folder directly under the Organization.
824
+ # Corresponds to the JSON property `folders`
825
+ # @return [Array<Google::Apis::SecuritycenterV1::GoogleCloudSecuritycenterV1p1beta1Folder>]
826
+ attr_accessor :folders
827
+
828
+ # The full resource name of the resource. See: https://cloud.google.com/apis/
829
+ # design/resource_names#full_resource_name
830
+ # Corresponds to the JSON property `name`
831
+ # @return [String]
832
+ attr_accessor :name
833
+
834
+ # The full resource name of resource's parent.
835
+ # Corresponds to the JSON property `parent`
836
+ # @return [String]
837
+ attr_accessor :parent
838
+
839
+ # The human readable name of resource's parent.
840
+ # Corresponds to the JSON property `parentDisplayName`
841
+ # @return [String]
842
+ attr_accessor :parent_display_name
843
+
844
+ # The full resource name of project that the resource belongs to.
845
+ # Corresponds to the JSON property `project`
846
+ # @return [String]
847
+ attr_accessor :project
848
+
849
+ # The human readable name of project that the resource belongs to.
850
+ # Corresponds to the JSON property `projectDisplayName`
851
+ # @return [String]
852
+ attr_accessor :project_display_name
853
+
854
+ def initialize(**args)
855
+ update!(**args)
856
+ end
857
+
858
+ # Update properties of this object
859
+ def update!(**args)
860
+ @folders = args[:folders] if args.key?(:folders)
861
+ @name = args[:name] if args.key?(:name)
862
+ @parent = args[:parent] if args.key?(:parent)
863
+ @parent_display_name = args[:parent_display_name] if args.key?(:parent_display_name)
864
+ @project = args[:project] if args.key?(:project)
865
+ @project_display_name = args[:project_display_name] if args.key?(:project_display_name)
866
+ end
867
+ end
868
+
869
+ # Response of asset discovery run
870
+ class GoogleCloudSecuritycenterV1p1beta1RunAssetDiscoveryResponse
871
+ include Google::Apis::Core::Hashable
872
+
873
+ # The duration between asset discovery run start and end
874
+ # Corresponds to the JSON property `duration`
875
+ # @return [String]
876
+ attr_accessor :duration
877
+
878
+ # The state of an asset discovery run.
879
+ # Corresponds to the JSON property `state`
880
+ # @return [String]
881
+ attr_accessor :state
882
+
883
+ def initialize(**args)
884
+ update!(**args)
885
+ end
886
+
887
+ # Update properties of this object
888
+ def update!(**args)
889
+ @duration = args[:duration] if args.key?(:duration)
890
+ @state = args[:state] if args.key?(:state)
891
+ end
892
+ end
893
+
894
+ # User specified security marks that are attached to the parent Security Command
895
+ # Center resource. Security marks are scoped within a Security Command Center
896
+ # organization -- they can be modified and viewed by all users who have proper
897
+ # permissions on the organization.
898
+ class GoogleCloudSecuritycenterV1p1beta1SecurityMarks
899
+ include Google::Apis::Core::Hashable
900
+
901
+ # Mutable user specified security marks belonging to the parent resource.
902
+ # Constraints are as follows: * Keys and values are treated as case insensitive *
903
+ # Keys must be between 1 - 256 characters (inclusive) * Keys must be letters,
904
+ # numbers, underscores, or dashes * Values have leading and trailing whitespace
905
+ # trimmed, remaining characters must be between 1 - 4096 characters (inclusive)
906
+ # Corresponds to the JSON property `marks`
907
+ # @return [Hash<String,String>]
908
+ attr_accessor :marks
909
+
910
+ # The relative resource name of the SecurityMarks. See: https://cloud.google.com/
911
+ # apis/design/resource_names#relative_resource_name Examples: "organizations/`
912
+ # organization_id`/assets/`asset_id`/securityMarks" "organizations/`
913
+ # organization_id`/sources/`source_id`/findings/`finding_id`/securityMarks".
914
+ # Corresponds to the JSON property `name`
915
+ # @return [String]
916
+ attr_accessor :name
917
+
918
+ def initialize(**args)
919
+ update!(**args)
920
+ end
921
+
922
+ # Update properties of this object
923
+ def update!(**args)
924
+ @marks = args[:marks] if args.key?(:marks)
925
+ @name = args[:name] if args.key?(:name)
926
+ end
927
+ end
928
+
929
+ # Request message for grouping by assets.
930
+ class GroupAssetsRequest
931
+ include Google::Apis::Core::Hashable
932
+
933
+ # When compare_duration is set, the GroupResult's "state_change" property is
934
+ # updated to indicate whether the asset was added, removed, or remained present
935
+ # during the compare_duration period of time that precedes the read_time. This
936
+ # is the time between (read_time - compare_duration) and read_time. The state
937
+ # change value is derived based on the presence of the asset at the two points
938
+ # in time. Intermediate state changes between the two times don't affect the
939
+ # result. For example, the results aren't affected if the asset is removed and
940
+ # re-created again. Possible "state_change" values when compare_duration is
941
+ # specified: * "ADDED": indicates that the asset was not present at the start of
942
+ # compare_duration, but present at reference_time. * "REMOVED": indicates that
943
+ # the asset was present at the start of compare_duration, but not present at
944
+ # reference_time. * "ACTIVE": indicates that the asset was present at both the
945
+ # start and the end of the time period defined by compare_duration and
946
+ # reference_time. If compare_duration is not specified, then the only possible
947
+ # state_change is "UNUSED", which will be the state_change set for all assets
948
+ # present at read_time. If this field is set then `state_change` must be a
949
+ # specified field in `group_by`.
950
+ # Corresponds to the JSON property `compareDuration`
951
+ # @return [String]
952
+ attr_accessor :compare_duration
953
+
954
+ # Expression that defines the filter to apply across assets. The expression is a
955
+ # list of zero or more restrictions combined via logical operators `AND` and `OR`
956
+ # . Parentheses are supported, and `OR` has higher precedence than `AND`.
957
+ # Restrictions have the form ` ` and may have a `-` character in front of them
958
+ # to indicate negation. The fields map to those defined in the Asset resource.
959
+ # Examples include: * name * security_center_properties.resource_name *
960
+ # resource_properties.a_property * security_marks.marks.marka The supported
961
+ # operators are: * `=` for all value types. * `>`, `<`, `>=`, `<=` for integer
962
+ # values. * `:`, meaning substring matching, for strings. The supported value
963
+ # types are: * string literals in quotes. * integer literals without quotes. *
964
+ # boolean literals `true` and `false` without quotes. The following field and
965
+ # operator combinations are supported: * name: `=` * update_time: `=`, `>`, `<`,
966
+ # `>=`, `<=` Usage: This should be milliseconds since epoch or an RFC3339 string.
967
+ # Examples: `update_time = "2019-06-10T16:07:18-07:00"` `update_time =
968
+ # 1560208038000` * create_time: `=`, `>`, `<`, `>=`, `<=` Usage: This should be
969
+ # milliseconds since epoch or an RFC3339 string. Examples: `create_time = "2019-
970
+ # 06-10T16:07:18-07:00"` `create_time = 1560208038000` * iam_policy.policy_blob:
971
+ # `=`, `:` * resource_properties: `=`, `:`, `>`, `<`, `>=`, `<=` *
972
+ # security_marks.marks: `=`, `:` * security_center_properties.resource_name: `=`,
973
+ # `:` * security_center_properties.resource_display_name: `=`, `:` *
974
+ # security_center_properties.resource_type: `=`, `:` *
975
+ # security_center_properties.resource_parent: `=`, `:` *
976
+ # security_center_properties.resource_parent_display_name: `=`, `:` *
977
+ # security_center_properties.resource_project: `=`, `:` *
978
+ # security_center_properties.resource_project_display_name: `=`, `:` *
979
+ # security_center_properties.resource_owners: `=`, `:` For example, `
980
+ # resource_properties.size = 100` is a valid filter string. Use a partial match
981
+ # on the empty string to filter based on a property existing: `
982
+ # resource_properties.my_property : ""` Use a negated partial match on the empty
983
+ # string to filter based on a property not existing: `-resource_properties.
984
+ # my_property : ""`
985
+ # Corresponds to the JSON property `filter`
986
+ # @return [String]
987
+ attr_accessor :filter
988
+
989
+ # Required. Expression that defines what assets fields to use for grouping. The
990
+ # string value should follow SQL syntax: comma separated list of fields. For
991
+ # example: "security_center_properties.resource_project,
992
+ # security_center_properties.project". The following fields are supported when
993
+ # compare_duration is not set: * security_center_properties.resource_project *
994
+ # security_center_properties.resource_project_display_name *
995
+ # security_center_properties.resource_type * security_center_properties.
996
+ # resource_parent * security_center_properties.resource_parent_display_name The
997
+ # following fields are supported when compare_duration is set: *
998
+ # security_center_properties.resource_type * security_center_properties.
999
+ # resource_project_display_name * security_center_properties.
1000
+ # resource_parent_display_name
1001
+ # Corresponds to the JSON property `groupBy`
1002
+ # @return [String]
1003
+ attr_accessor :group_by
1004
+
1005
+ # The maximum number of results to return in a single response. Default is 10,
1006
+ # minimum is 1, maximum is 1000.
1007
+ # Corresponds to the JSON property `pageSize`
1008
+ # @return [Fixnum]
1009
+ attr_accessor :page_size
1010
+
1011
+ # The value returned by the last `GroupAssetsResponse`; indicates that this is a
1012
+ # continuation of a prior `GroupAssets` call, and that the system should return
1013
+ # the next page of data.
1014
+ # Corresponds to the JSON property `pageToken`
1015
+ # @return [String]
1016
+ attr_accessor :page_token
1017
+
1018
+ # Time used as a reference point when filtering assets. The filter is limited to
1019
+ # assets existing at the supplied time and their values are those at that
1020
+ # specific time. Absence of this field will default to the API's version of NOW.
1021
+ # Corresponds to the JSON property `readTime`
1022
+ # @return [String]
1023
+ attr_accessor :read_time
1024
+
1025
+ def initialize(**args)
1026
+ update!(**args)
1027
+ end
1028
+
1029
+ # Update properties of this object
1030
+ def update!(**args)
1031
+ @compare_duration = args[:compare_duration] if args.key?(:compare_duration)
1032
+ @filter = args[:filter] if args.key?(:filter)
1033
+ @group_by = args[:group_by] if args.key?(:group_by)
1034
+ @page_size = args[:page_size] if args.key?(:page_size)
1035
+ @page_token = args[:page_token] if args.key?(:page_token)
1036
+ @read_time = args[:read_time] if args.key?(:read_time)
1037
+ end
1038
+ end
1039
+
1040
+ # Response message for grouping by assets.
1041
+ class GroupAssetsResponse
1042
+ include Google::Apis::Core::Hashable
1043
+
1044
+ # Group results. There exists an element for each existing unique combination of
1045
+ # property/values. The element contains a count for the number of times those
1046
+ # specific property/values appear.
1047
+ # Corresponds to the JSON property `groupByResults`
1048
+ # @return [Array<Google::Apis::SecuritycenterV1::GroupResult>]
1049
+ attr_accessor :group_by_results
1050
+
1051
+ # Token to retrieve the next page of results, or empty if there are no more
1052
+ # results.
1053
+ # Corresponds to the JSON property `nextPageToken`
1054
+ # @return [String]
1055
+ attr_accessor :next_page_token
1056
+
1057
+ # Time used for executing the groupBy request.
1058
+ # Corresponds to the JSON property `readTime`
1059
+ # @return [String]
1060
+ attr_accessor :read_time
1061
+
1062
+ # The total number of results matching the query.
1063
+ # Corresponds to the JSON property `totalSize`
1064
+ # @return [Fixnum]
1065
+ attr_accessor :total_size
1066
+
1067
+ def initialize(**args)
1068
+ update!(**args)
1069
+ end
1070
+
1071
+ # Update properties of this object
1072
+ def update!(**args)
1073
+ @group_by_results = args[:group_by_results] if args.key?(:group_by_results)
1074
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1075
+ @read_time = args[:read_time] if args.key?(:read_time)
1076
+ @total_size = args[:total_size] if args.key?(:total_size)
1077
+ end
1078
+ end
1079
+
1080
+ # Request message for grouping by findings.
1081
+ class GroupFindingsRequest
1082
+ include Google::Apis::Core::Hashable
1083
+
1084
+ # When compare_duration is set, the GroupResult's "state_change" attribute is
1085
+ # updated to indicate whether the finding had its state changed, the finding's
1086
+ # state remained unchanged, or if the finding was added during the
1087
+ # compare_duration period of time that precedes the read_time. This is the time
1088
+ # between (read_time - compare_duration) and read_time. The state_change value
1089
+ # is derived based on the presence and state of the finding at the two points in
1090
+ # time. Intermediate state changes between the two times don't affect the result.
1091
+ # For example, the results aren't affected if the finding is made inactive and
1092
+ # then active again. Possible "state_change" values when compare_duration is
1093
+ # specified: * "CHANGED": indicates that the finding was present and matched the
1094
+ # given filter at the start of compare_duration, but changed its state at
1095
+ # read_time. * "UNCHANGED": indicates that the finding was present and matched
1096
+ # the given filter at the start of compare_duration and did not change state at
1097
+ # read_time. * "ADDED": indicates that the finding did not match the given
1098
+ # filter or was not present at the start of compare_duration, but was present at
1099
+ # read_time. * "REMOVED": indicates that the finding was present and matched the
1100
+ # filter at the start of compare_duration, but did not match the filter at
1101
+ # read_time. If compare_duration is not specified, then the only possible
1102
+ # state_change is "UNUSED", which will be the state_change set for all findings
1103
+ # present at read_time. If this field is set then `state_change` must be a
1104
+ # specified field in `group_by`.
1105
+ # Corresponds to the JSON property `compareDuration`
1106
+ # @return [String]
1107
+ attr_accessor :compare_duration
1108
+
1109
+ # Expression that defines the filter to apply across findings. The expression is
1110
+ # a list of one or more restrictions combined via logical operators `AND` and `
1111
+ # OR`. Parentheses are supported, and `OR` has higher precedence than `AND`.
1112
+ # Restrictions have the form ` ` and may have a `-` character in front of them
1113
+ # to indicate negation. Examples include: * name * source_properties.a_property *
1114
+ # security_marks.marks.marka The supported operators are: * `=` for all value
1115
+ # types. * `>`, `<`, `>=`, `<=` for integer values. * `:`, meaning substring
1116
+ # matching, for strings. The supported value types are: * string literals in
1117
+ # quotes. * integer literals without quotes. * boolean literals `true` and `
1118
+ # false` without quotes. The following field and operator combinations are
1119
+ # supported: * name: `=` * parent: `=`, `:` * resource_name: `=`, `:` * state: `=
1120
+ # `, `:` * category: `=`, `:` * external_uri: `=`, `:` * event_time: `=`, `>`, `<
1121
+ # `, `>=`, `<=` * severity: `=`, `:` Usage: This should be milliseconds since
1122
+ # epoch or an RFC3339 string. Examples: `event_time = "2019-06-10T16:07:18-07:00"
1123
+ # ` `event_time = 1560208038000` * security_marks.marks: `=`, `:` *
1124
+ # source_properties: `=`, `:`, `>`, `<`, `>=`, `<=` For example, `
1125
+ # source_properties.size = 100` is a valid filter string. Use a partial match on
1126
+ # the empty string to filter based on a property existing: `source_properties.
1127
+ # my_property : ""` Use a negated partial match on the empty string to filter
1128
+ # based on a property not existing: `-source_properties.my_property : ""`
1129
+ # Corresponds to the JSON property `filter`
1130
+ # @return [String]
1131
+ attr_accessor :filter
1132
+
1133
+ # Required. Expression that defines what assets fields to use for grouping (
1134
+ # including `state_change`). The string value should follow SQL syntax: comma
1135
+ # separated list of fields. For example: "parent,resource_name". The following
1136
+ # fields are supported: * resource_name * category * state * parent * severity
1137
+ # The following fields are supported when compare_duration is set: *
1138
+ # state_change
1139
+ # Corresponds to the JSON property `groupBy`
1140
+ # @return [String]
1141
+ attr_accessor :group_by
1142
+
1143
+ # The maximum number of results to return in a single response. Default is 10,
1144
+ # minimum is 1, maximum is 1000.
1145
+ # Corresponds to the JSON property `pageSize`
1146
+ # @return [Fixnum]
1147
+ attr_accessor :page_size
1148
+
1149
+ # The value returned by the last `GroupFindingsResponse`; indicates that this is
1150
+ # a continuation of a prior `GroupFindings` call, and that the system should
1151
+ # return the next page of data.
1152
+ # Corresponds to the JSON property `pageToken`
1153
+ # @return [String]
1154
+ attr_accessor :page_token
1155
+
1156
+ # Time used as a reference point when filtering findings. The filter is limited
1157
+ # to findings existing at the supplied time and their values are those at that
1158
+ # specific time. Absence of this field will default to the API's version of NOW.
1159
+ # Corresponds to the JSON property `readTime`
1160
+ # @return [String]
1161
+ attr_accessor :read_time
1162
+
1163
+ def initialize(**args)
1164
+ update!(**args)
1165
+ end
1166
+
1167
+ # Update properties of this object
1168
+ def update!(**args)
1169
+ @compare_duration = args[:compare_duration] if args.key?(:compare_duration)
1170
+ @filter = args[:filter] if args.key?(:filter)
1171
+ @group_by = args[:group_by] if args.key?(:group_by)
1172
+ @page_size = args[:page_size] if args.key?(:page_size)
1173
+ @page_token = args[:page_token] if args.key?(:page_token)
1174
+ @read_time = args[:read_time] if args.key?(:read_time)
1175
+ end
1176
+ end
1177
+
1178
+ # Response message for group by findings.
1179
+ class GroupFindingsResponse
1180
+ include Google::Apis::Core::Hashable
1181
+
1182
+ # Group results. There exists an element for each existing unique combination of
1183
+ # property/values. The element contains a count for the number of times those
1184
+ # specific property/values appear.
1185
+ # Corresponds to the JSON property `groupByResults`
1186
+ # @return [Array<Google::Apis::SecuritycenterV1::GroupResult>]
1187
+ attr_accessor :group_by_results
1188
+
1189
+ # Token to retrieve the next page of results, or empty if there are no more
1190
+ # results.
1191
+ # Corresponds to the JSON property `nextPageToken`
1192
+ # @return [String]
1193
+ attr_accessor :next_page_token
1194
+
1195
+ # Time used for executing the groupBy request.
1196
+ # Corresponds to the JSON property `readTime`
1197
+ # @return [String]
1198
+ attr_accessor :read_time
1199
+
1200
+ # The total number of results matching the query.
1201
+ # Corresponds to the JSON property `totalSize`
1202
+ # @return [Fixnum]
1203
+ attr_accessor :total_size
1204
+
1205
+ def initialize(**args)
1206
+ update!(**args)
1207
+ end
1208
+
1209
+ # Update properties of this object
1210
+ def update!(**args)
1211
+ @group_by_results = args[:group_by_results] if args.key?(:group_by_results)
1212
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1213
+ @read_time = args[:read_time] if args.key?(:read_time)
1214
+ @total_size = args[:total_size] if args.key?(:total_size)
1215
+ end
1216
+ end
1217
+
1218
+ # Result containing the properties and count of a groupBy request.
1219
+ class GroupResult
1220
+ include Google::Apis::Core::Hashable
1221
+
1222
+ # Total count of resources for the given properties.
1223
+ # Corresponds to the JSON property `count`
1224
+ # @return [Fixnum]
1225
+ attr_accessor :count
1226
+
1227
+ # Properties matching the groupBy fields in the request.
1228
+ # Corresponds to the JSON property `properties`
1229
+ # @return [Hash<String,Object>]
1230
+ attr_accessor :properties
1231
+
1232
+ def initialize(**args)
1233
+ update!(**args)
1234
+ end
1235
+
1236
+ # Update properties of this object
1237
+ def update!(**args)
1238
+ @count = args[:count] if args.key?(:count)
1239
+ @properties = args[:properties] if args.key?(:properties)
1240
+ end
1241
+ end
1242
+
1243
+ # Cloud IAM Policy information associated with the Google Cloud resource
1244
+ # described by the Security Command Center asset. This information is managed
1245
+ # and defined by the Google Cloud resource and cannot be modified by the user.
1246
+ class IamPolicy
1247
+ include Google::Apis::Core::Hashable
1248
+
1249
+ # The JSON representation of the Policy associated with the asset. See https://
1250
+ # cloud.google.com/iam/reference/rest/v1/Policy for format details.
1251
+ # Corresponds to the JSON property `policyBlob`
1252
+ # @return [String]
1253
+ attr_accessor :policy_blob
1254
+
1255
+ def initialize(**args)
1256
+ update!(**args)
1257
+ end
1258
+
1259
+ # Update properties of this object
1260
+ def update!(**args)
1261
+ @policy_blob = args[:policy_blob] if args.key?(:policy_blob)
1262
+ end
1263
+ end
1264
+
1265
+ # Response message for listing assets.
1266
+ class ListAssetsResponse
1267
+ include Google::Apis::Core::Hashable
1268
+
1269
+ # Assets matching the list request.
1270
+ # Corresponds to the JSON property `listAssetsResults`
1271
+ # @return [Array<Google::Apis::SecuritycenterV1::ListAssetsResult>]
1272
+ attr_accessor :list_assets_results
1273
+
1274
+ # Token to retrieve the next page of results, or empty if there are no more
1275
+ # results.
1276
+ # Corresponds to the JSON property `nextPageToken`
1277
+ # @return [String]
1278
+ attr_accessor :next_page_token
1279
+
1280
+ # Time used for executing the list request.
1281
+ # Corresponds to the JSON property `readTime`
1282
+ # @return [String]
1283
+ attr_accessor :read_time
1284
+
1285
+ # The total number of assets matching the query.
1286
+ # Corresponds to the JSON property `totalSize`
1287
+ # @return [Fixnum]
1288
+ attr_accessor :total_size
1289
+
1290
+ def initialize(**args)
1291
+ update!(**args)
1292
+ end
1293
+
1294
+ # Update properties of this object
1295
+ def update!(**args)
1296
+ @list_assets_results = args[:list_assets_results] if args.key?(:list_assets_results)
1297
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1298
+ @read_time = args[:read_time] if args.key?(:read_time)
1299
+ @total_size = args[:total_size] if args.key?(:total_size)
1300
+ end
1301
+ end
1302
+
1303
+ # Result containing the Asset and its State.
1304
+ class ListAssetsResult
1305
+ include Google::Apis::Core::Hashable
1306
+
1307
+ # Security Command Center representation of a Google Cloud resource. The Asset
1308
+ # is a Security Command Center resource that captures information about a single
1309
+ # Google Cloud resource. All modifications to an Asset are only within the
1310
+ # context of Security Command Center and don't affect the referenced Google
1311
+ # Cloud resource.
1312
+ # Corresponds to the JSON property `asset`
1313
+ # @return [Google::Apis::SecuritycenterV1::Asset]
1314
+ attr_accessor :asset
1315
+
1316
+ # State change of the asset between the points in time.
1317
+ # Corresponds to the JSON property `stateChange`
1318
+ # @return [String]
1319
+ attr_accessor :state_change
1320
+
1321
+ def initialize(**args)
1322
+ update!(**args)
1323
+ end
1324
+
1325
+ # Update properties of this object
1326
+ def update!(**args)
1327
+ @asset = args[:asset] if args.key?(:asset)
1328
+ @state_change = args[:state_change] if args.key?(:state_change)
1329
+ end
1330
+ end
1331
+
1332
+ # Response message for listing findings.
1333
+ class ListFindingsResponse
1334
+ include Google::Apis::Core::Hashable
1335
+
1336
+ # Findings matching the list request.
1337
+ # Corresponds to the JSON property `listFindingsResults`
1338
+ # @return [Array<Google::Apis::SecuritycenterV1::ListFindingsResult>]
1339
+ attr_accessor :list_findings_results
1340
+
1341
+ # Token to retrieve the next page of results, or empty if there are no more
1342
+ # results.
1343
+ # Corresponds to the JSON property `nextPageToken`
1344
+ # @return [String]
1345
+ attr_accessor :next_page_token
1346
+
1347
+ # Time used for executing the list request.
1348
+ # Corresponds to the JSON property `readTime`
1349
+ # @return [String]
1350
+ attr_accessor :read_time
1351
+
1352
+ # The total number of findings matching the query.
1353
+ # Corresponds to the JSON property `totalSize`
1354
+ # @return [Fixnum]
1355
+ attr_accessor :total_size
1356
+
1357
+ def initialize(**args)
1358
+ update!(**args)
1359
+ end
1360
+
1361
+ # Update properties of this object
1362
+ def update!(**args)
1363
+ @list_findings_results = args[:list_findings_results] if args.key?(:list_findings_results)
1364
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1365
+ @read_time = args[:read_time] if args.key?(:read_time)
1366
+ @total_size = args[:total_size] if args.key?(:total_size)
1367
+ end
1368
+ end
1369
+
1370
+ # Result containing the Finding and its StateChange.
1371
+ class ListFindingsResult
1372
+ include Google::Apis::Core::Hashable
1373
+
1374
+ # Security Command Center finding. A finding is a record of assessment data like
1375
+ # security, risk, health, or privacy, that is ingested into Security Command
1376
+ # Center for presentation, notification, analysis, policy testing, and
1377
+ # enforcement. For example, a cross-site scripting (XSS) vulnerability in an App
1378
+ # Engine application is a finding.
1379
+ # Corresponds to the JSON property `finding`
1380
+ # @return [Google::Apis::SecuritycenterV1::Finding]
1381
+ attr_accessor :finding
1382
+
1383
+ # Information related to the Google Cloud resource that is associated with this
1384
+ # finding. LINT.IfChange
1385
+ # Corresponds to the JSON property `resource`
1386
+ # @return [Google::Apis::SecuritycenterV1::Resource]
1387
+ attr_accessor :resource
1388
+
1389
+ # State change of the finding between the points in time.
1390
+ # Corresponds to the JSON property `stateChange`
1391
+ # @return [String]
1392
+ attr_accessor :state_change
1393
+
1394
+ def initialize(**args)
1395
+ update!(**args)
1396
+ end
1397
+
1398
+ # Update properties of this object
1399
+ def update!(**args)
1400
+ @finding = args[:finding] if args.key?(:finding)
1401
+ @resource = args[:resource] if args.key?(:resource)
1402
+ @state_change = args[:state_change] if args.key?(:state_change)
1403
+ end
1404
+ end
1405
+
1406
+ # Response message for listing notification configs.
1407
+ class ListNotificationConfigsResponse
1408
+ include Google::Apis::Core::Hashable
1409
+
1410
+ # Token to retrieve the next page of results, or empty if there are no more
1411
+ # results.
1412
+ # Corresponds to the JSON property `nextPageToken`
1413
+ # @return [String]
1414
+ attr_accessor :next_page_token
1415
+
1416
+ # Notification configs belonging to the requested parent.
1417
+ # Corresponds to the JSON property `notificationConfigs`
1418
+ # @return [Array<Google::Apis::SecuritycenterV1::NotificationConfig>]
1419
+ attr_accessor :notification_configs
1420
+
1421
+ def initialize(**args)
1422
+ update!(**args)
1423
+ end
1424
+
1425
+ # Update properties of this object
1426
+ def update!(**args)
1427
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1428
+ @notification_configs = args[:notification_configs] if args.key?(:notification_configs)
1429
+ end
1430
+ end
1431
+
1432
+ # The response message for Operations.ListOperations.
1433
+ class ListOperationsResponse
1434
+ include Google::Apis::Core::Hashable
1435
+
1436
+ # The standard List next-page token.
1437
+ # Corresponds to the JSON property `nextPageToken`
1438
+ # @return [String]
1439
+ attr_accessor :next_page_token
1440
+
1441
+ # A list of operations that matches the specified filter in the request.
1442
+ # Corresponds to the JSON property `operations`
1443
+ # @return [Array<Google::Apis::SecuritycenterV1::Operation>]
1444
+ attr_accessor :operations
1445
+
1446
+ def initialize(**args)
1447
+ update!(**args)
1448
+ end
1449
+
1450
+ # Update properties of this object
1451
+ def update!(**args)
1452
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1453
+ @operations = args[:operations] if args.key?(:operations)
1454
+ end
1455
+ end
1456
+
1457
+ # Response message for listing sources.
1458
+ class ListSourcesResponse
1459
+ include Google::Apis::Core::Hashable
1460
+
1461
+ # Token to retrieve the next page of results, or empty if there are no more
1462
+ # results.
1463
+ # Corresponds to the JSON property `nextPageToken`
1464
+ # @return [String]
1465
+ attr_accessor :next_page_token
1466
+
1467
+ # Sources belonging to the requested parent.
1468
+ # Corresponds to the JSON property `sources`
1469
+ # @return [Array<Google::Apis::SecuritycenterV1::Source>]
1470
+ attr_accessor :sources
1471
+
1472
+ def initialize(**args)
1473
+ update!(**args)
1474
+ end
1475
+
1476
+ # Update properties of this object
1477
+ def update!(**args)
1478
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1479
+ @sources = args[:sources] if args.key?(:sources)
1480
+ end
1481
+ end
1482
+
1483
+ # Cloud Security Command Center (Cloud SCC) notification configs. A notification
1484
+ # config is a Cloud SCC resource that contains the configuration to send
1485
+ # notifications for create/update events of findings, assets and etc.
1486
+ class NotificationConfig
1487
+ include Google::Apis::Core::Hashable
1488
+
1489
+ # The description of the notification config (max of 1024 characters).
1490
+ # Corresponds to the JSON property `description`
1491
+ # @return [String]
1492
+ attr_accessor :description
1493
+
1494
+ # The relative resource name of this notification config. See: https://cloud.
1495
+ # google.com/apis/design/resource_names#relative_resource_name Example: "
1496
+ # organizations/`organization_id`/notificationConfigs/notify_public_bucket".
1497
+ # Corresponds to the JSON property `name`
1498
+ # @return [String]
1499
+ attr_accessor :name
1500
+
1501
+ # The Pub/Sub topic to send notifications to. Its format is "projects/[
1502
+ # project_id]/topics/[topic]".
1503
+ # Corresponds to the JSON property `pubsubTopic`
1504
+ # @return [String]
1505
+ attr_accessor :pubsub_topic
1506
+
1507
+ # Output only. The service account that needs "pubsub.topics.publish" permission
1508
+ # to publish to the Pub/Sub topic.
1509
+ # Corresponds to the JSON property `serviceAccount`
1510
+ # @return [String]
1511
+ attr_accessor :service_account
1512
+
1513
+ # The config for streaming-based notifications, which send each event as soon as
1514
+ # it is detected.
1515
+ # Corresponds to the JSON property `streamingConfig`
1516
+ # @return [Google::Apis::SecuritycenterV1::StreamingConfig]
1517
+ attr_accessor :streaming_config
1518
+
1519
+ def initialize(**args)
1520
+ update!(**args)
1521
+ end
1522
+
1523
+ # Update properties of this object
1524
+ def update!(**args)
1525
+ @description = args[:description] if args.key?(:description)
1526
+ @name = args[:name] if args.key?(:name)
1527
+ @pubsub_topic = args[:pubsub_topic] if args.key?(:pubsub_topic)
1528
+ @service_account = args[:service_account] if args.key?(:service_account)
1529
+ @streaming_config = args[:streaming_config] if args.key?(:streaming_config)
1530
+ end
1531
+ end
1532
+
1533
+ # This resource represents a long-running operation that is the result of a
1534
+ # network API call.
1535
+ class Operation
1536
+ include Google::Apis::Core::Hashable
1537
+
1538
+ # If the value is `false`, it means the operation is still in progress. If `true`
1539
+ # , the operation is completed, and either `error` or `response` is available.
1540
+ # Corresponds to the JSON property `done`
1541
+ # @return [Boolean]
1542
+ attr_accessor :done
1543
+ alias_method :done?, :done
1544
+
1545
+ # The `Status` type defines a logical error model that is suitable for different
1546
+ # programming environments, including REST APIs and RPC APIs. It is used by [
1547
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
1548
+ # data: error code, error message, and error details. You can find out more
1549
+ # about this error model and how to work with it in the [API Design Guide](https:
1550
+ # //cloud.google.com/apis/design/errors).
1551
+ # Corresponds to the JSON property `error`
1552
+ # @return [Google::Apis::SecuritycenterV1::Status]
1553
+ attr_accessor :error
1554
+
1555
+ # Service-specific metadata associated with the operation. It typically contains
1556
+ # progress information and common metadata such as create time. Some services
1557
+ # might not provide such metadata. Any method that returns a long-running
1558
+ # operation should document the metadata type, if any.
1559
+ # Corresponds to the JSON property `metadata`
1560
+ # @return [Hash<String,Object>]
1561
+ attr_accessor :metadata
1562
+
1563
+ # The server-assigned name, which is only unique within the same service that
1564
+ # originally returns it. If you use the default HTTP mapping, the `name` should
1565
+ # be a resource name ending with `operations/`unique_id``.
1566
+ # Corresponds to the JSON property `name`
1567
+ # @return [String]
1568
+ attr_accessor :name
1569
+
1570
+ # The normal response of the operation in case of success. If the original
1571
+ # method returns no data on success, such as `Delete`, the response is `google.
1572
+ # protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`,
1573
+ # the response should be the resource. For other methods, the response should
1574
+ # have the type `XxxResponse`, where `Xxx` is the original method name. For
1575
+ # example, if the original method name is `TakeSnapshot()`, the inferred
1576
+ # response type is `TakeSnapshotResponse`.
1577
+ # Corresponds to the JSON property `response`
1578
+ # @return [Hash<String,Object>]
1579
+ attr_accessor :response
1580
+
1581
+ def initialize(**args)
1582
+ update!(**args)
1583
+ end
1584
+
1585
+ # Update properties of this object
1586
+ def update!(**args)
1587
+ @done = args[:done] if args.key?(:done)
1588
+ @error = args[:error] if args.key?(:error)
1589
+ @metadata = args[:metadata] if args.key?(:metadata)
1590
+ @name = args[:name] if args.key?(:name)
1591
+ @response = args[:response] if args.key?(:response)
1592
+ end
1593
+ end
1594
+
1595
+ # User specified settings that are attached to the Security Command Center
1596
+ # organization.
1597
+ class OrganizationSettings
1598
+ include Google::Apis::Core::Hashable
1599
+
1600
+ # The configuration used for Asset Discovery runs.
1601
+ # Corresponds to the JSON property `assetDiscoveryConfig`
1602
+ # @return [Google::Apis::SecuritycenterV1::AssetDiscoveryConfig]
1603
+ attr_accessor :asset_discovery_config
1604
+
1605
+ # A flag that indicates if Asset Discovery should be enabled. If the flag is set
1606
+ # to `true`, then discovery of assets will occur. If it is set to `false, all
1607
+ # historical assets will remain, but discovery of future assets will not occur.
1608
+ # Corresponds to the JSON property `enableAssetDiscovery`
1609
+ # @return [Boolean]
1610
+ attr_accessor :enable_asset_discovery
1611
+ alias_method :enable_asset_discovery?, :enable_asset_discovery
1612
+
1613
+ # The relative resource name of the settings. See: https://cloud.google.com/apis/
1614
+ # design/resource_names#relative_resource_name Example: "organizations/`
1615
+ # organization_id`/organizationSettings".
1616
+ # Corresponds to the JSON property `name`
1617
+ # @return [String]
1618
+ attr_accessor :name
1619
+
1620
+ def initialize(**args)
1621
+ update!(**args)
1622
+ end
1623
+
1624
+ # Update properties of this object
1625
+ def update!(**args)
1626
+ @asset_discovery_config = args[:asset_discovery_config] if args.key?(:asset_discovery_config)
1627
+ @enable_asset_discovery = args[:enable_asset_discovery] if args.key?(:enable_asset_discovery)
1628
+ @name = args[:name] if args.key?(:name)
1629
+ end
1630
+ end
1631
+
1632
+ # An Identity and Access Management (IAM) policy, which specifies access
1633
+ # controls for Google Cloud resources. A `Policy` is a collection of `bindings`.
1634
+ # A `binding` binds one or more `members` to a single `role`. Members can be
1635
+ # user accounts, service accounts, Google groups, and domains (such as G Suite).
1636
+ # A `role` is a named list of permissions; each `role` can be an IAM predefined
1637
+ # role or a user-created custom role. For some types of Google Cloud resources,
1638
+ # a `binding` can also specify a `condition`, which is a logical expression that
1639
+ # allows access to a resource only if the expression evaluates to `true`. A
1640
+ # condition can add constraints based on attributes of the request, the resource,
1641
+ # or both. To learn which resources support conditions in their IAM policies,
1642
+ # see the [IAM documentation](https://cloud.google.com/iam/help/conditions/
1643
+ # resource-policies). **JSON example:** ` "bindings": [ ` "role": "roles/
1644
+ # resourcemanager.organizationAdmin", "members": [ "user:mike@example.com", "
1645
+ # group:admins@example.com", "domain:google.com", "serviceAccount:my-project-id@
1646
+ # appspot.gserviceaccount.com" ] `, ` "role": "roles/resourcemanager.
1647
+ # organizationViewer", "members": [ "user:eve@example.com" ], "condition": ` "
1648
+ # title": "expirable access", "description": "Does not grant access after Sep
1649
+ # 2020", "expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')", `
1650
+ # ` ], "etag": "BwWWja0YfJA=", "version": 3 ` **YAML example:** bindings: -
1651
+ # members: - user:mike@example.com - group:admins@example.com - domain:google.
1652
+ # com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/
1653
+ # resourcemanager.organizationAdmin - members: - user:eve@example.com role:
1654
+ # roles/resourcemanager.organizationViewer condition: title: expirable access
1655
+ # description: Does not grant access after Sep 2020 expression: request.time <
1656
+ # timestamp('2020-10-01T00:00:00.000Z') - etag: BwWWja0YfJA= - version: 3 For a
1657
+ # description of IAM and its features, see the [IAM documentation](https://cloud.
1658
+ # google.com/iam/docs/).
1659
+ class Policy
1660
+ include Google::Apis::Core::Hashable
1661
+
1662
+ # Specifies cloud audit logging configuration for this policy.
1663
+ # Corresponds to the JSON property `auditConfigs`
1664
+ # @return [Array<Google::Apis::SecuritycenterV1::AuditConfig>]
1665
+ attr_accessor :audit_configs
1666
+
1667
+ # Associates a list of `members` to a `role`. Optionally, may specify a `
1668
+ # condition` that determines how and when the `bindings` are applied. Each of
1669
+ # the `bindings` must contain at least one member.
1670
+ # Corresponds to the JSON property `bindings`
1671
+ # @return [Array<Google::Apis::SecuritycenterV1::Binding>]
1672
+ attr_accessor :bindings
1673
+
1674
+ # `etag` is used for optimistic concurrency control as a way to help prevent
1675
+ # simultaneous updates of a policy from overwriting each other. It is strongly
1676
+ # suggested that systems make use of the `etag` in the read-modify-write cycle
1677
+ # to perform policy updates in order to avoid race conditions: An `etag` is
1678
+ # returned in the response to `getIamPolicy`, and systems are expected to put
1679
+ # that etag in the request to `setIamPolicy` to ensure that their change will be
1680
+ # applied to the same version of the policy. **Important:** If you use IAM
1681
+ # Conditions, you must include the `etag` field whenever you call `setIamPolicy`.
1682
+ # If you omit this field, then IAM allows you to overwrite a version `3` policy
1683
+ # with a version `1` policy, and all of the conditions in the version `3` policy
1684
+ # are lost.
1685
+ # Corresponds to the JSON property `etag`
1686
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
1687
+ # @return [String]
1688
+ attr_accessor :etag
1689
+
1690
+ # Specifies the format of the policy. Valid values are `0`, `1`, and `3`.
1691
+ # Requests that specify an invalid value are rejected. Any operation that
1692
+ # affects conditional role bindings must specify version `3`. This requirement
1693
+ # applies to the following operations: * Getting a policy that includes a
1694
+ # conditional role binding * Adding a conditional role binding to a policy *
1695
+ # Changing a conditional role binding in a policy * Removing any role binding,
1696
+ # with or without a condition, from a policy that includes conditions **
1697
+ # Important:** If you use IAM Conditions, you must include the `etag` field
1698
+ # whenever you call `setIamPolicy`. If you omit this field, then IAM allows you
1699
+ # to overwrite a version `3` policy with a version `1` policy, and all of the
1700
+ # conditions in the version `3` policy are lost. If a policy does not include
1701
+ # any conditions, operations on that policy may specify any valid version or
1702
+ # leave the field unset. To learn which resources support conditions in their
1703
+ # IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/
1704
+ # conditions/resource-policies).
1705
+ # Corresponds to the JSON property `version`
1706
+ # @return [Fixnum]
1707
+ attr_accessor :version
1708
+
1709
+ def initialize(**args)
1710
+ update!(**args)
1711
+ end
1712
+
1713
+ # Update properties of this object
1714
+ def update!(**args)
1715
+ @audit_configs = args[:audit_configs] if args.key?(:audit_configs)
1716
+ @bindings = args[:bindings] if args.key?(:bindings)
1717
+ @etag = args[:etag] if args.key?(:etag)
1718
+ @version = args[:version] if args.key?(:version)
1719
+ end
1720
+ end
1721
+
1722
+ # Information related to the Google Cloud resource that is associated with this
1723
+ # finding. LINT.IfChange
1724
+ class Resource
1725
+ include Google::Apis::Core::Hashable
1726
+
1727
+ # Contains a Folder message for each folder in the assets ancestry. The first
1728
+ # folder is the deepest nested folder, and the last folder is the folder
1729
+ # directly under the Organization.
1730
+ # Corresponds to the JSON property `folders`
1731
+ # @return [Array<Google::Apis::SecuritycenterV1::Folder>]
1732
+ attr_accessor :folders
1733
+
1734
+ # The full resource name of the resource. See: https://cloud.google.com/apis/
1735
+ # design/resource_names#full_resource_name
1736
+ # Corresponds to the JSON property `name`
1737
+ # @return [String]
1738
+ attr_accessor :name
1739
+
1740
+ # The human readable name of resource's parent.
1741
+ # Corresponds to the JSON property `parentDisplayName`
1742
+ # @return [String]
1743
+ attr_accessor :parent_display_name
1744
+
1745
+ # The full resource name of resource's parent.
1746
+ # Corresponds to the JSON property `parentName`
1747
+ # @return [String]
1748
+ attr_accessor :parent_name
1749
+
1750
+ # The human readable name of project that the resource belongs to.
1751
+ # Corresponds to the JSON property `projectDisplayName`
1752
+ # @return [String]
1753
+ attr_accessor :project_display_name
1754
+
1755
+ # The full resource name of project that the resource belongs to.
1756
+ # Corresponds to the JSON property `projectName`
1757
+ # @return [String]
1758
+ attr_accessor :project_name
1759
+
1760
+ def initialize(**args)
1761
+ update!(**args)
1762
+ end
1763
+
1764
+ # Update properties of this object
1765
+ def update!(**args)
1766
+ @folders = args[:folders] if args.key?(:folders)
1767
+ @name = args[:name] if args.key?(:name)
1768
+ @parent_display_name = args[:parent_display_name] if args.key?(:parent_display_name)
1769
+ @parent_name = args[:parent_name] if args.key?(:parent_name)
1770
+ @project_display_name = args[:project_display_name] if args.key?(:project_display_name)
1771
+ @project_name = args[:project_name] if args.key?(:project_name)
1772
+ end
1773
+ end
1774
+
1775
+ # Request message for running asset discovery for an organization.
1776
+ class RunAssetDiscoveryRequest
1777
+ include Google::Apis::Core::Hashable
1778
+
1779
+ def initialize(**args)
1780
+ update!(**args)
1781
+ end
1782
+
1783
+ # Update properties of this object
1784
+ def update!(**args)
1785
+ end
1786
+ end
1787
+
1788
+ # Security Command Center managed properties. These properties are managed by
1789
+ # Security Command Center and cannot be modified by the user.
1790
+ class SecurityCenterProperties
1791
+ include Google::Apis::Core::Hashable
1792
+
1793
+ # Contains a Folder message for each folder in the assets ancestry. The first
1794
+ # folder is the deepest nested folder, and the last folder is the folder
1795
+ # directly under the Organization.
1796
+ # Corresponds to the JSON property `folders`
1797
+ # @return [Array<Google::Apis::SecuritycenterV1::Folder>]
1798
+ attr_accessor :folders
1799
+
1800
+ # The user defined display name for this resource.
1801
+ # Corresponds to the JSON property `resourceDisplayName`
1802
+ # @return [String]
1803
+ attr_accessor :resource_display_name
1804
+
1805
+ # The full resource name of the Google Cloud resource this asset represents.
1806
+ # This field is immutable after create time. See: https://cloud.google.com/apis/
1807
+ # design/resource_names#full_resource_name
1808
+ # Corresponds to the JSON property `resourceName`
1809
+ # @return [String]
1810
+ attr_accessor :resource_name
1811
+
1812
+ # Owners of the Google Cloud resource.
1813
+ # Corresponds to the JSON property `resourceOwners`
1814
+ # @return [Array<String>]
1815
+ attr_accessor :resource_owners
1816
+
1817
+ # The full resource name of the immediate parent of the resource. See: https://
1818
+ # cloud.google.com/apis/design/resource_names#full_resource_name
1819
+ # Corresponds to the JSON property `resourceParent`
1820
+ # @return [String]
1821
+ attr_accessor :resource_parent
1822
+
1823
+ # The user defined display name for the parent of this resource.
1824
+ # Corresponds to the JSON property `resourceParentDisplayName`
1825
+ # @return [String]
1826
+ attr_accessor :resource_parent_display_name
1827
+
1828
+ # The full resource name of the project the resource belongs to. See: https://
1829
+ # cloud.google.com/apis/design/resource_names#full_resource_name
1830
+ # Corresponds to the JSON property `resourceProject`
1831
+ # @return [String]
1832
+ attr_accessor :resource_project
1833
+
1834
+ # The user defined display name for the project of this resource.
1835
+ # Corresponds to the JSON property `resourceProjectDisplayName`
1836
+ # @return [String]
1837
+ attr_accessor :resource_project_display_name
1838
+
1839
+ # The type of the Google Cloud resource. Examples include: APPLICATION, PROJECT,
1840
+ # and ORGANIZATION. This is a case insensitive field defined by Security Command
1841
+ # Center and/or the producer of the resource and is immutable after create time.
1842
+ # Corresponds to the JSON property `resourceType`
1843
+ # @return [String]
1844
+ attr_accessor :resource_type
1845
+
1846
+ def initialize(**args)
1847
+ update!(**args)
1848
+ end
1849
+
1850
+ # Update properties of this object
1851
+ def update!(**args)
1852
+ @folders = args[:folders] if args.key?(:folders)
1853
+ @resource_display_name = args[:resource_display_name] if args.key?(:resource_display_name)
1854
+ @resource_name = args[:resource_name] if args.key?(:resource_name)
1855
+ @resource_owners = args[:resource_owners] if args.key?(:resource_owners)
1856
+ @resource_parent = args[:resource_parent] if args.key?(:resource_parent)
1857
+ @resource_parent_display_name = args[:resource_parent_display_name] if args.key?(:resource_parent_display_name)
1858
+ @resource_project = args[:resource_project] if args.key?(:resource_project)
1859
+ @resource_project_display_name = args[:resource_project_display_name] if args.key?(:resource_project_display_name)
1860
+ @resource_type = args[:resource_type] if args.key?(:resource_type)
1861
+ end
1862
+ end
1863
+
1864
+ # User specified security marks that are attached to the parent Security Command
1865
+ # Center resource. Security marks are scoped within a Security Command Center
1866
+ # organization -- they can be modified and viewed by all users who have proper
1867
+ # permissions on the organization.
1868
+ class SecurityMarks
1869
+ include Google::Apis::Core::Hashable
1870
+
1871
+ # Mutable user specified security marks belonging to the parent resource.
1872
+ # Constraints are as follows: * Keys and values are treated as case insensitive *
1873
+ # Keys must be between 1 - 256 characters (inclusive) * Keys must be letters,
1874
+ # numbers, underscores, or dashes * Values have leading and trailing whitespace
1875
+ # trimmed, remaining characters must be between 1 - 4096 characters (inclusive)
1876
+ # Corresponds to the JSON property `marks`
1877
+ # @return [Hash<String,String>]
1878
+ attr_accessor :marks
1879
+
1880
+ # The relative resource name of the SecurityMarks. See: https://cloud.google.com/
1881
+ # apis/design/resource_names#relative_resource_name Examples: "organizations/`
1882
+ # organization_id`/assets/`asset_id`/securityMarks" "organizations/`
1883
+ # organization_id`/sources/`source_id`/findings/`finding_id`/securityMarks".
1884
+ # Corresponds to the JSON property `name`
1885
+ # @return [String]
1886
+ attr_accessor :name
1887
+
1888
+ def initialize(**args)
1889
+ update!(**args)
1890
+ end
1891
+
1892
+ # Update properties of this object
1893
+ def update!(**args)
1894
+ @marks = args[:marks] if args.key?(:marks)
1895
+ @name = args[:name] if args.key?(:name)
1896
+ end
1897
+ end
1898
+
1899
+ # Request message for updating a finding's state.
1900
+ class SetFindingStateRequest
1901
+ include Google::Apis::Core::Hashable
1902
+
1903
+ # Required. The time at which the updated state takes effect.
1904
+ # Corresponds to the JSON property `startTime`
1905
+ # @return [String]
1906
+ attr_accessor :start_time
1907
+
1908
+ # Required. The desired State of the finding.
1909
+ # Corresponds to the JSON property `state`
1910
+ # @return [String]
1911
+ attr_accessor :state
1912
+
1913
+ def initialize(**args)
1914
+ update!(**args)
1915
+ end
1916
+
1917
+ # Update properties of this object
1918
+ def update!(**args)
1919
+ @start_time = args[:start_time] if args.key?(:start_time)
1920
+ @state = args[:state] if args.key?(:state)
1921
+ end
1922
+ end
1923
+
1924
+ # Request message for `SetIamPolicy` method.
1925
+ class SetIamPolicyRequest
1926
+ include Google::Apis::Core::Hashable
1927
+
1928
+ # An Identity and Access Management (IAM) policy, which specifies access
1929
+ # controls for Google Cloud resources. A `Policy` is a collection of `bindings`.
1930
+ # A `binding` binds one or more `members` to a single `role`. Members can be
1931
+ # user accounts, service accounts, Google groups, and domains (such as G Suite).
1932
+ # A `role` is a named list of permissions; each `role` can be an IAM predefined
1933
+ # role or a user-created custom role. For some types of Google Cloud resources,
1934
+ # a `binding` can also specify a `condition`, which is a logical expression that
1935
+ # allows access to a resource only if the expression evaluates to `true`. A
1936
+ # condition can add constraints based on attributes of the request, the resource,
1937
+ # or both. To learn which resources support conditions in their IAM policies,
1938
+ # see the [IAM documentation](https://cloud.google.com/iam/help/conditions/
1939
+ # resource-policies). **JSON example:** ` "bindings": [ ` "role": "roles/
1940
+ # resourcemanager.organizationAdmin", "members": [ "user:mike@example.com", "
1941
+ # group:admins@example.com", "domain:google.com", "serviceAccount:my-project-id@
1942
+ # appspot.gserviceaccount.com" ] `, ` "role": "roles/resourcemanager.
1943
+ # organizationViewer", "members": [ "user:eve@example.com" ], "condition": ` "
1944
+ # title": "expirable access", "description": "Does not grant access after Sep
1945
+ # 2020", "expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')", `
1946
+ # ` ], "etag": "BwWWja0YfJA=", "version": 3 ` **YAML example:** bindings: -
1947
+ # members: - user:mike@example.com - group:admins@example.com - domain:google.
1948
+ # com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/
1949
+ # resourcemanager.organizationAdmin - members: - user:eve@example.com role:
1950
+ # roles/resourcemanager.organizationViewer condition: title: expirable access
1951
+ # description: Does not grant access after Sep 2020 expression: request.time <
1952
+ # timestamp('2020-10-01T00:00:00.000Z') - etag: BwWWja0YfJA= - version: 3 For a
1953
+ # description of IAM and its features, see the [IAM documentation](https://cloud.
1954
+ # google.com/iam/docs/).
1955
+ # Corresponds to the JSON property `policy`
1956
+ # @return [Google::Apis::SecuritycenterV1::Policy]
1957
+ attr_accessor :policy
1958
+
1959
+ # OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only
1960
+ # the fields in the mask will be modified. If no mask is provided, the following
1961
+ # default mask is used: `paths: "bindings, etag"`
1962
+ # Corresponds to the JSON property `updateMask`
1963
+ # @return [String]
1964
+ attr_accessor :update_mask
1965
+
1966
+ def initialize(**args)
1967
+ update!(**args)
1968
+ end
1969
+
1970
+ # Update properties of this object
1971
+ def update!(**args)
1972
+ @policy = args[:policy] if args.key?(:policy)
1973
+ @update_mask = args[:update_mask] if args.key?(:update_mask)
1974
+ end
1975
+ end
1976
+
1977
+ # Security Command Center finding source. A finding source is an entity or a
1978
+ # mechanism that can produce a finding. A source is like a container of findings
1979
+ # that come from the same scanner, logger, monitor, and other tools.
1980
+ class Source
1981
+ include Google::Apis::Core::Hashable
1982
+
1983
+ # The description of the source (max of 1024 characters). Example: "Web Security
1984
+ # Scanner is a web security scanner for common vulnerabilities in App Engine
1985
+ # applications. It can automatically scan and detect four common vulnerabilities,
1986
+ # including cross-site-scripting (XSS), Flash injection, mixed content (HTTP in
1987
+ # HTTPS), and outdated or insecure libraries."
1988
+ # Corresponds to the JSON property `description`
1989
+ # @return [String]
1990
+ attr_accessor :description
1991
+
1992
+ # The source's display name. A source's display name must be unique amongst its
1993
+ # siblings, for example, two sources with the same parent can't share the same
1994
+ # display name. The display name must have a length between 1 and 64 characters (
1995
+ # inclusive).
1996
+ # Corresponds to the JSON property `displayName`
1997
+ # @return [String]
1998
+ attr_accessor :display_name
1999
+
2000
+ # The relative resource name of this source. See: https://cloud.google.com/apis/
2001
+ # design/resource_names#relative_resource_name Example: "organizations/`
2002
+ # organization_id`/sources/`source_id`"
2003
+ # Corresponds to the JSON property `name`
2004
+ # @return [String]
2005
+ attr_accessor :name
2006
+
2007
+ def initialize(**args)
2008
+ update!(**args)
2009
+ end
2010
+
2011
+ # Update properties of this object
2012
+ def update!(**args)
2013
+ @description = args[:description] if args.key?(:description)
2014
+ @display_name = args[:display_name] if args.key?(:display_name)
2015
+ @name = args[:name] if args.key?(:name)
2016
+ end
2017
+ end
2018
+
2019
+ # The `Status` type defines a logical error model that is suitable for different
2020
+ # programming environments, including REST APIs and RPC APIs. It is used by [
2021
+ # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
2022
+ # data: error code, error message, and error details. You can find out more
2023
+ # about this error model and how to work with it in the [API Design Guide](https:
2024
+ # //cloud.google.com/apis/design/errors).
2025
+ class Status
2026
+ include Google::Apis::Core::Hashable
2027
+
2028
+ # The status code, which should be an enum value of google.rpc.Code.
2029
+ # Corresponds to the JSON property `code`
2030
+ # @return [Fixnum]
2031
+ attr_accessor :code
2032
+
2033
+ # A list of messages that carry the error details. There is a common set of
2034
+ # message types for APIs to use.
2035
+ # Corresponds to the JSON property `details`
2036
+ # @return [Array<Hash<String,Object>>]
2037
+ attr_accessor :details
2038
+
2039
+ # A developer-facing error message, which should be in English. Any user-facing
2040
+ # error message should be localized and sent in the google.rpc.Status.details
2041
+ # field, or localized by the client.
2042
+ # Corresponds to the JSON property `message`
2043
+ # @return [String]
2044
+ attr_accessor :message
2045
+
2046
+ def initialize(**args)
2047
+ update!(**args)
2048
+ end
2049
+
2050
+ # Update properties of this object
2051
+ def update!(**args)
2052
+ @code = args[:code] if args.key?(:code)
2053
+ @details = args[:details] if args.key?(:details)
2054
+ @message = args[:message] if args.key?(:message)
2055
+ end
2056
+ end
2057
+
2058
+ # The config for streaming-based notifications, which send each event as soon as
2059
+ # it is detected.
2060
+ class StreamingConfig
2061
+ include Google::Apis::Core::Hashable
2062
+
2063
+ # Expression that defines the filter to apply across create/update events of
2064
+ # assets or findings as specified by the event type. The expression is a list of
2065
+ # zero or more restrictions combined via logical operators `AND` and `OR`.
2066
+ # Parentheses are supported, and `OR` has higher precedence than `AND`.
2067
+ # Restrictions have the form ` ` and may have a `-` character in front of them
2068
+ # to indicate negation. The fields map to those defined in the corresponding
2069
+ # resource. The supported operators are: * `=` for all value types. * `>`, `<`, `
2070
+ # >=`, `<=` for integer values. * `:`, meaning substring matching, for strings.
2071
+ # The supported value types are: * string literals in quotes. * integer literals
2072
+ # without quotes. * boolean literals `true` and `false` without quotes.
2073
+ # Corresponds to the JSON property `filter`
2074
+ # @return [String]
2075
+ attr_accessor :filter
2076
+
2077
+ def initialize(**args)
2078
+ update!(**args)
2079
+ end
2080
+
2081
+ # Update properties of this object
2082
+ def update!(**args)
2083
+ @filter = args[:filter] if args.key?(:filter)
2084
+ end
2085
+ end
2086
+
2087
+ # Request message for `TestIamPermissions` method.
2088
+ class TestIamPermissionsRequest
2089
+ include Google::Apis::Core::Hashable
2090
+
2091
+ # The set of permissions to check for the `resource`. Permissions with wildcards
2092
+ # (such as '*' or 'storage.*') are not allowed. For more information see [IAM
2093
+ # Overview](https://cloud.google.com/iam/docs/overview#permissions).
2094
+ # Corresponds to the JSON property `permissions`
2095
+ # @return [Array<String>]
2096
+ attr_accessor :permissions
2097
+
2098
+ def initialize(**args)
2099
+ update!(**args)
2100
+ end
2101
+
2102
+ # Update properties of this object
2103
+ def update!(**args)
2104
+ @permissions = args[:permissions] if args.key?(:permissions)
2105
+ end
2106
+ end
2107
+
2108
+ # Response message for `TestIamPermissions` method.
2109
+ class TestIamPermissionsResponse
2110
+ include Google::Apis::Core::Hashable
2111
+
2112
+ # A subset of `TestPermissionsRequest.permissions` that the caller is allowed.
2113
+ # Corresponds to the JSON property `permissions`
2114
+ # @return [Array<String>]
2115
+ attr_accessor :permissions
2116
+
2117
+ def initialize(**args)
2118
+ update!(**args)
2119
+ end
2120
+
2121
+ # Update properties of this object
2122
+ def update!(**args)
2123
+ @permissions = args[:permissions] if args.key?(:permissions)
2124
+ end
2125
+ end
2126
+ end
2127
+ end
2128
+ end