mirror of
https://dev.azure.com/schwarzit/schwarzit.stackit-public/_git/audit-go
synced 2026-02-08 09:07:26 +00:00
206 lines
5.4 KiB
Go
206 lines
5.4 KiB
Go
package api
|
|
|
|
import (
|
|
"google.golang.org/protobuf/types/known/wrapperspb"
|
|
"time"
|
|
|
|
auditV1 "dev.azure.com/schwarzit/schwarzit.stackit-core-platform/common-audit.git/gen/go/audit/v1"
|
|
|
|
"github.com/google/uuid"
|
|
"google.golang.org/protobuf/types/known/structpb"
|
|
"google.golang.org/protobuf/types/known/timestamppb"
|
|
)
|
|
|
|
func NewOrganizationAuditEvent(
|
|
customization *func(
|
|
*auditV1.AuditEvent,
|
|
*RoutingIdentifier,
|
|
*auditV1.ObjectIdentifier,
|
|
)) (
|
|
*auditV1.AuditEvent,
|
|
*RoutingIdentifier,
|
|
*auditV1.ObjectIdentifier,
|
|
) {
|
|
|
|
auditEvent := &auditV1.AuditEvent{
|
|
EventSource: "resource-manager",
|
|
Region: auditV1.Region_REGION_EU01,
|
|
SequenceNumber: wrapperspb.Int64(0),
|
|
EventName: "ORGANIZATION_CREATED",
|
|
EventTimeStamp: timestamppb.New(time.Now()),
|
|
EventTrigger: auditV1.EventTrigger_EVENT_TRIGGER_EVENT,
|
|
Initiator: &auditV1.Principal{
|
|
Id: uuid.NewString(),
|
|
},
|
|
}
|
|
|
|
identifier := uuid.New()
|
|
routingIdentifier := &RoutingIdentifier{
|
|
Identifier: identifier,
|
|
Type: RoutingIdentifierTypeOrganization,
|
|
}
|
|
|
|
objectIdentifier := &auditV1.ObjectIdentifier{
|
|
Identifier: identifier.String(),
|
|
Type: auditV1.ObjectType_OBJECT_TYPE_ORGANIZATION,
|
|
}
|
|
auditEvent.ResourceContainerReference = &auditV1.AuditEvent_ObjectIdentifier{ObjectIdentifier: objectIdentifier}
|
|
|
|
if customization != nil {
|
|
(*customization)(auditEvent, routingIdentifier, objectIdentifier)
|
|
}
|
|
|
|
return auditEvent, routingIdentifier, objectIdentifier
|
|
}
|
|
|
|
func NewOrganizationAuditEventWithDetails() (*auditV1.AuditEvent,
|
|
*RoutingIdentifier,
|
|
*auditV1.ObjectIdentifier) {
|
|
customization := func(event *auditV1.AuditEvent,
|
|
routingIdentifier *RoutingIdentifier,
|
|
objectIdentifier *auditV1.ObjectIdentifier) {
|
|
userAgent := "firefox"
|
|
parameters, _ := structpb.NewStruct(map[string]any{"parameter1": "value"})
|
|
body, _ := structpb.NewStruct(map[string]any{"body": "value"})
|
|
|
|
event.Request = &auditV1.RequestDetails{
|
|
Endpoint: "/test",
|
|
SourceIpAddress: "127.0.0.1",
|
|
UserAgent: &userAgent,
|
|
Parameters: parameters,
|
|
Body: body,
|
|
Headers: []*auditV1.RequestHeader{
|
|
{
|
|
Key: "header1",
|
|
Value: "value",
|
|
},
|
|
},
|
|
}
|
|
|
|
email := "test@example.com"
|
|
event.Principals = []*auditV1.Principal{
|
|
{
|
|
Id: "id",
|
|
Email: &email,
|
|
},
|
|
}
|
|
|
|
details, _ := structpb.NewStruct(map[string]interface{}{
|
|
"detail": "value",
|
|
})
|
|
event.Details = details
|
|
|
|
result, _ := structpb.NewStruct(map[string]interface{}{
|
|
"result": "value",
|
|
})
|
|
event.Result = result
|
|
}
|
|
return NewOrganizationAuditEvent(&customization)
|
|
}
|
|
|
|
func NewFolderAuditEvent(
|
|
customization *func(
|
|
*auditV1.AuditEvent,
|
|
*RoutingIdentifier,
|
|
*auditV1.ObjectIdentifier,
|
|
)) (
|
|
*auditV1.AuditEvent,
|
|
*RoutingIdentifier,
|
|
*auditV1.ObjectIdentifier,
|
|
) {
|
|
|
|
auditEvent := &auditV1.AuditEvent{
|
|
EventSource: "resource-manager",
|
|
Region: auditV1.Region_REGION_EU01,
|
|
SequenceNumber: wrapperspb.Int64(0),
|
|
EventName: "FOLDER_CREATED",
|
|
EventTimeStamp: timestamppb.New(time.Now()),
|
|
EventTrigger: auditV1.EventTrigger_EVENT_TRIGGER_EVENT,
|
|
Initiator: &auditV1.Principal{
|
|
Id: uuid.NewString(),
|
|
},
|
|
}
|
|
|
|
routingIdentifier := &RoutingIdentifier{
|
|
Identifier: uuid.New(),
|
|
Type: RoutingIdentifierTypeOrganization,
|
|
}
|
|
|
|
objectIdentifier := &auditV1.ObjectIdentifier{
|
|
Identifier: uuid.New().String(),
|
|
Type: auditV1.ObjectType_OBJECT_TYPE_FOLDER,
|
|
}
|
|
auditEvent.ResourceContainerReference = &auditV1.AuditEvent_ObjectIdentifier{ObjectIdentifier: objectIdentifier}
|
|
|
|
if customization != nil {
|
|
(*customization)(auditEvent, routingIdentifier, objectIdentifier)
|
|
}
|
|
|
|
return auditEvent, routingIdentifier, objectIdentifier
|
|
}
|
|
|
|
func NewProjectAuditEvent(
|
|
customization *func(
|
|
*auditV1.AuditEvent,
|
|
*RoutingIdentifier,
|
|
*auditV1.ObjectIdentifier,
|
|
)) (
|
|
*auditV1.AuditEvent,
|
|
*RoutingIdentifier,
|
|
*auditV1.ObjectIdentifier,
|
|
) {
|
|
|
|
auditEvent := &auditV1.AuditEvent{
|
|
EventSource: "resource-manager",
|
|
Region: auditV1.Region_REGION_EU01,
|
|
SequenceNumber: wrapperspb.Int64(0),
|
|
EventName: "PROJECT_CREATED",
|
|
EventTimeStamp: timestamppb.New(time.Now()),
|
|
EventTrigger: auditV1.EventTrigger_EVENT_TRIGGER_EVENT,
|
|
Initiator: &auditV1.Principal{
|
|
Id: uuid.NewString(),
|
|
},
|
|
}
|
|
|
|
identifier := uuid.New()
|
|
routingIdentifier := &RoutingIdentifier{
|
|
Identifier: identifier,
|
|
Type: RoutingIdentifierTypeProject,
|
|
}
|
|
|
|
objectIdentifier := &auditV1.ObjectIdentifier{
|
|
Identifier: identifier.String(),
|
|
Type: auditV1.ObjectType_OBJECT_TYPE_PROJECT,
|
|
}
|
|
auditEvent.ResourceContainerReference = &auditV1.AuditEvent_ObjectIdentifier{ObjectIdentifier: objectIdentifier}
|
|
|
|
if customization != nil {
|
|
(*customization)(auditEvent, routingIdentifier, objectIdentifier)
|
|
}
|
|
|
|
return auditEvent, routingIdentifier, objectIdentifier
|
|
}
|
|
|
|
func NewSystemAuditEvent(
|
|
customization *func(*auditV1.AuditEvent)) *auditV1.AuditEvent {
|
|
|
|
auditEvent := &auditV1.AuditEvent{
|
|
EventSource: "resource-manager",
|
|
Region: auditV1.Region_REGION_EU01,
|
|
SequenceNumber: wrapperspb.Int64(0),
|
|
EventName: "SYSTEM_CHANGED",
|
|
EventTimeStamp: timestamppb.New(time.Now()),
|
|
EventTrigger: auditV1.EventTrigger_EVENT_TRIGGER_EVENT,
|
|
Initiator: &auditV1.Principal{
|
|
Id: uuid.NewString(),
|
|
},
|
|
}
|
|
auditEvent.ResourceContainerReference = &auditV1.AuditEvent_ObjectName{
|
|
ObjectName: auditV1.ObjectName_OBJECT_NAME_SYSTEM}
|
|
|
|
if customization != nil {
|
|
(*customization)(auditEvent)
|
|
}
|
|
|
|
return auditEvent
|
|
}
|