概要
Tsurugi 1.6.0では、試験的機能としてユーザー認証とテーブル権限管理機能が新たに導入されました。
これまでTsurugiでは特定のコンポーネントに対する認証機能を部分的に導入していましたが、Tsurugi 1.6.0 ではこれを汎用的なユーザー認証とテーブル権限管理機能として大幅に拡張しました。
ユーザー認証ではユーザー/パスワードの認証方式をはじめとする複数の認証方式をサポートし、テーブル権限管理機能では GRANT
, REVOKE
文による権限設定機能などを提供します。
その他、本バージョンではいくつかの重要な不具合修正や安定性の向上を行っています。
前バージョンを利用するすべてのユーザーは本バージョンへのアップグレードを強く推奨します。
機能追加と改善
機能追加と改善 - Authentication & Authorization
- 試験的機能としてユーザー認証とテーブル権限管理機能を導入
- ユーザー認証ではユーザー/パスワードの認証方式をはじめとする複数の認証方式に対応
- テーブル権限管理機能では管理者、一般ユーザーの区分と
GRANT
,REVOKE
文による権限設定機能に対応 - 本バージョンでは、デフォルトの設定では認証・認可機能は無効になっています。
- ユーザー認証およびテーブル権限管理機能を有効にするには、同梱の認証サービスを起動した上で、構成定義ファイル
tsurugi.ini
内authentication
セクションを編集して Tsurugi データベースを起動してください。 - 詳細については、以下のドキュメントを参照してください。
- ユーザー認証およびテーブル権限管理機能を有効にするには、同梱の認証サービスを起動した上で、構成定義ファイル
- 各種クライアントの認証機能への対応を追加
- CLIツール
- クライアントライブラリ
- Tsubakuro/Java
- Tsubakuro/Rust
- Iceaxe
- 各クライアントライブラリでの認証機能の利用方法については、以下のドキュメントを参照してください。
- Tsurugi のユーザー認証とテーブル権限
- 各クライアントライブラリのAPIドキュメント
- 拡張機能
- Tsurugi MCP Server
- MCP Server に対する認証オプションの追加
- 詳細については、以下のドキュメントを参照してください。
- Tsurugi MCP Server
機能追加と改善 - SQL
- 認可機能の導入に伴い
GRANT
,REVOKE
文に対応GRANT
,REVOKE
文の詳細については、以下のドキュメントを参照してください。
- DDL実行時の対象テーブル閉塞に対応
- DML処理中にDDLを実行するとデータベースが不安定な状態になる(TSURUGI-IS-177) という既知の問題に対処するため、テーブル閉塞の制御を追加しました。対象テーブルに対してDML処理とDDL処理のトランザクションが競合する場合にエラーとすることで、データベースの不安定な状態に陥ることを防止します。
- 上記の対応は、DML と DDLを 異なるトランザクション間 で同時に実行した際の競合についての対処を行っています。
- DML と DDL を 同一のトランザクション内 で同時に実行した場合については、将来のバージョンで対処を行う予定です
機能追加と改善 - Transaction
- Tsurugiデータベース起動高速化
- Tsurugiデータベース起動処理の一部(インデックスのリストア処理)をトランザクションエンジンが並列実行するよう最適化しました。これにより、特に大規模なデータベースにおいて起動時間が短縮されます。
- 該当処理のトランザクションエンジンの並列処理数は 構成定義ファイル
tsurugi.ini
内cc
セクションの設定値index_restore_threads
によって変更可能です。デフォルト値は4
です。マシンのCPUコア数が多い場合などではより大きな値を設定することで起動時間の短縮が期待できます。環境に応じて適切な値に変更してください。
- LTX利用時にscanを伴う更新処理時の性能を改善
機能追加と改善 - Client
- Tsurugi ODBC Driver インストーラーの提供
- Windows版インストーラーによるインストール、ODBCデータソースアドミニストレーターからのデータソースの設定などに対応しました。
- Tsurugi ODBC Driver のインストール手順については、以下のドキュメントを参照してください。
バグ修正
バグ修正 - SQL
- 無効となったトランザクションを利用してDDLを実行できてしまう
- 小数部が0の値をdecimalにキャストするとスケール情報が失われる
バグ修正 - Endpoint
- 想定外の状況で "SQL-02037: The number of transactions exceeded the limit." が発生することがある
バグ修正 - Transaction
- Tsurugiデータベースが不正に終了された場合などでトランザクションログが破損していた場合に、その後のデータベース起動によって稀にデータベースが不整合な状態となることがある
アップグレードについて
クライアント互換性リスト
Tsurugi 1.6.0 では 以下のクライアントに対応しています。
Tsurugi のアップグレードに併せて、必要に応じて各クライアントをアップグレードしてください。
Client | Version |
---|---|
Tsubakuro/Java | 1.11.0 |
Iceaxe | 1.11.0 |
Tanzawa | 1.11.0 |
Tsubakuro/Rust | 0.5.0 |
Tsurugi MCP Server | 0.3.0 |
トランザクションログのフォーマット変更
本バージョンではトランザクションログのフォーマットバージョンが Version 6 に変更されています。バージョン 1.5.0 で利用していたトランザクションログを利用してバージョン 1.6.0 を起動すると、トランザクションログのフォーマットバージョンが自動でアップデートされます。
これにより、バージョン 1.6.0 で起動したトランザクションログはバージョン 1.5.0 では利用できなくなります。また、バージョン 1.6.0 以降で作成したバックアップを バージョン 1.5.0 で復元することもできなくなりますのでご注意ください。
認証機能に関する非互換の変更
バージョン 1.6.0 では、認証機能に関する機能にいくつかの重要な変更が加えられました。
バージョン 1.5.0 以前の認証機能については特定コンポーネントとの連携に限定したものであり、それ単体としては公開機能ではありませんでしたが、非互換な変更が多く加えられたため、以下に主な変更点を示します。
- 認証サーバ(Jetty)のJavaバージョンの変更
- Tsurugi 1.6 からインストーラーで導入される Jetty が Jetty 11 から Jetty 12 へアップグレードされたことに伴い、認証サーバは Java 17 以上が必須になりました。
- 従来サポートしていた Java 11 はサポートされなくなりました。
- Jetty のJAAS設定ファイルの変更
- Jetty 12 へのアップグレードに伴い、JAAS設定ファイルのフォーマットが変更されました。過去バージョンのTsurugiインストーラーで導入されたJettyのJAAS設定ファイルは、Jetty 12 では使用できません。
- Tsurugi 1.6 では、新しいフォーマットのJAAS設定ファイルが提供されます。既存の設定ファイルを使用している場合は、新しいフォーマットに合わせて設定を更新する必要があります。
- 詳しくは、以下のドキュメントを参照してください。
- 環境変数
TSURUGI_JWT_SECRET_KEY
の廃止- 認証サービスの設定に使用されていた環境変数
TSURUGI_JWT_SECRET_KEY
は廃止されました。代わりにpem形式のkeyファイルを配置し、このファイルパスをharinoki.properties
の設定項目tsurugi.jwt.private_key_file
で設定するよう変更になりました。 - 詳しくは、以下のドキュメントを参照してください。
- 認証サービスの設定に使用されていた環境変数
- 資格情報ファイルのフォーマット変更
tgsql
の--credentials
オプションで指定する資格情報ファイルのフォーマットが従来のJSON形式から、暗号化されたkeyファイル形式に変更されました。- これに伴い、デフォルトの資格情報ファイルの拡張子も以下の通り変更されました。
credentials.json
->credentials.key
- 暗号化ファイルは
tgctl credentials
コマンドから生成することができます。詳しくは、以下のドキュメントを参照してください。
- 認証サービスと認証サーバのログ統合
- 認証サービスと認証サーバのログが統合され、認証サービスのログはJettyのログの一部として出力されるようになりました。
- 認証サービスのログ設定はTsurugiインストールディレクトリ配下の
var/auth/resources/jetty-logging.properties
によって変更できます。
アップグレード手順
旧バージョンからのアップグレード手順については、以下のドキュメントを参照してください。
その他
本バージョンにおける変更内容の一覧は、以下のChangelogを参照してください。
本バージョンに対する既知の問題、および本バージョンにて修正された問題の補足情報については、以下のリンクを参照してください。