google-cloud-asset-v1 0.4.3 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +4 -0
- data/lib/google/cloud/asset/v1/asset_service/client.rb +357 -106
- data/lib/google/cloud/asset/v1/asset_service/operations.rb +1 -1
- data/lib/google/cloud/asset/v1/asset_service_pb.rb +120 -0
- data/lib/google/cloud/asset/v1/asset_service_services_pb.rb +39 -21
- data/lib/google/cloud/asset/v1/assets_pb.rb +59 -2
- data/lib/google/cloud/asset/v1/version.rb +1 -1
- data/proto_docs/google/cloud/asset/v1/asset_service.rb +593 -108
- data/proto_docs/google/cloud/asset/v1/assets.rb +258 -34
- data/proto_docs/google/protobuf/duration.rb +98 -0
- data/proto_docs/google/rpc/code.rb +185 -0
- data/proto_docs/google/rpc/status.rb +1 -1
- metadata +6 -4
@@ -475,7 +475,7 @@ module Google
|
|
475
475
|
|
476
476
|
config_attr :endpoint, "cloudasset.googleapis.com", ::String
|
477
477
|
config_attr :credentials, nil do |value|
|
478
|
-
allowed = [::String, ::Hash, ::Proc, ::Google::Auth::Credentials, ::Signet::OAuth2::Client, nil]
|
478
|
+
allowed = [::String, ::Hash, ::Proc, ::Symbol, ::Google::Auth::Credentials, ::Signet::OAuth2::Client, nil]
|
479
479
|
allowed += [::GRPC::Core::Channel, ::GRPC::Core::ChannelCredentials] if defined? ::GRPC
|
480
480
|
allowed.any? { |klass| klass === value }
|
481
481
|
end
|
@@ -9,6 +9,7 @@ require 'google/api/field_behavior_pb'
|
|
9
9
|
require 'google/api/resource_pb'
|
10
10
|
require 'google/cloud/asset/v1/assets_pb'
|
11
11
|
require 'google/longrunning/operations_pb'
|
12
|
+
require 'google/protobuf/duration_pb'
|
12
13
|
require 'google/protobuf/empty_pb'
|
13
14
|
require 'google/protobuf/field_mask_pb'
|
14
15
|
require 'google/protobuf/timestamp_pb'
|
@@ -25,6 +26,7 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
|
|
25
26
|
add_message "google.cloud.asset.v1.ExportAssetsResponse" do
|
26
27
|
optional :read_time, :message, 1, "google.protobuf.Timestamp"
|
27
28
|
optional :output_config, :message, 2, "google.cloud.asset.v1.OutputConfig"
|
29
|
+
optional :output_result, :message, 3, "google.cloud.asset.v1.OutputResult"
|
28
30
|
end
|
29
31
|
add_message "google.cloud.asset.v1.BatchGetAssetsHistoryRequest" do
|
30
32
|
optional :parent, :string, 1
|
@@ -62,6 +64,14 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
|
|
62
64
|
optional :bigquery_destination, :message, 2, "google.cloud.asset.v1.BigQueryDestination"
|
63
65
|
end
|
64
66
|
end
|
67
|
+
add_message "google.cloud.asset.v1.OutputResult" do
|
68
|
+
oneof :result do
|
69
|
+
optional :gcs_result, :message, 1, "google.cloud.asset.v1.GcsOutputResult"
|
70
|
+
end
|
71
|
+
end
|
72
|
+
add_message "google.cloud.asset.v1.GcsOutputResult" do
|
73
|
+
repeated :uris, :string, 1
|
74
|
+
end
|
65
75
|
add_message "google.cloud.asset.v1.GcsDestination" do
|
66
76
|
oneof :object_uri do
|
67
77
|
optional :uri, :string, 1
|
@@ -87,6 +97,7 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
|
|
87
97
|
repeated :asset_types, :string, 3
|
88
98
|
optional :content_type, :enum, 4, "google.cloud.asset.v1.ContentType"
|
89
99
|
optional :feed_output_config, :message, 5, "google.cloud.asset.v1.FeedOutputConfig"
|
100
|
+
optional :condition, :message, 6, "google.type.Expr"
|
90
101
|
end
|
91
102
|
add_message "google.cloud.asset.v1.SearchAllResourcesRequest" do
|
92
103
|
optional :scope, :string, 1
|
@@ -110,6 +121,96 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
|
|
110
121
|
repeated :results, :message, 1, "google.cloud.asset.v1.IamPolicySearchResult"
|
111
122
|
optional :next_page_token, :string, 2
|
112
123
|
end
|
124
|
+
add_message "google.cloud.asset.v1.IamPolicyAnalysisQuery" do
|
125
|
+
optional :scope, :string, 1
|
126
|
+
optional :resource_selector, :message, 2, "google.cloud.asset.v1.IamPolicyAnalysisQuery.ResourceSelector"
|
127
|
+
optional :identity_selector, :message, 3, "google.cloud.asset.v1.IamPolicyAnalysisQuery.IdentitySelector"
|
128
|
+
optional :access_selector, :message, 4, "google.cloud.asset.v1.IamPolicyAnalysisQuery.AccessSelector"
|
129
|
+
optional :options, :message, 5, "google.cloud.asset.v1.IamPolicyAnalysisQuery.Options"
|
130
|
+
end
|
131
|
+
add_message "google.cloud.asset.v1.IamPolicyAnalysisQuery.ResourceSelector" do
|
132
|
+
optional :full_resource_name, :string, 1
|
133
|
+
end
|
134
|
+
add_message "google.cloud.asset.v1.IamPolicyAnalysisQuery.IdentitySelector" do
|
135
|
+
optional :identity, :string, 1
|
136
|
+
end
|
137
|
+
add_message "google.cloud.asset.v1.IamPolicyAnalysisQuery.AccessSelector" do
|
138
|
+
repeated :roles, :string, 1
|
139
|
+
repeated :permissions, :string, 2
|
140
|
+
end
|
141
|
+
add_message "google.cloud.asset.v1.IamPolicyAnalysisQuery.Options" do
|
142
|
+
optional :expand_groups, :bool, 1
|
143
|
+
optional :expand_roles, :bool, 2
|
144
|
+
optional :expand_resources, :bool, 3
|
145
|
+
optional :output_resource_edges, :bool, 4
|
146
|
+
optional :output_group_edges, :bool, 5
|
147
|
+
optional :analyze_service_account_impersonation, :bool, 6
|
148
|
+
optional :max_fanouts_per_group, :int32, 7
|
149
|
+
optional :max_fanouts_per_resource, :int32, 8
|
150
|
+
end
|
151
|
+
add_message "google.cloud.asset.v1.AnalyzeIamPolicyRequest" do
|
152
|
+
optional :analysis_query, :message, 1, "google.cloud.asset.v1.IamPolicyAnalysisQuery"
|
153
|
+
optional :execution_timeout, :message, 2, "google.protobuf.Duration"
|
154
|
+
end
|
155
|
+
add_message "google.cloud.asset.v1.AnalyzeIamPolicyResponse" do
|
156
|
+
optional :main_analysis, :message, 1, "google.cloud.asset.v1.AnalyzeIamPolicyResponse.IamPolicyAnalysis"
|
157
|
+
repeated :service_account_impersonation_analysis, :message, 2, "google.cloud.asset.v1.AnalyzeIamPolicyResponse.IamPolicyAnalysis"
|
158
|
+
optional :fully_explored, :bool, 3
|
159
|
+
end
|
160
|
+
add_message "google.cloud.asset.v1.AnalyzeIamPolicyResponse.IamPolicyAnalysis" do
|
161
|
+
optional :analysis_query, :message, 1, "google.cloud.asset.v1.IamPolicyAnalysisQuery"
|
162
|
+
repeated :analysis_results, :message, 2, "google.cloud.asset.v1.IamPolicyAnalysisResult"
|
163
|
+
optional :fully_explored, :bool, 3
|
164
|
+
repeated :stats, :message, 4, "google.cloud.asset.v1.AnalyzeIamPolicyResponse.IamPolicyAnalysis.Stats"
|
165
|
+
repeated :non_critical_errors, :message, 5, "google.cloud.asset.v1.IamPolicyAnalysisState"
|
166
|
+
end
|
167
|
+
add_message "google.cloud.asset.v1.AnalyzeIamPolicyResponse.IamPolicyAnalysis.Stats" do
|
168
|
+
optional :node_type, :enum, 1, "google.cloud.asset.v1.AnalyzeIamPolicyResponse.IamPolicyAnalysis.Stats.NodeType"
|
169
|
+
optional :node_subtype, :string, 2
|
170
|
+
optional :discovered_node_count, :int32, 3
|
171
|
+
optional :matched_node_count, :int32, 4
|
172
|
+
optional :explored_node_count, :int32, 5
|
173
|
+
optional :capped_node_count, :int32, 6
|
174
|
+
optional :permision_denied_node_count, :int32, 7
|
175
|
+
optional :execution_timeout_node_count, :int32, 8
|
176
|
+
end
|
177
|
+
add_enum "google.cloud.asset.v1.AnalyzeIamPolicyResponse.IamPolicyAnalysis.Stats.NodeType" do
|
178
|
+
value :NODE_TYPE_UNSPECIFIED, 0
|
179
|
+
value :BINDING, 1
|
180
|
+
value :IDENTITY, 2
|
181
|
+
value :RESOURCE, 3
|
182
|
+
value :ACCESS, 4
|
183
|
+
end
|
184
|
+
add_message "google.cloud.asset.v1.IamPolicyAnalysisOutputConfig" do
|
185
|
+
oneof :destination do
|
186
|
+
optional :gcs_destination, :message, 1, "google.cloud.asset.v1.IamPolicyAnalysisOutputConfig.GcsDestination"
|
187
|
+
optional :bigquery_destination, :message, 2, "google.cloud.asset.v1.IamPolicyAnalysisOutputConfig.BigQueryDestination"
|
188
|
+
end
|
189
|
+
end
|
190
|
+
add_message "google.cloud.asset.v1.IamPolicyAnalysisOutputConfig.GcsDestination" do
|
191
|
+
optional :uri, :string, 1
|
192
|
+
end
|
193
|
+
add_message "google.cloud.asset.v1.IamPolicyAnalysisOutputConfig.BigQueryDestination" do
|
194
|
+
optional :dataset, :string, 1
|
195
|
+
optional :table_prefix, :string, 2
|
196
|
+
optional :partition_key, :enum, 3, "google.cloud.asset.v1.IamPolicyAnalysisOutputConfig.BigQueryDestination.PartitionKey"
|
197
|
+
optional :write_mode, :enum, 4, "google.cloud.asset.v1.IamPolicyAnalysisOutputConfig.BigQueryDestination.WriteMode"
|
198
|
+
end
|
199
|
+
add_enum "google.cloud.asset.v1.IamPolicyAnalysisOutputConfig.BigQueryDestination.PartitionKey" do
|
200
|
+
value :PARTITION_KEY_UNSPECIFIED, 0
|
201
|
+
value :REQUEST_TIME, 1
|
202
|
+
end
|
203
|
+
add_enum "google.cloud.asset.v1.IamPolicyAnalysisOutputConfig.BigQueryDestination.WriteMode" do
|
204
|
+
value :WRITE_MODE_UNSPECIFIED, 0
|
205
|
+
value :ABORT, 1
|
206
|
+
value :OVERWRITE, 2
|
207
|
+
end
|
208
|
+
add_message "google.cloud.asset.v1.ExportIamPolicyAnalysisRequest" do
|
209
|
+
optional :analysis_query, :message, 1, "google.cloud.asset.v1.IamPolicyAnalysisQuery"
|
210
|
+
optional :output_config, :message, 2, "google.cloud.asset.v1.IamPolicyAnalysisOutputConfig"
|
211
|
+
end
|
212
|
+
add_message "google.cloud.asset.v1.ExportIamPolicyAnalysisResponse" do
|
213
|
+
end
|
113
214
|
add_enum "google.cloud.asset.v1.ContentType" do
|
114
215
|
value :CONTENT_TYPE_UNSPECIFIED, 0
|
115
216
|
value :RESOURCE, 1
|
@@ -135,6 +236,8 @@ module Google
|
|
135
236
|
UpdateFeedRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.UpdateFeedRequest").msgclass
|
136
237
|
DeleteFeedRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.DeleteFeedRequest").msgclass
|
137
238
|
OutputConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.OutputConfig").msgclass
|
239
|
+
OutputResult = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.OutputResult").msgclass
|
240
|
+
GcsOutputResult = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.GcsOutputResult").msgclass
|
138
241
|
GcsDestination = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.GcsDestination").msgclass
|
139
242
|
BigQueryDestination = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.BigQueryDestination").msgclass
|
140
243
|
PubsubDestination = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.PubsubDestination").msgclass
|
@@ -144,6 +247,23 @@ module Google
|
|
144
247
|
SearchAllResourcesResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.SearchAllResourcesResponse").msgclass
|
145
248
|
SearchAllIamPoliciesRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.SearchAllIamPoliciesRequest").msgclass
|
146
249
|
SearchAllIamPoliciesResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.SearchAllIamPoliciesResponse").msgclass
|
250
|
+
IamPolicyAnalysisQuery = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.IamPolicyAnalysisQuery").msgclass
|
251
|
+
IamPolicyAnalysisQuery::ResourceSelector = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.IamPolicyAnalysisQuery.ResourceSelector").msgclass
|
252
|
+
IamPolicyAnalysisQuery::IdentitySelector = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.IamPolicyAnalysisQuery.IdentitySelector").msgclass
|
253
|
+
IamPolicyAnalysisQuery::AccessSelector = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.IamPolicyAnalysisQuery.AccessSelector").msgclass
|
254
|
+
IamPolicyAnalysisQuery::Options = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.IamPolicyAnalysisQuery.Options").msgclass
|
255
|
+
AnalyzeIamPolicyRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.AnalyzeIamPolicyRequest").msgclass
|
256
|
+
AnalyzeIamPolicyResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.AnalyzeIamPolicyResponse").msgclass
|
257
|
+
AnalyzeIamPolicyResponse::IamPolicyAnalysis = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.AnalyzeIamPolicyResponse.IamPolicyAnalysis").msgclass
|
258
|
+
AnalyzeIamPolicyResponse::IamPolicyAnalysis::Stats = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.AnalyzeIamPolicyResponse.IamPolicyAnalysis.Stats").msgclass
|
259
|
+
AnalyzeIamPolicyResponse::IamPolicyAnalysis::Stats::NodeType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.AnalyzeIamPolicyResponse.IamPolicyAnalysis.Stats.NodeType").enummodule
|
260
|
+
IamPolicyAnalysisOutputConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.IamPolicyAnalysisOutputConfig").msgclass
|
261
|
+
IamPolicyAnalysisOutputConfig::GcsDestination = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.IamPolicyAnalysisOutputConfig.GcsDestination").msgclass
|
262
|
+
IamPolicyAnalysisOutputConfig::BigQueryDestination = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.IamPolicyAnalysisOutputConfig.BigQueryDestination").msgclass
|
263
|
+
IamPolicyAnalysisOutputConfig::BigQueryDestination::PartitionKey = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.IamPolicyAnalysisOutputConfig.BigQueryDestination.PartitionKey").enummodule
|
264
|
+
IamPolicyAnalysisOutputConfig::BigQueryDestination::WriteMode = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.IamPolicyAnalysisOutputConfig.BigQueryDestination.WriteMode").enummodule
|
265
|
+
ExportIamPolicyAnalysisRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.ExportIamPolicyAnalysisRequest").msgclass
|
266
|
+
ExportIamPolicyAnalysisResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.ExportIamPolicyAnalysisResponse").msgclass
|
147
267
|
ContentType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.ContentType").enummodule
|
148
268
|
end
|
149
269
|
end
|
@@ -34,40 +34,58 @@ module Google
|
|
34
34
|
self.service_name = 'google.cloud.asset.v1.AssetService'
|
35
35
|
|
36
36
|
# Exports assets with time and resource types to a given Cloud Storage
|
37
|
-
# location.
|
38
|
-
#
|
39
|
-
# [google.
|
40
|
-
#
|
41
|
-
|
37
|
+
# location/BigQuery table. For Cloud Storage location destinations, the
|
38
|
+
# output format is newline-delimited JSON. Each line represents a
|
39
|
+
# [google.cloud.asset.v1.Asset][google.cloud.asset.v1.Asset] in the JSON format; for BigQuery table
|
40
|
+
# destinations, the output table stores the fields in asset proto as columns.
|
41
|
+
# This API implements the [google.longrunning.Operation][google.longrunning.Operation] API
|
42
|
+
# , which allows you to keep track of the export. We recommend intervals of
|
43
|
+
# at least 2 seconds with exponential retry to poll the export operation
|
44
|
+
# result. For regular-size resource parent, the export operation usually
|
45
|
+
# finishes within 5 minutes.
|
46
|
+
rpc :ExportAssets, Google::Cloud::Asset::V1::ExportAssetsRequest, Google::Longrunning::Operation
|
42
47
|
# Batch gets the update history of assets that overlap a time window.
|
43
|
-
# For RESOURCE content, this API outputs history with asset in both
|
44
|
-
# non-delete or deleted status.
|
45
48
|
# For IAM_POLICY content, this API outputs history when the asset and its
|
46
49
|
# attached IAM POLICY both exist. This can create gaps in the output history.
|
50
|
+
# Otherwise, this API outputs history with asset in both non-delete or
|
51
|
+
# deleted status.
|
47
52
|
# If a specified asset does not exist, this API returns an INVALID_ARGUMENT
|
48
53
|
# error.
|
49
|
-
rpc :BatchGetAssetsHistory, BatchGetAssetsHistoryRequest, BatchGetAssetsHistoryResponse
|
54
|
+
rpc :BatchGetAssetsHistory, Google::Cloud::Asset::V1::BatchGetAssetsHistoryRequest, Google::Cloud::Asset::V1::BatchGetAssetsHistoryResponse
|
50
55
|
# Creates a feed in a parent project/folder/organization to listen to its
|
51
56
|
# asset updates.
|
52
|
-
rpc :CreateFeed, CreateFeedRequest, Feed
|
57
|
+
rpc :CreateFeed, Google::Cloud::Asset::V1::CreateFeedRequest, Google::Cloud::Asset::V1::Feed
|
53
58
|
# Gets details about an asset feed.
|
54
|
-
rpc :GetFeed, GetFeedRequest, Feed
|
59
|
+
rpc :GetFeed, Google::Cloud::Asset::V1::GetFeedRequest, Google::Cloud::Asset::V1::Feed
|
55
60
|
# Lists all asset feeds in a parent project/folder/organization.
|
56
|
-
rpc :ListFeeds, ListFeedsRequest, ListFeedsResponse
|
61
|
+
rpc :ListFeeds, Google::Cloud::Asset::V1::ListFeedsRequest, Google::Cloud::Asset::V1::ListFeedsResponse
|
57
62
|
# Updates an asset feed configuration.
|
58
|
-
rpc :UpdateFeed, UpdateFeedRequest, Feed
|
63
|
+
rpc :UpdateFeed, Google::Cloud::Asset::V1::UpdateFeedRequest, Google::Cloud::Asset::V1::Feed
|
59
64
|
# Deletes an asset feed.
|
60
|
-
rpc :DeleteFeed, DeleteFeedRequest, Google::Protobuf::Empty
|
61
|
-
# Searches all
|
62
|
-
#
|
63
|
-
#
|
65
|
+
rpc :DeleteFeed, Google::Cloud::Asset::V1::DeleteFeedRequest, Google::Protobuf::Empty
|
66
|
+
# Searches all Cloud resources within the specified scope, such as a project,
|
67
|
+
# folder, or organization. The caller must be granted the
|
68
|
+
# `cloudasset.assets.searchAllResources` permission on the desired scope,
|
64
69
|
# otherwise the request will be rejected.
|
65
|
-
rpc :SearchAllResources, SearchAllResourcesRequest, SearchAllResourcesResponse
|
66
|
-
# Searches all
|
67
|
-
#
|
68
|
-
#
|
70
|
+
rpc :SearchAllResources, Google::Cloud::Asset::V1::SearchAllResourcesRequest, Google::Cloud::Asset::V1::SearchAllResourcesResponse
|
71
|
+
# Searches all IAM policies within the specified scope, such as a project,
|
72
|
+
# folder, or organization. The caller must be granted the
|
73
|
+
# `cloudasset.assets.searchAllIamPolicies` permission on the desired scope,
|
69
74
|
# otherwise the request will be rejected.
|
70
|
-
rpc :SearchAllIamPolicies, SearchAllIamPoliciesRequest, SearchAllIamPoliciesResponse
|
75
|
+
rpc :SearchAllIamPolicies, Google::Cloud::Asset::V1::SearchAllIamPoliciesRequest, Google::Cloud::Asset::V1::SearchAllIamPoliciesResponse
|
76
|
+
# Analyzes IAM policies to answer which identities have what accesses on
|
77
|
+
# which resources.
|
78
|
+
rpc :AnalyzeIamPolicy, Google::Cloud::Asset::V1::AnalyzeIamPolicyRequest, Google::Cloud::Asset::V1::AnalyzeIamPolicyResponse
|
79
|
+
# Exports the answers of which identities have what accesses on which
|
80
|
+
# resources to a Google Cloud Storage or a BigQuery destination. For Cloud
|
81
|
+
# Storage destination, the output format is the JSON format that represents a
|
82
|
+
# [google.cloud.asset.v1.AnalyzeIamPolicyResponse][google.cloud.asset.v1.AnalyzeIamPolicyResponse].
|
83
|
+
# This method implements the
|
84
|
+
# [google.longrunning.Operation][google.longrunning.Operation], which allows
|
85
|
+
# you to track the export status. We recommend intervals of at least 2
|
86
|
+
# seconds with exponential retry to poll the export operation result. The
|
87
|
+
# metadata contains the request to help callers to map responses to requests.
|
88
|
+
rpc :ExportIamPolicyAnalysis, Google::Cloud::Asset::V1::ExportIamPolicyAnalysisRequest, Google::Longrunning::Operation
|
71
89
|
end
|
72
90
|
|
73
91
|
Stub = Service.rpc_stub_class
|
@@ -3,28 +3,37 @@
|
|
3
3
|
|
4
4
|
require 'google/protobuf'
|
5
5
|
|
6
|
-
require 'google/api/annotations_pb'
|
7
6
|
require 'google/api/resource_pb'
|
8
7
|
require 'google/cloud/orgpolicy/v1/orgpolicy_pb'
|
9
8
|
require 'google/iam/v1/policy_pb'
|
10
9
|
require 'google/identity/accesscontextmanager/v1/access_level_pb'
|
11
10
|
require 'google/identity/accesscontextmanager/v1/access_policy_pb'
|
12
11
|
require 'google/identity/accesscontextmanager/v1/service_perimeter_pb'
|
13
|
-
require 'google/protobuf/any_pb'
|
14
12
|
require 'google/protobuf/struct_pb'
|
15
13
|
require 'google/protobuf/timestamp_pb'
|
14
|
+
require 'google/rpc/code_pb'
|
16
15
|
Google::Protobuf::DescriptorPool.generated_pool.build do
|
17
16
|
add_file("google/cloud/asset/v1/assets.proto", :syntax => :proto3) do
|
18
17
|
add_message "google.cloud.asset.v1.TemporalAsset" do
|
19
18
|
optional :window, :message, 1, "google.cloud.asset.v1.TimeWindow"
|
20
19
|
optional :deleted, :bool, 2
|
21
20
|
optional :asset, :message, 3, "google.cloud.asset.v1.Asset"
|
21
|
+
optional :prior_asset_state, :enum, 4, "google.cloud.asset.v1.TemporalAsset.PriorAssetState"
|
22
|
+
optional :prior_asset, :message, 5, "google.cloud.asset.v1.Asset"
|
23
|
+
end
|
24
|
+
add_enum "google.cloud.asset.v1.TemporalAsset.PriorAssetState" do
|
25
|
+
value :PRIOR_ASSET_STATE_UNSPECIFIED, 0
|
26
|
+
value :PRESENT, 1
|
27
|
+
value :INVALID, 2
|
28
|
+
value :DOES_NOT_EXIST, 3
|
29
|
+
value :DELETED, 4
|
22
30
|
end
|
23
31
|
add_message "google.cloud.asset.v1.TimeWindow" do
|
24
32
|
optional :start_time, :message, 1, "google.protobuf.Timestamp"
|
25
33
|
optional :end_time, :message, 2, "google.protobuf.Timestamp"
|
26
34
|
end
|
27
35
|
add_message "google.cloud.asset.v1.Asset" do
|
36
|
+
optional :update_time, :message, 11, "google.protobuf.Timestamp"
|
28
37
|
optional :name, :string, 1
|
29
38
|
optional :asset_type, :string, 2
|
30
39
|
optional :resource, :message, 3, "google.cloud.asset.v1.Resource"
|
@@ -69,6 +78,45 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
|
|
69
78
|
add_message "google.cloud.asset.v1.IamPolicySearchResult.Explanation.Permissions" do
|
70
79
|
repeated :permissions, :string, 1
|
71
80
|
end
|
81
|
+
add_message "google.cloud.asset.v1.IamPolicyAnalysisState" do
|
82
|
+
optional :code, :enum, 1, "google.rpc.Code"
|
83
|
+
optional :cause, :string, 2
|
84
|
+
end
|
85
|
+
add_message "google.cloud.asset.v1.IamPolicyAnalysisResult" do
|
86
|
+
optional :attached_resource_full_name, :string, 1
|
87
|
+
optional :iam_binding, :message, 2, "google.iam.v1.Binding"
|
88
|
+
repeated :access_control_lists, :message, 3, "google.cloud.asset.v1.IamPolicyAnalysisResult.AccessControlList"
|
89
|
+
optional :identity_list, :message, 4, "google.cloud.asset.v1.IamPolicyAnalysisResult.IdentityList"
|
90
|
+
optional :fully_explored, :bool, 5
|
91
|
+
end
|
92
|
+
add_message "google.cloud.asset.v1.IamPolicyAnalysisResult.Resource" do
|
93
|
+
optional :full_resource_name, :string, 1
|
94
|
+
optional :analysis_state, :message, 2, "google.cloud.asset.v1.IamPolicyAnalysisState"
|
95
|
+
end
|
96
|
+
add_message "google.cloud.asset.v1.IamPolicyAnalysisResult.Access" do
|
97
|
+
optional :analysis_state, :message, 3, "google.cloud.asset.v1.IamPolicyAnalysisState"
|
98
|
+
oneof :oneof_access do
|
99
|
+
optional :role, :string, 1
|
100
|
+
optional :permission, :string, 2
|
101
|
+
end
|
102
|
+
end
|
103
|
+
add_message "google.cloud.asset.v1.IamPolicyAnalysisResult.Identity" do
|
104
|
+
optional :name, :string, 1
|
105
|
+
optional :analysis_state, :message, 2, "google.cloud.asset.v1.IamPolicyAnalysisState"
|
106
|
+
end
|
107
|
+
add_message "google.cloud.asset.v1.IamPolicyAnalysisResult.Edge" do
|
108
|
+
optional :source_node, :string, 1
|
109
|
+
optional :target_node, :string, 2
|
110
|
+
end
|
111
|
+
add_message "google.cloud.asset.v1.IamPolicyAnalysisResult.AccessControlList" do
|
112
|
+
repeated :resources, :message, 1, "google.cloud.asset.v1.IamPolicyAnalysisResult.Resource"
|
113
|
+
repeated :accesses, :message, 2, "google.cloud.asset.v1.IamPolicyAnalysisResult.Access"
|
114
|
+
repeated :resource_edges, :message, 3, "google.cloud.asset.v1.IamPolicyAnalysisResult.Edge"
|
115
|
+
end
|
116
|
+
add_message "google.cloud.asset.v1.IamPolicyAnalysisResult.IdentityList" do
|
117
|
+
repeated :identities, :message, 1, "google.cloud.asset.v1.IamPolicyAnalysisResult.Identity"
|
118
|
+
repeated :group_edges, :message, 2, "google.cloud.asset.v1.IamPolicyAnalysisResult.Edge"
|
119
|
+
end
|
72
120
|
end
|
73
121
|
end
|
74
122
|
|
@@ -77,6 +125,7 @@ module Google
|
|
77
125
|
module Asset
|
78
126
|
module V1
|
79
127
|
TemporalAsset = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.TemporalAsset").msgclass
|
128
|
+
TemporalAsset::PriorAssetState = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.TemporalAsset.PriorAssetState").enummodule
|
80
129
|
TimeWindow = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.TimeWindow").msgclass
|
81
130
|
Asset = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.Asset").msgclass
|
82
131
|
Resource = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.Resource").msgclass
|
@@ -84,6 +133,14 @@ module Google
|
|
84
133
|
IamPolicySearchResult = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.IamPolicySearchResult").msgclass
|
85
134
|
IamPolicySearchResult::Explanation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.IamPolicySearchResult.Explanation").msgclass
|
86
135
|
IamPolicySearchResult::Explanation::Permissions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.IamPolicySearchResult.Explanation.Permissions").msgclass
|
136
|
+
IamPolicyAnalysisState = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.IamPolicyAnalysisState").msgclass
|
137
|
+
IamPolicyAnalysisResult = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.IamPolicyAnalysisResult").msgclass
|
138
|
+
IamPolicyAnalysisResult::Resource = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.IamPolicyAnalysisResult.Resource").msgclass
|
139
|
+
IamPolicyAnalysisResult::Access = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.IamPolicyAnalysisResult.Access").msgclass
|
140
|
+
IamPolicyAnalysisResult::Identity = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.IamPolicyAnalysisResult.Identity").msgclass
|
141
|
+
IamPolicyAnalysisResult::Edge = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.IamPolicyAnalysisResult.Edge").msgclass
|
142
|
+
IamPolicyAnalysisResult::AccessControlList = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.IamPolicyAnalysisResult.AccessControlList").msgclass
|
143
|
+
IamPolicyAnalysisResult::IdentityList = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.asset.v1.IamPolicyAnalysisResult.IdentityList").msgclass
|
87
144
|
end
|
88
145
|
end
|
89
146
|
end
|
@@ -37,9 +37,22 @@ module Google
|
|
37
37
|
# running the same query may get different results.
|
38
38
|
# @!attribute [rw] asset_types
|
39
39
|
# @return [::Array<::String>]
|
40
|
-
# A list of asset types
|
41
|
-
# "compute.googleapis.com/Disk".
|
42
|
-
#
|
40
|
+
# A list of asset types to take a snapshot for. For example:
|
41
|
+
# "compute.googleapis.com/Disk".
|
42
|
+
#
|
43
|
+
# Regular expressions are also supported. For example:
|
44
|
+
#
|
45
|
+
# * "compute.googleapis.com.*" snapshots resources whose asset type starts
|
46
|
+
# with "compute.googleapis.com".
|
47
|
+
# * ".*Instance" snapshots resources whose asset type ends with "Instance".
|
48
|
+
# * ".*Instance.*" snapshots resources whose asset type contains "Instance".
|
49
|
+
#
|
50
|
+
# See [RE2](https://github.com/google/re2/wiki/Syntax) for all supported
|
51
|
+
# regular expression syntax. If the regular expression does not match any
|
52
|
+
# supported asset type, an INVALID_ARGUMENT error will be returned.
|
53
|
+
#
|
54
|
+
# If specified, only matching assets will be returned, otherwise, it will
|
55
|
+
# snapshot all asset types. See [Introduction to Cloud Asset
|
43
56
|
# Inventory](https://cloud.google.com/asset-inventory/docs/overview)
|
44
57
|
# for all supported asset types.
|
45
58
|
# @!attribute [rw] content_type
|
@@ -48,25 +61,28 @@ module Google
|
|
48
61
|
# returned.
|
49
62
|
# @!attribute [rw] output_config
|
50
63
|
# @return [::Google::Cloud::Asset::V1::OutputConfig]
|
51
|
-
# Required. Output configuration indicating where the results will be output
|
52
|
-
# to. All results will be in newline delimited JSON format.
|
64
|
+
# Required. Output configuration indicating where the results will be output to.
|
53
65
|
class ExportAssetsRequest
|
54
66
|
include ::Google::Protobuf::MessageExts
|
55
67
|
extend ::Google::Protobuf::MessageExts::ClassMethods
|
56
68
|
end
|
57
69
|
|
58
70
|
# The export asset response. This message is returned by the
|
59
|
-
# google.longrunning.Operations.GetOperation
|
60
|
-
#
|
61
|
-
# {::Google::Longrunning::Operation#response google.longrunning.Operation.response}
|
62
|
-
# field.
|
71
|
+
# google.longrunning.Operations.GetOperation method in the returned
|
72
|
+
# {::Google::Longrunning::Operation#response google.longrunning.Operation.response} field.
|
63
73
|
# @!attribute [rw] read_time
|
64
74
|
# @return [::Google::Protobuf::Timestamp]
|
65
75
|
# Time the snapshot was taken.
|
66
76
|
# @!attribute [rw] output_config
|
67
77
|
# @return [::Google::Cloud::Asset::V1::OutputConfig]
|
68
78
|
# Output configuration indicating where the results were output to.
|
69
|
-
#
|
79
|
+
# @!attribute [rw] output_result
|
80
|
+
# @return [::Google::Cloud::Asset::V1::OutputResult]
|
81
|
+
# Output result indicating where the assets were exported to. For example, a
|
82
|
+
# set of actual Google Cloud Storage object uris where the assets are
|
83
|
+
# exported to. The uris can be different from what [output_config] has
|
84
|
+
# specified, as the service will split the output object into multiple ones
|
85
|
+
# once it exceeds a single Google Cloud Storage object limit.
|
70
86
|
class ExportAssetsResponse
|
71
87
|
include ::Google::Protobuf::MessageExts
|
72
88
|
extend ::Google::Protobuf::MessageExts::ClassMethods
|
@@ -80,13 +96,11 @@ module Google
|
|
80
96
|
# "projects/my-project-id")", or a project number (such as "projects/12345").
|
81
97
|
# @!attribute [rw] asset_names
|
82
98
|
# @return [::Array<::String>]
|
83
|
-
# A list of the full names of the assets.
|
99
|
+
# A list of the full names of the assets.
|
100
|
+
# See: https://cloud.google.com/asset-inventory/docs/resource-name-format
|
101
|
+
# Example:
|
102
|
+
#
|
84
103
|
# `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1`.
|
85
|
-
# See [Resource
|
86
|
-
# Names](https://cloud.google.com/apis/design/resource_names#full_resource_name)
|
87
|
-
# and [Resource Name
|
88
|
-
# Format](https://cloud.google.com/asset-inventory/docs/resource-name-format)
|
89
|
-
# for more info.
|
90
104
|
#
|
91
105
|
# The request becomes a no-op if the asset name list is empty, and the max
|
92
106
|
# size of the asset name list is 100 in one request.
|
@@ -129,8 +143,9 @@ module Google
|
|
129
143
|
# be unique under a specific parent project/folder/organization.
|
130
144
|
# @!attribute [rw] feed
|
131
145
|
# @return [::Google::Cloud::Asset::V1::Feed]
|
132
|
-
# Required. The feed details. The field `name` must be empty and it will be
|
133
|
-
#
|
146
|
+
# Required. The feed details. The field `name` must be empty and it will be generated
|
147
|
+
# in the format of:
|
148
|
+
# projects/project_number/feeds/feed_id
|
134
149
|
# folders/folder_number/feeds/feed_id
|
135
150
|
# organizations/organization_number/feeds/feed_id
|
136
151
|
class CreateFeedRequest
|
@@ -172,8 +187,8 @@ module Google
|
|
172
187
|
# Update asset feed request.
|
173
188
|
# @!attribute [rw] feed
|
174
189
|
# @return [::Google::Cloud::Asset::V1::Feed]
|
175
|
-
# Required. The new values of feed details. It must match an existing feed
|
176
|
-
#
|
190
|
+
# Required. The new values of feed details. It must match an existing feed and the
|
191
|
+
# field `name` must be in the format of:
|
177
192
|
# projects/project_number/feeds/feed_id or
|
178
193
|
# folders/folder_number/feeds/feed_id or
|
179
194
|
# organizations/organization_number/feeds/feed_id.
|
@@ -205,28 +220,45 @@ module Google
|
|
205
220
|
# @!attribute [rw] bigquery_destination
|
206
221
|
# @return [::Google::Cloud::Asset::V1::BigQueryDestination]
|
207
222
|
# Destination on BigQuery. The output table stores the fields in asset
|
208
|
-
# proto as columns in BigQuery.
|
209
|
-
# to a record with each field to a column, except metadata to a single JSON
|
210
|
-
# string.
|
223
|
+
# proto as columns in BigQuery.
|
211
224
|
class OutputConfig
|
212
225
|
include ::Google::Protobuf::MessageExts
|
213
226
|
extend ::Google::Protobuf::MessageExts::ClassMethods
|
214
227
|
end
|
215
228
|
|
229
|
+
# Output result of export assets.
|
230
|
+
# @!attribute [rw] gcs_result
|
231
|
+
# @return [::Google::Cloud::Asset::V1::GcsOutputResult]
|
232
|
+
# Export result on Cloud Storage.
|
233
|
+
class OutputResult
|
234
|
+
include ::Google::Protobuf::MessageExts
|
235
|
+
extend ::Google::Protobuf::MessageExts::ClassMethods
|
236
|
+
end
|
237
|
+
|
238
|
+
# A Cloud Storage output result.
|
239
|
+
# @!attribute [rw] uris
|
240
|
+
# @return [::Array<::String>]
|
241
|
+
# List of uris of the Cloud Storage objects. Example:
|
242
|
+
# "gs://bucket_name/object_name".
|
243
|
+
class GcsOutputResult
|
244
|
+
include ::Google::Protobuf::MessageExts
|
245
|
+
extend ::Google::Protobuf::MessageExts::ClassMethods
|
246
|
+
end
|
247
|
+
|
216
248
|
# A Cloud Storage location.
|
217
249
|
# @!attribute [rw] uri
|
218
250
|
# @return [::String]
|
219
251
|
# The uri of the Cloud Storage object. It's the same uri that is used by
|
220
|
-
# gsutil.
|
252
|
+
# gsutil. Example: "gs://bucket_name/object_name". See [Viewing and
|
221
253
|
# Editing Object
|
222
254
|
# Metadata](https://cloud.google.com/storage/docs/viewing-editing-metadata)
|
223
255
|
# for more information.
|
224
256
|
# @!attribute [rw] uri_prefix
|
225
257
|
# @return [::String]
|
226
|
-
# The uri prefix of all generated Cloud Storage objects.
|
258
|
+
# The uri prefix of all generated Cloud Storage objects. Example:
|
227
259
|
# "gs://bucket_name/object_name_prefix". Each object uri is in format:
|
228
260
|
# "gs://bucket_name/object_name_prefix/<asset type>/<shard number> and only
|
229
|
-
# contains assets for that type. <shard number> starts from 0.
|
261
|
+
# contains assets for that type. <shard number> starts from 0. Example:
|
230
262
|
# "gs://bucket_name/object_name_prefix/compute.googleapis.com/Disk/0" is
|
231
263
|
# the first shard of output objects containing all
|
232
264
|
# compute.googleapis.com/Disk assets. An INVALID_ARGUMENT error will be
|
@@ -237,7 +269,7 @@ module Google
|
|
237
269
|
extend ::Google::Protobuf::MessageExts::ClassMethods
|
238
270
|
end
|
239
271
|
|
240
|
-
# A BigQuery destination.
|
272
|
+
# A BigQuery destination for exporting assets to.
|
241
273
|
# @!attribute [rw] dataset
|
242
274
|
# @return [::String]
|
243
275
|
# Required. The BigQuery dataset in format
|
@@ -264,7 +296,7 @@ module Google
|
|
264
296
|
# @!attribute [rw] topic
|
265
297
|
# @return [::String]
|
266
298
|
# The name of the Pub/Sub topic to publish to.
|
267
|
-
#
|
299
|
+
# Example: `projects/PROJECT_ID/topics/TOPIC_ID`.
|
268
300
|
class PubsubDestination
|
269
301
|
include ::Google::Protobuf::MessageExts
|
270
302
|
extend ::Google::Protobuf::MessageExts::ClassMethods
|
@@ -297,8 +329,8 @@ module Google
|
|
297
329
|
# @return [::Array<::String>]
|
298
330
|
# A list of the full names of the assets to receive updates. You must specify
|
299
331
|
# either or both of asset_names and asset_types. Only asset updates matching
|
300
|
-
# specified asset_names
|
301
|
-
#
|
332
|
+
# specified asset_names or asset_types are exported to the feed.
|
333
|
+
# Example:
|
302
334
|
# `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1`.
|
303
335
|
# See [Resource
|
304
336
|
# Names](https://cloud.google.com/apis/design/resource_names#full_resource_name)
|
@@ -307,8 +339,8 @@ module Google
|
|
307
339
|
# @return [::Array<::String>]
|
308
340
|
# A list of types of the assets to receive updates. You must specify either
|
309
341
|
# or both of asset_names and asset_types. Only asset updates matching
|
310
|
-
# specified asset_names
|
311
|
-
#
|
342
|
+
# specified asset_names or asset_types are exported to the feed.
|
343
|
+
# Example: `"compute.googleapis.com/Disk"`
|
312
344
|
#
|
313
345
|
# See [this
|
314
346
|
# topic](https://cloud.google.com/asset-inventory/docs/supported-asset-types)
|
@@ -321,6 +353,20 @@ module Google
|
|
321
353
|
# @return [::Google::Cloud::Asset::V1::FeedOutputConfig]
|
322
354
|
# Required. Feed output configuration defining where the asset updates are
|
323
355
|
# published to.
|
356
|
+
# @!attribute [rw] condition
|
357
|
+
# @return [::Google::Type::Expr]
|
358
|
+
# A condition which determines whether an asset update should be published.
|
359
|
+
# If specified, an asset will be returned only when the expression evaluates
|
360
|
+
# to true.
|
361
|
+
# When set, `expression` field in the `Expr` must be a valid [CEL expression]
|
362
|
+
# (https://github.com/google/cel-spec) on a TemporalAsset with name
|
363
|
+
# `temporal_asset`. Example: a Feed with expression ("temporal_asset.deleted
|
364
|
+
# == true") will only publish Asset deletions. Other fields of `Expr` are
|
365
|
+
# optional.
|
366
|
+
#
|
367
|
+
# See our [user
|
368
|
+
# guide](https://cloud.google.com/asset-inventory/docs/monitoring-asset-changes#feed_with_condition)
|
369
|
+
# for detailed instructions.
|
324
370
|
class Feed
|
325
371
|
include ::Google::Protobuf::MessageExts
|
326
372
|
extend ::Google::Protobuf::MessageExts::ClassMethods
|
@@ -329,75 +375,81 @@ module Google
|
|
329
375
|
# Search all resources request.
|
330
376
|
# @!attribute [rw] scope
|
331
377
|
# @return [::String]
|
332
|
-
# Required. A scope can be a project, a folder or an organization. The search
|
333
|
-
#
|
378
|
+
# Required. A scope can be a project, a folder, or an organization. The search is
|
379
|
+
# limited to the resources within the `scope`. The caller must be granted the
|
380
|
+
# [`cloudasset.assets.searchAllResources`](http://cloud.google.com/asset-inventory/docs/access-control#required_permissions)
|
381
|
+
# permission on the desired scope.
|
334
382
|
#
|
335
383
|
# The allowed values are:
|
336
384
|
#
|
337
|
-
# * projects/\\{PROJECT_ID}
|
338
|
-
# * projects/\\{PROJECT_NUMBER}
|
339
|
-
# * folders/\\{FOLDER_NUMBER}
|
340
|
-
# * organizations/\\{ORGANIZATION_NUMBER}
|
385
|
+
# * projects/\\{PROJECT_ID} (e.g., "projects/foo-bar")
|
386
|
+
# * projects/\\{PROJECT_NUMBER} (e.g., "projects/12345678")
|
387
|
+
# * folders/\\{FOLDER_NUMBER} (e.g., "folders/1234567")
|
388
|
+
# * organizations/\\{ORGANIZATION_NUMBER} (e.g., "organizations/123456")
|
341
389
|
# @!attribute [rw] query
|
342
390
|
# @return [::String]
|
343
|
-
# Optional. The query statement.
|
344
|
-
#
|
391
|
+
# Optional. The query statement. See [how to construct a
|
392
|
+
# query](http://cloud.google.com/asset-inventory/docs/searching-resources#how_to_construct_a_query)
|
393
|
+
# for more information. If not specified or empty, it will search all the
|
394
|
+
# resources within the specified `scope`. Note that the query string is
|
395
|
+
# compared against each Cloud IAM policy binding, including its members,
|
396
|
+
# roles, and Cloud IAM conditions. The returned Cloud IAM policies will only
|
397
|
+
# contain the bindings that match your query. To learn more about the IAM
|
398
|
+
# policy structure, see [IAM policy
|
399
|
+
# doc](https://cloud.google.com/iam/docs/policies#structure).
|
345
400
|
#
|
346
401
|
# Examples:
|
347
402
|
#
|
348
|
-
# * `name
|
403
|
+
# * `name:Important` to find Cloud resources whose name contains
|
349
404
|
# "Important" as a word.
|
350
|
-
# * `displayName
|
351
|
-
# contains "Impor" as a
|
352
|
-
# * `description
|
405
|
+
# * `displayName:Impor*` to find Cloud resources whose display name
|
406
|
+
# contains "Impor" as a prefix.
|
407
|
+
# * `description:*por*` to find Cloud resources whose description
|
353
408
|
# contains "por" as a substring.
|
354
|
-
# * `location
|
409
|
+
# * `location:us-west*` to find Cloud resources whose location is
|
355
410
|
# prefixed with "us-west".
|
356
|
-
# * `labels
|
411
|
+
# * `labels:prod` to find Cloud resources whose labels contain "prod" as
|
357
412
|
# a key or value.
|
358
|
-
# * `labels.env
|
413
|
+
# * `labels.env:prod` to find Cloud resources that have a label "env"
|
359
414
|
# and its value is "prod".
|
360
|
-
# * `labels.env
|
361
|
-
# * `
|
415
|
+
# * `labels.env:*` to find Cloud resources that have a label "env".
|
416
|
+
# * `Important` to find Cloud resources that contain "Important" as a word
|
362
417
|
# in any of the searchable fields.
|
363
|
-
# * `
|
418
|
+
# * `Impor*` to find Cloud resources that contain "Impor" as a prefix
|
364
419
|
# in any of the searchable fields.
|
365
|
-
# *
|
420
|
+
# * `*por*` to find Cloud resources that contain "por" as a substring in
|
366
421
|
# any of the searchable fields.
|
367
|
-
# * `
|
368
|
-
# resources
|
422
|
+
# * `Important location:(us-west1 OR global)` to find Cloud
|
423
|
+
# resources that contain "Important" as a word in any of the searchable
|
369
424
|
# fields and are also located in the "us-west1" region or the "global"
|
370
425
|
# location.
|
371
|
-
#
|
372
|
-
# See [how to construct a
|
373
|
-
# query](https://cloud.google.com/asset-inventory/docs/searching-resources#how_to_construct_a_query)
|
374
|
-
# for more details.
|
375
426
|
# @!attribute [rw] asset_types
|
376
427
|
# @return [::Array<::String>]
|
377
|
-
# Optional. A list of asset types that this request searches for. If empty,
|
378
|
-
#
|
428
|
+
# Optional. A list of asset types that this request searches for. If empty, it will
|
429
|
+
# search all the [searchable asset
|
379
430
|
# types](https://cloud.google.com/asset-inventory/docs/supported-asset-types#searchable_asset_types).
|
380
431
|
# @!attribute [rw] page_size
|
381
432
|
# @return [::Integer]
|
382
|
-
# Optional. The page size for search result pagination. Page size is capped
|
383
|
-
#
|
384
|
-
#
|
385
|
-
#
|
386
|
-
# returned.
|
433
|
+
# Optional. The page size for search result pagination. Page size is capped at 500 even
|
434
|
+
# if a larger value is given. If set to zero, server will pick an appropriate
|
435
|
+
# default. Returned results may be fewer than requested. When this happens,
|
436
|
+
# there could be more results as long as `next_page_token` is returned.
|
387
437
|
# @!attribute [rw] page_token
|
388
438
|
# @return [::String]
|
389
|
-
# Optional. If present, then retrieve the next batch of results from the
|
390
|
-
#
|
391
|
-
#
|
392
|
-
#
|
439
|
+
# Optional. If present, then retrieve the next batch of results from the preceding call
|
440
|
+
# to this method. `page_token` must be the value of `next_page_token` from
|
441
|
+
# the previous response. The values of all other method parameters, must be
|
442
|
+
# identical to those in the previous call.
|
393
443
|
# @!attribute [rw] order_by
|
394
444
|
# @return [::String]
|
395
|
-
# Optional. A comma separated list of fields specifying the sorting order of
|
396
|
-
#
|
397
|
-
#
|
398
|
-
# Example: "location DESC, name".
|
399
|
-
#
|
400
|
-
#
|
445
|
+
# Optional. A comma separated list of fields specifying the sorting order of the
|
446
|
+
# results. The default order is ascending. Add " DESC" after the field name
|
447
|
+
# to indicate descending order. Redundant space characters are ignored.
|
448
|
+
# Example: "location DESC, name". Only string fields in the response are
|
449
|
+
# sortable, including `name`, `displayName`, `description`, `location`. All
|
450
|
+
# the other fields such as repeated fields (e.g., `networkTags`), map
|
451
|
+
# fields (e.g., `labels`) and struct fields (e.g., `additionalAttributes`)
|
452
|
+
# are not supported.
|
401
453
|
class SearchAllResourcesRequest
|
402
454
|
include ::Google::Protobuf::MessageExts
|
403
455
|
extend ::Google::Protobuf::MessageExts::ClassMethods
|
@@ -421,51 +473,58 @@ module Google
|
|
421
473
|
# Search all IAM policies request.
|
422
474
|
# @!attribute [rw] scope
|
423
475
|
# @return [::String]
|
424
|
-
# Required. A scope can be a project, a folder or an organization. The search
|
425
|
-
#
|
476
|
+
# Required. A scope can be a project, a folder, or an organization. The search is
|
477
|
+
# limited to the IAM policies within the `scope`. The caller must be granted
|
478
|
+
# the
|
479
|
+
# [`cloudasset.assets.searchAllIamPolicies`](http://cloud.google.com/asset-inventory/docs/access-control#required_permissions)
|
480
|
+
# permission on the desired scope.
|
426
481
|
#
|
427
482
|
# The allowed values are:
|
428
483
|
#
|
429
|
-
# * projects/\\{PROJECT_ID}
|
430
|
-
# * projects/\\{PROJECT_NUMBER}
|
431
|
-
# * folders/\\{FOLDER_NUMBER}
|
432
|
-
# * organizations/\\{ORGANIZATION_NUMBER}
|
484
|
+
# * projects/\\{PROJECT_ID} (e.g., "projects/foo-bar")
|
485
|
+
# * projects/\\{PROJECT_NUMBER} (e.g., "projects/12345678")
|
486
|
+
# * folders/\\{FOLDER_NUMBER} (e.g., "folders/1234567")
|
487
|
+
# * organizations/\\{ORGANIZATION_NUMBER} (e.g., "organizations/123456")
|
433
488
|
# @!attribute [rw] query
|
434
489
|
# @return [::String]
|
435
|
-
# Optional. The query statement.
|
436
|
-
#
|
490
|
+
# Optional. The query statement. See [how to construct a
|
491
|
+
# query](https://cloud.google.com/asset-inventory/docs/searching-iam-policies#how_to_construct_a_query)
|
492
|
+
# for more information. If not specified or empty, it will search all the
|
493
|
+
# IAM policies within the specified `scope`.
|
437
494
|
#
|
438
495
|
# Examples:
|
439
496
|
#
|
440
|
-
# * `policy
|
441
|
-
#
|
442
|
-
# * `policy
|
443
|
-
#
|
444
|
-
# * `policy.role.permissions
|
445
|
-
#
|
446
|
-
# permission.
|
447
|
-
#
|
448
|
-
#
|
449
|
-
# * `
|
450
|
-
#
|
451
|
-
#
|
452
|
-
#
|
453
|
-
#
|
454
|
-
#
|
455
|
-
#
|
497
|
+
# * `policy:amy@gmail.com` to find IAM policy bindings that specify user
|
498
|
+
# "amy@gmail.com".
|
499
|
+
# * `policy:roles/compute.admin` to find IAM policy bindings that specify
|
500
|
+
# the Compute Admin role.
|
501
|
+
# * `policy.role.permissions:storage.buckets.update` to find IAM policy
|
502
|
+
# bindings that specify a role containing "storage.buckets.update"
|
503
|
+
# permission. Note that if callers don't have `iam.roles.get` access to a
|
504
|
+
# role's included permissions, policy bindings that specify this role will
|
505
|
+
# be dropped from the search results.
|
506
|
+
# * `resource:organizations/123456` to find IAM policy bindings
|
507
|
+
# that are set on "organizations/123456".
|
508
|
+
# * `Important` to find IAM policy bindings that contain "Important" as a
|
509
|
+
# word in any of the searchable fields (except for the included
|
510
|
+
# permissions).
|
511
|
+
# * `*por*` to find IAM policy bindings that contain "por" as a substring
|
512
|
+
# in any of the searchable fields (except for the included permissions).
|
513
|
+
# * `resource:(instance1 OR instance2) policy:amy` to find
|
514
|
+
# IAM policy bindings that are set on resources "instance1" or
|
515
|
+
# "instance2" and also specify user "amy".
|
456
516
|
# @!attribute [rw] page_size
|
457
517
|
# @return [::Integer]
|
458
|
-
# Optional. The page size for search result pagination. Page size is capped
|
459
|
-
#
|
460
|
-
#
|
461
|
-
#
|
462
|
-
# returned.
|
518
|
+
# Optional. The page size for search result pagination. Page size is capped at 500 even
|
519
|
+
# if a larger value is given. If set to zero, server will pick an appropriate
|
520
|
+
# default. Returned results may be fewer than requested. When this happens,
|
521
|
+
# there could be more results as long as `next_page_token` is returned.
|
463
522
|
# @!attribute [rw] page_token
|
464
523
|
# @return [::String]
|
465
|
-
# Optional. If present, retrieve the next batch of results from the preceding
|
466
|
-
#
|
467
|
-
#
|
468
|
-
#
|
524
|
+
# Optional. If present, retrieve the next batch of results from the preceding call to
|
525
|
+
# this method. `page_token` must be the value of `next_page_token` from the
|
526
|
+
# previous response. The values of all other method parameters must be
|
527
|
+
# identical to those in the previous call.
|
469
528
|
class SearchAllIamPoliciesRequest
|
470
529
|
include ::Google::Protobuf::MessageExts
|
471
530
|
extend ::Google::Protobuf::MessageExts::ClassMethods
|
@@ -486,6 +545,432 @@ module Google
|
|
486
545
|
extend ::Google::Protobuf::MessageExts::ClassMethods
|
487
546
|
end
|
488
547
|
|
548
|
+
# IAM policy analysis query message.
|
549
|
+
# @!attribute [rw] scope
|
550
|
+
# @return [::String]
|
551
|
+
# The relative name of the root asset. Only resources and IAM policies within
|
552
|
+
# the scope will be analyzed.
|
553
|
+
#
|
554
|
+
# This can only be an organization number (such as "organizations/123"), a
|
555
|
+
# folder number (such as "folders/123"), a project ID (such as
|
556
|
+
# "projects/my-project-id"), or a project number (such as "projects/12345").
|
557
|
+
#
|
558
|
+
# To know how to get organization id, visit [here
|
559
|
+
# ](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id).
|
560
|
+
#
|
561
|
+
# To know how to get folder or project id, visit [here
|
562
|
+
# ](https://cloud.google.com/resource-manager/docs/creating-managing-folders#viewing_or_listing_folders_and_projects).
|
563
|
+
# @!attribute [rw] resource_selector
|
564
|
+
# @return [::Google::Cloud::Asset::V1::IamPolicyAnalysisQuery::ResourceSelector]
|
565
|
+
# Specifies a resource for analysis.
|
566
|
+
# @!attribute [rw] identity_selector
|
567
|
+
# @return [::Google::Cloud::Asset::V1::IamPolicyAnalysisQuery::IdentitySelector]
|
568
|
+
# Specifies an identity for analysis.
|
569
|
+
# @!attribute [rw] access_selector
|
570
|
+
# @return [::Google::Cloud::Asset::V1::IamPolicyAnalysisQuery::AccessSelector]
|
571
|
+
# Specifies roles or permissions for analysis. This is optional.
|
572
|
+
# @!attribute [rw] options
|
573
|
+
# @return [::Google::Cloud::Asset::V1::IamPolicyAnalysisQuery::Options]
|
574
|
+
# The query options.
|
575
|
+
class IamPolicyAnalysisQuery
|
576
|
+
include ::Google::Protobuf::MessageExts
|
577
|
+
extend ::Google::Protobuf::MessageExts::ClassMethods
|
578
|
+
|
579
|
+
# Specifies the resource to analyze for access policies, which may be set
|
580
|
+
# directly on the resource, or on ancestors such as organizations, folders or
|
581
|
+
# projects.
|
582
|
+
# @!attribute [rw] full_resource_name
|
583
|
+
# @return [::String]
|
584
|
+
# The [full resource name]
|
585
|
+
# (https://cloud.google.com/asset-inventory/docs/resource-name-format)
|
586
|
+
# of a resource of [supported resource
|
587
|
+
# types](https://cloud.google.com/asset-inventory/docs/supported-asset-types#analyzable_asset_types).
|
588
|
+
class ResourceSelector
|
589
|
+
include ::Google::Protobuf::MessageExts
|
590
|
+
extend ::Google::Protobuf::MessageExts::ClassMethods
|
591
|
+
end
|
592
|
+
|
593
|
+
# Specifies an identity for which to determine resource access, based on
|
594
|
+
# roles assigned either directly to them or to the groups they belong to,
|
595
|
+
# directly or indirectly.
|
596
|
+
# @!attribute [rw] identity
|
597
|
+
# @return [::String]
|
598
|
+
# The identity appear in the form of members in
|
599
|
+
# [IAM policy
|
600
|
+
# binding](https://cloud.google.com/iam/reference/rest/v1/Binding).
|
601
|
+
#
|
602
|
+
# The examples of supported forms are:
|
603
|
+
# "user:mike@example.com",
|
604
|
+
# "group:admins@example.com",
|
605
|
+
# "domain:google.com",
|
606
|
+
# "serviceAccount:my-project-id@appspot.gserviceaccount.com".
|
607
|
+
#
|
608
|
+
# Notice that wildcard characters (such as * and ?) are not supported.
|
609
|
+
# You must give a specific identity.
|
610
|
+
class IdentitySelector
|
611
|
+
include ::Google::Protobuf::MessageExts
|
612
|
+
extend ::Google::Protobuf::MessageExts::ClassMethods
|
613
|
+
end
|
614
|
+
|
615
|
+
# Specifies roles and/or permissions to analyze, to determine both the
|
616
|
+
# identities possessing them and the resources they control. If multiple
|
617
|
+
# values are specified, results will include roles or permissions matching
|
618
|
+
# any of them.
|
619
|
+
# @!attribute [rw] roles
|
620
|
+
# @return [::Array<::String>]
|
621
|
+
# The roles to appear in result.
|
622
|
+
# @!attribute [rw] permissions
|
623
|
+
# @return [::Array<::String>]
|
624
|
+
# The permissions to appear in result.
|
625
|
+
class AccessSelector
|
626
|
+
include ::Google::Protobuf::MessageExts
|
627
|
+
extend ::Google::Protobuf::MessageExts::ClassMethods
|
628
|
+
end
|
629
|
+
|
630
|
+
# Contains query options.
|
631
|
+
# @!attribute [rw] expand_groups
|
632
|
+
# @return [::Boolean]
|
633
|
+
# If true, the identities section of the result will expand any
|
634
|
+
# Google groups appearing in an IAM policy binding.
|
635
|
+
#
|
636
|
+
# If
|
637
|
+
# {::Google::Cloud::Asset::V1::IamPolicyAnalysisQuery#identity_selector google.cloud.asset.v1.IamPolicyAnalysisQuery.identity_selector}
|
638
|
+
# is specified, the identity in the result will be determined by the
|
639
|
+
# selector, and this flag is not allowed to set.
|
640
|
+
#
|
641
|
+
# Default is false.
|
642
|
+
# @!attribute [rw] expand_roles
|
643
|
+
# @return [::Boolean]
|
644
|
+
# If true, the access section of result will expand any roles
|
645
|
+
# appearing in IAM policy bindings to include their permissions.
|
646
|
+
#
|
647
|
+
# If
|
648
|
+
# {::Google::Cloud::Asset::V1::IamPolicyAnalysisQuery#access_selector google.cloud.asset.v1.IamPolicyAnalysisQuery.access_selector}
|
649
|
+
# is specified, the access section of the result will be determined by the
|
650
|
+
# selector, and this flag is not allowed to set.
|
651
|
+
#
|
652
|
+
# Default is false.
|
653
|
+
# @!attribute [rw] expand_resources
|
654
|
+
# @return [::Boolean]
|
655
|
+
# If true and
|
656
|
+
# {::Google::Cloud::Asset::V1::IamPolicyAnalysisQuery#resource_selector google.cloud.asset.v1.IamPolicyAnalysisQuery.resource_selector}
|
657
|
+
# is not specified, the resource section of the result will expand any
|
658
|
+
# resource attached to an IAM policy to include resources lower in the
|
659
|
+
# resource hierarchy.
|
660
|
+
#
|
661
|
+
# For example, if the request analyzes for which resources user A has
|
662
|
+
# permission P, and the results include an IAM policy with P on a GCP
|
663
|
+
# folder, the results will also include resources in that folder with
|
664
|
+
# permission P.
|
665
|
+
#
|
666
|
+
# If true and
|
667
|
+
# {::Google::Cloud::Asset::V1::IamPolicyAnalysisQuery#resource_selector google.cloud.asset.v1.IamPolicyAnalysisQuery.resource_selector}
|
668
|
+
# is specified, the resource section of the result will expand the
|
669
|
+
# specified resource to include resources lower in the resource hierarchy.
|
670
|
+
#
|
671
|
+
# For example, if the request analyzes for which users have permission P on
|
672
|
+
# a GCP folder with this option enabled, the results will include all users
|
673
|
+
# who have permission P on that folder or any lower resource(ex. project).
|
674
|
+
#
|
675
|
+
# Default is false.
|
676
|
+
# @!attribute [rw] output_resource_edges
|
677
|
+
# @return [::Boolean]
|
678
|
+
# If true, the result will output resource edges, starting
|
679
|
+
# from the policy attached resource, to any expanded resources.
|
680
|
+
# Default is false.
|
681
|
+
# @!attribute [rw] output_group_edges
|
682
|
+
# @return [::Boolean]
|
683
|
+
# If true, the result will output group identity edges, starting
|
684
|
+
# from the binding's group members, to any expanded identities.
|
685
|
+
# Default is false.
|
686
|
+
# @!attribute [rw] analyze_service_account_impersonation
|
687
|
+
# @return [::Boolean]
|
688
|
+
# If true, the response will include access analysis from identities to
|
689
|
+
# resources via service account impersonation. This is a very expensive
|
690
|
+
# operation, because many derived queries will be executed. We highly
|
691
|
+
# recommend you use
|
692
|
+
# {::Google::Cloud::Asset::V1::AssetService::Client#export_iam_policy_analysis google.cloud.asset.v1.AssetService.ExportIamPolicyAnalysis}
|
693
|
+
# rpc instead.
|
694
|
+
#
|
695
|
+
# For example, if the request analyzes for which resources user A has
|
696
|
+
# permission P, and there's an IAM policy states user A has
|
697
|
+
# iam.serviceAccounts.getAccessToken permission to a service account SA,
|
698
|
+
# and there's another IAM policy states service account SA has permission P
|
699
|
+
# to a GCP folder F, then user A potentially has access to the GCP folder
|
700
|
+
# F. And those advanced analysis results will be included in
|
701
|
+
# {::Google::Cloud::Asset::V1::AnalyzeIamPolicyResponse#service_account_impersonation_analysis google.cloud.asset.v1.AnalyzeIamPolicyResponse.service_account_impersonation_analysis}.
|
702
|
+
#
|
703
|
+
# Another example, if the request analyzes for who has
|
704
|
+
# permission P to a GCP folder F, and there's an IAM policy states user A
|
705
|
+
# has iam.serviceAccounts.actAs permission to a service account SA, and
|
706
|
+
# there's another IAM policy states service account SA has permission P to
|
707
|
+
# the GCP folder F, then user A potentially has access to the GCP folder
|
708
|
+
# F. And those advanced analysis results will be included in
|
709
|
+
# {::Google::Cloud::Asset::V1::AnalyzeIamPolicyResponse#service_account_impersonation_analysis google.cloud.asset.v1.AnalyzeIamPolicyResponse.service_account_impersonation_analysis}.
|
710
|
+
#
|
711
|
+
# Default is false.
|
712
|
+
# @!attribute [rw] max_fanouts_per_group
|
713
|
+
# @return [::Integer]
|
714
|
+
# The maximum number of fanouts per group when [expand_groups][expand_groups]
|
715
|
+
# is enabled. This internal field is to help load testing and determine a
|
716
|
+
# proper value, and won't be public in the future.
|
717
|
+
# @!attribute [rw] max_fanouts_per_resource
|
718
|
+
# @return [::Integer]
|
719
|
+
# The maximum number of fanouts per parent resource, such as
|
720
|
+
# GCP Project etc., when [expand_resources][] is enabled. This internal
|
721
|
+
# field is to help load testing and determine a proper value, and won't be
|
722
|
+
# public in the future.
|
723
|
+
class Options
|
724
|
+
include ::Google::Protobuf::MessageExts
|
725
|
+
extend ::Google::Protobuf::MessageExts::ClassMethods
|
726
|
+
end
|
727
|
+
end
|
728
|
+
|
729
|
+
# A request message for
|
730
|
+
# {::Google::Cloud::Asset::V1::AssetService::Client#analyze_iam_policy google.cloud.asset.v1.AssetService.AnalyzeIamPolicy}.
|
731
|
+
# @!attribute [rw] analysis_query
|
732
|
+
# @return [::Google::Cloud::Asset::V1::IamPolicyAnalysisQuery]
|
733
|
+
# The request query.
|
734
|
+
# @!attribute [rw] execution_timeout
|
735
|
+
# @return [::Google::Protobuf::Duration]
|
736
|
+
# Amount of time executable has to complete. See JSON representation of
|
737
|
+
# [Duration](https://developers.google.com/protocol-buffers/docs/proto3#json).
|
738
|
+
#
|
739
|
+
# If this field is set with a value less than the RPC deadline, and the
|
740
|
+
# execution of your query hasn't finished in the specified
|
741
|
+
# execution timeout, you will get a response with partial result.
|
742
|
+
# Otherwise, your query's execution will continue until the RPC deadline.
|
743
|
+
# If it's not finished until then, you will get a DEADLINE_EXCEEDED error.
|
744
|
+
#
|
745
|
+
# Default is empty.
|
746
|
+
#
|
747
|
+
# (-- We had discussion of whether we should have this field in the --)
|
748
|
+
# (-- request or use the RPC deadline instead. We finally choose this --)
|
749
|
+
# (-- approach for the following reasons (detailed in --)
|
750
|
+
# (-- go/analyze-iam-policy-deadlines): --)
|
751
|
+
# (-- * HTTP clients have very limited support of the RPC deadline. --)
|
752
|
+
# (-- There is an X-Server-Timeout header introduced in 2019/09, but --)
|
753
|
+
# (-- only implemented in the C++ HTTP server library. --)
|
754
|
+
# (-- * The purpose of the RPC deadline is for RPC clients to --)
|
755
|
+
# (-- communicate its max waiting time to the server. This deadline --)
|
756
|
+
# (-- could be further propagated to the downstream servers. It is --)
|
757
|
+
# (-- mainly used for servers to cancel the request processing --)
|
758
|
+
# (-- to avoid resource wasting. Overloading the RPC deadline for --)
|
759
|
+
# (-- other purposes could make our backend system harder to reason --)
|
760
|
+
# (-- about. --)
|
761
|
+
class AnalyzeIamPolicyRequest
|
762
|
+
include ::Google::Protobuf::MessageExts
|
763
|
+
extend ::Google::Protobuf::MessageExts::ClassMethods
|
764
|
+
end
|
765
|
+
|
766
|
+
# A response message for
|
767
|
+
# {::Google::Cloud::Asset::V1::AssetService::Client#analyze_iam_policy google.cloud.asset.v1.AssetService.AnalyzeIamPolicy}.
|
768
|
+
# @!attribute [rw] main_analysis
|
769
|
+
# @return [::Google::Cloud::Asset::V1::AnalyzeIamPolicyResponse::IamPolicyAnalysis]
|
770
|
+
# The main analysis that matches the original request.
|
771
|
+
# @!attribute [rw] service_account_impersonation_analysis
|
772
|
+
# @return [::Array<::Google::Cloud::Asset::V1::AnalyzeIamPolicyResponse::IamPolicyAnalysis>]
|
773
|
+
# The service account impersonation analysis if
|
774
|
+
# [google.cloud.asset.v1.AnalyzeIamPolicyRequest.analyze_service_account_impersonation][google.cloud.asset.v1.AnalyzeIamPolicyRequest.analyze_service_account_impersonation]
|
775
|
+
# is enabled.
|
776
|
+
# @!attribute [rw] fully_explored
|
777
|
+
# @return [::Boolean]
|
778
|
+
# Represents whether all entries in the [main_analysis][main_analysis] and
|
779
|
+
# [service_account_impersonation_analysis][] have been fully explored to
|
780
|
+
# answer the query in the request.
|
781
|
+
class AnalyzeIamPolicyResponse
|
782
|
+
include ::Google::Protobuf::MessageExts
|
783
|
+
extend ::Google::Protobuf::MessageExts::ClassMethods
|
784
|
+
|
785
|
+
# An analysis message to group the query and results.
|
786
|
+
# @!attribute [rw] analysis_query
|
787
|
+
# @return [::Google::Cloud::Asset::V1::IamPolicyAnalysisQuery]
|
788
|
+
# The analysis query.
|
789
|
+
# @!attribute [rw] analysis_results
|
790
|
+
# @return [::Array<::Google::Cloud::Asset::V1::IamPolicyAnalysisResult>]
|
791
|
+
# A list of {::Google::Cloud::Asset::V1::IamPolicyAnalysisResult google.cloud.asset.v1.IamPolicyAnalysisResult}
|
792
|
+
# that matches the analysis query, or empty if no result is found.
|
793
|
+
# @!attribute [rw] fully_explored
|
794
|
+
# @return [::Boolean]
|
795
|
+
# Represents whether all entries in the
|
796
|
+
# [analysis_results][analysis_results] have been fully explored to answer
|
797
|
+
# the query.
|
798
|
+
# @!attribute [rw] stats
|
799
|
+
# @return [::Array<::Google::Cloud::Asset::V1::AnalyzeIamPolicyResponse::IamPolicyAnalysis::Stats>]
|
800
|
+
# The stats of how the analysis has been explored.
|
801
|
+
# @!attribute [rw] non_critical_errors
|
802
|
+
# @return [::Array<::Google::Cloud::Asset::V1::IamPolicyAnalysisState>]
|
803
|
+
# A list of non-critical errors happened during the query handling.
|
804
|
+
class IamPolicyAnalysis
|
805
|
+
include ::Google::Protobuf::MessageExts
|
806
|
+
extend ::Google::Protobuf::MessageExts::ClassMethods
|
807
|
+
|
808
|
+
# A stats message that contains a set of analysis metrics.
|
809
|
+
#
|
810
|
+
# Here are some equations to show relationships of the explicitly specified
|
811
|
+
# metrics with other implicit metrics:
|
812
|
+
# * node_count = discovered_node_count + undiscovered_node_count(implicit)
|
813
|
+
# * discovered_node_count = explored_node_count +
|
814
|
+
# unexplored_node_count(implicit)
|
815
|
+
# * explored_node_count = capped_node_count + uncapped_node_count(implicit)
|
816
|
+
# * unexplored_node_count(implicit) = permission_denied_node_count +
|
817
|
+
# execution_timeout_node_count + other_unexplored_node_count(implicit)
|
818
|
+
# * discovered_node_count = matched_node_count +
|
819
|
+
# unmatched_node_count(implicit)
|
820
|
+
# @!attribute [rw] node_type
|
821
|
+
# @return [::Google::Cloud::Asset::V1::AnalyzeIamPolicyResponse::IamPolicyAnalysis::Stats::NodeType]
|
822
|
+
# Node type.
|
823
|
+
# @!attribute [rw] node_subtype
|
824
|
+
# @return [::String]
|
825
|
+
# The subtype of a node, such as:
|
826
|
+
# * For Identity: Group, User, ServiceAccount etc.
|
827
|
+
# * For Resource: resource type name, such as
|
828
|
+
# cloudresourcemanager.googleapis.com/Organization, etc.
|
829
|
+
# * For Access: Role or Permission
|
830
|
+
# @!attribute [rw] discovered_node_count
|
831
|
+
# @return [::Integer]
|
832
|
+
# The count of discovered nodes.
|
833
|
+
# @!attribute [rw] matched_node_count
|
834
|
+
# @return [::Integer]
|
835
|
+
# The count of nodes that match the query. These nodes form a sub-graph
|
836
|
+
# of discovered nodes.
|
837
|
+
# @!attribute [rw] explored_node_count
|
838
|
+
# @return [::Integer]
|
839
|
+
# The count of explored nodes.
|
840
|
+
# @!attribute [rw] capped_node_count
|
841
|
+
# @return [::Integer]
|
842
|
+
# The count of nodes that get explored, but are capped by max fanout
|
843
|
+
# setting.
|
844
|
+
# @!attribute [rw] permision_denied_node_count
|
845
|
+
# @return [::Integer]
|
846
|
+
# The count of unexplored nodes caused by permission denied error.
|
847
|
+
# @!attribute [rw] execution_timeout_node_count
|
848
|
+
# @return [::Integer]
|
849
|
+
# The count of unexplored nodes caused by execution timeout.
|
850
|
+
class Stats
|
851
|
+
include ::Google::Protobuf::MessageExts
|
852
|
+
extend ::Google::Protobuf::MessageExts::ClassMethods
|
853
|
+
|
854
|
+
# Type of the node.
|
855
|
+
module NodeType
|
856
|
+
# Unspecified node type.
|
857
|
+
NODE_TYPE_UNSPECIFIED = 0
|
858
|
+
|
859
|
+
# IAM Policy Binding node type.
|
860
|
+
BINDING = 1
|
861
|
+
|
862
|
+
# Identity node type.
|
863
|
+
IDENTITY = 2
|
864
|
+
|
865
|
+
# Resource node type.
|
866
|
+
RESOURCE = 3
|
867
|
+
|
868
|
+
# Access node type.
|
869
|
+
ACCESS = 4
|
870
|
+
end
|
871
|
+
end
|
872
|
+
end
|
873
|
+
end
|
874
|
+
|
875
|
+
# Output configuration for export IAM policy analysis destination.
|
876
|
+
# @!attribute [rw] gcs_destination
|
877
|
+
# @return [::Google::Cloud::Asset::V1::IamPolicyAnalysisOutputConfig::GcsDestination]
|
878
|
+
# Destination on Cloud Storage.
|
879
|
+
# @!attribute [rw] bigquery_destination
|
880
|
+
# @return [::Google::Cloud::Asset::V1::IamPolicyAnalysisOutputConfig::BigQueryDestination]
|
881
|
+
# Destination on BigQuery.
|
882
|
+
class IamPolicyAnalysisOutputConfig
|
883
|
+
include ::Google::Protobuf::MessageExts
|
884
|
+
extend ::Google::Protobuf::MessageExts::ClassMethods
|
885
|
+
|
886
|
+
# A Cloud Storage location.
|
887
|
+
# @!attribute [rw] uri
|
888
|
+
# @return [::String]
|
889
|
+
# The uri of the Cloud Storage object. It's the same uri that is used by
|
890
|
+
# gsutil. For example: "gs://bucket_name/object_name". See [Viewing and
|
891
|
+
# Editing Object
|
892
|
+
# Metadata](https://cloud.google.com/storage/docs/viewing-editing-metadata)
|
893
|
+
# for more information.
|
894
|
+
class GcsDestination
|
895
|
+
include ::Google::Protobuf::MessageExts
|
896
|
+
extend ::Google::Protobuf::MessageExts::ClassMethods
|
897
|
+
end
|
898
|
+
|
899
|
+
# A BigQuery destination.
|
900
|
+
# @!attribute [rw] dataset
|
901
|
+
# @return [::String]
|
902
|
+
# The BigQuery dataset in format "projects/projectId/datasets/datasetId",
|
903
|
+
# to which the analysis results should be exported. If this dataset does
|
904
|
+
# not exist, the export call will return an INVALID_ARGUMENT error.
|
905
|
+
# @!attribute [rw] table_prefix
|
906
|
+
# @return [::String]
|
907
|
+
# The prefix of the BigQuery tables to which the analysis results will be
|
908
|
+
# written. Tables will be created based on this table_prefix if not exist:
|
909
|
+
# * <table_prefix>_analysis table will contain export operation's metadata.
|
910
|
+
# * <table_prefix>_analysis_result will contain all the
|
911
|
+
# [IamPolicyAnalysisResult][].
|
912
|
+
# When [partition_key] is specified, both tables will be partitioned based
|
913
|
+
# on the [partition_key].
|
914
|
+
# @!attribute [rw] partition_key
|
915
|
+
# @return [::Google::Cloud::Asset::V1::IamPolicyAnalysisOutputConfig::BigQueryDestination::PartitionKey]
|
916
|
+
# The partition key for BigQuery partitioned table.
|
917
|
+
# @!attribute [rw] write_mode
|
918
|
+
# @return [::Google::Cloud::Asset::V1::IamPolicyAnalysisOutputConfig::BigQueryDestination::WriteMode]
|
919
|
+
# The write mode when table exists. WriteMode is ignored when no existing
|
920
|
+
# tables, or no existing partitions are found.
|
921
|
+
class BigQueryDestination
|
922
|
+
include ::Google::Protobuf::MessageExts
|
923
|
+
extend ::Google::Protobuf::MessageExts::ClassMethods
|
924
|
+
|
925
|
+
# This enum determines the partition key column for the bigquery tables.
|
926
|
+
# Partitioning can improve query performance and reduce query cost by
|
927
|
+
# filtering partitions. Refer to
|
928
|
+
# https://cloud.google.com/bigquery/docs/partitioned-tables for details.
|
929
|
+
module PartitionKey
|
930
|
+
# Unspecified partition key. Tables won't be partitioned using this
|
931
|
+
# option.
|
932
|
+
PARTITION_KEY_UNSPECIFIED = 0
|
933
|
+
|
934
|
+
# The time when the request is received. If specified as partition key,
|
935
|
+
# the result table(s) is partitoned by the RequestTime column, an
|
936
|
+
# additional timestamp column representing when the request was received.
|
937
|
+
REQUEST_TIME = 1
|
938
|
+
end
|
939
|
+
|
940
|
+
# Write mode types if table exists.
|
941
|
+
module WriteMode
|
942
|
+
# Unspecified write mode. We expect one of the following valid modes must
|
943
|
+
# be specified when table or partition exists.
|
944
|
+
WRITE_MODE_UNSPECIFIED = 0
|
945
|
+
|
946
|
+
# Abort the export when table or partition exists.
|
947
|
+
ABORT = 1
|
948
|
+
|
949
|
+
# Overwrite the table when table exists. When partitioned, overwrite
|
950
|
+
# the existing partition.
|
951
|
+
OVERWRITE = 2
|
952
|
+
end
|
953
|
+
end
|
954
|
+
end
|
955
|
+
|
956
|
+
# A request message for [AssetService.ExportIamPolicyAnalysis][].
|
957
|
+
# @!attribute [rw] analysis_query
|
958
|
+
# @return [::Google::Cloud::Asset::V1::IamPolicyAnalysisQuery]
|
959
|
+
# The request query.
|
960
|
+
# @!attribute [rw] output_config
|
961
|
+
# @return [::Google::Cloud::Asset::V1::IamPolicyAnalysisOutputConfig]
|
962
|
+
# Output configuration indicating where the results will be output to.
|
963
|
+
class ExportIamPolicyAnalysisRequest
|
964
|
+
include ::Google::Protobuf::MessageExts
|
965
|
+
extend ::Google::Protobuf::MessageExts::ClassMethods
|
966
|
+
end
|
967
|
+
|
968
|
+
# The export IAM policy analysis response.
|
969
|
+
class ExportIamPolicyAnalysisResponse
|
970
|
+
include ::Google::Protobuf::MessageExts
|
971
|
+
extend ::Google::Protobuf::MessageExts::ClassMethods
|
972
|
+
end
|
973
|
+
|
489
974
|
# Asset content type.
|
490
975
|
module ContentType
|
491
976
|
# Unspecified content type.
|
@@ -500,7 +985,7 @@ module Google
|
|
500
985
|
# The Cloud Organization Policy set on an asset.
|
501
986
|
ORG_POLICY = 4
|
502
987
|
|
503
|
-
# The Cloud Access context
|
988
|
+
# The Cloud Access context manager Policy set on an asset.
|
504
989
|
ACCESS_POLICY = 5
|
505
990
|
end
|
506
991
|
end
|