[GFARM LOGO] 文書集 > ユーザーズマニュアル > 認証設定

認証設定

English | 日本語

この文書は、Gfarm の 認証に関する概要を説明します。


認証方式の種類

以下の認証方式が存在します。
sharedsecret
共有鍵認証です。平文で通信を行ないます。
tls_sharedsecret
TLSで暗号化された通信路上の共有鍵認証です。
tls_client_certificate
TLSで暗号化された通信路上のクライアント証明書を用いた認証です。
sasl
TLSで暗号化された通信路上のSASL認証です。
SASL認証の場合、gfmdやgfsdのようなサーバ側は通信のイニシエータ側に なれません。このため、サーバ間認証については sasl / sasl_auth 以外の 認証方式を設定する必要があります。
sasl_auth
TLSで暗号化された通信路上でSASL認証を行ない、 認証完了後は平文で通信します。
kerberos
Kerberos認証を用いた暗号化通信です。
kerberos_auth
Kerberos認証を行ない、認証完了後は平文で通信します。
gsi
GSI (Grid Security Infrastructure) に基づいた暗号化された通信路上の クライアント証明書を用いた認証です。
gsi_auth
GSI認証を行ない、認証完了後は平文で通信します。

各認証方式を表にまとめると下記の通りとなります。
名称 ニーモニック 暗号化 相互認証 サーバ間認証 ドキュメント
sharedsecret s × × auth-sharedsecret.html
tls_sharedsecret S ○ (*1) auth-tls.html
tls_client_certificate T auth-tls.html
sasl_auth a × ○ (*1) × auth-sasl.html
sasl A ○ (*1) × auth-sasl.html
kerberos_auth k × auth-kerberos.html
kerberos K auth-kerberos.html
gsi_auth g × △ (*2) auth-gsi.html
gsi G △ (*2) auth-gsi.html

ニーモニックは、「gfhost -l」コマンド出力の第二欄で認証方式を示すために 用いられる形式です。 暗号化通信には大文字を、平文通信には小文字を割り当てています。

平文での通信は盗聴やTCPのコネクション ハイジャックといった攻撃に対して 脆弱であるため、 広域での利用時には暗号化された通信を用いる認証方式の利用を推奨します。 平文による通信は、サイト内での利用時に性能を追及したい場合のために 用意していますが、近年のCPUには暗号化のための命令セットが用意されているため、 暗号通信を用いた場合も必ずしも性能が大きく低下するとは限りません。

Gfarm のサーバーは認証されたクライアントからのみ接続を許します (ただし health check 用に gfsd のロードアベレージを取得する UDP 通信のみは 例外で 認証なしで動作します)。 この認証時に、逆方向の認証すなわちクライアントがサーバーを認証するか否かは 認証方式に依存します。 これを表の相互認証の項に記載しています。 相互認証を行なわない場合、DNS spoofing、BGP経路ハイジャック、ARP spoofing と いった手段でサーバーを詐称する攻撃に対して脆弱であるため、 特に広域での利用時には相互認証を行なう認証方式の利用を推奨します。

サーバー間認証の項には、gfmdおよびgfsdのようなサーバー間の認証において 利用できるか否かを記載しています。

(*1) この印のついた認証方式では、名称の意味する方式は サーバーによるクライアント認証で用いられます。 クライアントによるサーバ認証には、サーバのTLS証明書を用います。

(*2) GSI認証のサーバ間での利用は、 少なくとも Ubuntu 22.04 では不具合があることが判明しています。 CentOS 8 系では動作しています。


認証方式の設定

初期設定

初期設定で config-gfarm を行なう際に指定した -a オプションによって 以下のような認証方式の設定が gfmd.conf および gfarm2.conf に対して 追加されます。
auth enable sharedsecret *
これは config-gfarm のデフォルトである -a sharedsecret の例で、 全てのサイトに対して sharedsecret を認証方式として用います。

authディレクティブの最初のパラメータには enable か disable のいずれかを記載します。

authディレクティブの次のパラメータには認証方式か「*」を記載します。 「*」の場合はすべての認証方式を意味します。

authディレクティブの次のパラメータには対象となるホストのホスト名ないし IPアドレスを以下のいずれかの形式で記載します。
ホスト指定形式 意味
* * すべてのホスト
ホスト名 host1.example.net 指定したホスト
.ドメイン名 .example.net 指定したドメインに属するホスト
IPv4アドレス 192.168.0.1 指定したIPアドレスのホスト
IPv4アドレス/ネットマスク 192.168.0.0/24 指定したIPアドレスの範囲に適合するホスト

同一の認証方式の間では、auth ディレクティブは記述の順番に意味があり、上から適用されていきます。 このため以下の例だと

auth enable * 192.168.0.0/24
auth disable * .blacklist.example.net
auth enable tls_client_certificate *
次の意味になりますが 以下の例だと
auth enable tls_client_certificate *
auth disable * .blacklist.example.net
auth enable * 192.168.0.0/24
下記の意味になってしまいます。

異なる認証方式の間の順序に意味はなく、 クライアントは enable とされている認証方式を、以下の順序で試行します。

  1. sharedsecret
  2. sasl_auth
  3. sasl
  4. tls_sharedsecret
  5. tls_client_certificate
  6. kerberos_auth
  7. kerberos
  8. gsi_auth
  9. gsi
この試行順序は、auth_trial_order ディレクティブで変更することができます。
例えば以下の設定を行なうと、 tls_client_certificate と sasl のみをこの順序で試行し それ以外の認証方式は利用しなくなります。
auth_trial_order tls_client_certificate sasl

SEE ALSO

gfarm2.conf(5)
Gfarm File System <gfarmfs at gmail.com>