Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Anything you do at the server level the admin can undo. That's the very definition of its role and there's nothing you can do to prevent it.</p> <p>In SQL 2008 you can request auditing of the said SQL server with X events, see <a href="http://msdn.microsoft.com/en-us/library/cc280386.aspx" rel="noreferrer">http://msdn.microsoft.com/en-us/library/cc280386.aspx</a>. This is CC compliant solution that is tamper evident. That means the admin can stop the audit and do its mischievous actions, but the stopping of the audit is recorded.</p> <p>In SQL 2005 the auditing solution recommended is using the <a href="http://msdn.microsoft.com/en-us/library/ms187346.aspx" rel="noreferrer">profiler infrastructure</a>. This can be made tamper evident when correctly deployed. You would prevent data changes with triggers and constraints and audit DDL changes. If the admin changes the triggers, this is visible in the audit. If the admin stops the audit, this is also visible in the audit.</p> <p>Do you plan this as a one time action against a rogue admin or as a feature to be added to your product? Using digital signatures to sign all your application data can be very costly in app cycles. You also have to design a secure scheme to show that records were not deleted, including last records (ie. not a simple gap in an identity column). Eg. you could compute <a href="http://msdn.microsoft.com/en-us/library/ms188920.aspx" rel="noreferrer">CHECSUM_AGG</a> over <a href="http://msdn.microsoft.com/en-us/library/ms173784.aspx" rel="noreferrer">BINARY_CHECKSUM(*)</a>, sign the result in the app and store the signed value for each table after each update. Needles to say, this will slow down your application as basically you serialize every operation. For individual rows cheksums/hashes you would have to compute the entire signature in your app, and that would require possibly values your app does not yet have (ie. the identity column value <em>to be</em> assigned to your insert). And how far do you want to go? A simple hash can be broken if the admin gets hold of your app and monitors what you hash, in what order (this is trivial to achieve). He then can recompute the same hash. An HMAC requires you to store a secret in the application which is basically impossible against a a determined hacker. These concerns may seem overkill, but if this is an application you sell for instance then all it takes is for <em>one</em> hacker to break your hash sequence or hmac secret. Google will make sure everyone else finds out about it, eventually. </p> <p>My point is that you're up the hill facing a loosing battle if you're trying to deter the <em>admin</em> via technology. The <em>admin</em> is a person you <strong>trust</strong> and if this is broken in your case, the problem is trust, not technology.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload