この認証方法は、RADIUSをパスワード検証として使用するという点を除いてpassword
と似た動作をします。
RADIUSはユーザ名/パスワードの組のみを検証するために使用されます。
よってユーザはRADIUSが認証に使用される以前にデータベースにすでに存在していなければいけません。
RADIUS認証を使用する場合に、設定されたRADIUSサーバにアクセスリクエストメッセージが送信されます。
このリクエストはAuthenticate Only
の形式になり、ユーザ名
, (暗号化された)パスワード
、NAS Identifier
を含んでいます。
リクエストはサーバと共有している秘密を用いて暗号化されます。
RADIUSサーバは、このリクエストに対してAccess Accept
もしくはAccess Reject
を返します。
RADIUSアカウントのサポートはありません。
複数のRADIUSサーバを指定することができ、その場合には各々が順に試行されます。 サーバから負の応答があると、認証は失敗します。 サーバから応答がない場合は、リスト内の次のサーバが試されます。 複数のサーバを指定するには、サーバ名をカンマで区切り、リストを二重引用符で囲みます。 複数のサーバを指定した場合は、別のRADIUSオプションをカンマ区切りのリストとして指定して、各サーバの値を個別に指定することもできます。 オプションは単一の値としても指定でき、その場合にはこの値がすべてのサーバに対して適用されます。
RADIUSのために次の設定オプションがサポートされています。
radiusservers
接続するRADIUSサーバのDNS名称もしくはIPアドレス。 このパラメータは必須です。
radiussecrets
RADIUSサーバと安全なやり取りに使用される共有の秘密データ。 これはPostgreSQLとRADIUSサーバにおいて厳密に同じ値にする必要があります。 少なくとも16文字以上の文字列が推奨されます。 このパラメータは必須です。
使用されている暗号化ベクターはPostgreSQLがOpenSSLをサポートするよう構築している場合にのみ暗号論的に強力です。 他の場合にはRADIUSサーバへの伝送は難読化されているだけで安全ではなく、必要ならば外部のセキュリティ方法を適用すべきです。
radiusports
接続するRADIUSサーバのポート番号。
もしポート番号が指定されていない場合は、デフォルトのRADIUSポートである1812
が使用されます。
radiusidentifiers
RADIUSリクエスト内でNAS Identifier
として使用される文字列。
このパラメータは、例えばユーザがどのデータベースクラスタに接続しようとしているかを識別するために使用できます。
これはRADIUSサーバにおいてポリシーを一致させるのに便利です。
もし識別子が指定されていない場合は、デフォルトのpostgresql
が使用されます。
RADIUSパラメータ値にカンマまたは空白を含める必要がある場合は、値を二重引用符で囲むことで実行できますが、二重引用符の2つのレイヤーが必要になるため面倒なことになります。 RADIUSシークレット文字列に空白を入れる例を次に示します。
host ... radius radiusservers="server1,server2" radiussecrets="""secret one"",""secret two"""