mirror of
https://dev.azure.com/schwarzit/schwarzit.stackit-public/_git/audit-go
synced 2026-02-18 05:31:51 +00:00
Add event source, region and container reference to audit event and
replace wrapping protobuf message type with cloud event wrapper
This commit is contained in:
parent
6968ddb5c9
commit
dff37867e5
22 changed files with 1022 additions and 936 deletions
|
|
@ -2,6 +2,7 @@ package api
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"time"
|
||||||
|
|
||||||
auditV1 "dev.azure.com/schwarzit/schwarzit.stackit-core-platform/common-audit.git/gen/go/audit/v1"
|
auditV1 "dev.azure.com/schwarzit/schwarzit.stackit-core-platform/common-audit.git/gen/go/audit/v1"
|
||||||
|
|
||||||
|
|
@ -58,13 +59,13 @@ type AuditApi interface {
|
||||||
visibility auditV1.Visibility,
|
visibility auditV1.Visibility,
|
||||||
routingIdentifier *RoutingIdentifier,
|
routingIdentifier *RoutingIdentifier,
|
||||||
objectIdentifier *auditV1.ObjectIdentifier,
|
objectIdentifier *auditV1.ObjectIdentifier,
|
||||||
) (SerializedPayload, error)
|
) (*CloudEvent, error)
|
||||||
|
|
||||||
// Send the serialized content as byte array to the audit log system.
|
// Send the serialized content as byte array to the audit log system.
|
||||||
Send(
|
Send(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
routingIdentifier *RoutingIdentifier,
|
routingIdentifier *RoutingIdentifier,
|
||||||
serializedPayload *SerializedPayload,
|
serializedPayload *CloudEvent,
|
||||||
) error
|
) error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -74,14 +75,47 @@ type ProtobufValidator interface {
|
||||||
Validate(msg proto.Message) error
|
Validate(msg proto.Message) error
|
||||||
}
|
}
|
||||||
|
|
||||||
// SerializedPayload is an abstraction for serialized content
|
// CloudEvent is a representation of a cloudevents.io object.
|
||||||
type SerializedPayload interface {
|
//
|
||||||
|
// More information about the schema and attribute semantics can be found here:
|
||||||
|
// https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#required-attributes
|
||||||
|
type CloudEvent struct {
|
||||||
|
|
||||||
// GetPayload returns the actual payload as byte array
|
// The version of the CloudEvents specification which the event uses.
|
||||||
GetPayload() []byte
|
// This enables the interpretation of the context. Compliant event producers MUST use a value of 1.0
|
||||||
|
// when referring to this version of the specification.
|
||||||
|
//
|
||||||
|
// Currently, this attribute will only have the 'major' and 'minor' version numbers included in it.
|
||||||
|
// This allows for 'patch' changes to the specification to be made without changing this property's
|
||||||
|
// value in the serialization.
|
||||||
|
specVersion string
|
||||||
|
|
||||||
// GetContentType returns the content type of the payload
|
// The source system uri-reference. Producers MUST ensure that source + id is unique for each distinct event.
|
||||||
GetContentType() string
|
source string
|
||||||
|
|
||||||
|
// Identifier of the event. Producers MUST ensure that source + id is unique for each distinct event.
|
||||||
|
// If a duplicate event is re-sent (e.g. due to a network error) it MAY have the same id.
|
||||||
|
// Consumers MAY assume that Events with identical source and id are duplicates.
|
||||||
|
id string
|
||||||
|
|
||||||
|
// The time when the event happened
|
||||||
|
time time.Time
|
||||||
|
|
||||||
|
// The content type of the payload
|
||||||
|
// Examples could be:
|
||||||
|
// - application/cloudevents+json
|
||||||
|
// - application/cloudevents+json; charset=UTF-8
|
||||||
|
// - application/cloudevents-batch+json
|
||||||
|
// - application/cloudevents+protobuf
|
||||||
|
// - application/cloudevents+avro
|
||||||
|
// Source: https://github.com/cloudevents/spec/blob/main/cloudevents/formats/protobuf-format.md
|
||||||
|
dataContentType string
|
||||||
|
|
||||||
|
// The object type (i.e. the fully qualified protobuf type name)
|
||||||
|
dataType string
|
||||||
|
|
||||||
|
// The serialized payload
|
||||||
|
data []byte
|
||||||
}
|
}
|
||||||
|
|
||||||
// RoutingIdentifierType is an enumeration of allowed identifier types.
|
// RoutingIdentifierType is an enumeration of allowed identifier types.
|
||||||
|
|
|
||||||
|
|
@ -131,38 +131,13 @@ func validateAndSerializePartially(
|
||||||
return &routableEvent, nil
|
return &routableEvent, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func serializeToProtobufMessage(routableEvent *auditV1.RoutableAuditEvent) (SerializedPayload, error) {
|
|
||||||
// Serialize routable event
|
|
||||||
routableEventBytes, err := proto.Marshal(routableEvent)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// Package the routable event with information about the type in a message
|
|
||||||
message := auditV1.ProtobufMessage{
|
|
||||||
Value: routableEventBytes,
|
|
||||||
ProtobufType: fmt.Sprintf("%v", routableEvent.ProtoReflect().Descriptor().FullName()),
|
|
||||||
}
|
|
||||||
|
|
||||||
// Serialize message
|
|
||||||
messageBytes, err := proto.Marshal(&message)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return &routablePayload{
|
|
||||||
payload: messageBytes,
|
|
||||||
contentType: ContentTypeProtobuf,
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Send implements AuditApi.Send
|
// Send implements AuditApi.Send
|
||||||
func send(
|
func send(
|
||||||
topicNameResolver *TopicNameResolver,
|
topicNameResolver *TopicNameResolver,
|
||||||
messagingApi *messaging.MessagingApi,
|
messagingApi *messaging.MessagingApi,
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
routingIdentifier *RoutingIdentifier,
|
routingIdentifier *RoutingIdentifier,
|
||||||
serializedPayload *SerializedPayload,
|
cloudEvent *CloudEvent,
|
||||||
) error {
|
) error {
|
||||||
|
|
||||||
if topicNameResolver == nil {
|
if topicNameResolver == nil {
|
||||||
|
|
@ -171,7 +146,7 @@ func send(
|
||||||
if messagingApi == nil {
|
if messagingApi == nil {
|
||||||
return ErrMessagingApiNil
|
return ErrMessagingApiNil
|
||||||
}
|
}
|
||||||
if serializedPayload == nil {
|
if cloudEvent == nil {
|
||||||
return ErrSerializedPayloadNil
|
return ErrSerializedPayloadNil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -180,5 +155,18 @@ func send(
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return (*messagingApi).Send(ctx, topic, (*serializedPayload).GetPayload(), (*serializedPayload).GetContentType())
|
applicationAttributes := make(map[string]any)
|
||||||
|
applicationAttributes["cloudEvents:specversion"] = cloudEvent.specVersion
|
||||||
|
applicationAttributes["cloudEvents:source"] = cloudEvent.source
|
||||||
|
applicationAttributes["cloudEvents:id"] = cloudEvent.id
|
||||||
|
applicationAttributes["cloudEvents:time"] = cloudEvent.time.UnixMilli()
|
||||||
|
applicationAttributes["cloudEvents:datacontenttype"] = cloudEvent.dataContentType
|
||||||
|
applicationAttributes["cloudEvents:type"] = cloudEvent.dataType
|
||||||
|
|
||||||
|
return (*messagingApi).Send(
|
||||||
|
ctx,
|
||||||
|
topic,
|
||||||
|
(*cloudEvent).data,
|
||||||
|
(*cloudEvent).dataContentType,
|
||||||
|
applicationAttributes)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@ package api
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
|
||||||
"google.golang.org/protobuf/types/known/timestamppb"
|
"google.golang.org/protobuf/types/known/timestamppb"
|
||||||
"google.golang.org/protobuf/types/known/wrapperspb"
|
"google.golang.org/protobuf/types/known/wrapperspb"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
@ -23,8 +22,15 @@ type MessagingApiMock struct {
|
||||||
mock.Mock
|
mock.Mock
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *MessagingApiMock) Send(ctx context.Context, topic string, data []byte, contentType string) error {
|
func (m *MessagingApiMock) Send(
|
||||||
args := m.Called(ctx, topic, data, contentType)
|
ctx context.Context,
|
||||||
|
topic string,
|
||||||
|
data []byte,
|
||||||
|
contentType string,
|
||||||
|
applicationProperties map[string]any,
|
||||||
|
) error {
|
||||||
|
|
||||||
|
args := m.Called(ctx, topic, data, contentType, applicationProperties)
|
||||||
return args.Error(0)
|
return args.Error(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -111,6 +117,8 @@ func Test_ValidateAndSerializePartially_AuditEventSequenceNumber(t *testing.T) {
|
||||||
|
|
||||||
t.Run("Sequence number not set", func(t *testing.T) {
|
t.Run("Sequence number not set", func(t *testing.T) {
|
||||||
event := &auditV1.AuditEvent{
|
event := &auditV1.AuditEvent{
|
||||||
|
EventSource: "resource-manager",
|
||||||
|
Region: auditV1.Region_REGION_EU01,
|
||||||
EventName: "ORGANIZATION_CREATED",
|
EventName: "ORGANIZATION_CREATED",
|
||||||
EventTimeStamp: timestamppb.New(time.Now()),
|
EventTimeStamp: timestamppb.New(time.Now()),
|
||||||
EventTrigger: auditV1.EventTrigger_EVENT_TRIGGER_EVENT,
|
EventTrigger: auditV1.EventTrigger_EVENT_TRIGGER_EVENT,
|
||||||
|
|
@ -129,6 +137,7 @@ func Test_ValidateAndSerializePartially_AuditEventSequenceNumber(t *testing.T) {
|
||||||
Identifier: identifier.String(),
|
Identifier: identifier.String(),
|
||||||
Type: auditV1.ObjectType_OBJECT_TYPE_ORGANIZATION,
|
Type: auditV1.ObjectType_OBJECT_TYPE_ORGANIZATION,
|
||||||
}
|
}
|
||||||
|
event.ResourceContainerReference = &auditV1.AuditEvent_ObjectIdentifier{ObjectIdentifier: objectIdentifier}
|
||||||
|
|
||||||
_, err := validateAndSerializePartially(
|
_, err := validateAndSerializePartially(
|
||||||
&validator, event, auditV1.Visibility_VISIBILITY_PUBLIC, routingIdentifier, objectIdentifier)
|
&validator, event, auditV1.Visibility_VISIBILITY_PUBLIC, routingIdentifier, objectIdentifier)
|
||||||
|
|
@ -278,34 +287,6 @@ func Test_ValidateAndSerializePartially_SystemEvent(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func Test_SerializeToProtobufMessage(t *testing.T) {
|
|
||||||
validator := NewValidator(t)
|
|
||||||
|
|
||||||
// Create test data
|
|
||||||
event, identifier, objectIdentifier := NewOrganizationAuditEventWithDetails()
|
|
||||||
|
|
||||||
// Serialize to routable event
|
|
||||||
routableEvent, err := validateAndSerializePartially(
|
|
||||||
&validator, event, auditV1.Visibility_VISIBILITY_PUBLIC, identifier, objectIdentifier)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
|
|
||||||
// Serialize to protobuf message
|
|
||||||
serializedPayload, err := serializeToProtobufMessage(routableEvent)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.Equal(t, serializedPayload.GetContentType(), ContentTypeProtobuf)
|
|
||||||
|
|
||||||
// Deserialize
|
|
||||||
var deserializedEvent auditV1.ProtobufMessage
|
|
||||||
assert.NoError(t, proto.Unmarshal(serializedPayload.GetPayload(), &deserializedEvent))
|
|
||||||
|
|
||||||
expectedProtobufType := fmt.Sprintf("%v", routableEvent.ProtoReflect().Descriptor().FullName())
|
|
||||||
assert.Equal(t, expectedProtobufType, deserializedEvent.ProtobufType)
|
|
||||||
|
|
||||||
var deserializedRoutableEvent auditV1.RoutableAuditEvent
|
|
||||||
assert.NoError(t, proto.Unmarshal(deserializedEvent.Value, &deserializedRoutableEvent))
|
|
||||||
assert.True(t, proto.Equal(routableEvent, &deserializedRoutableEvent))
|
|
||||||
}
|
|
||||||
|
|
||||||
func Test_Send_TopicNameResolverNil(t *testing.T) {
|
func Test_Send_TopicNameResolverNil(t *testing.T) {
|
||||||
err := send(nil, nil, context.Background(), nil, nil)
|
err := send(nil, nil, context.Background(), nil, nil)
|
||||||
assert.ErrorIs(t, err, ErrTopicNameResolverNil)
|
assert.ErrorIs(t, err, ErrTopicNameResolverNil)
|
||||||
|
|
@ -318,10 +299,10 @@ func Test_Send_TopicNameResolutionError(t *testing.T) {
|
||||||
topicNameResolverMock.On("Resolve", mock.Anything).Return("topic", expectedError)
|
topicNameResolverMock.On("Resolve", mock.Anything).Return("topic", expectedError)
|
||||||
var topicNameResolver TopicNameResolver = &topicNameResolverMock
|
var topicNameResolver TopicNameResolver = &topicNameResolverMock
|
||||||
|
|
||||||
var serializedPayload SerializedPayload = &routablePayload{}
|
var cloudEvent = CloudEvent{}
|
||||||
|
|
||||||
var messagingApi messaging.MessagingApi = &messaging.AmqpMessagingApi{}
|
var messagingApi messaging.MessagingApi = &messaging.AmqpMessagingApi{}
|
||||||
err := send(&topicNameResolver, &messagingApi, context.Background(), nil, &serializedPayload)
|
err := send(&topicNameResolver, &messagingApi, context.Background(), nil, &cloudEvent)
|
||||||
assert.ErrorIs(t, err, expectedError)
|
assert.ErrorIs(t, err, expectedError)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -343,12 +324,11 @@ func Test_Send(t *testing.T) {
|
||||||
topicNameResolverMock.On("Resolve", mock.Anything).Return("topic", nil)
|
topicNameResolverMock.On("Resolve", mock.Anything).Return("topic", nil)
|
||||||
var topicNameResolver TopicNameResolver = &topicNameResolverMock
|
var topicNameResolver TopicNameResolver = &topicNameResolverMock
|
||||||
|
|
||||||
var serializedPayload SerializedPayload = &routablePayload{}
|
|
||||||
|
|
||||||
messagingApiMock := MessagingApiMock{}
|
messagingApiMock := MessagingApiMock{}
|
||||||
messagingApiMock.On("Send", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil)
|
messagingApiMock.On("Send", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil)
|
||||||
var messagingApi messaging.MessagingApi = &messagingApiMock
|
var messagingApi messaging.MessagingApi = &messagingApiMock
|
||||||
|
|
||||||
assert.NoError(t, send(&topicNameResolver, &messagingApi, context.Background(), nil, &serializedPayload))
|
var cloudEvent = CloudEvent{}
|
||||||
|
assert.NoError(t, send(&topicNameResolver, &messagingApi, context.Background(), nil, &cloudEvent))
|
||||||
assert.True(t, messagingApiMock.AssertNumberOfCalls(t, "Send", 1))
|
assert.True(t, messagingApiMock.AssertNumberOfCalls(t, "Send", 1))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"github.com/google/uuid"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"dev.azure.com/schwarzit/schwarzit.stackit-core-platform/common-audit.git/audit/messaging"
|
"dev.azure.com/schwarzit/schwarzit.stackit-core-platform/common-audit.git/audit/messaging"
|
||||||
|
|
@ -12,21 +14,6 @@ import (
|
||||||
"google.golang.org/protobuf/proto"
|
"google.golang.org/protobuf/proto"
|
||||||
)
|
)
|
||||||
|
|
||||||
// legacyPayload implements SerializedPayload.
|
|
||||||
type legacyPayload struct {
|
|
||||||
payload []byte
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetPayload implements SerializedPayload.GetPayload.
|
|
||||||
func (p *legacyPayload) GetPayload() []byte {
|
|
||||||
return p.payload
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetContentType implements SerializedPayload.GetContentType.
|
|
||||||
func (p *legacyPayload) GetContentType() string {
|
|
||||||
return "application/json"
|
|
||||||
}
|
|
||||||
|
|
||||||
// LegacyTopicNameResolver implements TopicNameResolver.
|
// LegacyTopicNameResolver implements TopicNameResolver.
|
||||||
// A hard-coded topic name is used, routing identifiers are ignored.
|
// A hard-coded topic name is used, routing identifiers are ignored.
|
||||||
type LegacyTopicNameResolver struct {
|
type LegacyTopicNameResolver struct {
|
||||||
|
|
@ -87,12 +74,12 @@ func (a *LegacyAuditApi) Log(
|
||||||
objectIdentifier *auditV1.ObjectIdentifier,
|
objectIdentifier *auditV1.ObjectIdentifier,
|
||||||
) error {
|
) error {
|
||||||
|
|
||||||
serializedPayload, err := a.ValidateAndSerialize(event, visibility, routingIdentifier, objectIdentifier)
|
cloudEvent, err := a.ValidateAndSerialize(event, visibility, routingIdentifier, objectIdentifier)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return a.Send(ctx, routingIdentifier, &serializedPayload)
|
return a.Send(ctx, routingIdentifier, cloudEvent)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ValidateAndSerialize implements AuditApi.ValidateAndSerialize.
|
// ValidateAndSerialize implements AuditApi.ValidateAndSerialize.
|
||||||
|
|
@ -102,7 +89,7 @@ func (a *LegacyAuditApi) ValidateAndSerialize(
|
||||||
visibility auditV1.Visibility,
|
visibility auditV1.Visibility,
|
||||||
routingIdentifier *RoutingIdentifier,
|
routingIdentifier *RoutingIdentifier,
|
||||||
objectIdentifier *auditV1.ObjectIdentifier,
|
objectIdentifier *auditV1.ObjectIdentifier,
|
||||||
) (SerializedPayload, error) {
|
) (*CloudEvent, error) {
|
||||||
|
|
||||||
routableEvent, err := validateAndSerializePartially(a.validator, event, visibility, routingIdentifier, objectIdentifier)
|
routableEvent, err := validateAndSerializePartially(a.validator, event, visibility, routingIdentifier, objectIdentifier)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -121,17 +108,26 @@ func (a *LegacyAuditApi) ValidateAndSerialize(
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return &legacyPayload{payload: legacyBytes}, nil
|
message := CloudEvent{
|
||||||
|
specVersion: "1.0",
|
||||||
|
source: event.EventSource,
|
||||||
|
id: uuid.NewString(),
|
||||||
|
time: event.EventTimeStamp.AsTime(),
|
||||||
|
dataContentType: "application/cloudevents+protobuf",
|
||||||
|
dataType: fmt.Sprintf("%v", routableEvent.ProtoReflect().Descriptor().FullName()),
|
||||||
|
data: legacyBytes,
|
||||||
|
}
|
||||||
|
return &message, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send implements AuditApi.Send
|
// Send implements AuditApi.Send
|
||||||
func (a *LegacyAuditApi) Send(
|
func (a *LegacyAuditApi) Send(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
routingIdentifier *RoutingIdentifier,
|
routingIdentifier *RoutingIdentifier,
|
||||||
serializedPayload *SerializedPayload,
|
cloudEvent *CloudEvent,
|
||||||
) error {
|
) error {
|
||||||
|
|
||||||
return send(a.topicNameResolver, a.messagingApi, ctx, routingIdentifier, serializedPayload)
|
return send(a.topicNameResolver, a.messagingApi, ctx, routingIdentifier, cloudEvent)
|
||||||
}
|
}
|
||||||
|
|
||||||
// convertAndSerializeIntoLegacyFormat converts the protobuf events into the json serialized legacy audit log format
|
// convertAndSerializeIntoLegacyFormat converts the protobuf events into the json serialized legacy audit log format
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,9 @@ package api
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"github.com/google/uuid"
|
||||||
|
"google.golang.org/protobuf/proto"
|
||||||
|
|
||||||
auditV1 "dev.azure.com/schwarzit/schwarzit.stackit-core-platform/common-audit.git/gen/go/audit/v1"
|
auditV1 "dev.azure.com/schwarzit/schwarzit.stackit-core-platform/common-audit.git/gen/go/audit/v1"
|
||||||
|
|
||||||
|
|
@ -43,17 +46,32 @@ func (a *MockAuditApi) ValidateAndSerialize(
|
||||||
visibility auditV1.Visibility,
|
visibility auditV1.Visibility,
|
||||||
routingIdentifier *RoutingIdentifier,
|
routingIdentifier *RoutingIdentifier,
|
||||||
objectIdentifier *auditV1.ObjectIdentifier,
|
objectIdentifier *auditV1.ObjectIdentifier,
|
||||||
) (SerializedPayload, error) {
|
) (*CloudEvent, error) {
|
||||||
|
|
||||||
routableEvent, err := validateAndSerializePartially(a.validator, event, visibility, routingIdentifier, objectIdentifier)
|
routableEvent, err := validateAndSerializePartially(a.validator, event, visibility, routingIdentifier, objectIdentifier)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return serializeToProtobufMessage(routableEvent)
|
routableEventBytes, err := proto.Marshal(routableEvent)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
message := CloudEvent{
|
||||||
|
specVersion: "1.0",
|
||||||
|
source: event.EventSource,
|
||||||
|
id: uuid.NewString(),
|
||||||
|
time: event.EventTimeStamp.AsTime(),
|
||||||
|
dataContentType: "application/cloudevents+protobuf",
|
||||||
|
dataType: fmt.Sprintf("%v", routableEvent.ProtoReflect().Descriptor().FullName()),
|
||||||
|
data: routableEventBytes,
|
||||||
|
}
|
||||||
|
|
||||||
|
return &message, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send implements AuditApi.Send
|
// Send implements AuditApi.Send
|
||||||
func (a *MockAuditApi) Send(context.Context, *RoutingIdentifier, *SerializedPayload) error {
|
func (a *MockAuditApi) Send(context.Context, *RoutingIdentifier, *CloudEvent) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,13 +25,13 @@ func TestMockAuditApi_Log(t *testing.T) {
|
||||||
|
|
||||||
t.Run("ValidateAndSerialize", func(t *testing.T) {
|
t.Run("ValidateAndSerialize", func(t *testing.T) {
|
||||||
visibility := auditV1.Visibility_VISIBILITY_PUBLIC
|
visibility := auditV1.Visibility_VISIBILITY_PUBLIC
|
||||||
serializedPayload, err := (*auditApi).ValidateAndSerialize(
|
cloudEvent, err := (*auditApi).ValidateAndSerialize(
|
||||||
event, visibility, routingIdentifier, objectIdentifier)
|
event, visibility, routingIdentifier, objectIdentifier)
|
||||||
|
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
validateProtobufMessagePayload(
|
validateRoutableEventPayload(
|
||||||
t, serializedPayload.GetPayload(), routingIdentifier, objectIdentifier, event, event.EventName, visibility)
|
t, cloudEvent.data, routingIdentifier, objectIdentifier, event, event.EventName, visibility)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("ValidateAndSerialize event nil", func(t *testing.T) {
|
t.Run("ValidateAndSerialize event nil", func(t *testing.T) {
|
||||||
|
|
@ -42,8 +42,8 @@ func TestMockAuditApi_Log(t *testing.T) {
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Send", func(t *testing.T) {
|
t.Run("Send", func(t *testing.T) {
|
||||||
var payload SerializedPayload = &routablePayload{}
|
var cloudEvent = CloudEvent{}
|
||||||
|
|
||||||
assert.Nil(t, (*auditApi).Send(context.Background(), routingIdentifier, &payload))
|
assert.Nil(t, (*auditApi).Send(context.Background(), routingIdentifier, &cloudEvent))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,27 +4,13 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/google/uuid"
|
||||||
|
"google.golang.org/protobuf/proto"
|
||||||
|
|
||||||
"dev.azure.com/schwarzit/schwarzit.stackit-core-platform/common-audit.git/audit/messaging"
|
"dev.azure.com/schwarzit/schwarzit.stackit-core-platform/common-audit.git/audit/messaging"
|
||||||
auditV1 "dev.azure.com/schwarzit/schwarzit.stackit-core-platform/common-audit.git/gen/go/audit/v1"
|
auditV1 "dev.azure.com/schwarzit/schwarzit.stackit-core-platform/common-audit.git/gen/go/audit/v1"
|
||||||
)
|
)
|
||||||
|
|
||||||
// routablePayload implements SerializedPayload.
|
|
||||||
type routablePayload struct {
|
|
||||||
payload []byte
|
|
||||||
contentType string
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetPayload implements SerializedPayload.GetPayload.
|
|
||||||
func (p *routablePayload) GetPayload() []byte {
|
|
||||||
return p.payload
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetContentType implements SerializedPayload.GetContentType.
|
|
||||||
func (p *routablePayload) GetContentType() string {
|
|
||||||
return p.contentType
|
|
||||||
}
|
|
||||||
|
|
||||||
// routableTopicNameResolver implements TopicNameResolver.
|
// routableTopicNameResolver implements TopicNameResolver.
|
||||||
// Resolves topic names by concatenating topic type prefixes with routing identifiers.
|
// Resolves topic names by concatenating topic type prefixes with routing identifiers.
|
||||||
type routableTopicNameResolver struct {
|
type routableTopicNameResolver struct {
|
||||||
|
|
@ -104,12 +90,12 @@ func (a *routableAuditApi) Log(
|
||||||
objectIdentifier *auditV1.ObjectIdentifier,
|
objectIdentifier *auditV1.ObjectIdentifier,
|
||||||
) error {
|
) error {
|
||||||
|
|
||||||
serializedPayload, err := a.ValidateAndSerialize(event, visibility, routingIdentifier, objectIdentifier)
|
cloudEvent, err := a.ValidateAndSerialize(event, visibility, routingIdentifier, objectIdentifier)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return a.Send(ctx, routingIdentifier, &serializedPayload)
|
return a.Send(ctx, routingIdentifier, cloudEvent)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ValidateAndSerialize implements AuditApi.ValidateAndSerialize
|
// ValidateAndSerialize implements AuditApi.ValidateAndSerialize
|
||||||
|
|
@ -118,7 +104,7 @@ func (a *routableAuditApi) ValidateAndSerialize(
|
||||||
visibility auditV1.Visibility,
|
visibility auditV1.Visibility,
|
||||||
routingIdentifier *RoutingIdentifier,
|
routingIdentifier *RoutingIdentifier,
|
||||||
objectIdentifier *auditV1.ObjectIdentifier,
|
objectIdentifier *auditV1.ObjectIdentifier,
|
||||||
) (SerializedPayload, error) {
|
) (*CloudEvent, error) {
|
||||||
|
|
||||||
routableEvent, err := validateAndSerializePartially(
|
routableEvent, err := validateAndSerializePartially(
|
||||||
a.validator,
|
a.validator,
|
||||||
|
|
@ -131,15 +117,30 @@ func (a *routableAuditApi) ValidateAndSerialize(
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return serializeToProtobufMessage(routableEvent)
|
routableEventBytes, err := proto.Marshal(routableEvent)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
message := CloudEvent{
|
||||||
|
specVersion: "1.0",
|
||||||
|
source: event.EventSource,
|
||||||
|
id: uuid.NewString(),
|
||||||
|
time: event.EventTimeStamp.AsTime(),
|
||||||
|
dataContentType: "application/cloudevents+protobuf",
|
||||||
|
dataType: fmt.Sprintf("%v", routableEvent.ProtoReflect().Descriptor().FullName()),
|
||||||
|
data: routableEventBytes,
|
||||||
|
}
|
||||||
|
|
||||||
|
return &message, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send implements AuditApi.Send
|
// Send implements AuditApi.Send
|
||||||
func (a *routableAuditApi) Send(
|
func (a *routableAuditApi) Send(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
routingIdentifier *RoutingIdentifier,
|
routingIdentifier *RoutingIdentifier,
|
||||||
serializedPayload *SerializedPayload,
|
cloudEvent *CloudEvent,
|
||||||
) error {
|
) error {
|
||||||
|
|
||||||
return send(a.topicNameResolver, a.messagingApi, ctx, routingIdentifier, serializedPayload)
|
return send(a.topicNameResolver, a.messagingApi, ctx, routingIdentifier, cloudEvent)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/google/uuid"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
|
@ -302,12 +303,18 @@ func TestRoutableAuditApi(t *testing.T) {
|
||||||
// Check topic name
|
// Check topic name
|
||||||
assert.Equal(t, systemTopicName, *message.Properties.To)
|
assert.Equal(t, systemTopicName, *message.Properties.To)
|
||||||
|
|
||||||
// Check deserialized message
|
// Check cloud event properties
|
||||||
var protobufMessage auditV1.ProtobufMessage
|
applicationProperties := message.ApplicationProperties
|
||||||
assert.NoError(t, proto.Unmarshal(message.Data[0], &protobufMessage))
|
assert.Equal(t, "1.0", applicationProperties["cloudEvents:specversion"])
|
||||||
assert.Equal(t, "audit.v1.RoutableAuditEvent", protobufMessage.ProtobufType)
|
assert.Equal(t, "resource-manager", applicationProperties["cloudEvents:source"])
|
||||||
|
_, isUuid := uuid.Parse(fmt.Sprintf("%s", applicationProperties["cloudEvents:id"]))
|
||||||
|
assert.True(t, true, isUuid)
|
||||||
|
assert.Equal(t, event.EventTimeStamp.AsTime().UnixMilli(), applicationProperties["cloudEvents:time"])
|
||||||
|
assert.Equal(t, "application/cloudevents+protobuf", applicationProperties["cloudEvents:datacontenttype"])
|
||||||
|
assert.Equal(t, "audit.v1.RoutableAuditEvent", applicationProperties["cloudEvents:type"])
|
||||||
|
|
||||||
validateProtobufMessagePayload(
|
// Check deserialized message
|
||||||
|
validateRoutableEventPayload(
|
||||||
t,
|
t,
|
||||||
message.Data[0],
|
message.Data[0],
|
||||||
nil,
|
nil,
|
||||||
|
|
@ -370,16 +377,22 @@ func validateSentEvent(
|
||||||
fmt.Sprintf("topic://%s/%s", topicPrefix, routingIdentifier.Identifier),
|
fmt.Sprintf("topic://%s/%s", topicPrefix, routingIdentifier.Identifier),
|
||||||
*message.Properties.To)
|
*message.Properties.To)
|
||||||
|
|
||||||
// Check deserialized message
|
// Check cloud event properties
|
||||||
var protobufMessage auditV1.ProtobufMessage
|
applicationProperties := message.ApplicationProperties
|
||||||
assert.NoError(t, proto.Unmarshal(message.Data[0], &protobufMessage))
|
assert.Equal(t, "1.0", applicationProperties["cloudEvents:specversion"])
|
||||||
assert.Equal(t, "audit.v1.RoutableAuditEvent", protobufMessage.ProtobufType)
|
assert.Equal(t, "resource-manager", applicationProperties["cloudEvents:source"])
|
||||||
|
_, isUuid := uuid.Parse(fmt.Sprintf("%s", applicationProperties["cloudEvents:id"]))
|
||||||
|
assert.True(t, true, isUuid)
|
||||||
|
assert.Equal(t, event.EventTimeStamp.AsTime().UnixMilli(), applicationProperties["cloudEvents:time"])
|
||||||
|
assert.Equal(t, "application/cloudevents+protobuf", applicationProperties["cloudEvents:datacontenttype"])
|
||||||
|
assert.Equal(t, "audit.v1.RoutableAuditEvent", applicationProperties["cloudEvents:type"])
|
||||||
|
|
||||||
validateProtobufMessagePayload(
|
// Check deserialized message
|
||||||
|
validateRoutableEventPayload(
|
||||||
t, message.Data[0], routingIdentifier, objectIdentifier, event, eventName, visibility)
|
t, message.Data[0], routingIdentifier, objectIdentifier, event, eventName, visibility)
|
||||||
}
|
}
|
||||||
|
|
||||||
func validateProtobufMessagePayload(
|
func validateRoutableEventPayload(
|
||||||
t *testing.T,
|
t *testing.T,
|
||||||
payload []byte,
|
payload []byte,
|
||||||
routingIdentifier *RoutingIdentifier,
|
routingIdentifier *RoutingIdentifier,
|
||||||
|
|
@ -389,14 +402,9 @@ func validateProtobufMessagePayload(
|
||||||
visibility auditV1.Visibility,
|
visibility auditV1.Visibility,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
// Check deserialized message
|
|
||||||
var protobufMessage auditV1.ProtobufMessage
|
|
||||||
assert.NoError(t, proto.Unmarshal(payload, &protobufMessage))
|
|
||||||
assert.Equal(t, "audit.v1.RoutableAuditEvent", protobufMessage.ProtobufType)
|
|
||||||
|
|
||||||
// Check routable audit event parameters
|
// Check routable audit event parameters
|
||||||
var routableAuditEvent auditV1.RoutableAuditEvent
|
var routableAuditEvent auditV1.RoutableAuditEvent
|
||||||
assert.NoError(t, proto.Unmarshal(protobufMessage.Value, &routableAuditEvent))
|
assert.NoError(t, proto.Unmarshal(payload, &routableAuditEvent))
|
||||||
|
|
||||||
assert.Equal(t, eventName, routableAuditEvent.EventName)
|
assert.Equal(t, eventName, routableAuditEvent.EventName)
|
||||||
assert.Equal(t, visibility, routableAuditEvent.Visibility)
|
assert.Equal(t, visibility, routableAuditEvent.Visibility)
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,8 @@ func NewOrganizationAuditEvent(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
auditEvent := &auditV1.AuditEvent{
|
auditEvent := &auditV1.AuditEvent{
|
||||||
|
EventSource: "resource-manager",
|
||||||
|
Region: auditV1.Region_REGION_EU01,
|
||||||
SequenceNumber: wrapperspb.Int64(0),
|
SequenceNumber: wrapperspb.Int64(0),
|
||||||
EventName: "ORGANIZATION_CREATED",
|
EventName: "ORGANIZATION_CREATED",
|
||||||
EventTimeStamp: timestamppb.New(time.Now()),
|
EventTimeStamp: timestamppb.New(time.Now()),
|
||||||
|
|
@ -42,6 +44,7 @@ func NewOrganizationAuditEvent(
|
||||||
Identifier: identifier.String(),
|
Identifier: identifier.String(),
|
||||||
Type: auditV1.ObjectType_OBJECT_TYPE_ORGANIZATION,
|
Type: auditV1.ObjectType_OBJECT_TYPE_ORGANIZATION,
|
||||||
}
|
}
|
||||||
|
auditEvent.ResourceContainerReference = &auditV1.AuditEvent_ObjectIdentifier{ObjectIdentifier: objectIdentifier}
|
||||||
|
|
||||||
if customization != nil {
|
if customization != nil {
|
||||||
(*customization)(auditEvent, routingIdentifier, objectIdentifier)
|
(*customization)(auditEvent, routingIdentifier, objectIdentifier)
|
||||||
|
|
@ -107,6 +110,8 @@ func NewFolderAuditEvent(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
auditEvent := &auditV1.AuditEvent{
|
auditEvent := &auditV1.AuditEvent{
|
||||||
|
EventSource: "resource-manager",
|
||||||
|
Region: auditV1.Region_REGION_EU01,
|
||||||
SequenceNumber: wrapperspb.Int64(0),
|
SequenceNumber: wrapperspb.Int64(0),
|
||||||
EventName: "FOLDER_CREATED",
|
EventName: "FOLDER_CREATED",
|
||||||
EventTimeStamp: timestamppb.New(time.Now()),
|
EventTimeStamp: timestamppb.New(time.Now()),
|
||||||
|
|
@ -125,6 +130,7 @@ func NewFolderAuditEvent(
|
||||||
Identifier: uuid.New().String(),
|
Identifier: uuid.New().String(),
|
||||||
Type: auditV1.ObjectType_OBJECT_TYPE_FOLDER,
|
Type: auditV1.ObjectType_OBJECT_TYPE_FOLDER,
|
||||||
}
|
}
|
||||||
|
auditEvent.ResourceContainerReference = &auditV1.AuditEvent_ObjectIdentifier{ObjectIdentifier: objectIdentifier}
|
||||||
|
|
||||||
if customization != nil {
|
if customization != nil {
|
||||||
(*customization)(auditEvent, routingIdentifier, objectIdentifier)
|
(*customization)(auditEvent, routingIdentifier, objectIdentifier)
|
||||||
|
|
@ -145,6 +151,8 @@ func NewProjectAuditEvent(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
auditEvent := &auditV1.AuditEvent{
|
auditEvent := &auditV1.AuditEvent{
|
||||||
|
EventSource: "resource-manager",
|
||||||
|
Region: auditV1.Region_REGION_EU01,
|
||||||
SequenceNumber: wrapperspb.Int64(0),
|
SequenceNumber: wrapperspb.Int64(0),
|
||||||
EventName: "PROJECT_CREATED",
|
EventName: "PROJECT_CREATED",
|
||||||
EventTimeStamp: timestamppb.New(time.Now()),
|
EventTimeStamp: timestamppb.New(time.Now()),
|
||||||
|
|
@ -164,6 +172,7 @@ func NewProjectAuditEvent(
|
||||||
Identifier: identifier.String(),
|
Identifier: identifier.String(),
|
||||||
Type: auditV1.ObjectType_OBJECT_TYPE_PROJECT,
|
Type: auditV1.ObjectType_OBJECT_TYPE_PROJECT,
|
||||||
}
|
}
|
||||||
|
auditEvent.ResourceContainerReference = &auditV1.AuditEvent_ObjectIdentifier{ObjectIdentifier: objectIdentifier}
|
||||||
|
|
||||||
if customization != nil {
|
if customization != nil {
|
||||||
(*customization)(auditEvent, routingIdentifier, objectIdentifier)
|
(*customization)(auditEvent, routingIdentifier, objectIdentifier)
|
||||||
|
|
@ -176,6 +185,8 @@ func NewSystemAuditEvent(
|
||||||
customization *func(*auditV1.AuditEvent)) *auditV1.AuditEvent {
|
customization *func(*auditV1.AuditEvent)) *auditV1.AuditEvent {
|
||||||
|
|
||||||
auditEvent := &auditV1.AuditEvent{
|
auditEvent := &auditV1.AuditEvent{
|
||||||
|
EventSource: "resource-manager",
|
||||||
|
Region: auditV1.Region_REGION_EU01,
|
||||||
SequenceNumber: wrapperspb.Int64(0),
|
SequenceNumber: wrapperspb.Int64(0),
|
||||||
EventName: "SYSTEM_CHANGED",
|
EventName: "SYSTEM_CHANGED",
|
||||||
EventTimeStamp: timestamppb.New(time.Now()),
|
EventTimeStamp: timestamppb.New(time.Now()),
|
||||||
|
|
@ -184,6 +195,8 @@ func NewSystemAuditEvent(
|
||||||
Id: uuid.NewString(),
|
Id: uuid.NewString(),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
auditEvent.ResourceContainerReference = &auditV1.AuditEvent_ObjectName{
|
||||||
|
ObjectName: auditV1.ObjectName_OBJECT_NAME_SYSTEM}
|
||||||
|
|
||||||
if customization != nil {
|
if customization != nil {
|
||||||
(*customization)(auditEvent)
|
(*customization)(auditEvent)
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,6 @@ import (
|
||||||
"log/slog"
|
"log/slog"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
//"dev.azure.com/schwarzit/schwarzit.stackit-core-platform/common-audit.git/audit/api"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Default connection timeout for the AMQP connection
|
// Default connection timeout for the AMQP connection
|
||||||
|
|
@ -23,9 +22,10 @@ type MessagingApi interface {
|
||||||
// * topic - the messaging topic where to send the data to
|
// * topic - the messaging topic where to send the data to
|
||||||
// * data - the serialized data as byte array
|
// * data - the serialized data as byte array
|
||||||
// * contentType - the contentType of the serialized data
|
// * contentType - the contentType of the serialized data
|
||||||
|
// * applicationProperties - properties to send with the message (i.e. cloud event headers)
|
||||||
//
|
//
|
||||||
// It returns technical errors for connection issues or sending problems.
|
// It returns technical errors for connection issues or sending problems.
|
||||||
Send(ctx context.Context, topic string, data []byte, contentType string) error
|
Send(ctx context.Context, topic string, data []byte, contentType string, applicationProperties map[string]any) error
|
||||||
}
|
}
|
||||||
|
|
||||||
// AmqpConfig provides AMQP connection related parameters.
|
// AmqpConfig provides AMQP connection related parameters.
|
||||||
|
|
@ -124,8 +124,8 @@ func (a *AmqpMessagingApi) connect() error {
|
||||||
|
|
||||||
// Send implements MessagingApi.Send.
|
// Send implements MessagingApi.Send.
|
||||||
// If errors occur the connection to the messaging system will be closed and re-established.
|
// If errors occur the connection to the messaging system will be closed and re-established.
|
||||||
func (a *AmqpMessagingApi) Send(ctx context.Context, topic string, data []byte, contentType string) error {
|
func (a *AmqpMessagingApi) Send(ctx context.Context, topic string, data []byte, contentType string, applicationProperties map[string]any) error {
|
||||||
err := a.trySend(ctx, topic, data, contentType)
|
err := a.trySend(ctx, topic, data, contentType, applicationProperties)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
@ -138,11 +138,11 @@ func (a *AmqpMessagingApi) Send(ctx context.Context, topic string, data []byte,
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return a.trySend(ctx, topic, data, contentType)
|
return a.trySend(ctx, topic, data, contentType, applicationProperties)
|
||||||
}
|
}
|
||||||
|
|
||||||
// trySend actually sends the given data as amqp.Message to the messaging system.
|
// trySend actually sends the given data as amqp.Message to the messaging system.
|
||||||
func (a *AmqpMessagingApi) trySend(ctx context.Context, topic string, data []byte, contentType string) error {
|
func (a *AmqpMessagingApi) trySend(ctx context.Context, topic string, data []byte, contentType string, applicationProperties map[string]any) error {
|
||||||
if !strings.HasPrefix(topic, AmqpTopicPrefix) {
|
if !strings.HasPrefix(topic, AmqpTopicPrefix) {
|
||||||
return fmt.Errorf(
|
return fmt.Errorf(
|
||||||
"topic %q name lacks mandatory prefix %q",
|
"topic %q name lacks mandatory prefix %q",
|
||||||
|
|
@ -165,7 +165,8 @@ func (a *AmqpMessagingApi) trySend(ctx context.Context, topic string, data []byt
|
||||||
To: &topic,
|
To: &topic,
|
||||||
ContentType: &contentType,
|
ContentType: &contentType,
|
||||||
},
|
},
|
||||||
Data: bytes,
|
ApplicationProperties: applicationProperties,
|
||||||
|
Data: bytes,
|
||||||
}
|
}
|
||||||
|
|
||||||
err = (*sender).Send(ctx, &message, nil)
|
err = (*sender).Send(ctx, &message, nil)
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ func TestAmqpMessagingApi_Send(t *testing.T) {
|
||||||
api, err := NewAmqpMessagingApi(AmqpConfig{URL: solaceContainer.AmqpConnectionString})
|
api, err := NewAmqpMessagingApi(AmqpConfig{URL: solaceContainer.AmqpConnectionString})
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
err = (*api).Send(ctx, "topic-name", []byte{}, "application/json")
|
err = (*api).Send(ctx, "topic-name", []byte{}, "application/json", make(map[string]any))
|
||||||
assert.EqualError(t, err, "topic \"topic-name\" name lacks mandatory prefix \"topic://\"")
|
assert.EqualError(t, err, "topic \"topic-name\" name lacks mandatory prefix \"topic://\"")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
@ -98,7 +98,7 @@ func TestAmqpMessagingApi_Send(t *testing.T) {
|
||||||
// First the session is closed as it returns the expected error
|
// First the session is closed as it returns the expected error
|
||||||
// Then the retry mechanism restarts the connection and successfully sends the data
|
// Then the retry mechanism restarts the connection and successfully sends the data
|
||||||
value := "test"
|
value := "test"
|
||||||
err = (*api).Send(ctx, topicName, []byte(value), "application/json")
|
err = (*api).Send(ctx, topicName, []byte(value), "application/json", make(map[string]any))
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
// Check that the mock was called
|
// Check that the mock was called
|
||||||
|
|
@ -130,7 +130,7 @@ func TestAmqpMessagingApi_Send(t *testing.T) {
|
||||||
|
|
||||||
// Instantiate mock sender
|
// Instantiate mock sender
|
||||||
senderMock := AmqpSenderMock{}
|
senderMock := AmqpSenderMock{}
|
||||||
senderMock.On("Send", mock.Anything, mock.Anything, mock.Anything).Return(expectedError)
|
senderMock.On("Send", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(expectedError)
|
||||||
senderMock.On("Close", mock.Anything).Return(nil)
|
senderMock.On("Close", mock.Anything).Return(nil)
|
||||||
var amqpSender AmqpSender = &senderMock
|
var amqpSender AmqpSender = &senderMock
|
||||||
|
|
||||||
|
|
@ -146,7 +146,7 @@ func TestAmqpMessagingApi_Send(t *testing.T) {
|
||||||
// First the sender and session are closed as the sender returns the expected error
|
// First the sender and session are closed as the sender returns the expected error
|
||||||
// Then the retry mechanism restarts the connection and successfully sends the data
|
// Then the retry mechanism restarts the connection and successfully sends the data
|
||||||
value := "test"
|
value := "test"
|
||||||
err = (*api).Send(ctx, topicName, []byte(value), "application/json")
|
err = (*api).Send(ctx, topicName, []byte(value), "application/json", make(map[string]any))
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
// Check that the mocks were called
|
// Check that the mocks were called
|
||||||
|
|
|
||||||
|
|
@ -79,6 +79,52 @@ func (EventTrigger) EnumDescriptor() ([]byte, []int) {
|
||||||
return file_audit_v1_audit_event_proto_rawDescGZIP(), []int{0}
|
return file_audit_v1_audit_event_proto_rawDescGZIP(), []int{0}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type Region int32
|
||||||
|
|
||||||
|
const (
|
||||||
|
Region_REGION_UNSPECIFIED Region = 0
|
||||||
|
Region_REGION_EU01 Region = 1
|
||||||
|
)
|
||||||
|
|
||||||
|
// Enum value maps for Region.
|
||||||
|
var (
|
||||||
|
Region_name = map[int32]string{
|
||||||
|
0: "REGION_UNSPECIFIED",
|
||||||
|
1: "REGION_EU01",
|
||||||
|
}
|
||||||
|
Region_value = map[string]int32{
|
||||||
|
"REGION_UNSPECIFIED": 0,
|
||||||
|
"REGION_EU01": 1,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
func (x Region) Enum() *Region {
|
||||||
|
p := new(Region)
|
||||||
|
*p = x
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x Region) String() string {
|
||||||
|
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (Region) Descriptor() protoreflect.EnumDescriptor {
|
||||||
|
return file_audit_v1_audit_event_proto_enumTypes[1].Descriptor()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (Region) Type() protoreflect.EnumType {
|
||||||
|
return &file_audit_v1_audit_event_proto_enumTypes[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x Region) Number() protoreflect.EnumNumber {
|
||||||
|
return protoreflect.EnumNumber(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use Region.Descriptor instead.
|
||||||
|
func (Region) EnumDescriptor() ([]byte, []int) {
|
||||||
|
return file_audit_v1_audit_event_proto_rawDescGZIP(), []int{1}
|
||||||
|
}
|
||||||
|
|
||||||
type Principal struct {
|
type Principal struct {
|
||||||
state protoimpl.MessageState
|
state protoimpl.MessageState
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
|
|
@ -284,28 +330,39 @@ type AuditEvent struct {
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
unknownFields protoimpl.UnknownFields
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
// Name of the source system
|
||||||
|
EventSource string `protobuf:"bytes,1,opt,name=event_source,json=eventSource,proto3" json:"event_source,omitempty"`
|
||||||
|
Region Region `protobuf:"varint,2,opt,name=region,proto3,enum=audit.v1.Region" json:"region,omitempty"`
|
||||||
// Sequence number of event sent by the service to identify missing events.
|
// Sequence number of event sent by the service to identify missing events.
|
||||||
SequenceNumber *wrapperspb.Int64Value `protobuf:"bytes,1,opt,name=sequence_number,json=sequenceNumber,proto3" json:"sequence_number,omitempty"`
|
SequenceNumber *wrapperspb.Int64Value `protobuf:"bytes,3,opt,name=sequence_number,json=sequenceNumber,proto3" json:"sequence_number,omitempty"`
|
||||||
// Functional event name with pattern <TYPE>_<ACTION>, e.g. ORGANIZATION_CREATED
|
// Functional event name with pattern <TYPE>_<ACTION>, e.g. ORGANIZATION_CREATED
|
||||||
// Important for filtering and translation / verbalization of event types
|
// Important for filtering and translation / verbalization of event types
|
||||||
// in the UI or data sinks.
|
// in the UI or data sinks.
|
||||||
EventName string `protobuf:"bytes,2,opt,name=event_name,json=eventName,proto3" json:"event_name,omitempty"`
|
EventName string `protobuf:"bytes,4,opt,name=event_name,json=eventName,proto3" json:"event_name,omitempty"`
|
||||||
// The time when the event happened. Must not be a value in the future.
|
// The time when the event happened. Must not be a value in the future.
|
||||||
EventTimeStamp *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=event_time_stamp,json=eventTimeStamp,proto3" json:"event_time_stamp,omitempty"`
|
EventTimeStamp *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=event_time_stamp,json=eventTimeStamp,proto3" json:"event_time_stamp,omitempty"`
|
||||||
EventTrigger EventTrigger `protobuf:"varint,4,opt,name=event_trigger,json=eventTrigger,proto3,enum=audit.v1.EventTrigger" json:"event_trigger,omitempty"`
|
EventTrigger EventTrigger `protobuf:"varint,6,opt,name=event_trigger,json=eventTrigger,proto3,enum=audit.v1.EventTrigger" json:"event_trigger,omitempty"`
|
||||||
// Request details - mandatory if event_trigger is set to "EVENT_REQUEST"
|
// Request details - mandatory if event_trigger is set to "EVENT_REQUEST"
|
||||||
Request *RequestDetails `protobuf:"bytes,5,opt,name=request,proto3,oneof" json:"request,omitempty"`
|
Request *RequestDetails `protobuf:"bytes,7,opt,name=request,proto3,oneof" json:"request,omitempty"`
|
||||||
Initiator *Principal `protobuf:"bytes,6,opt,name=initiator,proto3" json:"initiator,omitempty"`
|
Initiator *Principal `protobuf:"bytes,8,opt,name=initiator,proto3" json:"initiator,omitempty"`
|
||||||
// List of service account delegation principals.
|
// List of service account delegation principals.
|
||||||
// -> Chain from service account to the actual user who initiated the action.
|
// -> Chain from service account to the actual user who initiated the action.
|
||||||
Principals []*Principal `protobuf:"bytes,7,rep,name=principals,proto3" json:"principals,omitempty"`
|
Principals []*Principal `protobuf:"bytes,9,rep,name=principals,proto3" json:"principals,omitempty"`
|
||||||
ResourceId *string `protobuf:"bytes,8,opt,name=resource_id,json=resourceId,proto3,oneof" json:"resource_id,omitempty"`
|
// Identifier the audit log event refers to
|
||||||
ResourceName *string `protobuf:"bytes,9,opt,name=resource_name,json=resourceName,proto3,oneof" json:"resource_name,omitempty"`
|
//
|
||||||
CorrelationId *string `protobuf:"bytes,10,opt,name=correlation_id,json=correlationId,proto3,oneof" json:"correlation_id,omitempty"`
|
// Types that are assignable to ResourceContainerReference:
|
||||||
|
//
|
||||||
|
// *AuditEvent_ObjectName
|
||||||
|
// *AuditEvent_ObjectIdentifier
|
||||||
|
ResourceContainerReference isAuditEvent_ResourceContainerReference `protobuf_oneof:"resource_container_reference"`
|
||||||
|
// The identifier of the actual resource (e.g. a VM)
|
||||||
|
ResourceId *string `protobuf:"bytes,12,opt,name=resource_id,json=resourceId,proto3,oneof" json:"resource_id,omitempty"`
|
||||||
|
ResourceName *string `protobuf:"bytes,13,opt,name=resource_name,json=resourceName,proto3,oneof" json:"resource_name,omitempty"`
|
||||||
|
CorrelationId *string `protobuf:"bytes,14,opt,name=correlation_id,json=correlationId,proto3,oneof" json:"correlation_id,omitempty"`
|
||||||
// Result of the operation to publish with the event
|
// Result of the operation to publish with the event
|
||||||
Result *structpb.Struct `protobuf:"bytes,11,opt,name=result,proto3,oneof" json:"result,omitempty"`
|
Result *structpb.Struct `protobuf:"bytes,15,opt,name=result,proto3,oneof" json:"result,omitempty"`
|
||||||
// Additional information to publish with the event
|
// Additional information to publish with the event
|
||||||
Details *structpb.Struct `protobuf:"bytes,12,opt,name=details,proto3,oneof" json:"details,omitempty"`
|
Details *structpb.Struct `protobuf:"bytes,16,opt,name=details,proto3,oneof" json:"details,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *AuditEvent) Reset() {
|
func (x *AuditEvent) Reset() {
|
||||||
|
|
@ -340,6 +397,20 @@ func (*AuditEvent) Descriptor() ([]byte, []int) {
|
||||||
return file_audit_v1_audit_event_proto_rawDescGZIP(), []int{3}
|
return file_audit_v1_audit_event_proto_rawDescGZIP(), []int{3}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (x *AuditEvent) GetEventSource() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.EventSource
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *AuditEvent) GetRegion() Region {
|
||||||
|
if x != nil {
|
||||||
|
return x.Region
|
||||||
|
}
|
||||||
|
return Region_REGION_UNSPECIFIED
|
||||||
|
}
|
||||||
|
|
||||||
func (x *AuditEvent) GetSequenceNumber() *wrapperspb.Int64Value {
|
func (x *AuditEvent) GetSequenceNumber() *wrapperspb.Int64Value {
|
||||||
if x != nil {
|
if x != nil {
|
||||||
return x.SequenceNumber
|
return x.SequenceNumber
|
||||||
|
|
@ -389,6 +460,27 @@ func (x *AuditEvent) GetPrincipals() []*Principal {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *AuditEvent) GetResourceContainerReference() isAuditEvent_ResourceContainerReference {
|
||||||
|
if m != nil {
|
||||||
|
return m.ResourceContainerReference
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *AuditEvent) GetObjectName() ObjectName {
|
||||||
|
if x, ok := x.GetResourceContainerReference().(*AuditEvent_ObjectName); ok {
|
||||||
|
return x.ObjectName
|
||||||
|
}
|
||||||
|
return ObjectName_OBJECT_NAME_UNSPECIFIED
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *AuditEvent) GetObjectIdentifier() *ObjectIdentifier {
|
||||||
|
if x, ok := x.GetResourceContainerReference().(*AuditEvent_ObjectIdentifier); ok {
|
||||||
|
return x.ObjectIdentifier
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (x *AuditEvent) GetResourceId() string {
|
func (x *AuditEvent) GetResourceId() string {
|
||||||
if x != nil && x.ResourceId != nil {
|
if x != nil && x.ResourceId != nil {
|
||||||
return *x.ResourceId
|
return *x.ResourceId
|
||||||
|
|
@ -424,6 +516,25 @@ func (x *AuditEvent) GetDetails() *structpb.Struct {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type isAuditEvent_ResourceContainerReference interface {
|
||||||
|
isAuditEvent_ResourceContainerReference()
|
||||||
|
}
|
||||||
|
|
||||||
|
type AuditEvent_ObjectName struct {
|
||||||
|
// If it is a technical event not related to an organization, folder or project
|
||||||
|
// Will NOT be routed to the end-user, only for internal analysis ->
|
||||||
|
// Clarify what do in the router
|
||||||
|
ObjectName ObjectName `protobuf:"varint,10,opt,name=object_name,json=objectName,proto3,enum=audit.v1.ObjectName,oneof"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type AuditEvent_ObjectIdentifier struct {
|
||||||
|
ObjectIdentifier *ObjectIdentifier `protobuf:"bytes,11,opt,name=object_identifier,json=objectIdentifier,proto3,oneof"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*AuditEvent_ObjectName) isAuditEvent_ResourceContainerReference() {}
|
||||||
|
|
||||||
|
func (*AuditEvent_ObjectIdentifier) isAuditEvent_ResourceContainerReference() {}
|
||||||
|
|
||||||
var File_audit_v1_audit_event_proto protoreflect.FileDescriptor
|
var File_audit_v1_audit_event_proto protoreflect.FileDescriptor
|
||||||
|
|
||||||
var file_audit_v1_audit_event_proto_rawDesc = []byte{
|
var file_audit_v1_audit_event_proto_rawDesc = []byte{
|
||||||
|
|
@ -437,118 +548,139 @@ var file_audit_v1_audit_event_proto_rawDesc = []byte{
|
||||||
0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f,
|
0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f,
|
||||||
0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||||
0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f,
|
0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f,
|
||||||
0x74, 0x6f, 0x22, 0x54, 0x0a, 0x09, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x12,
|
0x74, 0x6f, 0x1a, 0x15, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d,
|
||||||
0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03,
|
0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x54, 0x0a, 0x09, 0x50, 0x72, 0x69,
|
||||||
0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c,
|
0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
|
||||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x18, 0xff, 0x01,
|
0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x25,
|
||||||
0x60, 0x01, 0x48, 0x00, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x08,
|
0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba,
|
||||||
0x0a, 0x06, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0xf0, 0x02, 0x0a, 0x0e, 0x52, 0x65, 0x71,
|
0x48, 0x07, 0x72, 0x05, 0x18, 0xff, 0x01, 0x60, 0x01, 0x48, 0x00, 0x52, 0x05, 0x65, 0x6d, 0x61,
|
||||||
0x75, 0x65, 0x73, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x29, 0x0a, 0x08, 0x65,
|
0x69, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22,
|
||||||
0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xba,
|
0xf0, 0x02, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69,
|
||||||
0x48, 0x0a, 0xc8, 0x01, 0x01, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x08, 0x65, 0x6e,
|
0x6c, 0x73, 0x12, 0x29, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01,
|
||||||
0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x36, 0x0a, 0x11, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
|
0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xba, 0x48, 0x0a, 0xc8, 0x01, 0x01, 0x72, 0x05, 0x10, 0x01,
|
||||||
0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
|
0x18, 0xff, 0x01, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x36, 0x0a,
|
||||||
0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x70, 0x01, 0x52, 0x0f, 0x73,
|
0x11, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65,
|
||||||
0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x31,
|
0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01,
|
||||||
0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01,
|
0x72, 0x02, 0x70, 0x01, 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x70, 0x41, 0x64,
|
||||||
0x28, 0x09, 0x42, 0x0d, 0xba, 0x48, 0x0a, 0xc8, 0x01, 0x01, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff,
|
0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x31, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x67,
|
||||||
0x01, 0x48, 0x00, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x88, 0x01,
|
0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xba, 0x48, 0x0a, 0xc8, 0x01,
|
||||||
0x01, 0x12, 0x3c, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18,
|
0x01, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x48, 0x00, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72,
|
||||||
0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
|
0x41, 0x67, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61,
|
||||||
0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x48, 0x01,
|
0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67,
|
||||||
0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12,
|
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53,
|
||||||
0x30, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
|
0x74, 0x72, 0x75, 0x63, 0x74, 0x48, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74,
|
||||||
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
|
0x65, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x05,
|
||||||
0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x48, 0x02, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x88, 0x01,
|
0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
|
||||||
0x01, 0x12, 0x31, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03,
|
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x48, 0x02, 0x52,
|
||||||
0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65,
|
0x04, 0x62, 0x6f, 0x64, 0x79, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64,
|
||||||
0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61,
|
0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x75, 0x64, 0x69,
|
||||||
0x64, 0x65, 0x72, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x67,
|
0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64,
|
||||||
0x65, 0x6e, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65,
|
0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f,
|
||||||
0x72, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x4f, 0x0a, 0x0d, 0x52,
|
0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70,
|
||||||
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x03,
|
0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x62, 0x6f,
|
||||||
0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01,
|
0x64, 0x79, 0x22, 0x4f, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61,
|
||||||
0x01, 0x72, 0x02, 0x10, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x20, 0x0a, 0x05, 0x76, 0x61,
|
0x64, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
|
||||||
0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01,
|
0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, 0x01, 0x52, 0x03, 0x6b, 0x65,
|
||||||
0x01, 0x72, 0x02, 0x10, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xcb, 0x07, 0x0a,
|
0x79, 0x12, 0x20, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
|
||||||
0x0a, 0x41, 0x75, 0x64, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x59, 0x0a, 0x0f, 0x73,
|
0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, 0x01, 0x52, 0x05, 0x76, 0x61,
|
||||||
0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01,
|
0x6c, 0x75, 0x65, 0x22, 0xd7, 0x09, 0x0a, 0x0a, 0x41, 0x75, 0x64, 0x69, 0x74, 0x45, 0x76, 0x65,
|
||||||
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
|
0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x0c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72,
|
||||||
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75,
|
0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01,
|
||||||
0x65, 0x42, 0x13, 0xba, 0x48, 0x10, 0xc8, 0x01, 0x01, 0x22, 0x0b, 0x28, 0xff, 0xff, 0xff, 0xff,
|
0x72, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63,
|
||||||
0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x52, 0x0e, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65,
|
0x65, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
|
||||||
0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f,
|
0x0e, 0x32, 0x10, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67,
|
||||||
0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x19, 0xba, 0x48, 0x16, 0xc8,
|
0x69, 0x6f, 0x6e, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x06, 0x72, 0x65, 0x67,
|
||||||
0x01, 0x01, 0x72, 0x11, 0x32, 0x0f, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x5d, 0x2b, 0x5f, 0x5b, 0x41,
|
0x69, 0x6f, 0x6e, 0x12, 0x59, 0x0a, 0x0f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f,
|
||||||
0x2d, 0x5a, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65,
|
0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67,
|
||||||
0x12, 0x51, 0x0a, 0x10, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73,
|
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49,
|
||||||
0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
|
0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x13, 0xba, 0x48, 0x10, 0xc8, 0x01,
|
||||||
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
|
0x01, 0x22, 0x0b, 0x28, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x52, 0x0e,
|
||||||
0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0b, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0xb2, 0x01,
|
0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x38,
|
||||||
0x02, 0x38, 0x01, 0x52, 0x0e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74,
|
0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01,
|
||||||
0x61, 0x6d, 0x70, 0x12, 0x48, 0x0a, 0x0d, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x72, 0x69,
|
0x28, 0x09, 0x42, 0x19, 0xba, 0x48, 0x16, 0xc8, 0x01, 0x01, 0x72, 0x11, 0x32, 0x0f, 0x5e, 0x5b,
|
||||||
0x67, 0x67, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x61, 0x75, 0x64,
|
0x41, 0x2d, 0x5a, 0x5d, 0x2b, 0x5f, 0x5b, 0x41, 0x2d, 0x5a, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x65,
|
||||||
0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x69, 0x67, 0x67,
|
0x76, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x51, 0x0a, 0x10, 0x65, 0x76, 0x65, 0x6e,
|
||||||
0x65, 0x72, 0x42, 0x0b, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52,
|
0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01,
|
||||||
0x0c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x37, 0x0a,
|
0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
||||||
0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18,
|
0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0b,
|
||||||
0x2e, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0xb2, 0x01, 0x02, 0x38, 0x01, 0x52, 0x0e, 0x65, 0x76, 0x65,
|
||||||
0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75,
|
0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x48, 0x0a, 0x0d, 0x65,
|
||||||
0x65, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x09, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61,
|
0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01,
|
||||||
0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x75, 0x64, 0x69,
|
0x28, 0x0e, 0x32, 0x16, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76,
|
||||||
0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x42, 0x06,
|
0x65, 0x6e, 0x74, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x42, 0x0b, 0xba, 0x48, 0x08, 0xc8,
|
||||||
0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x6f,
|
0x01, 0x01, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x72,
|
||||||
0x72, 0x12, 0x33, 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x73, 0x18,
|
0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
||||||
0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31,
|
0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76,
|
||||||
0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x6e,
|
0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73,
|
||||||
0x63, 0x69, 0x70, 0x61, 0x6c, 0x73, 0x12, 0x30, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
|
0x48, 0x01, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x39,
|
||||||
0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07,
|
0x0a, 0x09, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28,
|
||||||
0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x48, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x75,
|
0x0b, 0x32, 0x13, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69,
|
||||||
0x72, 0x63, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f,
|
0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09,
|
||||||
0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42,
|
0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x33, 0x0a, 0x0a, 0x70, 0x72, 0x69,
|
||||||
0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x48, 0x02, 0x52, 0x0c, 0x72,
|
0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e,
|
||||||
0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x36,
|
0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70,
|
||||||
0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64,
|
0x61, 0x6c, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x73, 0x12, 0x37,
|
||||||
0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18,
|
0x0a, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20,
|
||||||
0xff, 0x01, 0x48, 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f,
|
0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4f,
|
||||||
0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
|
0x62, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x62, 0x6a,
|
||||||
0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
|
0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x49, 0x0a, 0x11, 0x6f, 0x62, 0x6a, 0x65, 0x63,
|
||||||
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x48,
|
0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01,
|
||||||
0x04, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x07,
|
0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x62,
|
||||||
0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
|
0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00,
|
||||||
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
|
0x52, 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69,
|
||||||
0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x48, 0x05, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c,
|
0x65, 0x72, 0x12, 0x30, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69,
|
||||||
0x73, 0x88, 0x01, 0x01, 0x3a, 0x7c, 0xba, 0x48, 0x79, 0x1a, 0x77, 0x0a, 0x0f, 0x72, 0x65, 0x71,
|
0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01,
|
||||||
0x75, 0x65, 0x73, 0x74, 0x2e, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1b, 0x72, 0x65,
|
0x18, 0xff, 0x01, 0x48, 0x02, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49,
|
||||||
0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x20, 0x6d, 0x75,
|
0x64, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
|
||||||
0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x73, 0x65, 0x74, 0x1a, 0x47, 0x74, 0x68, 0x69, 0x73, 0x2e,
|
0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07,
|
||||||
0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x20, 0x3d, 0x3d,
|
0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x48, 0x03, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75,
|
||||||
0x20, 0x33, 0x20, 0x26, 0x26, 0x20, 0x68, 0x61, 0x73, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x72,
|
0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x0e, 0x63, 0x6f,
|
||||||
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e,
|
0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01,
|
||||||
0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x20, 0x21, 0x3d,
|
0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x48, 0x04,
|
||||||
0x20, 0x33, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x0e,
|
0x52, 0x0d, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x88,
|
||||||
0x0a, 0x0c, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x10,
|
0x01, 0x01, 0x12, 0x34, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x0f, 0x20, 0x01,
|
||||||
0x0a, 0x0e, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
|
0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
||||||
0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e,
|
0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x48, 0x05, 0x52, 0x06, 0x72,
|
||||||
0x5f, 0x69, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x0a,
|
0x65, 0x73, 0x75, 0x6c, 0x74, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61,
|
||||||
0x0a, 0x08, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2a, 0x7e, 0x0a, 0x0c, 0x45, 0x76,
|
0x69, 0x6c, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
|
||||||
0x65, 0x6e, 0x74, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x19, 0x45, 0x56,
|
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75,
|
||||||
0x45, 0x4e, 0x54, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50,
|
0x63, 0x74, 0x48, 0x06, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x88, 0x01, 0x01,
|
||||||
0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x56, 0x45,
|
0x3a, 0x7c, 0xba, 0x48, 0x79, 0x1a, 0x77, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
||||||
0x4e, 0x54, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54,
|
0x2e, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
|
||||||
0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x52, 0x49, 0x47,
|
0x74, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62,
|
||||||
0x47, 0x45, 0x52, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x10, 0x02, 0x12,
|
0x65, 0x20, 0x73, 0x65, 0x74, 0x1a, 0x47, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x65, 0x76, 0x65, 0x6e,
|
||||||
0x19, 0x0a, 0x15, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52,
|
0x74, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x20, 0x3d, 0x3d, 0x20, 0x33, 0x20, 0x26,
|
||||||
0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x03, 0x42, 0x81, 0x01, 0x0a, 0x1c, 0x63,
|
0x26, 0x20, 0x68, 0x61, 0x73, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65,
|
||||||
0x6f, 0x6d, 0x2e, 0x73, 0x63, 0x68, 0x77, 0x61, 0x72, 0x7a, 0x2e, 0x73, 0x74, 0x61, 0x63, 0x6b,
|
0x73, 0x74, 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x65, 0x76, 0x65, 0x6e,
|
||||||
0x69, 0x74, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x0f, 0x41, 0x75, 0x64,
|
0x74, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x20, 0x21, 0x3d, 0x20, 0x33, 0x42, 0x25,
|
||||||
0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x0f,
|
0x0a, 0x1c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61,
|
||||||
0x2e, 0x2f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x3b, 0x61, 0x75, 0x64, 0x69, 0x74, 0x56, 0x31, 0xa2,
|
0x69, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x05,
|
||||||
0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x08, 0x41, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x56, 0x31,
|
0xba, 0x48, 0x02, 0x08, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73,
|
||||||
0xca, 0x02, 0x08, 0x41, 0x75, 0x64, 0x69, 0x74, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x14, 0x41, 0x75,
|
0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69,
|
||||||
0x64, 0x69, 0x74, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
|
0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e,
|
||||||
0x74, 0x61, 0xea, 0x02, 0x09, 0x41, 0x75, 0x64, 0x69, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06,
|
0x61, 0x6d, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74,
|
||||||
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c,
|
||||||
|
0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2a, 0x7e, 0x0a,
|
||||||
|
0x0c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x1d, 0x0a,
|
||||||
|
0x19, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x55,
|
||||||
|
0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13,
|
||||||
|
0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x45, 0x56,
|
||||||
|
0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54,
|
||||||
|
0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52,
|
||||||
|
0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x52, 0x49, 0x47,
|
||||||
|
0x47, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x03, 0x2a, 0x31, 0x0a,
|
||||||
|
0x06, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x45, 0x47, 0x49, 0x4f,
|
||||||
|
0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
|
||||||
|
0x0f, 0x0a, 0x0b, 0x52, 0x45, 0x47, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x55, 0x30, 0x31, 0x10, 0x01,
|
||||||
|
0x42, 0x81, 0x01, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x63, 0x68, 0x77, 0x61, 0x72, 0x7a,
|
||||||
|
0x2e, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76,
|
||||||
|
0x31, 0x42, 0x0f, 0x41, 0x75, 0x64, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f,
|
||||||
|
0x74, 0x6f, 0x50, 0x01, 0x5a, 0x0f, 0x2e, 0x2f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x3b, 0x61, 0x75,
|
||||||
|
0x64, 0x69, 0x74, 0x56, 0x31, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x08, 0x41, 0x75,
|
||||||
|
0x64, 0x69, 0x74, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x08, 0x41, 0x75, 0x64, 0x69, 0x74, 0x5c, 0x56,
|
||||||
|
0x31, 0xe2, 0x02, 0x14, 0x41, 0x75, 0x64, 0x69, 0x74, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42,
|
||||||
|
0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x09, 0x41, 0x75, 0x64, 0x69, 0x74,
|
||||||
|
0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
@ -563,35 +695,41 @@ func file_audit_v1_audit_event_proto_rawDescGZIP() []byte {
|
||||||
return file_audit_v1_audit_event_proto_rawDescData
|
return file_audit_v1_audit_event_proto_rawDescData
|
||||||
}
|
}
|
||||||
|
|
||||||
var file_audit_v1_audit_event_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
|
var file_audit_v1_audit_event_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
|
||||||
var file_audit_v1_audit_event_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
|
var file_audit_v1_audit_event_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
|
||||||
var file_audit_v1_audit_event_proto_goTypes = []interface{}{
|
var file_audit_v1_audit_event_proto_goTypes = []interface{}{
|
||||||
(EventTrigger)(0), // 0: audit.v1.EventTrigger
|
(EventTrigger)(0), // 0: audit.v1.EventTrigger
|
||||||
(*Principal)(nil), // 1: audit.v1.Principal
|
(Region)(0), // 1: audit.v1.Region
|
||||||
(*RequestDetails)(nil), // 2: audit.v1.RequestDetails
|
(*Principal)(nil), // 2: audit.v1.Principal
|
||||||
(*RequestHeader)(nil), // 3: audit.v1.RequestHeader
|
(*RequestDetails)(nil), // 3: audit.v1.RequestDetails
|
||||||
(*AuditEvent)(nil), // 4: audit.v1.AuditEvent
|
(*RequestHeader)(nil), // 4: audit.v1.RequestHeader
|
||||||
(*structpb.Struct)(nil), // 5: google.protobuf.Struct
|
(*AuditEvent)(nil), // 5: audit.v1.AuditEvent
|
||||||
(*wrapperspb.Int64Value)(nil), // 6: google.protobuf.Int64Value
|
(*structpb.Struct)(nil), // 6: google.protobuf.Struct
|
||||||
(*timestamppb.Timestamp)(nil), // 7: google.protobuf.Timestamp
|
(*wrapperspb.Int64Value)(nil), // 7: google.protobuf.Int64Value
|
||||||
|
(*timestamppb.Timestamp)(nil), // 8: google.protobuf.Timestamp
|
||||||
|
(ObjectName)(0), // 9: audit.v1.ObjectName
|
||||||
|
(*ObjectIdentifier)(nil), // 10: audit.v1.ObjectIdentifier
|
||||||
}
|
}
|
||||||
var file_audit_v1_audit_event_proto_depIdxs = []int32{
|
var file_audit_v1_audit_event_proto_depIdxs = []int32{
|
||||||
5, // 0: audit.v1.RequestDetails.parameters:type_name -> google.protobuf.Struct
|
6, // 0: audit.v1.RequestDetails.parameters:type_name -> google.protobuf.Struct
|
||||||
5, // 1: audit.v1.RequestDetails.body:type_name -> google.protobuf.Struct
|
6, // 1: audit.v1.RequestDetails.body:type_name -> google.protobuf.Struct
|
||||||
3, // 2: audit.v1.RequestDetails.headers:type_name -> audit.v1.RequestHeader
|
4, // 2: audit.v1.RequestDetails.headers:type_name -> audit.v1.RequestHeader
|
||||||
6, // 3: audit.v1.AuditEvent.sequence_number:type_name -> google.protobuf.Int64Value
|
1, // 3: audit.v1.AuditEvent.region:type_name -> audit.v1.Region
|
||||||
7, // 4: audit.v1.AuditEvent.event_time_stamp:type_name -> google.protobuf.Timestamp
|
7, // 4: audit.v1.AuditEvent.sequence_number:type_name -> google.protobuf.Int64Value
|
||||||
0, // 5: audit.v1.AuditEvent.event_trigger:type_name -> audit.v1.EventTrigger
|
8, // 5: audit.v1.AuditEvent.event_time_stamp:type_name -> google.protobuf.Timestamp
|
||||||
2, // 6: audit.v1.AuditEvent.request:type_name -> audit.v1.RequestDetails
|
0, // 6: audit.v1.AuditEvent.event_trigger:type_name -> audit.v1.EventTrigger
|
||||||
1, // 7: audit.v1.AuditEvent.initiator:type_name -> audit.v1.Principal
|
3, // 7: audit.v1.AuditEvent.request:type_name -> audit.v1.RequestDetails
|
||||||
1, // 8: audit.v1.AuditEvent.principals:type_name -> audit.v1.Principal
|
2, // 8: audit.v1.AuditEvent.initiator:type_name -> audit.v1.Principal
|
||||||
5, // 9: audit.v1.AuditEvent.result:type_name -> google.protobuf.Struct
|
2, // 9: audit.v1.AuditEvent.principals:type_name -> audit.v1.Principal
|
||||||
5, // 10: audit.v1.AuditEvent.details:type_name -> google.protobuf.Struct
|
9, // 10: audit.v1.AuditEvent.object_name:type_name -> audit.v1.ObjectName
|
||||||
11, // [11:11] is the sub-list for method output_type
|
10, // 11: audit.v1.AuditEvent.object_identifier:type_name -> audit.v1.ObjectIdentifier
|
||||||
11, // [11:11] is the sub-list for method input_type
|
6, // 12: audit.v1.AuditEvent.result:type_name -> google.protobuf.Struct
|
||||||
11, // [11:11] is the sub-list for extension type_name
|
6, // 13: audit.v1.AuditEvent.details:type_name -> google.protobuf.Struct
|
||||||
11, // [11:11] is the sub-list for extension extendee
|
14, // [14:14] is the sub-list for method output_type
|
||||||
0, // [0:11] is the sub-list for field type_name
|
14, // [14:14] is the sub-list for method input_type
|
||||||
|
14, // [14:14] is the sub-list for extension type_name
|
||||||
|
14, // [14:14] is the sub-list for extension extendee
|
||||||
|
0, // [0:14] is the sub-list for field type_name
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { file_audit_v1_audit_event_proto_init() }
|
func init() { file_audit_v1_audit_event_proto_init() }
|
||||||
|
|
@ -599,6 +737,7 @@ func file_audit_v1_audit_event_proto_init() {
|
||||||
if File_audit_v1_audit_event_proto != nil {
|
if File_audit_v1_audit_event_proto != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
file_audit_v1_common_proto_init()
|
||||||
if !protoimpl.UnsafeEnabled {
|
if !protoimpl.UnsafeEnabled {
|
||||||
file_audit_v1_audit_event_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
file_audit_v1_audit_event_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*Principal); i {
|
switch v := v.(*Principal); i {
|
||||||
|
|
@ -651,13 +790,16 @@ func file_audit_v1_audit_event_proto_init() {
|
||||||
}
|
}
|
||||||
file_audit_v1_audit_event_proto_msgTypes[0].OneofWrappers = []interface{}{}
|
file_audit_v1_audit_event_proto_msgTypes[0].OneofWrappers = []interface{}{}
|
||||||
file_audit_v1_audit_event_proto_msgTypes[1].OneofWrappers = []interface{}{}
|
file_audit_v1_audit_event_proto_msgTypes[1].OneofWrappers = []interface{}{}
|
||||||
file_audit_v1_audit_event_proto_msgTypes[3].OneofWrappers = []interface{}{}
|
file_audit_v1_audit_event_proto_msgTypes[3].OneofWrappers = []interface{}{
|
||||||
|
(*AuditEvent_ObjectName)(nil),
|
||||||
|
(*AuditEvent_ObjectIdentifier)(nil),
|
||||||
|
}
|
||||||
type x struct{}
|
type x struct{}
|
||||||
out := protoimpl.TypeBuilder{
|
out := protoimpl.TypeBuilder{
|
||||||
File: protoimpl.DescBuilder{
|
File: protoimpl.DescBuilder{
|
||||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
RawDescriptor: file_audit_v1_audit_event_proto_rawDesc,
|
RawDescriptor: file_audit_v1_audit_event_proto_rawDesc,
|
||||||
NumEnums: 1,
|
NumEnums: 2,
|
||||||
NumMessages: 4,
|
NumMessages: 4,
|
||||||
NumExtensions: 0,
|
NumExtensions: 0,
|
||||||
NumServices: 0,
|
NumServices: 0,
|
||||||
|
|
|
||||||
|
|
@ -474,6 +474,10 @@ func (m *AuditEvent) validate(all bool) error {
|
||||||
|
|
||||||
var errors []error
|
var errors []error
|
||||||
|
|
||||||
|
// no validation rules for EventSource
|
||||||
|
|
||||||
|
// no validation rules for Region
|
||||||
|
|
||||||
if all {
|
if all {
|
||||||
switch v := interface{}(m.GetSequenceNumber()).(type) {
|
switch v := interface{}(m.GetSequenceNumber()).(type) {
|
||||||
case interface{ ValidateAll() error }:
|
case interface{ ValidateAll() error }:
|
||||||
|
|
@ -599,6 +603,64 @@ func (m *AuditEvent) validate(all bool) error {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch v := m.ResourceContainerReference.(type) {
|
||||||
|
case *AuditEvent_ObjectName:
|
||||||
|
if v == nil {
|
||||||
|
err := AuditEventValidationError{
|
||||||
|
field: "ResourceContainerReference",
|
||||||
|
reason: "oneof value cannot be a typed-nil",
|
||||||
|
}
|
||||||
|
if !all {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
errors = append(errors, err)
|
||||||
|
}
|
||||||
|
// no validation rules for ObjectName
|
||||||
|
case *AuditEvent_ObjectIdentifier:
|
||||||
|
if v == nil {
|
||||||
|
err := AuditEventValidationError{
|
||||||
|
field: "ResourceContainerReference",
|
||||||
|
reason: "oneof value cannot be a typed-nil",
|
||||||
|
}
|
||||||
|
if !all {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
errors = append(errors, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if all {
|
||||||
|
switch v := interface{}(m.GetObjectIdentifier()).(type) {
|
||||||
|
case interface{ ValidateAll() error }:
|
||||||
|
if err := v.ValidateAll(); err != nil {
|
||||||
|
errors = append(errors, AuditEventValidationError{
|
||||||
|
field: "ObjectIdentifier",
|
||||||
|
reason: "embedded message failed validation",
|
||||||
|
cause: err,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
case interface{ Validate() error }:
|
||||||
|
if err := v.Validate(); err != nil {
|
||||||
|
errors = append(errors, AuditEventValidationError{
|
||||||
|
field: "ObjectIdentifier",
|
||||||
|
reason: "embedded message failed validation",
|
||||||
|
cause: err,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if v, ok := interface{}(m.GetObjectIdentifier()).(interface{ Validate() error }); ok {
|
||||||
|
if err := v.Validate(); err != nil {
|
||||||
|
return AuditEventValidationError{
|
||||||
|
field: "ObjectIdentifier",
|
||||||
|
reason: "embedded message failed validation",
|
||||||
|
cause: err,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
_ = v // ensures v is used
|
||||||
|
}
|
||||||
|
|
||||||
if m.Request != nil {
|
if m.Request != nil {
|
||||||
|
|
||||||
if all {
|
if all {
|
||||||
|
|
|
||||||
285
gen/go/audit/v1/common.pb.go
Normal file
285
gen/go/audit/v1/common.pb.go
Normal file
|
|
@ -0,0 +1,285 @@
|
||||||
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
|
// versions:
|
||||||
|
// protoc-gen-go v1.34.1
|
||||||
|
// protoc (unknown)
|
||||||
|
// source: audit/v1/common.proto
|
||||||
|
|
||||||
|
package auditV1
|
||||||
|
|
||||||
|
import (
|
||||||
|
_ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate"
|
||||||
|
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||||
|
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||||
|
reflect "reflect"
|
||||||
|
sync "sync"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// Verify that this generated code is sufficiently up-to-date.
|
||||||
|
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
||||||
|
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
||||||
|
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||||||
|
)
|
||||||
|
|
||||||
|
type ObjectName int32
|
||||||
|
|
||||||
|
const (
|
||||||
|
ObjectName_OBJECT_NAME_UNSPECIFIED ObjectName = 0
|
||||||
|
// If the action happens on system level and doesn't relate to a known ObjectType.
|
||||||
|
ObjectName_OBJECT_NAME_SYSTEM ObjectName = 1
|
||||||
|
)
|
||||||
|
|
||||||
|
// Enum value maps for ObjectName.
|
||||||
|
var (
|
||||||
|
ObjectName_name = map[int32]string{
|
||||||
|
0: "OBJECT_NAME_UNSPECIFIED",
|
||||||
|
1: "OBJECT_NAME_SYSTEM",
|
||||||
|
}
|
||||||
|
ObjectName_value = map[string]int32{
|
||||||
|
"OBJECT_NAME_UNSPECIFIED": 0,
|
||||||
|
"OBJECT_NAME_SYSTEM": 1,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
func (x ObjectName) Enum() *ObjectName {
|
||||||
|
p := new(ObjectName)
|
||||||
|
*p = x
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x ObjectName) String() string {
|
||||||
|
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ObjectName) Descriptor() protoreflect.EnumDescriptor {
|
||||||
|
return file_audit_v1_common_proto_enumTypes[0].Descriptor()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ObjectName) Type() protoreflect.EnumType {
|
||||||
|
return &file_audit_v1_common_proto_enumTypes[0]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x ObjectName) Number() protoreflect.EnumNumber {
|
||||||
|
return protoreflect.EnumNumber(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use ObjectName.Descriptor instead.
|
||||||
|
func (ObjectName) EnumDescriptor() ([]byte, []int) {
|
||||||
|
return file_audit_v1_common_proto_rawDescGZIP(), []int{0}
|
||||||
|
}
|
||||||
|
|
||||||
|
// The type of the object the audit event refers to.
|
||||||
|
// Relevant for type-detection and lookups in the routing.
|
||||||
|
type ObjectType int32
|
||||||
|
|
||||||
|
const (
|
||||||
|
ObjectType_OBJECT_TYPE_UNSPECIFIED ObjectType = 0
|
||||||
|
ObjectType_OBJECT_TYPE_ORGANIZATION ObjectType = 1
|
||||||
|
ObjectType_OBJECT_TYPE_FOLDER ObjectType = 2
|
||||||
|
ObjectType_OBJECT_TYPE_PROJECT ObjectType = 3
|
||||||
|
)
|
||||||
|
|
||||||
|
// Enum value maps for ObjectType.
|
||||||
|
var (
|
||||||
|
ObjectType_name = map[int32]string{
|
||||||
|
0: "OBJECT_TYPE_UNSPECIFIED",
|
||||||
|
1: "OBJECT_TYPE_ORGANIZATION",
|
||||||
|
2: "OBJECT_TYPE_FOLDER",
|
||||||
|
3: "OBJECT_TYPE_PROJECT",
|
||||||
|
}
|
||||||
|
ObjectType_value = map[string]int32{
|
||||||
|
"OBJECT_TYPE_UNSPECIFIED": 0,
|
||||||
|
"OBJECT_TYPE_ORGANIZATION": 1,
|
||||||
|
"OBJECT_TYPE_FOLDER": 2,
|
||||||
|
"OBJECT_TYPE_PROJECT": 3,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
func (x ObjectType) Enum() *ObjectType {
|
||||||
|
p := new(ObjectType)
|
||||||
|
*p = x
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x ObjectType) String() string {
|
||||||
|
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ObjectType) Descriptor() protoreflect.EnumDescriptor {
|
||||||
|
return file_audit_v1_common_proto_enumTypes[1].Descriptor()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ObjectType) Type() protoreflect.EnumType {
|
||||||
|
return &file_audit_v1_common_proto_enumTypes[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x ObjectType) Number() protoreflect.EnumNumber {
|
||||||
|
return protoreflect.EnumNumber(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use ObjectType.Descriptor instead.
|
||||||
|
func (ObjectType) EnumDescriptor() ([]byte, []int) {
|
||||||
|
return file_audit_v1_common_proto_rawDescGZIP(), []int{1}
|
||||||
|
}
|
||||||
|
|
||||||
|
type ObjectIdentifier struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
// Identifier of the respective entity (e.g. Identifier of an organization)
|
||||||
|
Identifier string `protobuf:"bytes,1,opt,name=identifier,proto3" json:"identifier,omitempty"`
|
||||||
|
// Type of the respective entity relevant for routing
|
||||||
|
Type ObjectType `protobuf:"varint,2,opt,name=type,proto3,enum=audit.v1.ObjectType" json:"type,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ObjectIdentifier) Reset() {
|
||||||
|
*x = ObjectIdentifier{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_audit_v1_common_proto_msgTypes[0]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ObjectIdentifier) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*ObjectIdentifier) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *ObjectIdentifier) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_audit_v1_common_proto_msgTypes[0]
|
||||||
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use ObjectIdentifier.ProtoReflect.Descriptor instead.
|
||||||
|
func (*ObjectIdentifier) Descriptor() ([]byte, []int) {
|
||||||
|
return file_audit_v1_common_proto_rawDescGZIP(), []int{0}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ObjectIdentifier) GetIdentifier() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Identifier
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ObjectIdentifier) GetType() ObjectType {
|
||||||
|
if x != nil {
|
||||||
|
return x.Type
|
||||||
|
}
|
||||||
|
return ObjectType_OBJECT_TYPE_UNSPECIFIED
|
||||||
|
}
|
||||||
|
|
||||||
|
var File_audit_v1_common_proto protoreflect.FileDescriptor
|
||||||
|
|
||||||
|
var file_audit_v1_common_proto_rawDesc = []byte{
|
||||||
|
0x0a, 0x15, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
|
||||||
|
0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76,
|
||||||
|
0x31, 0x1a, 0x1b, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f,
|
||||||
|
0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x76,
|
||||||
|
0x0a, 0x10, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69,
|
||||||
|
0x65, 0x72, 0x12, 0x2b, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72,
|
||||||
|
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x72, 0x03,
|
||||||
|
0xb0, 0x01, 0x01, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12,
|
||||||
|
0x35, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e,
|
||||||
|
0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54,
|
||||||
|
0x79, 0x70, 0x65, 0x42, 0x0b, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x82, 0x01, 0x02, 0x10, 0x01,
|
||||||
|
0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x2a, 0x41, 0x0a, 0x0a, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74,
|
||||||
|
0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4e,
|
||||||
|
0x41, 0x4d, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
|
||||||
|
0x00, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4e, 0x41, 0x4d, 0x45,
|
||||||
|
0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x10, 0x01, 0x2a, 0x78, 0x0a, 0x0a, 0x4f, 0x62, 0x6a,
|
||||||
|
0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x42, 0x4a, 0x45, 0x43,
|
||||||
|
0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
|
||||||
|
0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54,
|
||||||
|
0x59, 0x50, 0x45, 0x5f, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e,
|
||||||
|
0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50,
|
||||||
|
0x45, 0x5f, 0x46, 0x4f, 0x4c, 0x44, 0x45, 0x52, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x42,
|
||||||
|
0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x52, 0x4f, 0x4a, 0x45, 0x43,
|
||||||
|
0x54, 0x10, 0x03, 0x42, 0x7d, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x63, 0x68, 0x77, 0x61,
|
||||||
|
0x72, 0x7a, 0x2e, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x74,
|
||||||
|
0x2e, 0x76, 0x31, 0x42, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f,
|
||||||
|
0x50, 0x01, 0x5a, 0x0f, 0x2e, 0x2f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x3b, 0x61, 0x75, 0x64, 0x69,
|
||||||
|
0x74, 0x56, 0x31, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x08, 0x41, 0x75, 0x64, 0x69,
|
||||||
|
0x74, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x08, 0x41, 0x75, 0x64, 0x69, 0x74, 0x5c, 0x56, 0x31, 0xe2,
|
||||||
|
0x02, 0x14, 0x41, 0x75, 0x64, 0x69, 0x74, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65,
|
||||||
|
0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x09, 0x41, 0x75, 0x64, 0x69, 0x74, 0x3a, 0x3a,
|
||||||
|
0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
file_audit_v1_common_proto_rawDescOnce sync.Once
|
||||||
|
file_audit_v1_common_proto_rawDescData = file_audit_v1_common_proto_rawDesc
|
||||||
|
)
|
||||||
|
|
||||||
|
func file_audit_v1_common_proto_rawDescGZIP() []byte {
|
||||||
|
file_audit_v1_common_proto_rawDescOnce.Do(func() {
|
||||||
|
file_audit_v1_common_proto_rawDescData = protoimpl.X.CompressGZIP(file_audit_v1_common_proto_rawDescData)
|
||||||
|
})
|
||||||
|
return file_audit_v1_common_proto_rawDescData
|
||||||
|
}
|
||||||
|
|
||||||
|
var file_audit_v1_common_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
|
||||||
|
var file_audit_v1_common_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
|
||||||
|
var file_audit_v1_common_proto_goTypes = []interface{}{
|
||||||
|
(ObjectName)(0), // 0: audit.v1.ObjectName
|
||||||
|
(ObjectType)(0), // 1: audit.v1.ObjectType
|
||||||
|
(*ObjectIdentifier)(nil), // 2: audit.v1.ObjectIdentifier
|
||||||
|
}
|
||||||
|
var file_audit_v1_common_proto_depIdxs = []int32{
|
||||||
|
1, // 0: audit.v1.ObjectIdentifier.type:type_name -> audit.v1.ObjectType
|
||||||
|
1, // [1:1] is the sub-list for method output_type
|
||||||
|
1, // [1:1] is the sub-list for method input_type
|
||||||
|
1, // [1:1] is the sub-list for extension type_name
|
||||||
|
1, // [1:1] is the sub-list for extension extendee
|
||||||
|
0, // [0:1] is the sub-list for field type_name
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() { file_audit_v1_common_proto_init() }
|
||||||
|
func file_audit_v1_common_proto_init() {
|
||||||
|
if File_audit_v1_common_proto != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if !protoimpl.UnsafeEnabled {
|
||||||
|
file_audit_v1_common_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*ObjectIdentifier); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
type x struct{}
|
||||||
|
out := protoimpl.TypeBuilder{
|
||||||
|
File: protoimpl.DescBuilder{
|
||||||
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
|
RawDescriptor: file_audit_v1_common_proto_rawDesc,
|
||||||
|
NumEnums: 2,
|
||||||
|
NumMessages: 1,
|
||||||
|
NumExtensions: 0,
|
||||||
|
NumServices: 0,
|
||||||
|
},
|
||||||
|
GoTypes: file_audit_v1_common_proto_goTypes,
|
||||||
|
DependencyIndexes: file_audit_v1_common_proto_depIdxs,
|
||||||
|
EnumInfos: file_audit_v1_common_proto_enumTypes,
|
||||||
|
MessageInfos: file_audit_v1_common_proto_msgTypes,
|
||||||
|
}.Build()
|
||||||
|
File_audit_v1_common_proto = out.File
|
||||||
|
file_audit_v1_common_proto_rawDesc = nil
|
||||||
|
file_audit_v1_common_proto_goTypes = nil
|
||||||
|
file_audit_v1_common_proto_depIdxs = nil
|
||||||
|
}
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// Code generated by protoc-gen-validate. DO NOT EDIT.
|
// Code generated by protoc-gen-validate. DO NOT EDIT.
|
||||||
// source: audit/v1/event.proto
|
// source: audit/v1/common.proto
|
||||||
|
|
||||||
package auditV1
|
package auditV1
|
||||||
|
|
||||||
|
|
@ -35,46 +35,46 @@ var (
|
||||||
_ = sort.Sort
|
_ = sort.Sort
|
||||||
)
|
)
|
||||||
|
|
||||||
// Validate checks the field values on ProtobufMessage with the rules defined
|
// Validate checks the field values on ObjectIdentifier with the rules defined
|
||||||
// in the proto definition for this message. If any rules are violated, the
|
// in the proto definition for this message. If any rules are violated, the
|
||||||
// first error encountered is returned, or nil if there are no violations.
|
// first error encountered is returned, or nil if there are no violations.
|
||||||
func (m *ProtobufMessage) Validate() error {
|
func (m *ObjectIdentifier) Validate() error {
|
||||||
return m.validate(false)
|
return m.validate(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ValidateAll checks the field values on ProtobufMessage with the rules
|
// ValidateAll checks the field values on ObjectIdentifier with the rules
|
||||||
// defined in the proto definition for this message. If any rules are
|
// defined in the proto definition for this message. If any rules are
|
||||||
// violated, the result is a list of violation errors wrapped in
|
// violated, the result is a list of violation errors wrapped in
|
||||||
// ProtobufMessageMultiError, or nil if none found.
|
// ObjectIdentifierMultiError, or nil if none found.
|
||||||
func (m *ProtobufMessage) ValidateAll() error {
|
func (m *ObjectIdentifier) ValidateAll() error {
|
||||||
return m.validate(true)
|
return m.validate(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *ProtobufMessage) validate(all bool) error {
|
func (m *ObjectIdentifier) validate(all bool) error {
|
||||||
if m == nil {
|
if m == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var errors []error
|
var errors []error
|
||||||
|
|
||||||
// no validation rules for Value
|
// no validation rules for Identifier
|
||||||
|
|
||||||
// no validation rules for ProtobufType
|
// no validation rules for Type
|
||||||
|
|
||||||
if len(errors) > 0 {
|
if len(errors) > 0 {
|
||||||
return ProtobufMessageMultiError(errors)
|
return ObjectIdentifierMultiError(errors)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// ProtobufMessageMultiError is an error wrapping multiple validation errors
|
// ObjectIdentifierMultiError is an error wrapping multiple validation errors
|
||||||
// returned by ProtobufMessage.ValidateAll() if the designated constraints
|
// returned by ObjectIdentifier.ValidateAll() if the designated constraints
|
||||||
// aren't met.
|
// aren't met.
|
||||||
type ProtobufMessageMultiError []error
|
type ObjectIdentifierMultiError []error
|
||||||
|
|
||||||
// Error returns a concatenation of all the error messages it wraps.
|
// Error returns a concatenation of all the error messages it wraps.
|
||||||
func (m ProtobufMessageMultiError) Error() string {
|
func (m ObjectIdentifierMultiError) Error() string {
|
||||||
var msgs []string
|
var msgs []string
|
||||||
for _, err := range m {
|
for _, err := range m {
|
||||||
msgs = append(msgs, err.Error())
|
msgs = append(msgs, err.Error())
|
||||||
|
|
@ -83,11 +83,11 @@ func (m ProtobufMessageMultiError) Error() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
// AllErrors returns a list of validation violation errors.
|
// AllErrors returns a list of validation violation errors.
|
||||||
func (m ProtobufMessageMultiError) AllErrors() []error { return m }
|
func (m ObjectIdentifierMultiError) AllErrors() []error { return m }
|
||||||
|
|
||||||
// ProtobufMessageValidationError is the validation error returned by
|
// ObjectIdentifierValidationError is the validation error returned by
|
||||||
// ProtobufMessage.Validate if the designated constraints aren't met.
|
// ObjectIdentifier.Validate if the designated constraints aren't met.
|
||||||
type ProtobufMessageValidationError struct {
|
type ObjectIdentifierValidationError struct {
|
||||||
field string
|
field string
|
||||||
reason string
|
reason string
|
||||||
cause error
|
cause error
|
||||||
|
|
@ -95,22 +95,22 @@ type ProtobufMessageValidationError struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Field function returns field value.
|
// Field function returns field value.
|
||||||
func (e ProtobufMessageValidationError) Field() string { return e.field }
|
func (e ObjectIdentifierValidationError) Field() string { return e.field }
|
||||||
|
|
||||||
// Reason function returns reason value.
|
// Reason function returns reason value.
|
||||||
func (e ProtobufMessageValidationError) Reason() string { return e.reason }
|
func (e ObjectIdentifierValidationError) Reason() string { return e.reason }
|
||||||
|
|
||||||
// Cause function returns cause value.
|
// Cause function returns cause value.
|
||||||
func (e ProtobufMessageValidationError) Cause() error { return e.cause }
|
func (e ObjectIdentifierValidationError) Cause() error { return e.cause }
|
||||||
|
|
||||||
// Key function returns key value.
|
// Key function returns key value.
|
||||||
func (e ProtobufMessageValidationError) Key() bool { return e.key }
|
func (e ObjectIdentifierValidationError) Key() bool { return e.key }
|
||||||
|
|
||||||
// ErrorName returns error name.
|
// ErrorName returns error name.
|
||||||
func (e ProtobufMessageValidationError) ErrorName() string { return "ProtobufMessageValidationError" }
|
func (e ObjectIdentifierValidationError) ErrorName() string { return "ObjectIdentifierValidationError" }
|
||||||
|
|
||||||
// Error satisfies the builtin error interface
|
// Error satisfies the builtin error interface
|
||||||
func (e ProtobufMessageValidationError) Error() string {
|
func (e ObjectIdentifierValidationError) Error() string {
|
||||||
cause := ""
|
cause := ""
|
||||||
if e.cause != nil {
|
if e.cause != nil {
|
||||||
cause = fmt.Sprintf(" | caused by: %v", e.cause)
|
cause = fmt.Sprintf(" | caused by: %v", e.cause)
|
||||||
|
|
@ -122,14 +122,14 @@ func (e ProtobufMessageValidationError) Error() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
return fmt.Sprintf(
|
return fmt.Sprintf(
|
||||||
"invalid %sProtobufMessage.%s: %s%s",
|
"invalid %sObjectIdentifier.%s: %s%s",
|
||||||
key,
|
key,
|
||||||
e.field,
|
e.field,
|
||||||
e.reason,
|
e.reason,
|
||||||
cause)
|
cause)
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ error = ProtobufMessageValidationError{}
|
var _ error = ObjectIdentifierValidationError{}
|
||||||
|
|
||||||
var _ interface {
|
var _ interface {
|
||||||
Field() string
|
Field() string
|
||||||
|
|
@ -137,4 +137,4 @@ var _ interface {
|
||||||
Key() bool
|
Key() bool
|
||||||
Cause() error
|
Cause() error
|
||||||
ErrorName() string
|
ErrorName() string
|
||||||
} = ProtobufMessageValidationError{}
|
} = ObjectIdentifierValidationError{}
|
||||||
|
|
@ -1,166 +0,0 @@
|
||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
|
||||||
// versions:
|
|
||||||
// protoc-gen-go v1.34.1
|
|
||||||
// protoc (unknown)
|
|
||||||
// source: audit/v1/event.proto
|
|
||||||
|
|
||||||
package auditV1
|
|
||||||
|
|
||||||
import (
|
|
||||||
_ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate"
|
|
||||||
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
|
||||||
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
|
||||||
reflect "reflect"
|
|
||||||
sync "sync"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
// Verify that this generated code is sufficiently up-to-date.
|
|
||||||
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
|
||||||
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
|
||||||
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
|
||||||
)
|
|
||||||
|
|
||||||
type ProtobufMessage struct {
|
|
||||||
state protoimpl.MessageState
|
|
||||||
sizeCache protoimpl.SizeCache
|
|
||||||
unknownFields protoimpl.UnknownFields
|
|
||||||
|
|
||||||
// Serialized event
|
|
||||||
Value []byte `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
|
|
||||||
// Name of the protobuf type
|
|
||||||
ProtobufType string `protobuf:"bytes,2,opt,name=protobuf_type,json=protobufType,proto3" json:"protobuf_type,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ProtobufMessage) Reset() {
|
|
||||||
*x = ProtobufMessage{}
|
|
||||||
if protoimpl.UnsafeEnabled {
|
|
||||||
mi := &file_audit_v1_event_proto_msgTypes[0]
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ProtobufMessage) String() string {
|
|
||||||
return protoimpl.X.MessageStringOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*ProtobufMessage) ProtoMessage() {}
|
|
||||||
|
|
||||||
func (x *ProtobufMessage) ProtoReflect() protoreflect.Message {
|
|
||||||
mi := &file_audit_v1_event_proto_msgTypes[0]
|
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
if ms.LoadMessageInfo() == nil {
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
return ms
|
|
||||||
}
|
|
||||||
return mi.MessageOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deprecated: Use ProtobufMessage.ProtoReflect.Descriptor instead.
|
|
||||||
func (*ProtobufMessage) Descriptor() ([]byte, []int) {
|
|
||||||
return file_audit_v1_event_proto_rawDescGZIP(), []int{0}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ProtobufMessage) GetValue() []byte {
|
|
||||||
if x != nil {
|
|
||||||
return x.Value
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ProtobufMessage) GetProtobufType() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.ProtobufType
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
var File_audit_v1_event_proto protoreflect.FileDescriptor
|
|
||||||
|
|
||||||
var file_audit_v1_event_proto_rawDesc = []byte{
|
|
||||||
0x0a, 0x14, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74,
|
|
||||||
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31,
|
|
||||||
0x1a, 0x1b, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76,
|
|
||||||
0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x64, 0x0a,
|
|
||||||
0x0f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
|
|
||||||
0x12, 0x20, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42,
|
|
||||||
0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x7a, 0x02, 0x10, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c,
|
|
||||||
0x75, 0x65, 0x12, 0x2f, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74,
|
|
||||||
0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01,
|
|
||||||
0x01, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x54,
|
|
||||||
0x79, 0x70, 0x65, 0x42, 0x7c, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x63, 0x68, 0x77, 0x61,
|
|
||||||
0x72, 0x7a, 0x2e, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x74,
|
|
||||||
0x2e, 0x76, 0x31, 0x42, 0x0a, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,
|
|
||||||
0x01, 0x5a, 0x0f, 0x2e, 0x2f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x3b, 0x61, 0x75, 0x64, 0x69, 0x74,
|
|
||||||
0x56, 0x31, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x08, 0x41, 0x75, 0x64, 0x69, 0x74,
|
|
||||||
0x2e, 0x56, 0x31, 0xca, 0x02, 0x08, 0x41, 0x75, 0x64, 0x69, 0x74, 0x5c, 0x56, 0x31, 0xe2, 0x02,
|
|
||||||
0x14, 0x41, 0x75, 0x64, 0x69, 0x74, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74,
|
|
||||||
0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x09, 0x41, 0x75, 0x64, 0x69, 0x74, 0x3a, 0x3a, 0x56,
|
|
||||||
0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
file_audit_v1_event_proto_rawDescOnce sync.Once
|
|
||||||
file_audit_v1_event_proto_rawDescData = file_audit_v1_event_proto_rawDesc
|
|
||||||
)
|
|
||||||
|
|
||||||
func file_audit_v1_event_proto_rawDescGZIP() []byte {
|
|
||||||
file_audit_v1_event_proto_rawDescOnce.Do(func() {
|
|
||||||
file_audit_v1_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_audit_v1_event_proto_rawDescData)
|
|
||||||
})
|
|
||||||
return file_audit_v1_event_proto_rawDescData
|
|
||||||
}
|
|
||||||
|
|
||||||
var file_audit_v1_event_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
|
|
||||||
var file_audit_v1_event_proto_goTypes = []interface{}{
|
|
||||||
(*ProtobufMessage)(nil), // 0: audit.v1.ProtobufMessage
|
|
||||||
}
|
|
||||||
var file_audit_v1_event_proto_depIdxs = []int32{
|
|
||||||
0, // [0:0] is the sub-list for method output_type
|
|
||||||
0, // [0:0] is the sub-list for method input_type
|
|
||||||
0, // [0:0] is the sub-list for extension type_name
|
|
||||||
0, // [0:0] is the sub-list for extension extendee
|
|
||||||
0, // [0:0] is the sub-list for field type_name
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() { file_audit_v1_event_proto_init() }
|
|
||||||
func file_audit_v1_event_proto_init() {
|
|
||||||
if File_audit_v1_event_proto != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if !protoimpl.UnsafeEnabled {
|
|
||||||
file_audit_v1_event_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
|
||||||
switch v := v.(*ProtobufMessage); i {
|
|
||||||
case 0:
|
|
||||||
return &v.state
|
|
||||||
case 1:
|
|
||||||
return &v.sizeCache
|
|
||||||
case 2:
|
|
||||||
return &v.unknownFields
|
|
||||||
default:
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
type x struct{}
|
|
||||||
out := protoimpl.TypeBuilder{
|
|
||||||
File: protoimpl.DescBuilder{
|
|
||||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
|
||||||
RawDescriptor: file_audit_v1_event_proto_rawDesc,
|
|
||||||
NumEnums: 0,
|
|
||||||
NumMessages: 1,
|
|
||||||
NumExtensions: 0,
|
|
||||||
NumServices: 0,
|
|
||||||
},
|
|
||||||
GoTypes: file_audit_v1_event_proto_goTypes,
|
|
||||||
DependencyIndexes: file_audit_v1_event_proto_depIdxs,
|
|
||||||
MessageInfos: file_audit_v1_event_proto_msgTypes,
|
|
||||||
}.Build()
|
|
||||||
File_audit_v1_event_proto = out.File
|
|
||||||
file_audit_v1_event_proto_rawDesc = nil
|
|
||||||
file_audit_v1_event_proto_goTypes = nil
|
|
||||||
file_audit_v1_event_proto_depIdxs = nil
|
|
||||||
}
|
|
||||||
|
|
@ -72,164 +72,6 @@ func (Visibility) EnumDescriptor() ([]byte, []int) {
|
||||||
return file_audit_v1_routable_event_proto_rawDescGZIP(), []int{0}
|
return file_audit_v1_routable_event_proto_rawDescGZIP(), []int{0}
|
||||||
}
|
}
|
||||||
|
|
||||||
type ObjectName int32
|
|
||||||
|
|
||||||
const (
|
|
||||||
ObjectName_OBJECT_NAME_UNSPECIFIED ObjectName = 0
|
|
||||||
// If the action happens on system level and doesn't relate to a known ObjectType.
|
|
||||||
ObjectName_OBJECT_NAME_SYSTEM ObjectName = 1
|
|
||||||
)
|
|
||||||
|
|
||||||
// Enum value maps for ObjectName.
|
|
||||||
var (
|
|
||||||
ObjectName_name = map[int32]string{
|
|
||||||
0: "OBJECT_NAME_UNSPECIFIED",
|
|
||||||
1: "OBJECT_NAME_SYSTEM",
|
|
||||||
}
|
|
||||||
ObjectName_value = map[string]int32{
|
|
||||||
"OBJECT_NAME_UNSPECIFIED": 0,
|
|
||||||
"OBJECT_NAME_SYSTEM": 1,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
func (x ObjectName) Enum() *ObjectName {
|
|
||||||
p := new(ObjectName)
|
|
||||||
*p = x
|
|
||||||
return p
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x ObjectName) String() string {
|
|
||||||
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ObjectName) Descriptor() protoreflect.EnumDescriptor {
|
|
||||||
return file_audit_v1_routable_event_proto_enumTypes[1].Descriptor()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ObjectName) Type() protoreflect.EnumType {
|
|
||||||
return &file_audit_v1_routable_event_proto_enumTypes[1]
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x ObjectName) Number() protoreflect.EnumNumber {
|
|
||||||
return protoreflect.EnumNumber(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deprecated: Use ObjectName.Descriptor instead.
|
|
||||||
func (ObjectName) EnumDescriptor() ([]byte, []int) {
|
|
||||||
return file_audit_v1_routable_event_proto_rawDescGZIP(), []int{1}
|
|
||||||
}
|
|
||||||
|
|
||||||
// The type of the object the audit event refers to.
|
|
||||||
// Relevant for type-detection and lookups in the routing.
|
|
||||||
type ObjectType int32
|
|
||||||
|
|
||||||
const (
|
|
||||||
ObjectType_OBJECT_TYPE_UNSPECIFIED ObjectType = 0
|
|
||||||
ObjectType_OBJECT_TYPE_ORGANIZATION ObjectType = 1
|
|
||||||
ObjectType_OBJECT_TYPE_FOLDER ObjectType = 2
|
|
||||||
ObjectType_OBJECT_TYPE_PROJECT ObjectType = 3
|
|
||||||
)
|
|
||||||
|
|
||||||
// Enum value maps for ObjectType.
|
|
||||||
var (
|
|
||||||
ObjectType_name = map[int32]string{
|
|
||||||
0: "OBJECT_TYPE_UNSPECIFIED",
|
|
||||||
1: "OBJECT_TYPE_ORGANIZATION",
|
|
||||||
2: "OBJECT_TYPE_FOLDER",
|
|
||||||
3: "OBJECT_TYPE_PROJECT",
|
|
||||||
}
|
|
||||||
ObjectType_value = map[string]int32{
|
|
||||||
"OBJECT_TYPE_UNSPECIFIED": 0,
|
|
||||||
"OBJECT_TYPE_ORGANIZATION": 1,
|
|
||||||
"OBJECT_TYPE_FOLDER": 2,
|
|
||||||
"OBJECT_TYPE_PROJECT": 3,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
func (x ObjectType) Enum() *ObjectType {
|
|
||||||
p := new(ObjectType)
|
|
||||||
*p = x
|
|
||||||
return p
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x ObjectType) String() string {
|
|
||||||
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ObjectType) Descriptor() protoreflect.EnumDescriptor {
|
|
||||||
return file_audit_v1_routable_event_proto_enumTypes[2].Descriptor()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ObjectType) Type() protoreflect.EnumType {
|
|
||||||
return &file_audit_v1_routable_event_proto_enumTypes[2]
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x ObjectType) Number() protoreflect.EnumNumber {
|
|
||||||
return protoreflect.EnumNumber(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deprecated: Use ObjectType.Descriptor instead.
|
|
||||||
func (ObjectType) EnumDescriptor() ([]byte, []int) {
|
|
||||||
return file_audit_v1_routable_event_proto_rawDescGZIP(), []int{2}
|
|
||||||
}
|
|
||||||
|
|
||||||
type ObjectIdentifier struct {
|
|
||||||
state protoimpl.MessageState
|
|
||||||
sizeCache protoimpl.SizeCache
|
|
||||||
unknownFields protoimpl.UnknownFields
|
|
||||||
|
|
||||||
// Identifier of the respective entity (e.g. Identifier of an organization)
|
|
||||||
Identifier string `protobuf:"bytes,1,opt,name=identifier,proto3" json:"identifier,omitempty"`
|
|
||||||
// Type of the respective entity relevant for routing
|
|
||||||
Type ObjectType `protobuf:"varint,2,opt,name=type,proto3,enum=audit.v1.ObjectType" json:"type,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ObjectIdentifier) Reset() {
|
|
||||||
*x = ObjectIdentifier{}
|
|
||||||
if protoimpl.UnsafeEnabled {
|
|
||||||
mi := &file_audit_v1_routable_event_proto_msgTypes[0]
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ObjectIdentifier) String() string {
|
|
||||||
return protoimpl.X.MessageStringOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*ObjectIdentifier) ProtoMessage() {}
|
|
||||||
|
|
||||||
func (x *ObjectIdentifier) ProtoReflect() protoreflect.Message {
|
|
||||||
mi := &file_audit_v1_routable_event_proto_msgTypes[0]
|
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
if ms.LoadMessageInfo() == nil {
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
return ms
|
|
||||||
}
|
|
||||||
return mi.MessageOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deprecated: Use ObjectIdentifier.ProtoReflect.Descriptor instead.
|
|
||||||
func (*ObjectIdentifier) Descriptor() ([]byte, []int) {
|
|
||||||
return file_audit_v1_routable_event_proto_rawDescGZIP(), []int{0}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ObjectIdentifier) GetIdentifier() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.Identifier
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *ObjectIdentifier) GetType() ObjectType {
|
|
||||||
if x != nil {
|
|
||||||
return x.Type
|
|
||||||
}
|
|
||||||
return ObjectType_OBJECT_TYPE_UNSPECIFIED
|
|
||||||
}
|
|
||||||
|
|
||||||
type EncryptedData struct {
|
type EncryptedData struct {
|
||||||
state protoimpl.MessageState
|
state protoimpl.MessageState
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
|
|
@ -248,7 +90,7 @@ type EncryptedData struct {
|
||||||
func (x *EncryptedData) Reset() {
|
func (x *EncryptedData) Reset() {
|
||||||
*x = EncryptedData{}
|
*x = EncryptedData{}
|
||||||
if protoimpl.UnsafeEnabled {
|
if protoimpl.UnsafeEnabled {
|
||||||
mi := &file_audit_v1_routable_event_proto_msgTypes[1]
|
mi := &file_audit_v1_routable_event_proto_msgTypes[0]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
|
|
@ -261,7 +103,7 @@ func (x *EncryptedData) String() string {
|
||||||
func (*EncryptedData) ProtoMessage() {}
|
func (*EncryptedData) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *EncryptedData) ProtoReflect() protoreflect.Message {
|
func (x *EncryptedData) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_audit_v1_routable_event_proto_msgTypes[1]
|
mi := &file_audit_v1_routable_event_proto_msgTypes[0]
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
|
@ -274,7 +116,7 @@ func (x *EncryptedData) ProtoReflect() protoreflect.Message {
|
||||||
|
|
||||||
// Deprecated: Use EncryptedData.ProtoReflect.Descriptor instead.
|
// Deprecated: Use EncryptedData.ProtoReflect.Descriptor instead.
|
||||||
func (*EncryptedData) Descriptor() ([]byte, []int) {
|
func (*EncryptedData) Descriptor() ([]byte, []int) {
|
||||||
return file_audit_v1_routable_event_proto_rawDescGZIP(), []int{1}
|
return file_audit_v1_routable_event_proto_rawDescGZIP(), []int{0}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *EncryptedData) GetData() []byte {
|
func (x *EncryptedData) GetData() []byte {
|
||||||
|
|
@ -319,7 +161,7 @@ type UnencryptedData struct {
|
||||||
func (x *UnencryptedData) Reset() {
|
func (x *UnencryptedData) Reset() {
|
||||||
*x = UnencryptedData{}
|
*x = UnencryptedData{}
|
||||||
if protoimpl.UnsafeEnabled {
|
if protoimpl.UnsafeEnabled {
|
||||||
mi := &file_audit_v1_routable_event_proto_msgTypes[2]
|
mi := &file_audit_v1_routable_event_proto_msgTypes[1]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
|
|
@ -332,7 +174,7 @@ func (x *UnencryptedData) String() string {
|
||||||
func (*UnencryptedData) ProtoMessage() {}
|
func (*UnencryptedData) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *UnencryptedData) ProtoReflect() protoreflect.Message {
|
func (x *UnencryptedData) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_audit_v1_routable_event_proto_msgTypes[2]
|
mi := &file_audit_v1_routable_event_proto_msgTypes[1]
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
|
@ -345,7 +187,7 @@ func (x *UnencryptedData) ProtoReflect() protoreflect.Message {
|
||||||
|
|
||||||
// Deprecated: Use UnencryptedData.ProtoReflect.Descriptor instead.
|
// Deprecated: Use UnencryptedData.ProtoReflect.Descriptor instead.
|
||||||
func (*UnencryptedData) Descriptor() ([]byte, []int) {
|
func (*UnencryptedData) Descriptor() ([]byte, []int) {
|
||||||
return file_audit_v1_routable_event_proto_rawDescGZIP(), []int{2}
|
return file_audit_v1_routable_event_proto_rawDescGZIP(), []int{1}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *UnencryptedData) GetData() []byte {
|
func (x *UnencryptedData) GetData() []byte {
|
||||||
|
|
@ -391,7 +233,7 @@ type RoutableAuditEvent struct {
|
||||||
func (x *RoutableAuditEvent) Reset() {
|
func (x *RoutableAuditEvent) Reset() {
|
||||||
*x = RoutableAuditEvent{}
|
*x = RoutableAuditEvent{}
|
||||||
if protoimpl.UnsafeEnabled {
|
if protoimpl.UnsafeEnabled {
|
||||||
mi := &file_audit_v1_routable_event_proto_msgTypes[3]
|
mi := &file_audit_v1_routable_event_proto_msgTypes[2]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
|
|
@ -404,7 +246,7 @@ func (x *RoutableAuditEvent) String() string {
|
||||||
func (*RoutableAuditEvent) ProtoMessage() {}
|
func (*RoutableAuditEvent) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *RoutableAuditEvent) ProtoReflect() protoreflect.Message {
|
func (x *RoutableAuditEvent) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_audit_v1_routable_event_proto_msgTypes[3]
|
mi := &file_audit_v1_routable_event_proto_msgTypes[2]
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
|
@ -417,7 +259,7 @@ func (x *RoutableAuditEvent) ProtoReflect() protoreflect.Message {
|
||||||
|
|
||||||
// Deprecated: Use RoutableAuditEvent.ProtoReflect.Descriptor instead.
|
// Deprecated: Use RoutableAuditEvent.ProtoReflect.Descriptor instead.
|
||||||
func (*RoutableAuditEvent) Descriptor() ([]byte, []int) {
|
func (*RoutableAuditEvent) Descriptor() ([]byte, []int) {
|
||||||
return file_audit_v1_routable_event_proto_rawDescGZIP(), []int{3}
|
return file_audit_v1_routable_event_proto_rawDescGZIP(), []int{2}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *RoutableAuditEvent) GetEventName() string {
|
func (x *RoutableAuditEvent) GetEventName() string {
|
||||||
|
|
@ -518,88 +360,70 @@ var file_audit_v1_routable_event_proto_rawDesc = []byte{
|
||||||
0x62, 0x6c, 0x65, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
|
0x62, 0x6c, 0x65, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
|
||||||
0x08, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x1a, 0x1b, 0x62, 0x75, 0x66, 0x2f, 0x76,
|
0x08, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x1a, 0x1b, 0x62, 0x75, 0x66, 0x2f, 0x76,
|
||||||
0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65,
|
0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65,
|
||||||
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x76, 0x0a, 0x10, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74,
|
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x15, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2f, 0x76, 0x31,
|
||||||
0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x2b, 0x0a, 0x0a, 0x69, 0x64,
|
0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc5, 0x01,
|
||||||
0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b,
|
0x0a, 0x0d, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12,
|
||||||
0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0a, 0x69, 0x64, 0x65,
|
0x1e, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x0a, 0xba,
|
||||||
0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x35, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18,
|
0x48, 0x07, 0xc8, 0x01, 0x01, 0x7a, 0x02, 0x10, 0x01, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12,
|
||||||
0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31,
|
0x2f, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x79, 0x70, 0x65,
|
||||||
0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0b, 0xba, 0x48, 0x08,
|
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02,
|
||||||
0xc8, 0x01, 0x01, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xc5,
|
0x10, 0x01, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x54, 0x79, 0x70, 0x65,
|
||||||
0x01, 0x0a, 0x0d, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61,
|
0x12, 0x39, 0x0a, 0x12, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x61,
|
||||||
0x12, 0x1e, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x0a,
|
0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48,
|
||||||
0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x7a, 0x02, 0x10, 0x01, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61,
|
0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, 0x01, 0x52, 0x11, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70,
|
||||||
0x12, 0x2f, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x79, 0x70,
|
0x74, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x28, 0x0a, 0x0b, 0x6b,
|
||||||
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72,
|
0x65, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
|
||||||
0x02, 0x10, 0x01, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x54, 0x79, 0x70,
|
0x42, 0x07, 0xba, 0x48, 0x04, 0x1a, 0x02, 0x28, 0x01, 0x52, 0x0a, 0x6b, 0x65, 0x79, 0x56, 0x65,
|
||||||
0x65, 0x12, 0x39, 0x0a, 0x12, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x70,
|
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x62, 0x0a, 0x0f, 0x55, 0x6e, 0x65, 0x6e, 0x63, 0x72, 0x79,
|
||||||
0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba,
|
0x70, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1e, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61,
|
||||||
0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, 0x01, 0x52, 0x11, 0x65, 0x6e, 0x63, 0x72, 0x79,
|
0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x7a, 0x02,
|
||||||
0x70, 0x74, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x28, 0x0a, 0x0b,
|
0x10, 0x01, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2f, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x74,
|
||||||
0x6b, 0x65, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28,
|
0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42,
|
||||||
0x05, 0x42, 0x07, 0xba, 0x48, 0x04, 0x1a, 0x02, 0x28, 0x01, 0x52, 0x0a, 0x6b, 0x65, 0x79, 0x56,
|
0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x70, 0x72, 0x6f,
|
||||||
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x62, 0x0a, 0x0f, 0x55, 0x6e, 0x65, 0x6e, 0x63, 0x72,
|
0x74, 0x6f, 0x62, 0x75, 0x66, 0x54, 0x79, 0x70, 0x65, 0x22, 0xcb, 0x03, 0x0a, 0x12, 0x52, 0x6f,
|
||||||
0x79, 0x70, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1e, 0x0a, 0x04, 0x64, 0x61, 0x74,
|
0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x75, 0x64, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74,
|
||||||
0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x7a,
|
0x12, 0x38, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
|
||||||
0x02, 0x10, 0x01, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2f, 0x0a, 0x0d, 0x70, 0x72, 0x6f,
|
0x20, 0x01, 0x28, 0x09, 0x42, 0x19, 0xba, 0x48, 0x16, 0xc8, 0x01, 0x01, 0x72, 0x11, 0x32, 0x0f,
|
||||||
0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
|
0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x5d, 0x2b, 0x5f, 0x5b, 0x41, 0x2d, 0x5a, 0x5d, 0x2b, 0x24, 0x52,
|
||||||
0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x70, 0x72,
|
0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x41, 0x0a, 0x0a, 0x76, 0x69,
|
||||||
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x54, 0x79, 0x70, 0x65, 0x22, 0xcb, 0x03, 0x0a, 0x12, 0x52,
|
0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14,
|
||||||
0x6f, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x75, 0x64, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e,
|
0x2e, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69,
|
||||||
0x74, 0x12, 0x38, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
|
0x6c, 0x69, 0x74, 0x79, 0x42, 0x0b, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x82, 0x01, 0x02, 0x10,
|
||||||
0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x19, 0xba, 0x48, 0x16, 0xc8, 0x01, 0x01, 0x72, 0x11, 0x32,
|
0x01, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x37, 0x0a,
|
||||||
0x0f, 0x5e, 0x5b, 0x41, 0x2d, 0x5a, 0x5d, 0x2b, 0x5f, 0x5b, 0x41, 0x2d, 0x5a, 0x5d, 0x2b, 0x24,
|
0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01,
|
||||||
0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x41, 0x0a, 0x0a, 0x76,
|
0x28, 0x0e, 0x32, 0x14, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x62,
|
||||||
0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32,
|
0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x62, 0x6a, 0x65,
|
||||||
0x14, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x69, 0x73, 0x69, 0x62,
|
0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x49, 0x0a, 0x11, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74,
|
||||||
0x69, 0x6c, 0x69, 0x74, 0x79, 0x42, 0x0b, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x82, 0x01, 0x02,
|
0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28,
|
||||||
0x10, 0x01, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x37,
|
0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x62, 0x6a,
|
||||||
0x0a, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20,
|
0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52,
|
||||||
0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4f,
|
0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65,
|
||||||
0x62, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x62, 0x6a,
|
0x72, 0x12, 0x46, 0x0a, 0x10, 0x75, 0x6e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64,
|
||||||
0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x49, 0x0a, 0x11, 0x6f, 0x62, 0x6a, 0x65, 0x63,
|
0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x75,
|
||||||
0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01,
|
0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74,
|
||||||
0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x62,
|
0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x48, 0x01, 0x52, 0x0f, 0x75, 0x6e, 0x65, 0x6e, 0x63, 0x72,
|
||||||
0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00,
|
0x79, 0x70, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0e, 0x65, 0x6e, 0x63,
|
||||||
0x52, 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69,
|
0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28,
|
||||||
0x65, 0x72, 0x12, 0x46, 0x0a, 0x10, 0x75, 0x6e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65,
|
0x0b, 0x32, 0x17, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x63,
|
||||||
0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61,
|
0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x48, 0x01, 0x52, 0x0d, 0x65, 0x6e,
|
||||||
0x75, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70,
|
0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x1b, 0x0a, 0x12, 0x72,
|
||||||
0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x48, 0x01, 0x52, 0x0f, 0x75, 0x6e, 0x65, 0x6e, 0x63,
|
0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
|
||||||
0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0e, 0x65, 0x6e,
|
0x65, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x42, 0x0d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61,
|
||||||
0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01,
|
0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x2a, 0x57, 0x0a, 0x0a, 0x56, 0x69, 0x73, 0x69, 0x62,
|
||||||
0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e,
|
0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x16, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c,
|
||||||
0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x48, 0x01, 0x52, 0x0d, 0x65,
|
0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
|
||||||
0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x1b, 0x0a, 0x12,
|
0x00, 0x12, 0x15, 0x0a, 0x11, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f,
|
||||||
0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
|
0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x56, 0x49, 0x53, 0x49,
|
||||||
0x63, 0x65, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x42, 0x0d, 0x0a, 0x04, 0x64, 0x61, 0x74,
|
0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x10, 0x02,
|
||||||
0x61, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x2a, 0x57, 0x0a, 0x0a, 0x56, 0x69, 0x73, 0x69,
|
0x42, 0x84, 0x01, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x63, 0x68, 0x77, 0x61, 0x72, 0x7a,
|
||||||
0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x16, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49,
|
0x2e, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76,
|
||||||
0x4c, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44,
|
0x31, 0x42, 0x12, 0x52, 0x6f, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74,
|
||||||
0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59,
|
0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x0f, 0x2e, 0x2f, 0x61, 0x75, 0x64, 0x69, 0x74,
|
||||||
0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x56, 0x49, 0x53,
|
0x3b, 0x61, 0x75, 0x64, 0x69, 0x74, 0x56, 0x31, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02,
|
||||||
0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x10,
|
0x08, 0x41, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x08, 0x41, 0x75, 0x64, 0x69,
|
||||||
0x02, 0x2a, 0x41, 0x0a, 0x0a, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12,
|
0x74, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x14, 0x41, 0x75, 0x64, 0x69, 0x74, 0x5c, 0x56, 0x31, 0x5c,
|
||||||
0x1b, 0x0a, 0x17, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x55,
|
0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x09, 0x41, 0x75,
|
||||||
0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12,
|
0x64, 0x69, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||||
0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x53, 0x59, 0x53, 0x54,
|
|
||||||
0x45, 0x4d, 0x10, 0x01, 0x2a, 0x78, 0x0a, 0x0a, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79,
|
|
||||||
0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50,
|
|
||||||
0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
|
|
||||||
0x1c, 0x0a, 0x18, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f,
|
|
||||||
0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x16, 0x0a,
|
|
||||||
0x12, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x4f, 0x4c,
|
|
||||||
0x44, 0x45, 0x52, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f,
|
|
||||||
0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x52, 0x4f, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x03, 0x42, 0x84,
|
|
||||||
0x01, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x63, 0x68, 0x77, 0x61, 0x72, 0x7a, 0x2e, 0x73,
|
|
||||||
0x74, 0x61, 0x63, 0x6b, 0x69, 0x74, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x42,
|
|
||||||
0x12, 0x52, 0x6f, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x72,
|
|
||||||
0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x0f, 0x2e, 0x2f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x3b, 0x61,
|
|
||||||
0x75, 0x64, 0x69, 0x74, 0x56, 0x31, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x08, 0x41,
|
|
||||||
0x75, 0x64, 0x69, 0x74, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x08, 0x41, 0x75, 0x64, 0x69, 0x74, 0x5c,
|
|
||||||
0x56, 0x31, 0xe2, 0x02, 0x14, 0x41, 0x75, 0x64, 0x69, 0x74, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50,
|
|
||||||
0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x09, 0x41, 0x75, 0x64, 0x69,
|
|
||||||
0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
@ -614,29 +438,27 @@ func file_audit_v1_routable_event_proto_rawDescGZIP() []byte {
|
||||||
return file_audit_v1_routable_event_proto_rawDescData
|
return file_audit_v1_routable_event_proto_rawDescData
|
||||||
}
|
}
|
||||||
|
|
||||||
var file_audit_v1_routable_event_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
|
var file_audit_v1_routable_event_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
|
||||||
var file_audit_v1_routable_event_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
|
var file_audit_v1_routable_event_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
|
||||||
var file_audit_v1_routable_event_proto_goTypes = []interface{}{
|
var file_audit_v1_routable_event_proto_goTypes = []interface{}{
|
||||||
(Visibility)(0), // 0: audit.v1.Visibility
|
(Visibility)(0), // 0: audit.v1.Visibility
|
||||||
(ObjectName)(0), // 1: audit.v1.ObjectName
|
(*EncryptedData)(nil), // 1: audit.v1.EncryptedData
|
||||||
(ObjectType)(0), // 2: audit.v1.ObjectType
|
(*UnencryptedData)(nil), // 2: audit.v1.UnencryptedData
|
||||||
(*ObjectIdentifier)(nil), // 3: audit.v1.ObjectIdentifier
|
(*RoutableAuditEvent)(nil), // 3: audit.v1.RoutableAuditEvent
|
||||||
(*EncryptedData)(nil), // 4: audit.v1.EncryptedData
|
(ObjectName)(0), // 4: audit.v1.ObjectName
|
||||||
(*UnencryptedData)(nil), // 5: audit.v1.UnencryptedData
|
(*ObjectIdentifier)(nil), // 5: audit.v1.ObjectIdentifier
|
||||||
(*RoutableAuditEvent)(nil), // 6: audit.v1.RoutableAuditEvent
|
|
||||||
}
|
}
|
||||||
var file_audit_v1_routable_event_proto_depIdxs = []int32{
|
var file_audit_v1_routable_event_proto_depIdxs = []int32{
|
||||||
2, // 0: audit.v1.ObjectIdentifier.type:type_name -> audit.v1.ObjectType
|
0, // 0: audit.v1.RoutableAuditEvent.visibility:type_name -> audit.v1.Visibility
|
||||||
0, // 1: audit.v1.RoutableAuditEvent.visibility:type_name -> audit.v1.Visibility
|
4, // 1: audit.v1.RoutableAuditEvent.object_name:type_name -> audit.v1.ObjectName
|
||||||
1, // 2: audit.v1.RoutableAuditEvent.object_name:type_name -> audit.v1.ObjectName
|
5, // 2: audit.v1.RoutableAuditEvent.object_identifier:type_name -> audit.v1.ObjectIdentifier
|
||||||
3, // 3: audit.v1.RoutableAuditEvent.object_identifier:type_name -> audit.v1.ObjectIdentifier
|
2, // 3: audit.v1.RoutableAuditEvent.unencrypted_data:type_name -> audit.v1.UnencryptedData
|
||||||
5, // 4: audit.v1.RoutableAuditEvent.unencrypted_data:type_name -> audit.v1.UnencryptedData
|
1, // 4: audit.v1.RoutableAuditEvent.encrypted_data:type_name -> audit.v1.EncryptedData
|
||||||
4, // 5: audit.v1.RoutableAuditEvent.encrypted_data:type_name -> audit.v1.EncryptedData
|
5, // [5:5] is the sub-list for method output_type
|
||||||
6, // [6:6] is the sub-list for method output_type
|
5, // [5:5] is the sub-list for method input_type
|
||||||
6, // [6:6] is the sub-list for method input_type
|
5, // [5:5] is the sub-list for extension type_name
|
||||||
6, // [6:6] is the sub-list for extension type_name
|
5, // [5:5] is the sub-list for extension extendee
|
||||||
6, // [6:6] is the sub-list for extension extendee
|
0, // [0:5] is the sub-list for field type_name
|
||||||
0, // [0:6] is the sub-list for field type_name
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { file_audit_v1_routable_event_proto_init() }
|
func init() { file_audit_v1_routable_event_proto_init() }
|
||||||
|
|
@ -644,20 +466,9 @@ func file_audit_v1_routable_event_proto_init() {
|
||||||
if File_audit_v1_routable_event_proto != nil {
|
if File_audit_v1_routable_event_proto != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
file_audit_v1_common_proto_init()
|
||||||
if !protoimpl.UnsafeEnabled {
|
if !protoimpl.UnsafeEnabled {
|
||||||
file_audit_v1_routable_event_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
file_audit_v1_routable_event_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*ObjectIdentifier); i {
|
|
||||||
case 0:
|
|
||||||
return &v.state
|
|
||||||
case 1:
|
|
||||||
return &v.sizeCache
|
|
||||||
case 2:
|
|
||||||
return &v.unknownFields
|
|
||||||
default:
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
file_audit_v1_routable_event_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
|
|
||||||
switch v := v.(*EncryptedData); i {
|
switch v := v.(*EncryptedData); i {
|
||||||
case 0:
|
case 0:
|
||||||
return &v.state
|
return &v.state
|
||||||
|
|
@ -669,7 +480,7 @@ func file_audit_v1_routable_event_proto_init() {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
file_audit_v1_routable_event_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
|
file_audit_v1_routable_event_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*UnencryptedData); i {
|
switch v := v.(*UnencryptedData); i {
|
||||||
case 0:
|
case 0:
|
||||||
return &v.state
|
return &v.state
|
||||||
|
|
@ -681,7 +492,7 @@ func file_audit_v1_routable_event_proto_init() {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
file_audit_v1_routable_event_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
|
file_audit_v1_routable_event_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*RoutableAuditEvent); i {
|
switch v := v.(*RoutableAuditEvent); i {
|
||||||
case 0:
|
case 0:
|
||||||
return &v.state
|
return &v.state
|
||||||
|
|
@ -694,7 +505,7 @@ func file_audit_v1_routable_event_proto_init() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
file_audit_v1_routable_event_proto_msgTypes[3].OneofWrappers = []interface{}{
|
file_audit_v1_routable_event_proto_msgTypes[2].OneofWrappers = []interface{}{
|
||||||
(*RoutableAuditEvent_ObjectName)(nil),
|
(*RoutableAuditEvent_ObjectName)(nil),
|
||||||
(*RoutableAuditEvent_ObjectIdentifier)(nil),
|
(*RoutableAuditEvent_ObjectIdentifier)(nil),
|
||||||
(*RoutableAuditEvent_UnencryptedData)(nil),
|
(*RoutableAuditEvent_UnencryptedData)(nil),
|
||||||
|
|
@ -705,8 +516,8 @@ func file_audit_v1_routable_event_proto_init() {
|
||||||
File: protoimpl.DescBuilder{
|
File: protoimpl.DescBuilder{
|
||||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
RawDescriptor: file_audit_v1_routable_event_proto_rawDesc,
|
RawDescriptor: file_audit_v1_routable_event_proto_rawDesc,
|
||||||
NumEnums: 3,
|
NumEnums: 1,
|
||||||
NumMessages: 4,
|
NumMessages: 3,
|
||||||
NumExtensions: 0,
|
NumExtensions: 0,
|
||||||
NumServices: 0,
|
NumServices: 0,
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -35,110 +35,6 @@ var (
|
||||||
_ = sort.Sort
|
_ = sort.Sort
|
||||||
)
|
)
|
||||||
|
|
||||||
// Validate checks the field values on ObjectIdentifier with the rules defined
|
|
||||||
// in the proto definition for this message. If any rules are violated, the
|
|
||||||
// first error encountered is returned, or nil if there are no violations.
|
|
||||||
func (m *ObjectIdentifier) Validate() error {
|
|
||||||
return m.validate(false)
|
|
||||||
}
|
|
||||||
|
|
||||||
// ValidateAll checks the field values on ObjectIdentifier with the rules
|
|
||||||
// defined in the proto definition for this message. If any rules are
|
|
||||||
// violated, the result is a list of violation errors wrapped in
|
|
||||||
// ObjectIdentifierMultiError, or nil if none found.
|
|
||||||
func (m *ObjectIdentifier) ValidateAll() error {
|
|
||||||
return m.validate(true)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *ObjectIdentifier) validate(all bool) error {
|
|
||||||
if m == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
var errors []error
|
|
||||||
|
|
||||||
// no validation rules for Identifier
|
|
||||||
|
|
||||||
// no validation rules for Type
|
|
||||||
|
|
||||||
if len(errors) > 0 {
|
|
||||||
return ObjectIdentifierMultiError(errors)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// ObjectIdentifierMultiError is an error wrapping multiple validation errors
|
|
||||||
// returned by ObjectIdentifier.ValidateAll() if the designated constraints
|
|
||||||
// aren't met.
|
|
||||||
type ObjectIdentifierMultiError []error
|
|
||||||
|
|
||||||
// Error returns a concatenation of all the error messages it wraps.
|
|
||||||
func (m ObjectIdentifierMultiError) Error() string {
|
|
||||||
var msgs []string
|
|
||||||
for _, err := range m {
|
|
||||||
msgs = append(msgs, err.Error())
|
|
||||||
}
|
|
||||||
return strings.Join(msgs, "; ")
|
|
||||||
}
|
|
||||||
|
|
||||||
// AllErrors returns a list of validation violation errors.
|
|
||||||
func (m ObjectIdentifierMultiError) AllErrors() []error { return m }
|
|
||||||
|
|
||||||
// ObjectIdentifierValidationError is the validation error returned by
|
|
||||||
// ObjectIdentifier.Validate if the designated constraints aren't met.
|
|
||||||
type ObjectIdentifierValidationError struct {
|
|
||||||
field string
|
|
||||||
reason string
|
|
||||||
cause error
|
|
||||||
key bool
|
|
||||||
}
|
|
||||||
|
|
||||||
// Field function returns field value.
|
|
||||||
func (e ObjectIdentifierValidationError) Field() string { return e.field }
|
|
||||||
|
|
||||||
// Reason function returns reason value.
|
|
||||||
func (e ObjectIdentifierValidationError) Reason() string { return e.reason }
|
|
||||||
|
|
||||||
// Cause function returns cause value.
|
|
||||||
func (e ObjectIdentifierValidationError) Cause() error { return e.cause }
|
|
||||||
|
|
||||||
// Key function returns key value.
|
|
||||||
func (e ObjectIdentifierValidationError) Key() bool { return e.key }
|
|
||||||
|
|
||||||
// ErrorName returns error name.
|
|
||||||
func (e ObjectIdentifierValidationError) ErrorName() string { return "ObjectIdentifierValidationError" }
|
|
||||||
|
|
||||||
// Error satisfies the builtin error interface
|
|
||||||
func (e ObjectIdentifierValidationError) Error() string {
|
|
||||||
cause := ""
|
|
||||||
if e.cause != nil {
|
|
||||||
cause = fmt.Sprintf(" | caused by: %v", e.cause)
|
|
||||||
}
|
|
||||||
|
|
||||||
key := ""
|
|
||||||
if e.key {
|
|
||||||
key = "key for "
|
|
||||||
}
|
|
||||||
|
|
||||||
return fmt.Sprintf(
|
|
||||||
"invalid %sObjectIdentifier.%s: %s%s",
|
|
||||||
key,
|
|
||||||
e.field,
|
|
||||||
e.reason,
|
|
||||||
cause)
|
|
||||||
}
|
|
||||||
|
|
||||||
var _ error = ObjectIdentifierValidationError{}
|
|
||||||
|
|
||||||
var _ interface {
|
|
||||||
Field() string
|
|
||||||
Reason() string
|
|
||||||
Key() bool
|
|
||||||
Cause() error
|
|
||||||
ErrorName() string
|
|
||||||
} = ObjectIdentifierValidationError{}
|
|
||||||
|
|
||||||
// Validate checks the field values on EncryptedData with the rules defined in
|
// Validate checks the field values on EncryptedData with the rules defined in
|
||||||
// the proto definition for this message. If any rules are violated, the first
|
// the proto definition for this message. If any rules are violated, the first
|
||||||
// error encountered is returned, or nil if there are no violations.
|
// error encountered is returned, or nil if there are no violations.
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,8 @@ import "google/protobuf/struct.proto";
|
||||||
import "google/protobuf/timestamp.proto";
|
import "google/protobuf/timestamp.proto";
|
||||||
import "google/protobuf/wrappers.proto";
|
import "google/protobuf/wrappers.proto";
|
||||||
|
|
||||||
|
import "audit/v1/common.proto";
|
||||||
|
|
||||||
package audit.v1;
|
package audit.v1;
|
||||||
|
|
||||||
option go_package = "./audit;auditV1";
|
option go_package = "./audit;auditV1";
|
||||||
|
|
@ -21,6 +23,11 @@ enum EventTrigger {
|
||||||
EVENT_TRIGGER_REQUEST = 3;
|
EVENT_TRIGGER_REQUEST = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum Region {
|
||||||
|
REGION_UNSPECIFIED = 0;
|
||||||
|
REGION_EU01 = 1;
|
||||||
|
}
|
||||||
|
|
||||||
message Principal {
|
message Principal {
|
||||||
// A UUID or another kind of identifier
|
// A UUID or another kind of identifier
|
||||||
string id = 1 [(buf.validate.field).required = true];
|
string id = 1 [(buf.validate.field).required = true];
|
||||||
|
|
@ -51,37 +58,53 @@ message AuditEvent {
|
||||||
expression: "this.event_trigger == 3 && has(this.request) || this.event_trigger != 3"
|
expression: "this.event_trigger == 3 && has(this.request) || this.event_trigger != 3"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Name of the source system
|
||||||
|
string event_source = 1 [(buf.validate.field).required = true, (buf.validate.field).string.min_len = 1];
|
||||||
|
|
||||||
|
Region region = 2 [(buf.validate.field).required = true];
|
||||||
|
|
||||||
// Sequence number of event sent by the service to identify missing events.
|
// Sequence number of event sent by the service to identify missing events.
|
||||||
google.protobuf.Int64Value sequence_number = 1 [(buf.validate.field).required = true, (buf.validate.field).int64.gte = -1];
|
google.protobuf.Int64Value sequence_number = 3 [(buf.validate.field).required = true, (buf.validate.field).int64.gte = -1];
|
||||||
|
|
||||||
// Functional event name with pattern <TYPE>_<ACTION>, e.g. ORGANIZATION_CREATED
|
// Functional event name with pattern <TYPE>_<ACTION>, e.g. ORGANIZATION_CREATED
|
||||||
// Important for filtering and translation / verbalization of event types
|
// Important for filtering and translation / verbalization of event types
|
||||||
// in the UI or data sinks.
|
// in the UI or data sinks.
|
||||||
string event_name = 2 [(buf.validate.field).required = true, (buf.validate.field).string.pattern = "^[A-Z]+_[A-Z]+$"];
|
string event_name = 4 [(buf.validate.field).required = true, (buf.validate.field).string.pattern = "^[A-Z]+_[A-Z]+$"];
|
||||||
|
|
||||||
// The time when the event happened. Must not be a value in the future.
|
// The time when the event happened. Must not be a value in the future.
|
||||||
google.protobuf.Timestamp event_time_stamp = 3 [(buf.validate.field).required = true, (buf.validate.field).timestamp.lt_now = true];
|
google.protobuf.Timestamp event_time_stamp = 5 [(buf.validate.field).required = true, (buf.validate.field).timestamp.lt_now = true];
|
||||||
|
|
||||||
EventTrigger event_trigger = 4 [(buf.validate.field).required = true, (buf.validate.field).enum.defined_only = true];
|
EventTrigger event_trigger = 6 [(buf.validate.field).required = true, (buf.validate.field).enum.defined_only = true];
|
||||||
|
|
||||||
// Request details - mandatory if event_trigger is set to "EVENT_REQUEST"
|
// Request details - mandatory if event_trigger is set to "EVENT_REQUEST"
|
||||||
optional RequestDetails request = 5;
|
optional RequestDetails request = 7;
|
||||||
|
|
||||||
Principal initiator = 6 [(buf.validate.field).required = true];
|
Principal initiator = 8 [(buf.validate.field).required = true];
|
||||||
|
|
||||||
// List of service account delegation principals.
|
// List of service account delegation principals.
|
||||||
// -> Chain from service account to the actual user who initiated the action.
|
// -> Chain from service account to the actual user who initiated the action.
|
||||||
repeated Principal principals = 7;
|
repeated Principal principals = 9;
|
||||||
|
|
||||||
optional string resource_id = 8 [(buf.validate.field).string.min_len = 1, (buf.validate.field).string.max_len = 255];
|
// Identifier the audit log event refers to
|
||||||
|
oneof resource_container_reference {
|
||||||
|
option (buf.validate.oneof).required = true;
|
||||||
|
// If it is a technical event not related to an organization, folder or project
|
||||||
|
// Will NOT be routed to the end-user, only for internal analysis ->
|
||||||
|
// Clarify what do in the router
|
||||||
|
ObjectName object_name = 10;
|
||||||
|
ObjectIdentifier object_identifier = 11;
|
||||||
|
}
|
||||||
|
|
||||||
optional string resource_name = 9 [(buf.validate.field).string.min_len = 1, (buf.validate.field).string.max_len = 255];
|
// The identifier of the actual resource (e.g. a VM)
|
||||||
|
optional string resource_id = 12 [(buf.validate.field).string.min_len = 1, (buf.validate.field).string.max_len = 255];
|
||||||
|
|
||||||
optional string correlation_id = 10 [(buf.validate.field).string.min_len = 1, (buf.validate.field).string.max_len = 255];
|
optional string resource_name = 13 [(buf.validate.field).string.min_len = 1, (buf.validate.field).string.max_len = 255];
|
||||||
|
|
||||||
|
optional string correlation_id = 14 [(buf.validate.field).string.min_len = 1, (buf.validate.field).string.max_len = 255];
|
||||||
|
|
||||||
// Result of the operation to publish with the event
|
// Result of the operation to publish with the event
|
||||||
optional google.protobuf.Struct result = 11;
|
optional google.protobuf.Struct result = 15;
|
||||||
|
|
||||||
// Additional information to publish with the event
|
// Additional information to publish with the event
|
||||||
optional google.protobuf.Struct details = 12;
|
optional google.protobuf.Struct details = 16;
|
||||||
}
|
}
|
||||||
32
proto/audit/v1/common.proto
Normal file
32
proto/audit/v1/common.proto
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
import "buf/validate/validate.proto";
|
||||||
|
|
||||||
|
package audit.v1;
|
||||||
|
|
||||||
|
option go_package = "./audit;auditV1";
|
||||||
|
option java_multiple_files = true;
|
||||||
|
option java_package = "com.schwarz.stackit.audit.v1";
|
||||||
|
|
||||||
|
enum ObjectName {
|
||||||
|
OBJECT_NAME_UNSPECIFIED = 0;
|
||||||
|
// If the action happens on system level and doesn't relate to a known ObjectType.
|
||||||
|
OBJECT_NAME_SYSTEM = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// The type of the object the audit event refers to.
|
||||||
|
// Relevant for type-detection and lookups in the routing.
|
||||||
|
enum ObjectType {
|
||||||
|
OBJECT_TYPE_UNSPECIFIED = 0;
|
||||||
|
OBJECT_TYPE_ORGANIZATION = 1;
|
||||||
|
OBJECT_TYPE_FOLDER = 2;
|
||||||
|
OBJECT_TYPE_PROJECT = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
message ObjectIdentifier {
|
||||||
|
// Identifier of the respective entity (e.g. Identifier of an organization)
|
||||||
|
string identifier = 1 [(buf.validate.field).required = true, (buf.validate.field).string.uuid = true];
|
||||||
|
|
||||||
|
// Type of the respective entity relevant for routing
|
||||||
|
ObjectType type = 2 [(buf.validate.field).required = true, (buf.validate.field).enum.defined_only = true];
|
||||||
|
}
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
syntax = "proto3";
|
|
||||||
|
|
||||||
import "buf/validate/validate.proto";
|
|
||||||
|
|
||||||
package audit.v1;
|
|
||||||
|
|
||||||
option go_package = "./audit;auditV1";
|
|
||||||
option java_multiple_files = true;
|
|
||||||
option java_package = "com.schwarz.stackit.audit.v1";
|
|
||||||
|
|
||||||
message ProtobufMessage {
|
|
||||||
// Serialized event
|
|
||||||
bytes value = 1 [(buf.validate.field).required = true, (buf.validate.field).bytes.min_len = 1];
|
|
||||||
|
|
||||||
// Name of the protobuf type
|
|
||||||
string protobuf_type = 2 [(buf.validate.field).required = true, (buf.validate.field).string.min_len = 1];
|
|
||||||
}
|
|
||||||
|
|
@ -2,6 +2,8 @@ syntax = "proto3";
|
||||||
|
|
||||||
import "buf/validate/validate.proto";
|
import "buf/validate/validate.proto";
|
||||||
|
|
||||||
|
import "audit/v1/common.proto";
|
||||||
|
|
||||||
package audit.v1;
|
package audit.v1;
|
||||||
|
|
||||||
option go_package = "./audit;auditV1";
|
option go_package = "./audit;auditV1";
|
||||||
|
|
@ -16,29 +18,6 @@ enum Visibility {
|
||||||
VISIBILITY_PRIVATE = 2;
|
VISIBILITY_PRIVATE = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
enum ObjectName {
|
|
||||||
OBJECT_NAME_UNSPECIFIED = 0;
|
|
||||||
// If the action happens on system level and doesn't relate to a known ObjectType.
|
|
||||||
OBJECT_NAME_SYSTEM = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// The type of the object the audit event refers to.
|
|
||||||
// Relevant for type-detection and lookups in the routing.
|
|
||||||
enum ObjectType {
|
|
||||||
OBJECT_TYPE_UNSPECIFIED = 0;
|
|
||||||
OBJECT_TYPE_ORGANIZATION = 1;
|
|
||||||
OBJECT_TYPE_FOLDER = 2;
|
|
||||||
OBJECT_TYPE_PROJECT = 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
message ObjectIdentifier {
|
|
||||||
// Identifier of the respective entity (e.g. Identifier of an organization)
|
|
||||||
string identifier = 1 [(buf.validate.field).required = true, (buf.validate.field).string.uuid = true];
|
|
||||||
|
|
||||||
// Type of the respective entity relevant for routing
|
|
||||||
ObjectType type = 2 [(buf.validate.field).required = true, (buf.validate.field).enum.defined_only = true];
|
|
||||||
}
|
|
||||||
|
|
||||||
message EncryptedData {
|
message EncryptedData {
|
||||||
// Encrypted serialized protobuf content (the actual audit event)
|
// Encrypted serialized protobuf content (the actual audit event)
|
||||||
bytes data = 1 [(buf.validate.field).required = true, (buf.validate.field).bytes.min_len = 1];
|
bytes data = 1 [(buf.validate.field).required = true, (buf.validate.field).bytes.min_len = 1];
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue