TortoiseSVN Logo

SASLによるSvnserveの保護

SASLとは?

Cyrus Simple Authentication and Security Layer は、カーネギーメロン大学によって書かれたオープンソースソフトウェアです。これは、あらゆるネットワークプロトコルに汎用的な認証および暗号化機能を追加し、Subversion 1.5 以降では、svnserve サーバーと TortoiseSVN クライアントの両方がこのライブラリを利用する方法を知っています。

利用可能なオプションに関するより完全な議論については、Subversion の書籍の「Using svnserve with SASL」のセクションを参照してください。Windows サーバーで安全な認証と暗号化を設定する簡単な方法を探しているだけであれば、危険なインターネット経由でリポジトリに安全にアクセスできるようにするために、読み進めてください。

SASL認証

サーバー上で特定の SASL メカニズムを有効にするには、3 つのことを行う必要があります。まず、リポジトリの svnserve.conf ファイルに [sasl] セクションを作成し、次のキーと値のペアを設定します。

use-sasl = true

次に、svn.conf という名前のファイルを、Subversion がインストールされているディレクトリなど、便利な場所に作成します。

3 番目に、SASL にファイルの場所を指示するために、2 つの新しいレジストリエントリを作成します。次の名前のレジストリキーを作成します。

[HKEY_LOCAL_MACHINE\SOFTWARE\Carnegie Mellon\Project Cyrus\SASL Library]

そして、その中に 2 つの新しい文字列値を配置します。SearchPath は、sasl*.dll プラグインを含むディレクトリパス(通常は Subversion インストールディレクトリ内)に設定し、ConfFile は、svn.conf ファイルを含むディレクトリに設定します。CollabNet インストーラーを使用した場合は、これらのレジストリキーはすでに作成されています。

次の内容を含むように svn.conf ファイルを編集します。

pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: DIGEST-MD5
sasldb_path: C:\TortoiseSVN\sasldb

最後の行は、認証データベースの場所を示しています。これは sasldb という名前のファイルです。これはどこにでも配置できますが、便利な選択肢はリポジトリの親パスです。svnserve サービスがこのファイルへの読み取りアクセス権を持っていることを確認してください。

svnserve がすでに実行中の場合は、更新された設定を読み取るようにするために、再起動する必要があります。

これで、すべての設定が完了したので、ユーザーとパスワードを作成するだけです。これを行うには、saslpasswd2 プログラムが必要です。CollabNet インストーラーを使用した場合は、そのプログラムはインストールディレクトリにあります。次のようなコマンドを使用します。

saslpasswd2 -c -f C:\TortoiseSVN\sasldb -u realm username

-f スイッチはデータベースの場所を指定し、realm はリポジトリの svnserve.conf ファイルで定義した値と同じである必要があり、username は予想どおりです。realm には空白文字を含めることはできません。

sasldblistusers2 プログラムを使用して、データベースに保存されているユーザー名の一覧を表示できます。

SASL暗号化

異なるレベルの暗号化を有効または無効にするには、リポジトリの svnserve.conf ファイルに 2 つの値を設定できます。

[sasl]
use-sasl = true
min-encryption = 128
max-encryption = 256

min-encryption 変数と max-encryption 変数は、サーバーによって要求される暗号化のレベルを制御します。暗号化を完全に無効にするには、両方の値を 0 に設定します。データの単純なチェックサム(つまり、改ざんを防止し、暗号化なしでデータ整合性を保証する)を有効にするには、両方の値を 1 に設定します。暗号化を許可する(ただし必須ではない)場合は、最小値を 0 に設定し、最大値をビット長に設定します。無条件に暗号化を要求するには、両方の値を 1 より大きい数値に設定します。前の例では、クライアントに少なくとも 128 ビットの暗号化を要求しますが、256 ビットを超える暗号化は要求しません。