sql >> データベース >  >> RDS >> Sqlserver

SQLServerでビューを暗号化する方法

    SQL Serverでは、ビューを最初に作成するときに暗号化することも、後で暗号化を含めるように変更することもできます。

    T-SQLでビューを作成するには、CREATE VIEWを使用します 構文。暗号化するには、WITH ENCRYPTIONを追加します 引数。

    ALTER VIEWを使用する場合は、同じ引数を使用して既存のビューを暗号化することもできます。 。

    暗号化されたビューのテキストは、カタログビューに直接表示されません。したがって、システムテーブルまたはデータベースファイルにアクセスできないユーザーは、ビューの定義を表示できません。

    WITH ENCRYPTIONを使用する また、SQLServerレプリケーションの一部としてビューが公開されるのを防ぎます。

    例1-暗号化されたビューを作成する

    暗号化されたビューを作成する例を次に示します。

    CREATE VIEW dbo.v_Cats
    WITH ENCRYPTION
    AS
        SELECT 
            CatId,
            CatName,
            Phone
        FROM dbo.Cats;
    GO
    

    それを暗号化する部分はWITH ENCRYPTIONです。 。暗号化したくない場合は、その引数を削除するだけで済みます。

    そのビューを作成した後、sys.sql_modulesを使用すると その定義を表示するためのシステムカタログビュー、私はNULLを取得します。

    SELECT definition 
    FROM sys.sql_modules
    WHERE object_id = OBJECT_ID('dbo.v_Cats');
    

    結果:

    +--------------+
    | definition   |
    |--------------|
    | NULL         |
    +--------------+
    

    (非推奨の)sys.syscommentsでも同じ結果が得られます カタログビュー。

    SELECT text
    FROM sys.syscomments
    WHERE id = OBJECT_ID('v_Cats');
    

    結果:

    +--------+
    | text   |
    |--------|
    | NULL   |
    +--------+
    

    ビューの定義を取得するために使用するT-SQLメソッドに関係なく、同様の結果が得られます。

    ビューをスクリプト化しようとすると、AzureDataStudioで表示されるエラーメッセージは次のとおりです。

    No script was returned when scripting as Create on object View
    

    また、SSMS、DBeaver、またはその他のGUIデータベース管理ソフトウェアで表示しようとすると、同様のメッセージが表示されます。

    例2–既存のビューに暗号化を追加する

    既存のビューを暗号化する場合は、ALTER VIEWを使用します 同じ定義で。つまり、最初の例を取り上げて、CREATEを置き換えることができます。 ALTERを使用 。

    ALTER VIEW dbo.v_Cats
    WITH ENCRYPTION
    AS
        SELECT 
            CatId,
            CatName,
            Phone
        FROM dbo.Cats;
    GO
    

    これは明らかに、ビューの残りの定義が既存のビューとまったく同じであることを前提としています。

    同じ定義を使用していることを確認する最も簡単な方法は、GUIツールを使用して、既存のビューが存在する場合は「変更としてスクリプト」オプションを使用してスクリプトを作成することです。それ以外の場合は、「Script as Create」を使用して、定義が表示されたら、CREATEを変更します。 ALTERを使用 。

    コマンドラインインターフェイスしかない場合は、sys.sql_modulesにクエリを実行できます。 (前の例のように)既存の定義を取得するためのビュー。次に、定義をコピーしてCREATEを置き換えることができます ALTERを使用 。

    それが済んだら、WITH ENCRYPTIONを追加できます もう一度実行してください。

    例3–複数の属性の追加

    暗号化は、ビューの定義に含めることができるいくつかの属性の1つにすぎません。複数の属性を指定する必要がある場合は、コンマで区切ります。

    たとえば、暗号化を使用する場合は スキーマバインディングを指定する場合は、これらをコンマ区切りのリストとして追加する必要があります。

    ALTER VIEW dbo.v_Cats
    WITH ENCRYPTION, SCHEMABINDING
    AS
        SELECT 
            CatId,
            CatName,
            Phone
        FROM dbo.Cats;
    GO
    

    1. SQLiteでUnixタイムスタンプを返す2つの方法

    2. MariaDBで接続の照合を表示する3つの方法

    3. [更新された2020-01-23]MicrosoftOffice365ビルド1912はODBCリンクテーブルのIDを破壊します

    4. 日付文字列を変換して検証するための最良の方法