2009-11-20 3 views
0

프로덕션 서버에서 갑자기 빠진 2 개의 중요한 테이블이 있음을 알 수 있습니다. 이것은 우리에게 절대적인 놀라움이었습니다. 이로 인해 우리의 응용 프로그램이 다운되었습니다. 마지막으로 우리는 이전 백업을 사용하여 테이블을 다시 만들 수 있었고 응용 프로그램은 그 이후에 정상 상태가되었습니다.누가 SQL 테이블을 삭제 했습니까?

이제 테이블을 누가 삭제했는지, 누가 삭제했는지 어떻게 알 수 있습니까?

거기에 같은 방법 또는 그와 비슷한 것을 찾기 위해 트랜잭션 로그를 들여다 볼 수있는 방법이 있습니까?

[업데이트]

이것은 Windows 기반 응용 프로그램입니다. 이 서버에는 인터넷 연결이 구성되어 있지 않습니다. 이 권한을 가진 당사자는 클라이언트와 회사뿐입니다. 이 시점에서 둘 다 서로를 비난하고 있습니다.

[업데이트 END]

감사

Nikhil Sreenivas

+1

나는'SQL injection'을 말할 것인데, 테이블을 몇 개 만들지 않았는가? – RageZ

+4

......... 나 아니야! – Shoban

+0

응용 프로그램은 웹 기반입니까? 그렇다면 @RageZ를 사용하고 있는데, 처음에는 임베디드 된 (아마도 난독 화 된) SQL을 사용하는 이상한 요청 URL에 대한 웹 액세스 로그를 살펴볼 것을 제안합니다. –

답변

0

얼마나 많은 사용자 테이블을 삭제 한 권한은? 어쩌면 당신은 그들 모두에게 간단히 물을 수 있습니다.

+2

웹 서버 만 대답 할 수있는 경우 P – leppie

7

더 중요한 점은 누가 테이블을 삭제했는지 알면 사용자의 액세스를 제한해야한다는 것입니다.

이 사용자는 일종의 나쁜 테이블을 삭제할 권한이 있다고 가정합니다. 귀하의 응용 프로그램 사용자가 sa이거나 DB에 대한 모든 권한을 보유하고 있다면으로 최대한 빨리 을 변경해야합니다.

웹 응용 프로그램의 경우 웹 서버 로그 파일에서 힌트를 찾을 수 있습니다. 데스크톱 응용 프로그램의 경우 일부 로그가 있으면 도움이 될 수 있습니다. 귀하의 사용자가 DB 서버에 직접 액세스 할 수 있다면 나는 그것에 대해 많은 것을 할 수 있다고 생각하지 않습니다.

+1

+1 yup, 일반 사용자는 실제로 "sa"계정이나 테이블 삭제 권한을 제공하는 일부 계정을 사용하지 않아야합니다! –

1

예. 트랜잭션 로그에는이 정보가 거의 확실하게 기록되어 있으며 로그를 검사 할 수있는 도구가 있습니다. 수년간 Lumigent은 이것을 수행 한 Log Explorer라는 훌륭한 제품을 판매했습니다. 나는 그들이 여전히 그것을 팔지는 모르겠다. 그들은 적극적으로 홍보하지 않으므로 전화를해야합니다. ApexSQL에는 비슷한 툴이 있습니다. 그것은 $ 999를 요한다.

이와 같은 상황이 발생할 때마다 감사 추적 기능을 지속적으로 사용하고 데이터베이스를 모니터링하는 제품도 있습니다. 물론 지금은 너무 늦었습니다.

(전체 공개 :. 내가 Lumigent에 대한 작업을하는 데 사용되는)

제대로 데이터베이스를 모니터링 할 수있는 도구를 설정하지 않았기 때문에
0

, 당신은 어려움이 정보를 다시 얻기가있을 수 있습니다. 가장 좋은 방법은 문제가 다시 발생하지 않도록하는 방법을 결정하는 것입니다.

귀하는 현재 클라이언트와 귀하의 회사가 서로를 비난하고 있다고 말합니다. 사실, 데이터베이스 설계의 일부로 데이터베이스를 보호하기위한 조치를 취하지 않았기 때문에 어떤 개인이 테이블을 삭제했는지에 상관없이 회사의 잘못입니다. 첫째, 사용자는 드롭 테이블 권한을 가져야합니다. 정확하게 2 명의 개인은 기껏해야 밥, 그 혹은 그녀의 백업 담당자에게 테이블을 떨어 뜨릴 권리가 있어야합니다. 데이터 액세스를 위해 저장된 procs를 사용하여 데이터베이스를 올바르게 설정했다면, 관리자가 아닌 누구도 모양이나 형태로 테이블에 직접 액세스 할 수 없습니다.그래서 저장된 procs가 데이터베이스 보안을위한 최선의 방법입니다.

둘째, 웹 앱이 아닌 경우에도 회사 사용자가 불만을 품고 그러한 전술을 시도하므로 설계가 분사 공격으로부터 보호되는지 확인해야합니다. 셋째, DDL 트리거를 설정하여 누가 구조를 변경하는지 추적해야합니다. 그리고 생성 한 문제를 수정하는 동안 클라이언트가 중요한 테이블에 감사를 추가하여 데이터 변경을 한 사람을 추적 할 수 있는지 지불해야하는지 확인해야합니다. 기본 SQL 서버

1

other things 사이에, 추적하는 system trace 유지 :

모니터링 서버에 대한 이벤트 시작을 포함하고 객체 생성 및 삭제, 로그 및 데이터 파일 자동 성장 및 중지 다른 데이터베이스 변경.

시스템 추적은 매우 빈번하게 재활용되지만 대부분의 경우 데이터는 며칠 동안 유지됩니다. 추적을 열고 Object:Deleted 이벤트를 찾으십시오. 레코드에는 변경이 발생한 시간, 변경을 수행하는 사용자의 로그인, 명령이 발행 된 응용 프로그램 이름 및 클라이언트 호스트 이름이 포함됩니다.