私は非常に安全な環境で作業することに慣れているため、非常に細かい粒度で権限を設計します。私が通常行うことの1つは、更新されるべきではない列DENY
に対する機能を明示的にユーザーに提供するUPDATE
ことです。
例えば:
create table dbo.something (
created_by varchar(50) not null,
created_on datetimeoffset not null
);
これらの2つの列は、値が設定されたら変更しないでください。したがって、私は明示的にそれらDENY
のUPDATE
許可をします。
最近、チームミーティング中、開発者は、「何らかの理由で値を更新する必要がある場合」に、フィールドが更新されないことを保証するロジックをデータベース層ではなくアプリケーション層に含めるべきであると指摘しました。私にとっては、典型的な開発者のメンタリティのように聞こえます(私は知っています、私は以前は1人でした!)
私は会社のシニアアーキテクトであり、アプリを機能させるために必要な最小限の特権の原則に常に取り組んできました。すべての許可は定期的に監査されます。
このシナリオのベストプラクティスは何ですか?