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

SASL 認証

English | 日本語

この文書は、Gfarm の SASL 認証で必要な設定について説明します。

Gfarm における SASL認証には以下の2種類があります。

sasl
認証処理のみならずメタデータアクセスおよびファイルアクセスまで TLS で暗号化された通信路上で行ないます。
sasl_auth
SASL による認証フェーズのみ TLS で暗号化し、 その後のメタデータアクセスおよびファイルアクセスは平文で通信します。

TLS 設定

SASL 認証では TLS で暗号化された通信路を利用するため、あらかじめ 「TLS 認証」の 「tls_sharedsecret 認証、tls_client_certificate 認証、sasl_auth 認証 および sasl 認証に共通の設定」の項にある設定を 実施しておく必要があります。

サーバー側設定

Cyrus SASL の設定

Cyrus SASL の設定を置くディレクトリ ($(pkg-config --variable=libdir libsasl2)/sasl2) に 以下の内容の設定を gfarm.conf という名称で置きます。
なおこの文書では以降このファイルを 「Cyrus SASL のサーバー設定ファイル」と呼称します。
mech_list: 利用するSASL認証メカニズムを空白で区切って指定
…その他、メカニズム固有の設定が必要な場合は記述する
mech_list には以下のように空白で区切って複数のメカニズムを 記述できます。

例:

mech_list: PLAIN XOAUTH2
このファイルが存在しない場合、システムにインストールされている SASL メカニズムすべてが利用候補となります。
しかしこれはトラブルのもととなりますので、 実際に利用するメカニズムのみを指定してください。

XOAUTH2 を除く各メカニズムに関する設定については、 Cyrus SASL のドキュメントを参照してください。 XOAUTH2 メカニズムについては以下を参照してください。

Cyrus SASL XOAUTH2 メカニズム用設定

XOAUTH2 メカニズムを利用する場合、 cyrus-sasl-xoauth2-idp パッケージをインストールし、 Cyrus SASL のサーバー設定ファイルに 以下の内容の設定を gfarm.conf という名称で置きます。

mech_list: XOAUTH2
xoauth2_scope: JWTのサーバー側検証時にJWTへ要求する scope
xoauth2_aud: JWTのサーバー側検証時にJWTへ要求する audience
xoauth2_user_claim: JWT中でユーザーIDとして用いるclaimのkey名
xoauth2_issuers: 信頼できるJWT発行サーバのURLのリスト
具体的な設定は OAuth IdP の構成に依存しますが、たとえば以下のようになります。
mech_list: XOAUTH2
xoauth2_scope: hpci
xoauth2_aud: hpci
xoauth2_user_claim: hpci.id
xoauth2_issuers: https://keycloak.example.com/auth/realms/hpci https://keycloak.example.org/auth/realms/hpci
xoauth2_issuers を設定しない場合、 どのサーバが発行した JWT でも受け入れます。 しかしこれはセキュリティ的に危険ですので、 必ず信頼できるサーバのみに制限するように設定してください。

サーバー側は OAuth IdP へアクセスしますが、このときに Web proxy サーバーを 介す必要がある場合にはさらに下記の設定も追加します。

proxy: http://proxyサーバー名:proxyポート番号/
「proxyサーバー名」および「proxyポート番号」は、適宜修正してください。

Ubuntu では、gfsd との認証が "unable to open Berkeley db /etc/sasldb2: Permission denied" により失敗することがあります。その場合、 /etc/sasldb2 の所有者を変更することにより解決します。

% sudo chown _gfarmfs /etc/sasldb2

Gfarm の設定

gfmd.conf や gfsd の読む gfarm2.conf に、以下のような設定を追加します。
auth enable sasl *
あるいは
auth enable sasl_auth *
また以下のような設定を追加して利用するメカニズムを限定してください。
sasl_mechanisms "PLAIN XOAUTH2"
セキュリティ確保のため、実際に利用するメカニズムのみを指定してください。
その他の設定については、Cyrus SASL のドキュメントに従ってください。

SASLユーザ名とGfarmのユーザ名が異る場合は、SASLユーザ名を以下のように 登録します。

% gfuser -A Gfarmユーザ名 SASL SASLユーザ名

クライアント側設定

環境変数 GFARM_CONFIG_FILE で指定されたファイル、 あるいはもし環境変数が設定されていない場合には ホームディレクトリの .gfarm2rc に、 利用するSASLメカニズムに応じた下記のような設定を行ないます。 「ユーザー名」および「パスワード」部分については適宜変更してください。

ANONYMOUS メカニズムの場合

sasl_mechanisms "ANONYMOUS"
sasl_user "dummy-user-name"
anonymous メカニズムの設定にはユーザ特有の情報は含まれていませんから、 gfarm2.conf に設定することも可能です。

PLAIN メカニズムの場合

sasl_mechanisms "PLAIN"
sasl_user "ユーザー名"
sasl_password "パスワード"
このファイルが他のユーザーに読みとられないように、 chmod(1) コマンドを用いてファイルのモードを 0600 ないし 0400 に 設定してください。

LOGIN メカニズムの場合

sasl_mechanisms "LOGIN"
sasl_user "ユーザー名"
sasl_password "パスワード"
このファイルが他のユーザーに読みとられないように、 chmod(1) コマンドを用いてファイルのモードを 0600 ないし 0400 に 設定してください。

XOAUTH2 メカニズムの場合

sasl_mechanisms "XOAUTH2"
sasl_user "ユーザー名"

Cyrus SASL の設定を置くディレクトリ ($(pkg-config --variable=libdir libsasl2)/sasl2) に 以下の内容の設定を gfarm-client.conf という名称で置くと、 上記 sasl_user の指定は省略できます。

xoauth2_user_claim: JWT中でユーザーIDとして用いるclaimのkey名
こうするとユーザ固有の設定は不要となりますから、 .gfarm2rc では特に設定を行なわず、 sasl_mechanism の設定を gfarm2.conf で行なうことも可能となります。

さらに環境変数 JWT_USER_PATH で指定されたファイル、 あるいはもし環境変数が設定されていない場合には ファイル /tmp/jwt_user_u<自身のUNIX_UID>/token.jwt に、 XOAUTH2 で用いるアクセストークンを置いてください。 このファイルが他のユーザーに読みとられないように、 chmod(1) コマンドを用いて JWT ファイルのモードを 0600 ないし 0400 に 設定してください。

jwt-logon コマンドや jwt-agent コマンドを用いると、 トークンを取得してこのファイルに適切なモードで JWT を設定することができます。

環境変数 JWT_USER_PATH に設定されいている値の最初の文字が「!」である場合、 それ以降の文字列をコマンドと見なして実行し、そのコマンドの出力を XOAUTH2 で用いるアクセストークンと見なします。

なお環境変数 GFARM_CONFIG_FILE で指定されたファイル、 あるいはもし環境変数が設定されていない場合には ホームディレクトリの .gfarm2rc ファイル中の sasl_password ディレクティブで、 JWT の内容を直に設定することも可能です。 この場合、他のユーザーに読みとられないように、 chmod(1) コマンドを用いてファイルのモードを 0600 ないし 0400 に 設定してください。


SEE ALSO

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