감사 테이블이란 무엇입니까?


24

감사 테이블이란 무엇입니까?

그들은 어떻게 유용합니까?

나는 이 기사를 읽고 그들을 만났다 .


2
그들은 단지 정규 테이블입니다. 그것들을 사용하는 방법과 그것들을 "감사 테이블"로 만드는 것입니다.
Nick Chammas 2016 년

1
그들은 동일하지 않습니다. 감사 테이블과 감사 테이블이 분리되어 있습니다. 그래서 당신은 두 개의 테이블을 가지고, 줄 NormalTableAuditNormalTable.
Thomas Stringer

1
맷 상어가 그에 대한 답을 얻었습니다. @Shark, 나는 감사 테이블이 특별한 데이터베이스 구조가 아니라는 점을 강조했다 (OP가 그것을 믿을 수 있다는 인상을 받았기 때문에). 개발자가 특정 정보를 추적하는 데 사용하는 또 다른 테이블 일뿐입니다.
Nick Chammas 2014 년

@ NickChammas 아, 절대적으로, 나는 당신이 무엇을 의미하는지 완전히 이해했습니다. 그러나 OP의 의견으로는 나는 그가 그렇게 생각하지 않았다.
Thomas Stringer

감사의 사전 의미를 고려한다면 아마도 "감사 테이블"이 잘못되었다는 결론에 도달 할 것입니다. 감사는 데이터베이스 외부에 있어야합니다. 애플리케이션 비즈니스 자체에 의해 코딩 된 경우 어떻게 감사가 될 수 있습니까?
1

답변:


22

감사 테이블은 특정 테이블에 대한 트랜잭션을 추적하는 데 사용됩니다. 그들은 당신이 (더 나은 단어가 부족한) 지속적인 "로그"를 볼 수 있습니다. 예를 들어, 다음과 같은 테이블이 있다고 가정하십시오.

create table SensitiveInformation
(
    SensitiveNumber int not null,
    SensitiveData varchar(100) not null
)
go

해당 테이블에서 삽입, 업데이트 및 삭제에 액세스 할 수있는 사용자 및 / 또는 응용 프로그램이있을 수 있습니다. 그러나 해당 데이터의 민감한 특성으로 인해 해당 테이블에서 누가 무엇을하고 있는지를 빠르고 쉽게 추적 할 수 있습니다.

따라서 해당 테이블에서 수행중인 작업을 추적하는 감사 테이블이 있습니다. 일반적으로 기본적인 Who , What , When가 포함 됩니다.

감사 테이블은 다음과 같습니다.

create table SensitiveInformationAudit
(
    SensitiveNumberNew int null,
    SensitiveNumberOld int null,
    SensitiveDataNew varchar(100) null,
    SensitiveDataOld varchar(100) null,
    Action varchar(50) not null,
    AuditDate datetime not null,
    LastUpdatedUser varchar(100) not null
)
go

감사 테이블은 일반적으로 데이터베이스 트리거를 사용하여 채워집니다. 즉,에 X작업이 수행되면에 SensitiveInformation세부 정보를 삽입하십시오 SensitiveInformationAudit.


는 IS Action필드 UPDATE또는 INSERTDELETE?
leeand00

24

지금까지 강조되지 않은 감사 테이블의 또 다른 중요한 측면은, 한 사람을 추적뿐만 아니라 무엇을 (자주 스냅 샷 전후 포함) 기록에 있다는 것입니다 감사 테이블이 회 기록이다 .

감사 테이블의 레코드는 업데이트 또는 삭제 (주 참조) 할 수 없으며 삽입 만 가능 합니다. 이것은 때때로 트리거 또는 응용 프로그램 논리를 사용하여 부과되지만 실제로는 감지하기 어려운 방식으로 조작 된 것이 없음을 "증명"시키기 때문에 실제로 중요합니다.

참고 : 감사 테이블에서 오래된 레코드를 정리하려면 관리 또는 감사자가 승인해야하는 특수 프로세스가 필요합니다.


4

감사 테이블은 일반적으로 중요한 / 기밀 테이블의 변경 사항을 추적하려는 경우에 사용됩니다. 급여 및 보너스 비율에 사용되는 테이블이 있고 HR 애플리케이션이이 데이터를 기반으로 급여를 보상하는 경우이 테이블에 대한 쓰기 액세스 권한이있는 사용자는 승인되지 않은 지불을 수정할 수 있습니다.

동시에 일부 사용자는이 테이블에서 작업 할 수 있어야합니다. 감사 테이블이 들어오는 곳입니다. 감사 테이블을 사용하여 변경된 데이터의 전후 값을 추적 할 수 있습니다. 일반적으로 변경을 한 사람 및 변경 시간과 같은 추가 정보도 저장합니다.

따라서 이러한 감사 테이블은 권한이없는 활동을 수행하지 못하게합니다. 또한 올바른 값으로 되돌릴 수있는 수단을 제공합니다.

SQL 2008 이상에는 이를 위해 사용할 수있는 Change Data Capture 라는 내장 기능 이 있습니다.


2
슬프게도 변경 데이터 캡처는 변경 한 사용자를 캡처 할 수 없기 때문에 감사에 끔찍합니다 (DB에 이미 저장하지 않은 경우).
HLGEM

0

감사 테이블은 데이터베이스에서 발생한 데이터 변경 사항을 캡처하는 기본 또는 타사 감사 도구에서 사용합니다. 일반적으로 변경 한 사람, 영향을받는 개체 및 변경 사항에 대한 정보 및 변경에 사용되는 SQL 로그인, 애플리케이션 및 호스트 캡처 된 모든 정보는 감사 테이블에 저장되며 내보내기 또는 쿼리를 통해 사용자에게 친숙한 형식으로 제공되어야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.