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