Skip to content
Snippets Groups Projects
Select Git revision
  • 8190f92a5f6eb416f138574dc3c42f15dcc54d4c
  • main default protected
  • v1.298.0
  • v1.297.0
  • v1.296.0
  • v1.295.0
  • v1.294.0
  • v1.293.0
  • v1.292.0
  • v1.291.0
  • v1.290.0
  • v1.289.0
  • v1.288.0
  • v1.287.0
  • v1.286.0
  • v1.285.0
  • v1.284.0
  • v1.283.0
  • v1.282.0
  • v1.281.0
  • v1.280.0
  • v1.279.0
22 results

audit.go

Blame
  • audit.go 4.28 KiB
    package audit
    
    import "time"
    
    type Auditor interface {
    	WriteValues(startTime, endTime time.Time, requestID string, values map[string]interface{}) error
    	WriteEvent(requestID string, event Event) error
    }
    
    // func getAuthUsername(identity events.APIGatewayRequestIdentity) string {
    // 	if identity.CognitoAuthenticationProvider != "" {
    // 		split := strings.Split(identity.CognitoAuthenticationProvider, ":")
    // 		return split[len(split)-1]
    // 	}
    
    // 	// IAM
    // 	split := strings.Split(identity.UserArn, ":user/")
    // 	return split[len(split)-1]
    // }
    
    // func SaveAPIRequest(req events.APIGatewayProxyRequest, response events.APIGatewayProxyResponse, startTime time.Time, currentRequestID *string) {
    // 	claim, err := claims.RetrieveClaims(&req)
    // 	authType := determineAuthType(req.RequestContext.Identity)
    // 	authUsername := getAuthUsername(req.RequestContext.Identity)
    
    // 	responseBody := response.Body
    // 	responseSize := int64(len(responseBody))
    // 	// SQS has a 256KB limit, so let's limit the response to 96KB
    // 	if len(responseBody) > 12000 {
    // 		responseBody = responseBody[:12000] + "..."
    // 	}
    
    // 	var relevantID *string
    // 	mappedResponse := map[string]interface{}{}
    // 	err = json.Unmarshal([]byte(req.Body), &mappedResponse)
    
    // 	if err == nil {
    // 		val, present := mappedResponse["id"]
    // 		if present {
    // 			valString := utils.Int64ToString(int64(val.(float64)))
    // 			relevantID = &valString
    // 		}
    // 	}
    
    // 	accountID := fmt.Sprintf("%d", *claim.AccountID)
    // 	apiLog := types.ApiLog{
    // 		AccountID:  &accountID,
    // 		UserID:     claim.UserID,
    // 		Path:       req.Path,
    // 		HTTPMethod: req.HTTPMethod,
    // 		Timestamp:  time.Now(),
    // 		Request: map[string]interface{}{
    // 			"Body":                  req.Body,
    // 			"QueryStringParameters": req.QueryStringParameters,
    // 		},
    // 		Response: map[string]interface{}{
    // 			"Body": responseBody,
    // 		},
    // 		ResponseCode:        response.StatusCode,
    // 		ExecutionTime:       time.Now().Sub(startTime).Milliseconds(),
    // 		RequestID:           currentRequestID,
    // 		RelevantID:          relevantID,
    // 		InitialAuthUsername: &authUsername,
    // 		InitialAuthType:     authType,
    // 		IP:                  &req.RequestContext.Identity.SourceIP,
    // 		UserAgent:           &req.RequestContext.Identity.UserAgent,
    // 		ResponseSize:        responseSize,
    // 	}
    
    // 	data, err := json.Marshal(apiLog)
    // 	if err != nil {
    // 		logs.LogErrorMessage("Failed to encode audit event", err)
    // 		return
    // 	}
    
    // 	_ = sqs.ApiLogEvent(
    // 		map[string]string{},
    // 		string(data),
    // 		currentRequestID,
    // 	)
    // }
    
    // func SaveThirdPartyAPIRequest(url string, method string, requestBody string, responseBody string, responseStatus int, startTime time.Time, currentRequestID *string) {
    
    // 	responseSize := int64(len(responseBody))
    // 	// SQS has a 256KB limit, so let's limit the response to 96KB
    // 	if len(responseBody) > 12000 {
    // 		responseBody = responseBody[:12000] + "..."
    // 	}
    
    // 	var relevantID *string
    // 	mappedResponse := map[string]interface{}{}
    // 	err := json.Unmarshal([]byte(requestBody), &mappedResponse)
    
    // 	if err == nil {
    // 		val, present := mappedResponse["id"]
    // 		if present {
    // 			valString := utils.Int64ToString(int64(val.(float64)))
    // 			relevantID = &valString
    // 		}
    // 	}
    
    // 	apiLog := types.ApiLog{
    // 		AccountID:  nil,
    // 		UserID:     nil,
    // 		Path:       url,
    // 		HTTPMethod: method,
    // 		Timestamp:  time.Now(),
    // 		Request: map[string]interface{}{
    // 			"Body": requestBody,
    // 		},
    // 		Response: map[string]interface{}{
    // 			"Body": responseBody,
    // 		},
    // 		ResponseCode:        responseStatus,
    // 		ExecutionTime:       time.Now().Sub(startTime).Milliseconds(),
    // 		RequestID:           currentRequestID,
    // 		RelevantID:          relevantID,
    // 		InitialAuthUsername: nil,
    // 		InitialAuthType:     nil,
    // 		IP:                  nil,
    // 		UserAgent:           nil,
    // 		ResponseSize:        responseSize,
    // 	}
    
    // 	data, err := json.Marshal(apiLog)
    // 	if err != nil {
    // 		logs.LogErrorMessage("Failed to encode audit event", err)
    // 		return
    // 	}
    
    // 	_ = sqs.ApiLogEvent(
    // 		map[string]string{},
    // 		string(data),
    // 		currentRequestID,
    // 	)
    // }
    
    // func determineAuthType(identity events.APIGatewayRequestIdentity) *string {
    // 	result := "cognito"
    // 	if identity.CognitoAuthenticationType == "" {
    // 		result = "iam"
    // 	}
    
    // 	return &result
    // }