/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.hadoop.gateway.audit.api; /** * Used to record audit events. */ public interface Auditor { /** * Records a single audit event. * * @param correlationContext The explicit correlation context to use when recording this audit event. May not be null. * @param auditContext The explicit audit context to use when recording this audit event. May not be null. * @param action The action being recorded for this audit event. May not be null. * @param resourceName The resource identifier to record for this audit event. May not be null. * @param resourceType The resource type to record for this audit event. May not be null. * @param outcome The outcome to record for this audit event. Typically the result of a authorization check. May not be null. * @param message An arbitrary message to record with the audit event. May be null. */ void audit( CorrelationContext correlationContext, AuditContext auditContext, String action, String resourceName, String resourceType, String outcome, String message ); /** * Records a single audit event using context information associated with the current thread. * * @param action The action being recorded for this audit event. May not be null. * @param resourceName The resource identifier to record for this audit event. May not be null. * @param resourceType The resource type to record for this audit event. May not be null. * @param outcome The outcome to record for this audit event. Typically the result of a authorization check. May not be null. * @param message An arbitrary message to record with the audit event. May be null. */ void audit( String action, String resourceName, String resourceType, String outcome, String message ); /** * Records a single audit event using context information associated with the current thread. * * @param action The action being recorded for this audit event. May not be null. * @param resourceName The resource identifier to record for this audit event. May not be null. * @param resourceType The resource type to record for this audit event. May not be null. * @param outcome The outcome to record for this audit event. Typically the result of a authorization check. May not be null. */ void audit( String action, String resourceName, String resourceType, String outcome ); /** * The service name established when the Auditor was acquired. * Every event logged by auditor instance will contain data about service that generated event. * * @return The service name established when the Auditor was acquired. */ String getServiceName(); /** * The component name established when the Auditor was acquired. * * @return The component name established when the Auditor was acquired. */ String getComponentName(); /** * The auditor name established when the Auditor was acquired. * As an example, authentication/authorization operations may be logged to separate security log. * Or actions on some resources shouldn't be logged into central storage. * Auditor name provide an ability to logically group audit events, configure theirs filtration and persistence * * @return The auditor name established when the Auditor was acquired. */ String getAuditorName(); }