감사 로그 - Audit Logging

Audit Logging

설명

Axs는 애플리케이션 내의 모든 상호 작용을 자동으로 기록하는 기능을 제공합니다.

기본적으로 저장된 필드는 다음과 같습니다. 관련 테넌트 ID, 호출자 사용자 ID, 호출 된 서비스 이름 (호출 된 메서드의 클래스), 호출 된 메서드 이름, 실행 매개 변수 (JSON으로 직렬화 됨), 실행 시간, 실행 기간 (밀리 초), 클라이언트의 IP 주소, 클라이언트의 컴퓨터 이름예외.

이 정보를 통해 우리는 누가 작업을 수행했는지 알 수 있을 뿐만 아니라 애플리케이션의 성능을 측정하고 발생한 예외를 확인 할 수도 있습니다. 또한 응용 프로그램 사용에 대한 통계를 얻을 수 있습니다.

감사 시스템은 IAxsSession을 사용하여 현재 UserId 및 TenantId를 가져옵니다.

애플리케이션 컨트롤러, MVC 컨트롤러, 웹 API 및 ASP.NET Core 메서드는 기본적으로 자동으로 감사됩니다.

오딧 로그

IAuditingStore

감사 시스템은 IAuditingStore를 사용하여 감사 정보를 저장합니다. 기본적으로 SimpleLogAuditingStore가 사용되고 감사 정보를 로그(log)에 저장합니다.

환경구성

감사를 구성하려면 모듈(module)의 PreInitialize 메서드에서 Configuration.Auditing 속성을 사용할 수 있습니다.

public class MyModule : AxsModule
{
    public override void PreInitialize()
    {
        // 감사로그 사용여부
        Configuration.Auditing.IsEnabled = AppConsts.AuditingEnabled;
    }

    //...
}

감사 구성 속성은 다음과 같습니다 :

  • IsEnabled: 감사 시스템을 완전히 활성화/비 활성화하는데 사용됩니다. 기본값 : true.

  • IsEnabledForAnonymousUsers: true로 설정하면 시스템에 로그인하지 않은 사용자에 대한 감사 로그가 저장됩니다. 기본값 : false.

  • Selectors: 감사 로그를 저장할 다른 클래스를 선택하는 데 사용됩니다.

  • SaveReturnValues: 반환 값 저장을 활성화/비 활성화하는 데 사용됩니다. 기본값 : false.

  • IgnoredTypes: 정의 된 유형을 무시하는 데 사용됩니다.

Selectors는 감사 로그를 저장하는 다른 유형의 클래스를 선택하기 위한 기능 입니다.

Configuration.Auditing.Selectors.Add(
    new NamedTypeSelector(
        "Axs.AppControllers",
        type => typeof (IAppController).IsAssignableFrom(type)
    )
);

모듈의 PreInitialize 메서드에 선택기를 추가 할 수 있습니다. 애플리케이션 컨트롤러에 대한 감사 로그를 저장하지 않으려면 위의 선택기를 이름으로 제거 할 수도 있습니다. 이것이 고유 한 이름을 갖는 이유입니다 (간단한 LINQ를 사용하여 선택기에서 선택기를 찾고 원하는 경우 제거).

어트리뷰트를 이용한 활성/비 활성화

구성별로 감사 클래스를 선택할 수 있지만 단일 클래스 또는 개별 메서드에 대해 AuditedDisableAuditing 특성을 사용할 수 있습니다.

[Audited]
public class MyClass
{
    public void MyMethod1(int a)
    {
        //...
    }

    // 오딧로그 사용하지 않도록 설정
    [DisableAuditing]
    public void MyMethod2(string b)
    {
        //...
    }

    public void MyMethod3(int a, int b)
    {
        //...
    }
}

MyClass의 모든 메서드는 명시 적으로 비활성화되어 있으므로 MyMethod2를 제외한 모든 메서드가 감사됩니다. Audited 속성은 원하는 방법에 대한 감사를 저장하는 데 사용할 수 있습니다.

DisableAuditing은 DTO의 단일 속성에도 사용할 수 있습니다. 따라서 예를 들어 암호와 같은 감사 로그에서 민감한 데이터를 숨길 수 있습니다.

확인

스웨거를 호출하여 감사로그가 발생이 되도록 호출한다.

스웨거에서 /api/services/app/Sample/CreateSampleAudited 주소를 호출합니다. 스웨거 이미지

아래와 같이 데이터 베이스의 AuditLogs 테이블에서 아래와 같이 호출된 주소에 대한 정보를 확인 할 수 있습니다.

스웨거 이미지

Last updated