如何在Jboss teiid中配置只读数据源

时间:2017-12-19 11:55:13

标签: jboss teiid redhat-datavirt

我在Jboss teiid中配置了Redshift数据源。我想知道如何使我的数据源只读。我知道如何使用Dataroles(参考: - https://github.com/teiid/teiid-quickstarts/blob/master/vdb-dataroles/src/vdb/portfolio-vdb.xml)在VDB级别上创建只读资源。但是,这将允许创建不是只读的新VDB,这在我的案例中是一个漏洞。我想在domain.xml中的Datasource配置级别执行此操作。有没有关于如何做到这一点的指导。

我没有使用teiid Designer,我配置了Datasources编辑domain.xml文件。我在domain.xml文件

中的Datasources子元素下添加了暂停的数据源
            <datasource jndi-name="java:jboss/datasources/redshiftDS" pool-name="redshiftDS" enabled="true" use-java-context="true">
            <connection-url>jdbc:redshift://***********.com:5439/schema</connection-url>
            <driver>redshift</driver>
            <security>
                <user-name>${user_name}</user-name>
                <password>${pw}</password>
            </security>
            <pool>
                <!--min-pool-size>
                    10
                </min-pool-size-->
                <max-pool-size>
                    5
                </max-pool-size>
            </pool>
            </datasource> 

有什么办法可以配置数据源只在这里读取。例如,添加类似

的内容
<access-permission>
   read-only
</access-permission>

2 个答案:

答案 0 :(得分:0)

将所有表标记为不可更新。如果您正在使用设计器,则表或列上有属性,或者您也可以使用DDL执行此操作。

答案 1 :(得分:0)

Teiid透视图中最简单的替代方法是为所有未经用户具有写访问权限的模式添加任何经过身份验证的数据角色:

<data-role name="read-only" any-authenticated="true" allow-create-temporary-tables="true">
    <description>read only access</description>
    <permission>
        <resource-name>schema name</resource-name>
        <allow-read>true</allow-read>
        <allow-execute>true</allow-execute>
    </permission>
</data-role>

翻译人员有一个标志将其设置为不可变 - 但对此的支持已被删除。