# frozen_string_literal: true

# Copyright 2024 Google LLC
#
# 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
#
#     https://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.

# Auto-generated by gapic-generator-ruby. DO NOT EDIT!


module Google
  module Cloud
    module SecurityCenter
      module V2
        # Represents an access event.
        # @!attribute [rw] principal_email
        #   @return [::String]
        #     Associated email, such as "foo@google.com".
        #
        #     The email address of the authenticated user or a service account acting on
        #     behalf of a third party principal making the request. For third party
        #     identity callers, the `principal_subject` field is populated instead of
        #     this field. For privacy reasons, the principal email address is sometimes
        #     redacted. For more information, see [Caller identities in audit
        #     logs](https://cloud.google.com/logging/docs/audit#user-id).
        # @!attribute [rw] caller_ip
        #   @return [::String]
        #     Caller's IP address, such as "1.1.1.1".
        # @!attribute [rw] caller_ip_geo
        #   @return [::Google::Cloud::SecurityCenter::V2::Geolocation]
        #     The caller IP's geolocation, which identifies where the call came from.
        # @!attribute [rw] user_agent_family
        #   @return [::String]
        #     Type of user agent associated with the finding. For example, an operating
        #     system shell or an embedded or standalone application.
        # @!attribute [rw] user_agent
        #   @return [::String]
        #     The caller's user agent string associated with the finding.
        # @!attribute [rw] service_name
        #   @return [::String]
        #     This is the API service that the service account made a call to, e.g.
        #     "iam.googleapis.com"
        # @!attribute [rw] method_name
        #   @return [::String]
        #     The method that the service account called, e.g. "SetIamPolicy".
        # @!attribute [rw] principal_subject
        #   @return [::String]
        #     A string that represents the principal_subject that is associated with the
        #     identity. Unlike `principal_email`, `principal_subject` supports principals
        #     that aren't associated with email addresses, such as third party
        #     principals. For most identities, the format is
        #     `principal://iam.googleapis.com/{identity pool name}/subject/{subject}`.
        #     Some GKE identities, such as GKE_WORKLOAD, FREEFORM, and GKE_HUB_WORKLOAD,
        #     still use the legacy format `serviceAccount:{identity pool
        #     name}[\\{subject}]`.
        # @!attribute [rw] service_account_key_name
        #   @return [::String]
        #     The name of the service account key that was used to create or exchange
        #     credentials when authenticating the service account that made the request.
        #     This is a scheme-less URI full resource name. For example:
        #
        #     "//iam.googleapis.com/projects/\\{PROJECT_ID}/serviceAccounts/\\{ACCOUNT}/keys/\\{key}".
        # @!attribute [rw] service_account_delegation_info
        #   @return [::Array<::Google::Cloud::SecurityCenter::V2::ServiceAccountDelegationInfo>]
        #     The identity delegation history of an authenticated service account that
        #     made the request. The `serviceAccountDelegationInfo[]` object contains
        #     information about the real authorities that try to access Google Cloud
        #     resources by delegating on a service account. When multiple authorities are
        #     present, they are guaranteed to be sorted based on the original ordering of
        #     the identity delegation events.
        # @!attribute [rw] user_name
        #   @return [::String]
        #     A string that represents a username. The username provided depends on the
        #     type of the finding and is likely not an IAM principal. For example, this
        #     can be a system username if the finding is related to a virtual machine, or
        #     it can be an application login username.
        class Access
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Identity delegation history of an authenticated service account.
        # @!attribute [rw] principal_email
        #   @return [::String]
        #     The email address of a Google account.
        # @!attribute [rw] principal_subject
        #   @return [::String]
        #     A string representing the principal_subject associated with the identity.
        #     As compared to `principal_email`, supports principals that aren't
        #     associated with email addresses, such as third party principals. For most
        #     identities, the format will be `principal://iam.googleapis.com/{identity
        #     pool name}/subjects/\\{subject}` except for some GKE identities
        #     (GKE_WORKLOAD, FREEFORM, GKE_HUB_WORKLOAD) that are still in the legacy
        #     format `serviceAccount:{identity pool name}[{subject}]`
        class ServiceAccountDelegationInfo
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Represents a geographical location for a given access.
        # @!attribute [rw] region_code
        #   @return [::String]
        #     A CLDR.
        class Geolocation
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end
      end
    end
  end
end
