Applies to:SQL Server
ソフトウェア開発者は、多くの場合、顧客がアプリケーションを分析および分解できないようにしながら、SQL Server データ アプリケーションを顧客に配布する方法を尋ねます。 ここでの重要な原則は、知的財産の保護は法的な問題であり、保護は使用許諾契約書に含まれるということです。 他のユーザーが管理するコンピューターにSQL Serverをインストールすると、本質的に制御の一部が失われます。
問題の性質
コンピューターの所有者または管理者は、そのコンピューターにインストールされているSQL Serverのインスタンスを常にaccessできます。 アプリケーションを顧客のコンピューターに展開する場合は、管理者であるため、固定サーバー ロールである sysadmin のメンバーとしてSQL Serverに接続できます。 これには、アクセス許可の付与、バックアップの管理 (他のコンピューターへのバックアップの復元を含む)、データ ファイルの暗号化解除と移動などの機能が含まれます。 詳細については、「システム管理者がロックアウトされたときにSQL Serverに接続するを参照してください。
ストアド プロシージャとデータは暗号化できますが、データ構造を非表示にすることはできません。また、サーバー プロセスにデバッガーをアタッチできるユーザーは、実行時にメモリから復号化されたプロシージャとデータを取得できます。
クライアントがコンピューターの管理者でない場合は、クライアントによるaccessを防ぐことができます。 Transparent Data Encryption を使用してデータ ファイルを暗号化したり、バックアップを暗号化したり、すべてのユーザーのアクションを監査したりできます。 ただし、SQL Server 管理者と SQL Server コンピューターの管理者は、これらの操作を元に戻すことができます。
解決策
クライアントのコンピューターにSQL Serverをインストールせずにクライアントデータのアクセスを構成するには、さまざまな方法があります。 最も簡単なのは、Azure SQL Databaseを使用することです。そのため、クライアントは管理者ではなく、Always Encryptedと組み合わせて使用する可能性があります。 SQL Database を始めるための詳細については、「Azure SQL Databaseとは何か」を参照してください。
また、独自のネットワークでSQL Serverをホストし、クライアントがネットワーク経由で直接または Web アプリケーションを介してデータをaccessできるようにすることもできます。