
【次世代高速RDB 劔"Tsurugi"】認証認可機構について【設定方法】
はじめに
この記事では、主にTsurugiが備えている認証認可機能の具体的な使用方法を紹介します。まず本項で認証認可の基本に触れてからTsurugiの認証認可について説明していますので、データベースの認証認可についてご存知の方は次項から読み始めて頂くのが良いと思います。
データベースの役割は、まずは、格納しているデータをユーザに提供することです。但し、総てのデータを総てのユーザに無条件で提供してはならないケースもあります。この場合、データベースをアクセスしているユーザが正当なユーザであることの確認と、どのテータはどのユーザに提供して良いのかという管理を行う必要があります。前者を認証、後者を認可と呼びます。
一般に、認証と認可によって、正当なユーザがアクセスできるのは、そのユーザに提供して良いと設定されているデータのみに制限することができます。認証によって正当でないユーザがデータベースを使うことを防げます。また、認可によって正当なユーザであっても、そのユーザへの提供が禁止されているデータ、すなわちそのユーザに「提供して良い」と設定されていないデータを提供してしまう事故を防げます。
認証で最も多用されているのは、ユーザ名とパスワードが事前に登録されているユーザ名とパスワードの組み合わせに一致しているかどうかを確認する方法と思われます。Tsurugiでも、このユーザ名とパスワードをデータベースに接続しようとしているユーザの資格情報として認証機能に渡して認証を受ける方法(パスワード認証)を基本としています。
認証に成功したユーザ名とパスワードの組をファイルに保存しておき、それを次回以降の資格情報として使用する「暗号化パスワード認証」及び認証要求に使用するファイル、認証機能が発行した認証トークンを資格情報として使用する「トークン認証」が使用できるようになっています。
次項より、Tsurugiの認証認可機構を使うための具体的な設定等を説明します。なお、本稿では「トークン認証」についての説明は割愛します。
Tsurugi認証機能の実装方式
本項ではOSやネットワーク分野の基礎的な技術用語を説明で使います。予めご了承願います。

Tsurugiデータベースの認証機能を有効にすると、Tsurugiのクライアントはセッション開設を要求する際、資格情報をTsurugiに送ります(図1の①)。セッション開設要求を受け取ったTsurugiのプロセス(「Tsurugiプロセス」と呼びます)は、それとは別のプロセスで実行されている認証機能(以降、「認証サービス」と呼びます)に資格情報を送り、その資格情報が正当なのか否かを問い合わせ(図1の②)、認証結果を受け取ります(図1の③)。Tsurugiプロセスは、認証に成功した場合にのみセッションを開設し、認証に失敗した場合にはセッションの開設を拒否し、エラーをクライアントに返します(図1の➃)。このフローにおいてTsurugiプロセスと認証サービスの通信はTCP/IPで行われ、そこで資格情報や認証結果の受け渡しを行うようになっています。


このようにTsurugiプロセスと認証機能は別のプロセスによって実行され、TCP/IP通信により認証要求や認証結果を受け渡すようになっていますので、両者を同じ物理サーバに配置する最も単純な構成(図2(a))以外にも、Tsurugiと認証機能を別の物理サーバに配置する構成(図2(b))、更には、複数のTsurugiが認証機能を共用する構成(図3)とすることが可能です。特に図3の場合、複数のTsurugiが必要とする認証操作は一つの認証サービスで実行されますので、複数台のTsurugiインスタンスでクラスター構成を組む場合などに、共通のユーザーを一元管理できます。
Tsurugi認証機能の使用方法(初期設定)
ここでは、Tsurugi認証機能を使うための設定等について、適宜「Tsurugi のユーザー認証とテーブル権限」(以降「認証認可マニュアル」と表記)を参照して説明します。前提は、Tsurugiの標準的なインストールや起動等は実施できていることです。すなわち、以下の説明は、標準的な方法でインストールされたTsurugiを対象とします。
具体的には、環境変数 `TSURUGI_HOME` が設定されていること、 `$TSURUGI_HOME/bin` がPATHに入っていること、標準的なインストールにより `$TSURUGI_HOME/var` 以下に各種ファイルが配置されていること等です。
Tsurugi認証機能を使用するためには、まず、1) 正当なユーザ名とそのパスワードを認証機能に設定して2) 認証サービスを起動します。そのうえで3)Tsurugiの構成パラメータに「認証機能を使用する」という設定を追加して4)Tsurugiを起動することによりTsurugiの認証機能を使うことができます。
上記の内、1)と2)の具体的な手順は「認証認可マニュアル」の「認証サービスの設定」項を参照してください。ここでの注意点は、1)の後に2)を実行することです。特に、新たなユーザを追加する場合は、認証サービスが読み込むファイル(デフォルトでは `$TSURUGI_HOME/var/auth/etc/harinoki-users.props` )にユーザ名とパスワードを追加した後で2)を実行する必要があります。認証サービスが既に動作している場合は、一旦認証サービスを終了し、その後起動してください。なお、このときに3)と4)を繰り返す必要はありません。既に認証サービスが動作しており、かつ、それを使う設定でTsurugiが動作している場合、新たなユーザ追加は認証サービスを上記手順に従って再起動することにより完了します。
次にTsurugiの設定について説明します。 `$TSURUGI_HOME/var/etc/tsurugi.ini` に格納されている構成パラメータの内、認証機能に関係する部分を以下に抜粋します。
[authentication]
#enabled=false
#administrators=*
#request_timeout=0
#url=http://localhost:8080/harinoki 認証機能を使うためには、コメントアウトされて無効となっている `enabled` の行を `enabled=true` に変更し、有効化します(「認証認可マニュアル」の「Tsurugiデータベースの設定」項参照)。`url` 行については、Tsurugiプロセスと認証サービスが同じ物理サーバで動作する標準インストールではコメントのまま(デフォルト値を使う)で構いません。図2(a)や図3の構成とする場合は認証サービスのホスト名とポート番号を設定します。また、 `administrators` の行は認可に関する設定ですので、認可の項で説明します。
上記に従ってTsurugiの構成ファイルを編集してTsurugiを起動することにより、認証機能が有効になります。
Tsurugi認証機能の使用方法(tgsqlセッション開設)
認証を有効としたTsurugiを `tgsql` から使おうとすると、ユーザ名とパスワードの入力を促されますので、認証機能に登録してあるユーザ名とパスワードを入力します。これにより、Tsurugiのセッションを開始できます。なお、ユーザ名は `tgsql` コマンドの `--user` (短縮形は `-u` )オプションで設定可能となっていますが、パスワードを設定するオプションはありません。`tgsql` コマンドを起動する度にパスワードを入力するのが面倒、もしくは何らかのスクリプトから `tgsql` を使用する場合は、 `--credentials </path/to/credentials.key>` オプションにより暗号化パスワード認証(次項で説明)を指定します。
Tsurugi認証機能の使用方法(暗号化パスワード認証)
「暗号化パスワード認証」とは、認証に成功したユーザ名とパスワードの組を暗号化資格情報としてファイルに保存しておき、それを次回以降の認証で使用する認証方法です。暗号化資格情報の作成は、 `tgctl` コマンドで行います。具体的な手順等は「認証認可マニュアル」「暗号化資格情報」項を参照してください。
認可機能
認可機能の説明には、「特権ユーザ」と「一般(または非特権)ユーザ」の理解が必要です。特権ユーザはTsurugiの総ての機能やデータを使用できるユーザです。一方、一般ユーザがアクセスできるのは、設定により予め許可された機能やデータのみとなっており、許可されていない機能やデータは使えません。Tsurugiでは、Tsurugiの構成パラメータである `authentication.administrators` に特権ユーザとして扱うユーザ名をコンマ区切りで設定します。なお、そのデフォルト値である `*` は、総てのユーザを特権ユーザとして扱うことを意味しています。
TsurugiをSQLで操作する際の認可は表単位で設定可能となっており、各表についてSELECT, INSERT, UPDATE, DELETE操作を許可する一般ユーザ名を指定できます。ある表に対して、どの一般ユーザにどの操作を許可するのかを設定したり、その許可を取り消したりする認可設定は、SQLのGRANT PRIVILEGE文およびREVOKE PRIVILEGE文で行います。詳しくは「認証認可マニュアル」の「テーブル権限の設定」項や マニュアル を参照してください。
おわりに
本稿では、Tsurugiの認証認可機能について、その実装と使用方法を説明しました。現時点(2026年2月)におけるTsurugiリリースのデフォルト設定では認証認可機能は無効化されていますが、構成定義ファイルを編集することで認証認可機能を使用できる状態となっています。認証認可機能を必要とされるユーザ(データベース管理者)の方々は、是非Tsurugiの認証認可機能を有効化してご活用頂ければと思います。