2.6.2 PAM認証
OSのPAMの認証機能を使用すると,外部ユーザのユーザ名とパスワードでユーザ認証を行うことができます。このユーザ認証方式をPAM認証といいます。
なお,ここでいう外部ユーザとは,OSユーザや,外部の認証サーバ(LDAPサーバ,ADドメインサーバなど)のユーザを意味しています。
PAM認証の概要を次の図に示します。
- [説明]
-
HADBサーバへの接続要求時,外部ユーザ名とそのパスワードでユーザ認証を行います。例えば,OSユーザ名とそのパスワードでユーザ認証を行えます。また,LDAPサーバを使用している場合は,LDAPユーザ名とそのパスワードでユーザ認証を行えます。
以下の番号は,図中の丸付き数字の番号と対応しています。
-
HADBサーバへの接続要求時に指定した認可識別子(外部ユーザ名と同じ名称)が,HADBサーバに登録されているかどうかをHADBサーバが確認します。指定した認可識別子がHADBサーバに登録されていない場合(認可識別子の指定が正しくない場合),HADBへの接続要求がエラーになります。
- メモ
-
PAM認証を使用する場合,外部ユーザ名と同じ名称の認可識別子のHADBユーザを事前に作成しておく必要があります。
-
指定した認可識別子がHADBサーバに登録されている場合(認可識別子の指定が正しい場合),HADBサーバはOSのPAMのモジュールに対して,認可識別子とパスワードを使用したユーザ認証を要求します。
-
認可識別子がOSユーザ名と同じ名称の場合は,OSのパスワードファイル(/etc/passwdファイル,/etc/shadowファイルなど)を使用してユーザ認証を行います。
-
認可識別子が外部の認証サーバ(LDAPサーバ,ADドメインサーバなど)のユーザ名と同じ名称の場合は,OSのSSSDのサービスを使用して,外部の認証サーバでユーザ認証を行います。
-
PAMのモジュールを使用したユーザ認証に成功し,かつ指定した認可識別子のHADBユーザがCONNECT権限を持っている場合は,HADBサーバに接続できます。
CONNECT権限については,「2.7.2 ユーザ権限」の「(2) CONNECT権限」で説明します。
-
PAMのモジュールを使用したユーザ認証に失敗した場合,または指定した認可識別子のHADBユーザがCONNECT権限を持っていない場合は,HADBサーバへの接続要求がエラーになります。
-
このようにPAM認証では,外部の認証基盤を使用してユーザ認証を行います。そのため,外部ユーザのユーザ名とパスワード(OSユーザ名とパスワードなど)でHADBサーバに接続できるため,ユーザ管理の手間が軽減されます。ただし,PAM認証で使用する認証基盤にセキュリティ上の脆弱性があると,情報の漏えいや,HADBサーバを不正利用されるおそれがあります。そのため,使用する認証基盤のセキュリティ強度を考慮した上で,PAM認証の使用を検討してください。
PAM認証の導入方法については,「11.7 PAM認証の導入」を参照してください。PAMおよびSSSDの詳細や,基本的な設定方法については,OSのマニュアルを参照してください。
- メモ
-
PAMで使用する認証方法は,PAM設定ファイルに指定するPAMのモジュールによって決まります。HADBでは次のPAMのモジュールを使用します。
-
pam_unix
OSユーザ名とパスワードを使用してユーザ認証を行います。
-
pam_sss
OSのSSSDのサービスを使用して,LDAPサーバやADドメインサーバなどの外部の認証サーバを使用してユーザ認証を行います。
-
- ■外部ユーザ名に関する留意事項
-
PAM認証を使用する場合,外部ユーザ名と同じ名称の認可識別子のHADBユーザを作成する必要があります。例えば,OSユーザ名がOSUSERの場合,認可識別子をOSUSERとするHADBユーザを作成する必要があります。そのため,OSユーザ名が,認可識別子の名称規則に従っている必要があります。例えば,認可識別子で使用できない文字がOSユーザ名に含まれている場合,HADBユーザを作成することができないため,PAM認証を行うことができません。
認可識別子の名称規則については,マニュアルHADB SQLリファレンスの名前の指定の名前に使用できる文字の規則を参照してください。
- ■外部ユーザのパスワードに関する留意事項
-
PAM認証を使用する場合,外部ユーザ名に対応するパスワードを使用してユーザ認証を行います。例えば,PAM認証でOSユーザ名を使用する場合,パスワードはOSにログインする際のパスワードを使用します。ただし,HADBで扱うことができるパスワードの長さは1~255文字(1~255バイト)のため,OSユーザのパスワードも1~255文字(1~255バイト)にする必要があります。