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

How to configure Read Only Datasource in Jboss teiid

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

我没有使用 teiid Designer,我配置数据源编辑 domain.xml 文件。我在 domain.xml 文件

的数据源子元素下添加了休闲数据源
            <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>

将您的所有 table 标记为非更新table。如果您使用的是设计器,则在 table 或列上有 属性,或者您也可以使用 DDL 进行同样的操作。

从 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>

翻译器上有一个标志,可以将它们设置为不可变的 - 但对此的支持已被删除。