Skip to content

Installing Multiple Plugins onto the Delphix Masking Engine

Starting SDK version 1.4.0 (corresponding to the Masking Engine version 6.0.8.0) Delphix has implemented multiple plugins upload within SDK, where the Delphix provided dlpx-core plugin is uploaded by default. That gives an option to chain multiple extensible algorithms, even if those are based different plugins.

Load Multiple Algorithm Plugins

  1. Using maskApp to Test an Algorithm

    The maskApp application is interactive and may be launched with no parameters from the shell:

    $ maskApp

    After a moment, the application will print a banner and prompt for input. Currently, the only sub-command supported is mask. In order to use this command, you'll need to know the location of the plugin JAR file on the filesystem.

  2. Upload a desired algorithm plugin bash MASKING-APP:> mask -j <plugin_jar_location>

    This example runs maskApp in proj_dir and uses the JAR file created with the Create a New Project workflow:

    MASKING-APP:> mask -j ./algorithm/build/libs/plugin1.jar
    /Users/testuser/delphix/masking-algorithm-sdk/./algorithm/build/libs/plugin1.jar
    Loading security manager
    Loaded plugin dlpx-core version 1.4.0 (API version: 1.4.0) from [/Users/testuser/delphix/masking-algorithm-sdk/./sdkTools/build/install/maskApp/lib/delphix-algorithm-plugin-1.4.0.jar, /Users/testuser/delphix/masking-algorithm-sdk/./algorithm/build/libs/plugin1.jar]
    Loaded plugin plugin1 version 1.4.0 (API version: 1.4.0) from [/Users/testuser/delphix/masking-algorithm-sdk/./sdkTools/build/install/maskApp/lib/delphix-algorithm-plugin-1.4.0.jar, /Users/testuser/delphix/masking-algorithm-sdk/./algorithm/build/libs/plugin1.jar]
    Framework:
    * [0] dlpx-core:CM Numeric
      [1] dlpx-core:Character Mapping
      [2] dlpx-core:Date Replacement
      [3] dlpx-core:Date Shift
      [4] dlpx-core:Date Shift Discrete
      [5] dlpx-core:Date Shift Variable
      [6] dlpx-core:Dependent Date Shift
      [7] dlpx-core:FullName
      [8] dlpx-core:Name
      [9] dlpx-core:Payment Card
      [10] dlpx-core:Regex Decompose
      [11] dlpx-core:Secure Lookup
      [12] plugin1:Byte Array Redaction
      [13] plugin1:Date Redaction
      [14] plugin1:Number Redaction
      [15] plugin1:Randomized Masking
      [16] plugin1:StringRedaction
    Select an algorithm framework:

Note: algorithm framework name is now prefexed with the plugin name (that framework is originated from). There are always dlpx-core plugin frameworks present, since those are provided by default by the Masking Engine. Previously one could only chain the algorithm with the other algorithm provided by the same plugin. Now it is possible to chain plugin's algorithm with the algorithm instance(s), based on the default dlpx-core plugin.

It is also possible to upload another plugin along with the already loaded ones: instead of selecting an algorithm framework from the above menu - step back by pressing Ctrl-C. That will bring you back to the MASKING-APP:> menu (with the UserInterruptException notification). That error message will be taken care of in a future releases, providing better way for this step back.

org.jline.reader.UserInterruptException
Details of the error have been omitted. You can use the stacktrace command to print the full stacktrace.
MASKING-APP:>

Here it is possible to use similar mask -j <plugin_jar_location> command to upload another plugin:

    MASKING-APP:> mask -j ./algorithm/build/libs/plugin2.jar
    /Users/testuser/delphix/masking-algorithm-sdk/./algorithm/build/libs/plugin2.jar
    Loading security manager
    Loaded plugin dlpx-core version 1.4.0 (API version: 1.4.0) from [/Users/testuser/delphix/masking-algorithm-sdk/./sdkTools/build/install/maskApp/lib/delphix-algorithm-plugin-1.4.0.jar, /Users/testuser/delphix/masking-algorithm-sdk/./algorithm/build/libs/plugin2.jar]
    Loaded plugin plugin2 version 1.4.0 (API version: 1.4.0) from [/Users/testuser/delphix/masking-algorithm-sdk/./sdkTools/build/install/maskApp/lib/delphix-algorithm-plugin-1.4.0.jar, /Users/testuser/delphix/masking-algorithm-sdk/./algorithm/build/libs/plugin2.jar]
    21:17:37.426 [main] INFO  global - Loaded plugin plugin2: Plugin {'embeddedName': 'plugin2', 'version': '1.4.0', 'author': 'Sample Plugin Author', 'apiVersion': '1.4.0'}
    Framework:
    * [0] dlpx-core:CM Numeric
      [1] dlpx-core:Character Mapping
      [2] dlpx-core:Date Replacement
      [3] dlpx-core:Date Shift
      [4] dlpx-core:Date Shift Discrete
      [5] dlpx-core:Date Shift Variable
      [6] dlpx-core:Dependent Date Shift
      [7] dlpx-core:FullName
      [8] dlpx-core:Name
      [9] dlpx-core:Payment Card
      [10] dlpx-core:Regex Decompose
      [11] dlpx-core:Secure Lookup
      [12] plugin1:Byte Array Redaction
      [13] plugin1:Date Redaction
      [14] plugin1:Number Redaction
      [15] plugin1:Randomized Masking
      [16] plugin1:StringRedaction
      [17] plugin2:MultiColumnDateAlgorithm
      [18] plugin2:Numeric Mapping
      [19] plugin2:RedactionDB
      [20] plugin2:RedactionFile
      [21] plugin2:StringHashedLookup
    Select an algorithm framework:

Example above shows 3 plugins uploaded:

  • dlpx-core (default)
  • plugin1 (uploaded by customer)
  • plugin2 (uploaded by customer)

Now it is possible choosing any of those plugins frameworks and their related algorithm instances, as well chaining of those algorithms instances to any configurable extensible algorithm (within the loaded plugins). That behavior simulates Masking Engine where multiple plugins are uploaded.

The technique of algorithms chaining is out of scope of the current description. It's the same as chaining the algorithms belonging to the same plugin. Please refer to the Algorithm Chaining page for chaining details and examples.