CREATE_WRAPPED プロシージャー - 難読化オブジェクトのデプロイ
CREATE_WRAPPED プロシージャーは、平文 DDL オブジェクト定義を難読化 DDL オブジェクト定義に変換した後、そのオブジェクトをデータベースにデプロイします。
構文
難読化 DDL ステートメントでは、プロシージャー・ロジックに含まれる知的財産を簡単には抽出できないように、ロジックと組み込み SQL ステートメントがエンコードされます。
パラメーター
- object-definition-string
- DDL ステートメント・テキストを含んだ CLOB(2M) タイプのストリング。以下のいずれかの DDL ステートメント・テキストが可能です (SQLSTATE 5UA0O)。
- CREATE PROCEDURE
- CREATE FUNCTION
- CREATE PACKAGE (PL/SQL)
- CREATE PACKAGE BODY (PL/SQL)
- CREATE TRIGGER
- CREATE VIEW
- ALTER MODULE ADD FUNCTION
- ALTER MODULE PUBLISH FUNCTION
- ALTER MODULE ADD PROCEDURE
- ALTER MODULE PUBLISH PROCEDURE
注: ステートメントのエンコードは、内容を難読化することを意図したものであり、強い暗号化の 1 形式と考えるべきではありません。
許可
DBMS_DDL モジュールに対する EXECUTE 特権。
例
- 週 40 時間労働として時間給から年間給与を計算する難読化関数を作成します。
CALL DBMS_DDL.CREATE_WRAPPED('CREATE FUNCTION ' || 'salary(wage DECFLOAT) ' || 'RETURNS DECFLOAT ' || 'RETURN wage * 40 * 52'); SELECT text FROM SYSCAT.ROUTINES WHERE routinename = 'SALARY' AND routineschema = CURRENT SCHEMA;この CALL ステートメントの実行が正常に完了すると、ルーチン 'SALARY' に対応する行の SYSCAT.ROUTINES.TEXT 列は、次のような形式のものになります。
CREATE FUNCTION salary(wage DECFLOAT) WRAPPED SQL09072 obfuscated-text - 複雑なデフォルトを設定する難読化トリガーを作成します。
CALL DBMS_DDL.CREATE_WRAPPED('CREATE OR REPLACE TRIGGER ' || 'trg1 BEFORE INSERT ON emp ' || 'REFERENCING NEW AS n ' || 'FOR EACH ROW ' || 'WHEN (n.bonus IS NULL) ' || 'SET n.bonus = n.salary * .04'); SELECT text FROM SYSCAT.TRIGGERS WHERE trigname = 'TRG1' AND trigschema = CURRENT SCHEMA;この CALL ステートメントの実行が正常に完了すると、トリガー 'TRG1' に対応する行の SYSCAT.TRIGGERS.TEXT 列は、次のような形式のものになります。
CREATE OR REPLACE TRIGGER trg1 WRAPPED SQL09072 obfuscated-text
