Teradata Database 13.10以降、信頼済みセッションでは、ユーザーとデータベースの間でインターフェース接続するアプリケーションに対して、より多くのセキュリティが提供されています。特に、ユーザーが独自のSQLクエリー コマンドを実行依頼できる場合などです。これにより、ユーザーが"SET QUERY_BAND"コマンドを実行依頼してプロキシ ユーザーを変更することはできなくなっています。
データベースでは、信頼済みSQL文として実行依頼された場合を除いて、SET QUERY_BAND SQLを使用して、‘WITH TRUST_ONLY’オプションでGRANT CONNECT THROUGH権限を持つセッションのプロキシ ユーザーを設定または変更することは許可されていません。ODBC Driver for TeradataがSQLを信頼済みとして実行依頼するのは、値SQL_TRUEでSQLSetStmtAttr()を呼び出してSQL_ATTR_TRUSTED_SQL(13010)文属性を設定する場合のみです。SQLExecute()またはSQLExecDirect()が呼び出されるとすぐに、SQL_ATTR_TRUSTED_SQLはデフォルト値であるSQL_FALSEにリセットされます。
GRANT CONNECT THROUGH権限の詳細については、Teradata Vantage™ - SQLデータ制御言語, B035-1149を参照してください。
以下に、信頼済みSQLを送信するサンプル コードを示します。
………. ………. RETCODE result; result = SQLSetStmtAttr(StatementHdl, SQL_ATTR_TRUSTED_SQL, (SQLPOINTER)SQL_TRUE, SQL_IS_UINTEGER); if (SQL_SUCCESS == result) { // After SQL execution, the SQL_ATTR_TRUSTED_SQL attribute value will be reset to SQL_FALSE // to prevent any further use of SET QUERY_BAND until you change the attribute to SQL_TRUE once again. result = SQLExecDirect(yourStatementHdl, (SQLTCHAR *) "SET QUERY_BAND='proxyuser=user1;'FOR SESSION; ", SQL_NTS);vt if (SQL_SUCCESS != result) { // Handle error } } else { // Handle error }