例: 注入されたSET QUERY_BANDによるプロキシ ユーザー変更の回避 - Teradata Database - Teradata Vantage NewSQL Engine - 例: 注入されたSET QUERY_BANDによるプロキシ ユーザー変更の回避、SET QUERY_BAND SQL文。

Teradata Vantage™ SQLデータ定義言語 構文規則および例

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/wkf1512081455740.ditamap
dita:ditavalPath
ja-JP/wkf1512081455740.ditaval
dita:id
B035-1144
Product Category
Software
Teradata Vantage

CLIv2やJDBC、または .NETなどの標準的なアプリケーション プログラミング インターフェースを使用して、アプリケーションがSQLリクエストを信頼済みまたは信頼済みではないと指定できるようにすることができます。

クライアント ユーザーにより作成または変更されたSQLリクエストをアプリケーションが実行する場合に、プロキシー ユーザーを設定するすべてのSET QUERY_BANDリクエストが信頼済みリクエストで実行されることが必要なことがあります。

これを実行するには、信頼済みユーザーにCONNECT THROUGH WITH TRUST_ONLY権限を付与します。<Teradata Vantage™ SQLデータ制御言語、B035-1149>を参照してください。この権限により、Teradata Databaseでは、プロキシ ユーザーを設定または削除する信頼済みユーザーにより実行されるすべてのSET QUERY_BANDリクエストが、信頼済みリクエストとして指定される必要があります。そうでない場合、リクエストは拒否され、要求元にエラーが返されます。

使用しているAPIによって、アプリケーションはユーザー入力からのリクエストに信頼済みではないというマークを付け、プロキシ ユーザーまたはプロキシ ロールを変更するSET QUERY_BANDをクライアントが注入するのを防ぎます。

この機能をJDBCで使用するには、TRUSTED_SQL=ON接続パラメータを使用してJDBC DataSourceを作成する必要があります。こうすると、DataSourceに対して実行されるすべてのリクエストは、{fn teradata_untrusted}エスケープ関数を使用してダウングレードされるまで信頼済みになります。

ユーザー入力によるSQLリクエストを含むリクエストの場合、アプリケーションはリクエストがTeradata JDBCドライバに渡される前に、SQL呼び出しの先頭に{fn teradata_untrusted}エスケープ関数を付け加えます。 このエスケープ関数はリクエストを信頼済みではない状態に設定します。 例えば、

     untrustedSQL = "{fn teradata_untrusted}"   untrustedSQL ;