2012-03-04 9 views
7

SQL Serverにストアドプロシージャを作成しました。SQL Server 2008でストアドプロシージャのスクリプトを非表示にしたい

これで私は誰にでも自分のスクリプトを見たり編集したりすることは望ましくありません。

私は標準的なログインIDとパスワードに取り組んでいることに注意してください。 これは誰とでも共有されています。

従って私はすべての人が手続きを実行できるようにすることができます。 しかし、彼らはスクリプトを見てはいけません。

乾杯! ありがとう

+0

暗号化ではなく、セキュリティを修正する必要があります。誰もが同じ権利で同じログインをしているという言い訳はありません。 – HLGEM

答えて

7

あなたはWITH ENCRYPTIONを探している、あなたのストアドプロシージャの背後にあるコードを暗号化:これは、コードを非表示になります。 MSDNから

CREATE PROCEDURE usp_MyProc 
WITH ENCRYPTION 
AS 
SELECT * 
FROM myTable 

だけ警告:システムテーブルまたはデータベースファイルにアクセスできません

ユーザーは、難読化されたテキストを取得することはできません。ただし、DACポートを介してシステムテーブルにアクセスするか、データベースファイルに直接アクセスできる特権ユーザーは、このテキストを使用できます。

いくつかの参照と、さらに読書:

+0

さらに、SQL Serverの 'WITH ENCRYPTION'は実際には' WITH MINOR_OBFUSCATION'と呼ばれるべきです。あなたが探しているものを知っているなら、システムオブジェクトの解読に役立つ豊富なリソースがあり、特権ユーザーやDACに限定されるものではありません。 –

+0

本当に、それはコードを見ることを決心している人を守るつもりはありませんが、それは大部分の人々を守るでしょう。 –

2

ストアドプロシージャのキーワードはencryptionです。

CREATE PROCEDURE dbo.foo 
WITH ENCRYPTION 
AS 
BEGIN 
    SELECT 'foo' 
END 
+0

誰でもSPを実行できますか?ちょうどコードが隠されている – LearnByReading

+0

それは正しいです。 –

3

は、SQL Serverは、真にモジュールコードを保護するために絶対確実な方法を提供していません。 WITH ENCRYPTION句の名前は、WITH LOOSE_OBFUSCATIONの行に沿って何かにする必要があります。これは、「暗号化」が非常に簡単に妨げられるからです。 SQL Serverの何かを使用して、最もカジュアルな見知らぬ人以外の誰もがコードを解読できないようにすることはできません。誰もが汗をかくことなくネイティブメソッドを打ち負かすことができます。

これはあなたのニーズに十分対応しているかもしれませんが、おそらくより安全な方法ですが、まだ完全ではありません。手順のビジネスロジックの一部または全部を入れてください。into the CLR (read more here)

関連する問題