信頼済みセッション - ODBC Driver for Teradata

ODBC Driver for Teradata® ユーザー ガイド

Product
ODBC Driver for Teradata
Release Number
17.20
Published
2022年6月
Language
日本語
Last Update
2022-08-22
dita:mapPath
ja-JP/uqj1639470627591.ditamap
dita:ditavalPath
ja-JP/nkw1500504256726.ditaval
dita:id
B035-2526
Product Category
Teradata Tools and Utilities

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
}