Как настроить источник данных только для чтения в Jboss teiid
Я настроил источник данных Redshift в тейиде Jboss. Я хочу знать, как сделать мой источник данных доступным только для чтения. Я знаю, как создавать ресурсы только для чтения на уровне VDB с помощью Dataroles (ссылка: - https://github.com/teiid/teiid-quickstarts/blob/master/vdb-dataroles/src/vdb/portfolio-vdb.xml). Но это позволило бы создавать новые VDB, которые не только для чтения, что является уязвимостью в моем случае. Я хочу сделать это на уровне конфигурации источника данных в domain.xml. Есть ли какие-либо рекомендации о том, как это сделать.
Я не использую teiid Designer и настраиваю источники данных, редактируя файл domain.xml. Я добавляю следующий источник данных в подэлемент Datasources в файле 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>
2 ответа
Самая простая альтернатива с точки зрения 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>
На переводчиках был флаг, чтобы установить их как неизменяемые - но поддержка для этого была удалена.
Отметьте все ваши таблицы как не подлежащие обновлению. Если вы используете конструктор, в таблице или столбцах есть свойство, или вы можете сделать то же самое с помощью DDL.