7.4. Data Role Definition
7.4.1. Data Role Definition
vdb.xml file. (You will find this inside the .vdb zip archive under META-INF/vdb.xml if you used Teiid Designer). The vdb.xml file is checked against the vdb-deployer.xsd schema file found in the EAP_HOME/docs/teiid/schema directory.
7.4.2. Data Role Definition Example
- RoleA has permissions to read, write access to TableA, but can not delete.
- RoleB has no permissions that allow access to TableA
- RoleC has permissions that only allow read access to TableA.column1
Example 7.1. vdb.xml defining RoleA, RoleB, and RoleC
<?xml version="1.0" encoding="UTF-8"?>
<vdb name="sample" version="1">
<model name="modelName">
<source name="source-name" translator-name="oracle" connection-jndi-name="java:myDS" />
</model>
<data-role name="RoleA">
<description>Allow all, except Delete</description>
<permission>
<resource-name>modelName.TableA</resource-name>
<allow-create>true</allow-create>
<allow-read>true</allow-read>
<allow-update>true</allow-update>
</permission>
<mapped-role-name>role1</mapped-role-name>
</data-role>
<data-role name="RoleC">
<description>Allow read only</description>
<permission>
<resource-name>modelName.TableA</resource-name>
<allow-read>true</allow-read>
</permission>
<permission>
<resource-name>modelName.TableA.colum2</resource-name>
<allow-read>false</allow-read>
</permission>
<mapped-role-name>role2</mapped-role-name>
</data-role>
</vdb>
7.4.3. Data Role Definition Example: Additional Attributes
Example 7.2. Temp Table Role for Any Authenticated
<data-role name="role" any-authenticated="true" allow-create-temporary-tables="true">
<description>Temp Table Role for Any Authenticated</description>
<permission>
...
</permission>
</data-role>
7.4.4. Data Role Definition Example: Language Access
Example 7.3. vdb.xml allowing JavaScript access
<?xml version="1.0" encoding="UTF-8"?>
<vdb name="sample" version="1">
<property name="allowed-languages" value="javascript"/>
<model name="modelName">
<source name="source-name" translator-name="oracle" connection-jndi-name="java:myDS" />
</model>
<data-role name="RoleA">
<description>Read and javascript access.</description>
<permission>
<resource-name>modelName</resource-name>
<allow-read>true</allow-read>
</permission>
<permission>
<resource-name>javascript</resource-name>
<allow-language>true</allow-language>
</permission>
<mapped-role-name>role1</mapped-role-name>
</data-role>
</vdb>
7.4.5. Data Role Definition Example: Row-Based Security
Example 7.4. vdb.xml allowing conditional access
<?xml version="1.0" encoding="UTF-8"?>
<vdb name="sample" version="1">
<model name="modelName">
<source name="source-name" translator-name="oracle" connection-jndi-name="java:myDS" />
</model>
<data-role name="base-role" any-authenticated="true">
<description>Conditional access</description>
<permission>
<resource-name>modelName.tblName</resource-name>
<condition constraint="false">column1=user()</condition>
</permission>
</data-role>
<data-role name="RoleA">
<description>Read/Insert access.</description>
<permission>
<resource-name>modelName.tblName</resource-name>
<allow-read>true</allow-read>
<allow-create>true</allow-create>
</permission>
<mapped-role-name>role1</mapped-role-name>
</data-role>
</vdb>
7.4.6. Data Role Definition Example: Column Masking
Example 7.5. vdb.xml with column masking
<?xml version="1.0" encoding="UTF-8"?>
<vdb name="sample" version="1">
<model name="modelName">
<source name="source-name" translator-name="oracle" connection-jndi-name="java:myDS" />
</model>
<data-role name="base-role" any-authenticated="true">
<description>Masking</description>
<permission>
<resource-name>modelName.tblName.column1</resource-name>
<mask>CASE WHEN column1=user() THEN column1 END</mask>
</permission>
</data-role>
<data-role name="RoleA">
<description>Read/Insert access.</description>
<permission>
<resource-name>modelName.tblName</resource-name>
<allow-read>true</allow-read>
<allow-create>true</allow-create>
</permission>
<permission>
<resource-name>modelName.tblName.column1</resource-name>
<condition>column2='x'</condition>
<mask order="1">column1</mask>
</permission>
<mapped-role-name>role1</mapped-role-name>
</data-role>
</vdb>

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.