0

パスワード付きのデータベース テーブルにいくつかの接続文字列を含むイントラネット アプリケーションを開発しています (前の開発者がこれを行いました - 私はそれが悪い習慣であることを知っています)。SQL Server 2005 から SQL Server 2008 にアップグレードする計画だったので、これを待ってから、データが暗号化されていてもコードを変更する必要がない TDE (Transparent Data Encryption) を使用することにしました。

現在、SQL Server 2008 にアップグレードしていないことがわかりました。アプリケーションに必要な変更を最小限に抑えるには、他にどのようなオプションが必要ですか? web.config で暗号化機能を使用することを考えましたが、多くの変更が必要になると思います。他にどのようなオプションがありますか? それに接続する 2 つのクライアント アプリケーション、つまり VB6 と VB.NT があります。

4

1 に答える 1

0

あなたが取ることができる3つのオプションを考えることができます。まず、システム管理者に Active Directory からサービス アカウントをプロビジョニングしてもらい、sql アカウントと同じアクセス許可を付与してから、IIS のアプリケーション プールの詳細設定でアプリケーション ID プロパティを構成します。その後、構成文字列からユーザー名とパスワードを削除し、プロパティ「trusted_connection=true」に置き換えることができます。

次に、列レベルの暗号化を適用して、データベースに格納されている接続文字列を暗号化できます。イントラネット アプリのコードを変更することなく実行できます。テーブルの名前を変更し、decryptautokeybycert 関数を含む古いテーブル名でビューを作成する必要があります。記事の最後に例を掲載します。

3 番目に、SSL/TLS を使用してすべての接続を強制的に暗号化するようにサーバーを構成するよう DBA に依頼できます。

use master
go
create database EncryptedData
go
use EncryptedData
create master key encryption by password='P@ssw0rd!'

create certificate KeyProtection with subject='Key Protection'

create symmetric key ColumnKey 
    with algorithm=AES_256 
    encryption by certificate KeyProtection

create table SecretMessages(Ciphertext varbinary(4000))
go
create view dbo.MessageRecords 
as
select 
    cast(DECRYPTBYKEYAUTOCERT( cert_id('KeyProtection'), null,Ciphertext) as varchar(max)) MessageRecord
from dbo.SecretMessages
go 

open symmetric key ColumnKey decryption by certificate KeyProtection

insert into SecretMessages(Ciphertext) values (ENCRYPTBYKEY(key_guid('ColumnKey'),'Hello world 1'))
insert into SecretMessages(Ciphertext) values (ENCRYPTBYKEY(key_guid('ColumnKey'),'Hello world 2'))
insert into SecretMessages(Ciphertext) values (ENCRYPTBYKEY(key_guid('ColumnKey'),'Hello world 3'))
insert into SecretMessages(Ciphertext) values (ENCRYPTBYKEY(key_guid('ColumnKey'),'Hello world 4'))
insert into SecretMessages(Ciphertext) values (ENCRYPTBYKEY(key_guid('ColumnKey'),'Hello world 5'))
close symmetric key ColumnKey


select * from MessageRecords
于 2016-07-22T23:20:50.413 に答える