|  | // Copyright 2016 Google Inc. | 
|  | // | 
|  | // Licensed under the Apache License, Version 2.0 (the "License"); | 
|  | // you may not use this file except in compliance with the License. | 
|  | // You may obtain a copy of the License at | 
|  | // | 
|  | //     http://www.apache.org/licenses/LICENSE-2.0 | 
|  | // | 
|  | // Unless required by applicable law or agreed to in writing, software | 
|  | // distributed under the License is distributed on an "AS IS" BASIS, | 
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | // See the License for the specific language governing permissions and | 
|  | // limitations under the License. | 
|  |  | 
|  | syntax = "proto3"; | 
|  |  | 
|  | package google.cloud.audit; | 
|  |  | 
|  | import "google/api/annotations.proto"; | 
|  | import "google/protobuf/any.proto"; | 
|  | import "google/protobuf/struct.proto"; | 
|  | import "google/rpc/status.proto"; | 
|  |  | 
|  | option go_package = "google.golang.org/genproto/googleapis/cloud/audit;audit"; | 
|  | option java_multiple_files = true; | 
|  | option java_outer_classname = "AuditLogProto"; | 
|  | option java_package = "com.google.cloud.audit"; | 
|  |  | 
|  |  | 
|  | // Common audit log format for Google Cloud Platform API operations. | 
|  | message AuditLog { | 
|  | // The name of the API service performing the operation. For example, | 
|  | // `"datastore.googleapis.com"`. | 
|  | string service_name = 7; | 
|  |  | 
|  | // The name of the service method or operation. | 
|  | // For API calls, this should be the name of the API method. | 
|  | // For example, | 
|  | // | 
|  | //     "google.datastore.v1.Datastore.RunQuery" | 
|  | //     "google.logging.v1.LoggingService.DeleteLog" | 
|  | string method_name = 8; | 
|  |  | 
|  | // The resource or collection that is the target of the operation. | 
|  | // The name is a scheme-less URI, not including the API service name. | 
|  | // For example: | 
|  | // | 
|  | //     "shelves/SHELF_ID/books" | 
|  | //     "shelves/SHELF_ID/books/BOOK_ID" | 
|  | string resource_name = 11; | 
|  |  | 
|  | // The number of items returned from a List or Query API method, | 
|  | // if applicable. | 
|  | int64 num_response_items = 12; | 
|  |  | 
|  | // The status of the overall operation. | 
|  | google.rpc.Status status = 2; | 
|  |  | 
|  | // Authentication information. | 
|  | AuthenticationInfo authentication_info = 3; | 
|  |  | 
|  | // Authorization information. If there are multiple | 
|  | // resources or permissions involved, then there is | 
|  | // one AuthorizationInfo element for each {resource, permission} tuple. | 
|  | repeated AuthorizationInfo authorization_info = 9; | 
|  |  | 
|  | // Metadata about the operation. | 
|  | RequestMetadata request_metadata = 4; | 
|  |  | 
|  | // The operation request. This may not include all request parameters, | 
|  | // such as those that are too large, privacy-sensitive, or duplicated | 
|  | // elsewhere in the log record. | 
|  | // It should never include user-generated data, such as file contents. | 
|  | // When the JSON object represented here has a proto equivalent, the proto | 
|  | // name will be indicated in the `@type` property. | 
|  | google.protobuf.Struct request = 16; | 
|  |  | 
|  | // The operation response. This may not include all response elements, | 
|  | // such as those that are too large, privacy-sensitive, or duplicated | 
|  | // elsewhere in the log record. | 
|  | // It should never include user-generated data, such as file contents. | 
|  | // When the JSON object represented here has a proto equivalent, the proto | 
|  | // name will be indicated in the `@type` property. | 
|  | google.protobuf.Struct response = 17; | 
|  |  | 
|  | // Other service-specific data about the request, response, and other | 
|  | // activities. | 
|  | google.protobuf.Any service_data = 15; | 
|  | } | 
|  |  | 
|  | // Authentication information for the operation. | 
|  | message AuthenticationInfo { | 
|  | // The email address of the authenticated user making the request. | 
|  | string principal_email = 1; | 
|  | } | 
|  |  | 
|  | // Authorization information for the operation. | 
|  | message AuthorizationInfo { | 
|  | // The resource being accessed, as a REST-style string. For example: | 
|  | // | 
|  | //     bigquery.googlapis.com/projects/PROJECTID/datasets/DATASETID | 
|  | string resource = 1; | 
|  |  | 
|  | // The required IAM permission. | 
|  | string permission = 2; | 
|  |  | 
|  | // Whether or not authorization for `resource` and `permission` | 
|  | // was granted. | 
|  | bool granted = 3; | 
|  | } | 
|  |  | 
|  | // Metadata about the request. | 
|  | message RequestMetadata { | 
|  | // The IP address of the caller. | 
|  | string caller_ip = 1; | 
|  |  | 
|  | // The user agent of the caller. | 
|  | // This information is not authenticated and should be treated accordingly. | 
|  | // For example: | 
|  | // | 
|  | // +   `google-api-python-client/1.4.0`: | 
|  | //     The request was made by the Google API client for Python. | 
|  | // +   `Cloud SDK Command Line Tool apitools-client/1.0 gcloud/0.9.62`: | 
|  | //     The request was made by the Google Cloud SDK CLI (gcloud). | 
|  | // +   `AppEngine-Google; (+http://code.google.com/appengine; appid: s~my-project`: | 
|  | //     The request was made from the `my-project` App Engine app. | 
|  | string caller_supplied_user_agent = 2; | 
|  | } |