xref: /aosp_15_r20/external/googleapis/google/cloud/audit/audit_log.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
1*d5c09012SAndroid Build Coastguard Worker// Copyright 2022 Google LLC
2*d5c09012SAndroid Build Coastguard Worker//
3*d5c09012SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*d5c09012SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*d5c09012SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*d5c09012SAndroid Build Coastguard Worker//
7*d5c09012SAndroid Build Coastguard Worker//     http://www.apache.org/licenses/LICENSE-2.0
8*d5c09012SAndroid Build Coastguard Worker//
9*d5c09012SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*d5c09012SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*d5c09012SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*d5c09012SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*d5c09012SAndroid Build Coastguard Worker// limitations under the License.
14*d5c09012SAndroid Build Coastguard Worker
15*d5c09012SAndroid Build Coastguard Workersyntax = "proto3";
16*d5c09012SAndroid Build Coastguard Worker
17*d5c09012SAndroid Build Coastguard Workerpackage google.cloud.audit;
18*d5c09012SAndroid Build Coastguard Worker
19*d5c09012SAndroid Build Coastguard Workerimport "google/api/field_behavior.proto";
20*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/any.proto";
21*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/struct.proto";
22*d5c09012SAndroid Build Coastguard Workerimport "google/rpc/context/attribute_context.proto";
23*d5c09012SAndroid Build Coastguard Workerimport "google/rpc/status.proto";
24*d5c09012SAndroid Build Coastguard Worker
25*d5c09012SAndroid Build Coastguard Workeroption cc_enable_arenas = true;
26*d5c09012SAndroid Build Coastguard Workeroption go_package = "google.golang.org/genproto/googleapis/cloud/audit;audit";
27*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true;
28*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "AuditLogProto";
29*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.cloud.audit";
30*d5c09012SAndroid Build Coastguard Worker
31*d5c09012SAndroid Build Coastguard Worker// Common audit log format for Google Cloud Platform API operations.
32*d5c09012SAndroid Build Coastguard Workermessage AuditLog {
33*d5c09012SAndroid Build Coastguard Worker  // The name of the API service performing the operation. For example,
34*d5c09012SAndroid Build Coastguard Worker  // `"compute.googleapis.com"`.
35*d5c09012SAndroid Build Coastguard Worker  string service_name = 7;
36*d5c09012SAndroid Build Coastguard Worker
37*d5c09012SAndroid Build Coastguard Worker  // The name of the service method or operation.
38*d5c09012SAndroid Build Coastguard Worker  // For API calls, this should be the name of the API method.
39*d5c09012SAndroid Build Coastguard Worker  // For example,
40*d5c09012SAndroid Build Coastguard Worker  //
41*d5c09012SAndroid Build Coastguard Worker  //     "google.cloud.bigquery.v2.TableService.InsertTable"
42*d5c09012SAndroid Build Coastguard Worker  //     "google.logging.v2.ConfigServiceV2.CreateSink"
43*d5c09012SAndroid Build Coastguard Worker  string method_name = 8;
44*d5c09012SAndroid Build Coastguard Worker
45*d5c09012SAndroid Build Coastguard Worker  // The resource or collection that is the target of the operation.
46*d5c09012SAndroid Build Coastguard Worker  // The name is a scheme-less URI, not including the API service name.
47*d5c09012SAndroid Build Coastguard Worker  // For example:
48*d5c09012SAndroid Build Coastguard Worker  //
49*d5c09012SAndroid Build Coastguard Worker  //     "projects/PROJECT_ID/zones/us-central1-a/instances"
50*d5c09012SAndroid Build Coastguard Worker  //     "projects/PROJECT_ID/datasets/DATASET_ID"
51*d5c09012SAndroid Build Coastguard Worker  string resource_name = 11;
52*d5c09012SAndroid Build Coastguard Worker
53*d5c09012SAndroid Build Coastguard Worker  // The resource location information.
54*d5c09012SAndroid Build Coastguard Worker  ResourceLocation resource_location = 20;
55*d5c09012SAndroid Build Coastguard Worker
56*d5c09012SAndroid Build Coastguard Worker  // The resource's original state before mutation. Present only for
57*d5c09012SAndroid Build Coastguard Worker  // operations which have successfully modified the targeted resource(s).
58*d5c09012SAndroid Build Coastguard Worker  // In general, this field should contain all changed fields, except those
59*d5c09012SAndroid Build Coastguard Worker  // that are already been included in `request`, `response`, `metadata` or
60*d5c09012SAndroid Build Coastguard Worker  // `service_data` fields.
61*d5c09012SAndroid Build Coastguard Worker  // When the JSON object represented here has a proto equivalent,
62*d5c09012SAndroid Build Coastguard Worker  // the proto name will be indicated in the `@type` property.
63*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Struct resource_original_state = 19;
64*d5c09012SAndroid Build Coastguard Worker
65*d5c09012SAndroid Build Coastguard Worker  // The number of items returned from a List or Query API method,
66*d5c09012SAndroid Build Coastguard Worker  // if applicable.
67*d5c09012SAndroid Build Coastguard Worker  int64 num_response_items = 12;
68*d5c09012SAndroid Build Coastguard Worker
69*d5c09012SAndroid Build Coastguard Worker  // The status of the overall operation.
70*d5c09012SAndroid Build Coastguard Worker  google.rpc.Status status = 2;
71*d5c09012SAndroid Build Coastguard Worker
72*d5c09012SAndroid Build Coastguard Worker  // Authentication information.
73*d5c09012SAndroid Build Coastguard Worker  AuthenticationInfo authentication_info = 3;
74*d5c09012SAndroid Build Coastguard Worker
75*d5c09012SAndroid Build Coastguard Worker  // Authorization information. If there are multiple
76*d5c09012SAndroid Build Coastguard Worker  // resources or permissions involved, then there is
77*d5c09012SAndroid Build Coastguard Worker  // one AuthorizationInfo element for each {resource, permission} tuple.
78*d5c09012SAndroid Build Coastguard Worker  repeated AuthorizationInfo authorization_info = 9;
79*d5c09012SAndroid Build Coastguard Worker
80*d5c09012SAndroid Build Coastguard Worker  // Indicates the policy violations for this request. If the request
81*d5c09012SAndroid Build Coastguard Worker  // is denied by the policy, violation information will be logged
82*d5c09012SAndroid Build Coastguard Worker  // here.
83*d5c09012SAndroid Build Coastguard Worker  PolicyViolationInfo policy_violation_info = 25;
84*d5c09012SAndroid Build Coastguard Worker
85*d5c09012SAndroid Build Coastguard Worker  // Metadata about the operation.
86*d5c09012SAndroid Build Coastguard Worker  RequestMetadata request_metadata = 4;
87*d5c09012SAndroid Build Coastguard Worker
88*d5c09012SAndroid Build Coastguard Worker  // The operation request. This may not include all request parameters,
89*d5c09012SAndroid Build Coastguard Worker  // such as those that are too large, privacy-sensitive, or duplicated
90*d5c09012SAndroid Build Coastguard Worker  // elsewhere in the log record.
91*d5c09012SAndroid Build Coastguard Worker  // It should never include user-generated data, such as file contents.
92*d5c09012SAndroid Build Coastguard Worker  // When the JSON object represented here has a proto equivalent, the proto
93*d5c09012SAndroid Build Coastguard Worker  // name will be indicated in the `@type` property.
94*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Struct request = 16;
95*d5c09012SAndroid Build Coastguard Worker
96*d5c09012SAndroid Build Coastguard Worker  // The operation response. This may not include all response elements,
97*d5c09012SAndroid Build Coastguard Worker  // such as those that are too large, privacy-sensitive, or duplicated
98*d5c09012SAndroid Build Coastguard Worker  // elsewhere in the log record.
99*d5c09012SAndroid Build Coastguard Worker  // It should never include user-generated data, such as file contents.
100*d5c09012SAndroid Build Coastguard Worker  // When the JSON object represented here has a proto equivalent, the proto
101*d5c09012SAndroid Build Coastguard Worker  // name will be indicated in the `@type` property.
102*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Struct response = 17;
103*d5c09012SAndroid Build Coastguard Worker
104*d5c09012SAndroid Build Coastguard Worker  // Other service-specific data about the request, response, and other
105*d5c09012SAndroid Build Coastguard Worker  // information associated with the current audited event.
106*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Struct metadata = 18;
107*d5c09012SAndroid Build Coastguard Worker
108*d5c09012SAndroid Build Coastguard Worker  // Deprecated. Use the `metadata` field instead.
109*d5c09012SAndroid Build Coastguard Worker  // Other service-specific data about the request, response, and other
110*d5c09012SAndroid Build Coastguard Worker  // activities.
111*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Any service_data = 15 [deprecated = true];
112*d5c09012SAndroid Build Coastguard Worker}
113*d5c09012SAndroid Build Coastguard Worker
114*d5c09012SAndroid Build Coastguard Worker// Authentication information for the operation.
115*d5c09012SAndroid Build Coastguard Workermessage AuthenticationInfo {
116*d5c09012SAndroid Build Coastguard Worker  // The email address of the authenticated user (or service account on behalf
117*d5c09012SAndroid Build Coastguard Worker  // of third party principal) making the request. For third party identity
118*d5c09012SAndroid Build Coastguard Worker  // callers, the `principal_subject` field is populated instead of this field.
119*d5c09012SAndroid Build Coastguard Worker  // For privacy reasons, the principal email address is sometimes redacted.
120*d5c09012SAndroid Build Coastguard Worker  // For more information, see [Caller identities in audit
121*d5c09012SAndroid Build Coastguard Worker  // logs](https://cloud.google.com/logging/docs/audit#user-id).
122*d5c09012SAndroid Build Coastguard Worker  string principal_email = 1;
123*d5c09012SAndroid Build Coastguard Worker
124*d5c09012SAndroid Build Coastguard Worker  // The authority selector specified by the requestor, if any.
125*d5c09012SAndroid Build Coastguard Worker  // It is not guaranteed that the principal was allowed to use this authority.
126*d5c09012SAndroid Build Coastguard Worker  string authority_selector = 2;
127*d5c09012SAndroid Build Coastguard Worker
128*d5c09012SAndroid Build Coastguard Worker  // The third party identification (if any) of the authenticated user making
129*d5c09012SAndroid Build Coastguard Worker  // the request.
130*d5c09012SAndroid Build Coastguard Worker  // When the JSON object represented here has a proto equivalent, the proto
131*d5c09012SAndroid Build Coastguard Worker  // name will be indicated in the `@type` property.
132*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Struct third_party_principal = 4;
133*d5c09012SAndroid Build Coastguard Worker
134*d5c09012SAndroid Build Coastguard Worker  // The name of the service account key used to create or exchange
135*d5c09012SAndroid Build Coastguard Worker  // credentials for authenticating the service account making the request.
136*d5c09012SAndroid Build Coastguard Worker  // This is a scheme-less URI full resource name. For example:
137*d5c09012SAndroid Build Coastguard Worker  //
138*d5c09012SAndroid Build Coastguard Worker  // "//iam.googleapis.com/projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}/keys/{key}"
139*d5c09012SAndroid Build Coastguard Worker  string service_account_key_name = 5;
140*d5c09012SAndroid Build Coastguard Worker
141*d5c09012SAndroid Build Coastguard Worker  // Identity delegation history of an authenticated service account that makes
142*d5c09012SAndroid Build Coastguard Worker  // the request. It contains information on the real authorities that try to
143*d5c09012SAndroid Build Coastguard Worker  // access GCP resources by delegating on a service account. When multiple
144*d5c09012SAndroid Build Coastguard Worker  // authorities present, they are guaranteed to be sorted based on the original
145*d5c09012SAndroid Build Coastguard Worker  // ordering of the identity delegation events.
146*d5c09012SAndroid Build Coastguard Worker  repeated ServiceAccountDelegationInfo service_account_delegation_info = 6;
147*d5c09012SAndroid Build Coastguard Worker
148*d5c09012SAndroid Build Coastguard Worker  // String representation of identity of requesting party.
149*d5c09012SAndroid Build Coastguard Worker  // Populated for both first and third party identities.
150*d5c09012SAndroid Build Coastguard Worker  string principal_subject = 8;
151*d5c09012SAndroid Build Coastguard Worker}
152*d5c09012SAndroid Build Coastguard Worker
153*d5c09012SAndroid Build Coastguard Worker// Authorization information for the operation.
154*d5c09012SAndroid Build Coastguard Workermessage AuthorizationInfo {
155*d5c09012SAndroid Build Coastguard Worker  // The resource being accessed, as a REST-style or cloud resource string.
156*d5c09012SAndroid Build Coastguard Worker  // For example:
157*d5c09012SAndroid Build Coastguard Worker  //
158*d5c09012SAndroid Build Coastguard Worker  //     bigquery.googleapis.com/projects/PROJECTID/datasets/DATASETID
159*d5c09012SAndroid Build Coastguard Worker  // or
160*d5c09012SAndroid Build Coastguard Worker  //     projects/PROJECTID/datasets/DATASETID
161*d5c09012SAndroid Build Coastguard Worker  string resource = 1;
162*d5c09012SAndroid Build Coastguard Worker
163*d5c09012SAndroid Build Coastguard Worker  // The required IAM permission.
164*d5c09012SAndroid Build Coastguard Worker  string permission = 2;
165*d5c09012SAndroid Build Coastguard Worker
166*d5c09012SAndroid Build Coastguard Worker  // Whether or not authorization for `resource` and `permission`
167*d5c09012SAndroid Build Coastguard Worker  // was granted.
168*d5c09012SAndroid Build Coastguard Worker  bool granted = 3;
169*d5c09012SAndroid Build Coastguard Worker
170*d5c09012SAndroid Build Coastguard Worker  // Resource attributes used in IAM condition evaluation. This field contains
171*d5c09012SAndroid Build Coastguard Worker  // resource attributes like resource type and resource name.
172*d5c09012SAndroid Build Coastguard Worker  //
173*d5c09012SAndroid Build Coastguard Worker  // To get the whole view of the attributes used in IAM
174*d5c09012SAndroid Build Coastguard Worker  // condition evaluation, the user must also look into
175*d5c09012SAndroid Build Coastguard Worker  // `AuditLog.request_metadata.request_attributes`.
176*d5c09012SAndroid Build Coastguard Worker  google.rpc.context.AttributeContext.Resource resource_attributes = 5;
177*d5c09012SAndroid Build Coastguard Worker}
178*d5c09012SAndroid Build Coastguard Worker
179*d5c09012SAndroid Build Coastguard Worker// Metadata about the request.
180*d5c09012SAndroid Build Coastguard Workermessage RequestMetadata {
181*d5c09012SAndroid Build Coastguard Worker  // The IP address of the caller.
182*d5c09012SAndroid Build Coastguard Worker  // For a caller from the internet, this will be the public IPv4 or IPv6
183*d5c09012SAndroid Build Coastguard Worker  // address. For calls made from inside Google's internal production network
184*d5c09012SAndroid Build Coastguard Worker  // from one GCP service to another, `caller_ip` will be redacted to "private".
185*d5c09012SAndroid Build Coastguard Worker  // For a caller from a Compute Engine VM with a external IP address,
186*d5c09012SAndroid Build Coastguard Worker  // `caller_ip` will be the VM's external IP address. For a caller from a
187*d5c09012SAndroid Build Coastguard Worker  // Compute Engine VM without a external IP address, if the VM is in the same
188*d5c09012SAndroid Build Coastguard Worker  // organization (or project) as the accessed resource, `caller_ip` will be the
189*d5c09012SAndroid Build Coastguard Worker  // VM's internal IPv4 address, otherwise `caller_ip` will be redacted to
190*d5c09012SAndroid Build Coastguard Worker  // "gce-internal-ip". See https://cloud.google.com/compute/docs/vpc/ for more
191*d5c09012SAndroid Build Coastguard Worker  // information.
192*d5c09012SAndroid Build Coastguard Worker  string caller_ip = 1;
193*d5c09012SAndroid Build Coastguard Worker
194*d5c09012SAndroid Build Coastguard Worker  // The user agent of the caller.
195*d5c09012SAndroid Build Coastguard Worker  // This information is not authenticated and should be treated accordingly.
196*d5c09012SAndroid Build Coastguard Worker  // For example:
197*d5c09012SAndroid Build Coastguard Worker  //
198*d5c09012SAndroid Build Coastguard Worker  // +   `google-api-python-client/1.4.0`:
199*d5c09012SAndroid Build Coastguard Worker  //     The request was made by the Google API client for Python.
200*d5c09012SAndroid Build Coastguard Worker  // +   `Cloud SDK Command Line Tool apitools-client/1.0 gcloud/0.9.62`:
201*d5c09012SAndroid Build Coastguard Worker  //     The request was made by the Google Cloud SDK CLI (gcloud).
202*d5c09012SAndroid Build Coastguard Worker  // +   `AppEngine-Google; (+http://code.google.com/appengine; appid:
203*d5c09012SAndroid Build Coastguard Worker  // s~my-project`:
204*d5c09012SAndroid Build Coastguard Worker  //     The request was made from the `my-project` App Engine app.
205*d5c09012SAndroid Build Coastguard Worker  string caller_supplied_user_agent = 2;
206*d5c09012SAndroid Build Coastguard Worker
207*d5c09012SAndroid Build Coastguard Worker  // The network of the caller.
208*d5c09012SAndroid Build Coastguard Worker  // Set only if the network host project is part of the same GCP organization
209*d5c09012SAndroid Build Coastguard Worker  // (or project) as the accessed resource.
210*d5c09012SAndroid Build Coastguard Worker  // See https://cloud.google.com/compute/docs/vpc/ for more information.
211*d5c09012SAndroid Build Coastguard Worker  // This is a scheme-less URI full resource name. For example:
212*d5c09012SAndroid Build Coastguard Worker  //
213*d5c09012SAndroid Build Coastguard Worker  //     "//compute.googleapis.com/projects/PROJECT_ID/global/networks/NETWORK_ID"
214*d5c09012SAndroid Build Coastguard Worker  string caller_network = 3;
215*d5c09012SAndroid Build Coastguard Worker
216*d5c09012SAndroid Build Coastguard Worker  // Request attributes used in IAM condition evaluation. This field contains
217*d5c09012SAndroid Build Coastguard Worker  // request attributes like request time and access levels associated with
218*d5c09012SAndroid Build Coastguard Worker  // the request.
219*d5c09012SAndroid Build Coastguard Worker  //
220*d5c09012SAndroid Build Coastguard Worker  //
221*d5c09012SAndroid Build Coastguard Worker  // To get the whole view of the attributes used in IAM
222*d5c09012SAndroid Build Coastguard Worker  // condition evaluation, the user must also look into
223*d5c09012SAndroid Build Coastguard Worker  // `AuditLog.authentication_info.resource_attributes`.
224*d5c09012SAndroid Build Coastguard Worker  google.rpc.context.AttributeContext.Request request_attributes = 7;
225*d5c09012SAndroid Build Coastguard Worker
226*d5c09012SAndroid Build Coastguard Worker  // The destination of a network activity, such as accepting a TCP connection.
227*d5c09012SAndroid Build Coastguard Worker  // In a multi hop network activity, the destination represents the receiver of
228*d5c09012SAndroid Build Coastguard Worker  // the last hop. Only two fields are used in this message, Peer.port and
229*d5c09012SAndroid Build Coastguard Worker  // Peer.ip. These fields are optionally populated by those services utilizing
230*d5c09012SAndroid Build Coastguard Worker  // the IAM condition feature.
231*d5c09012SAndroid Build Coastguard Worker  google.rpc.context.AttributeContext.Peer destination_attributes = 8;
232*d5c09012SAndroid Build Coastguard Worker}
233*d5c09012SAndroid Build Coastguard Worker
234*d5c09012SAndroid Build Coastguard Worker// Location information about a resource.
235*d5c09012SAndroid Build Coastguard Workermessage ResourceLocation {
236*d5c09012SAndroid Build Coastguard Worker  // The locations of a resource after the execution of the operation.
237*d5c09012SAndroid Build Coastguard Worker  // Requests to create or delete a location based resource must populate
238*d5c09012SAndroid Build Coastguard Worker  // the 'current_locations' field and not the 'original_locations' field.
239*d5c09012SAndroid Build Coastguard Worker  // For example:
240*d5c09012SAndroid Build Coastguard Worker  //
241*d5c09012SAndroid Build Coastguard Worker  //     "europe-west1-a"
242*d5c09012SAndroid Build Coastguard Worker  //     "us-east1"
243*d5c09012SAndroid Build Coastguard Worker  //     "nam3"
244*d5c09012SAndroid Build Coastguard Worker  repeated string current_locations = 1;
245*d5c09012SAndroid Build Coastguard Worker
246*d5c09012SAndroid Build Coastguard Worker  // The locations of a resource prior to the execution of the operation.
247*d5c09012SAndroid Build Coastguard Worker  // Requests that mutate the resource's location must populate both the
248*d5c09012SAndroid Build Coastguard Worker  // 'original_locations' as well as the 'current_locations' fields.
249*d5c09012SAndroid Build Coastguard Worker  // For example:
250*d5c09012SAndroid Build Coastguard Worker  //
251*d5c09012SAndroid Build Coastguard Worker  //     "europe-west1-a"
252*d5c09012SAndroid Build Coastguard Worker  //     "us-east1"
253*d5c09012SAndroid Build Coastguard Worker  //     "nam3"
254*d5c09012SAndroid Build Coastguard Worker  repeated string original_locations = 2;
255*d5c09012SAndroid Build Coastguard Worker}
256*d5c09012SAndroid Build Coastguard Worker
257*d5c09012SAndroid Build Coastguard Worker// Identity delegation history of an authenticated service account.
258*d5c09012SAndroid Build Coastguard Workermessage ServiceAccountDelegationInfo {
259*d5c09012SAndroid Build Coastguard Worker  // First party identity principal.
260*d5c09012SAndroid Build Coastguard Worker  message FirstPartyPrincipal {
261*d5c09012SAndroid Build Coastguard Worker    // The email address of a Google account.
262*d5c09012SAndroid Build Coastguard Worker    string principal_email = 1;
263*d5c09012SAndroid Build Coastguard Worker
264*d5c09012SAndroid Build Coastguard Worker    // Metadata about the service that uses the service account.
265*d5c09012SAndroid Build Coastguard Worker    google.protobuf.Struct service_metadata = 2;
266*d5c09012SAndroid Build Coastguard Worker  }
267*d5c09012SAndroid Build Coastguard Worker
268*d5c09012SAndroid Build Coastguard Worker  // Third party identity principal.
269*d5c09012SAndroid Build Coastguard Worker  message ThirdPartyPrincipal {
270*d5c09012SAndroid Build Coastguard Worker    // Metadata about third party identity.
271*d5c09012SAndroid Build Coastguard Worker    google.protobuf.Struct third_party_claims = 1;
272*d5c09012SAndroid Build Coastguard Worker  }
273*d5c09012SAndroid Build Coastguard Worker
274*d5c09012SAndroid Build Coastguard Worker  // A string representing the principal_subject associated with the identity.
275*d5c09012SAndroid Build Coastguard Worker  // For most identities, the format will be
276*d5c09012SAndroid Build Coastguard Worker  // `principal://iam.googleapis.com/{identity pool name}/subject/{subject)`
277*d5c09012SAndroid Build Coastguard Worker  // except for some GKE identities (GKE_WORKLOAD, FREEFORM, GKE_HUB_WORKLOAD)
278*d5c09012SAndroid Build Coastguard Worker  // that are still in the legacy format `serviceAccount:{identity pool
279*d5c09012SAndroid Build Coastguard Worker  // name}[{subject}]`
280*d5c09012SAndroid Build Coastguard Worker  string principal_subject = 3;
281*d5c09012SAndroid Build Coastguard Worker
282*d5c09012SAndroid Build Coastguard Worker  // Entity that creates credentials for service account and assumes its
283*d5c09012SAndroid Build Coastguard Worker  // identity for authentication.
284*d5c09012SAndroid Build Coastguard Worker  oneof Authority {
285*d5c09012SAndroid Build Coastguard Worker    // First party (Google) identity as the real authority.
286*d5c09012SAndroid Build Coastguard Worker    FirstPartyPrincipal first_party_principal = 1;
287*d5c09012SAndroid Build Coastguard Worker
288*d5c09012SAndroid Build Coastguard Worker    // Third party identity as the real authority.
289*d5c09012SAndroid Build Coastguard Worker    ThirdPartyPrincipal third_party_principal = 2;
290*d5c09012SAndroid Build Coastguard Worker  }
291*d5c09012SAndroid Build Coastguard Worker}
292*d5c09012SAndroid Build Coastguard Worker
293*d5c09012SAndroid Build Coastguard Worker// Information related to policy violations for this request.
294*d5c09012SAndroid Build Coastguard Workermessage PolicyViolationInfo {
295*d5c09012SAndroid Build Coastguard Worker  // Indicates the orgpolicy violations for this resource.
296*d5c09012SAndroid Build Coastguard Worker  OrgPolicyViolationInfo org_policy_violation_info = 1;
297*d5c09012SAndroid Build Coastguard Worker}
298*d5c09012SAndroid Build Coastguard Worker
299*d5c09012SAndroid Build Coastguard Worker// Represents OrgPolicy Violation information.
300*d5c09012SAndroid Build Coastguard Workermessage OrgPolicyViolationInfo {
301*d5c09012SAndroid Build Coastguard Worker  // Optional. Resource payload that is currently in scope and is subjected to orgpolicy
302*d5c09012SAndroid Build Coastguard Worker  // conditions. This payload may be the subset of the actual Resource that may
303*d5c09012SAndroid Build Coastguard Worker  // come in the request. This payload should not contain any core content.
304*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Struct payload = 1 [(google.api.field_behavior) = OPTIONAL];
305*d5c09012SAndroid Build Coastguard Worker
306*d5c09012SAndroid Build Coastguard Worker  // Optional. Resource type that the orgpolicy is checked against.
307*d5c09012SAndroid Build Coastguard Worker  // Example: compute.googleapis.com/Instance, store.googleapis.com/bucket
308*d5c09012SAndroid Build Coastguard Worker  string resource_type = 2 [(google.api.field_behavior) = OPTIONAL];
309*d5c09012SAndroid Build Coastguard Worker
310*d5c09012SAndroid Build Coastguard Worker  // Optional. Tags referenced on the resource at the time of evaluation. These also
311*d5c09012SAndroid Build Coastguard Worker  // include the federated tags, if they are supplied in the CheckOrgPolicy
312*d5c09012SAndroid Build Coastguard Worker  // or CheckCustomConstraints Requests.
313*d5c09012SAndroid Build Coastguard Worker  //
314*d5c09012SAndroid Build Coastguard Worker  // Optional field as of now. These tags are the Cloud tags that are
315*d5c09012SAndroid Build Coastguard Worker  // available on the resource during the policy evaluation and will
316*d5c09012SAndroid Build Coastguard Worker  // be available as part of the OrgPolicy check response for logging purposes.
317*d5c09012SAndroid Build Coastguard Worker  map<string, string> resource_tags = 3 [(google.api.field_behavior) = OPTIONAL];
318*d5c09012SAndroid Build Coastguard Worker
319*d5c09012SAndroid Build Coastguard Worker  // Optional. Policy violations
320*d5c09012SAndroid Build Coastguard Worker  repeated ViolationInfo violation_info = 4 [(google.api.field_behavior) = OPTIONAL];
321*d5c09012SAndroid Build Coastguard Worker}
322*d5c09012SAndroid Build Coastguard Worker
323*d5c09012SAndroid Build Coastguard Worker// Provides information about the Policy violation info for this request.
324*d5c09012SAndroid Build Coastguard Workermessage ViolationInfo {
325*d5c09012SAndroid Build Coastguard Worker  // Policy Type enum
326*d5c09012SAndroid Build Coastguard Worker  enum PolicyType {
327*d5c09012SAndroid Build Coastguard Worker    // Default value. This value should not be used.
328*d5c09012SAndroid Build Coastguard Worker    POLICY_TYPE_UNSPECIFIED = 0;
329*d5c09012SAndroid Build Coastguard Worker
330*d5c09012SAndroid Build Coastguard Worker    // Indicates boolean policy constraint
331*d5c09012SAndroid Build Coastguard Worker    BOOLEAN_CONSTRAINT = 1;
332*d5c09012SAndroid Build Coastguard Worker
333*d5c09012SAndroid Build Coastguard Worker    // Indicates list policy constraint
334*d5c09012SAndroid Build Coastguard Worker    LIST_CONSTRAINT = 2;
335*d5c09012SAndroid Build Coastguard Worker
336*d5c09012SAndroid Build Coastguard Worker    // Indicates custom policy constraint
337*d5c09012SAndroid Build Coastguard Worker    CUSTOM_CONSTRAINT = 3;
338*d5c09012SAndroid Build Coastguard Worker  }
339*d5c09012SAndroid Build Coastguard Worker
340*d5c09012SAndroid Build Coastguard Worker  // Optional. Constraint name
341*d5c09012SAndroid Build Coastguard Worker  string constraint = 1 [(google.api.field_behavior) = OPTIONAL];
342*d5c09012SAndroid Build Coastguard Worker
343*d5c09012SAndroid Build Coastguard Worker  // Optional. Error message that policy is indicating.
344*d5c09012SAndroid Build Coastguard Worker  string error_message = 2 [(google.api.field_behavior) = OPTIONAL];
345*d5c09012SAndroid Build Coastguard Worker
346*d5c09012SAndroid Build Coastguard Worker  // Optional. Value that is being checked for the policy.
347*d5c09012SAndroid Build Coastguard Worker  // This could be in encrypted form (if pii sensitive).
348*d5c09012SAndroid Build Coastguard Worker  // This field will only be emitted in LIST_POLICY types
349*d5c09012SAndroid Build Coastguard Worker  string checked_value = 3 [(google.api.field_behavior) = OPTIONAL];
350*d5c09012SAndroid Build Coastguard Worker
351*d5c09012SAndroid Build Coastguard Worker  // Optional. Indicates the type of the policy.
352*d5c09012SAndroid Build Coastguard Worker  PolicyType policy_type = 4 [(google.api.field_behavior) = OPTIONAL];
353*d5c09012SAndroid Build Coastguard Worker}