SSPIは、シングルサインオンで安全な認証を行うためのWindowsの技術です。
PostgreSQLは、negotiate
モードにおいてSSPIを使用します。
これは、可能な場合はKerberosを使用し、他の場合については自動的にNTLMを使用することを意味しています。
SSPIとGSSAPIは、サーバ、クライアントとして相互運用します。例えば、SSPIクライアントはGSSAPIサーバに対して認証できます。
WindowsクライアントとサーバではSSPIを、WindowsでないプラットフォームではGSSAPIを使うことを勧めます。
Kerberos認証を使用しているとき、 SSPIは、GSSAPIと同じように動作します。 詳細は21.6を参照してください。
次の設定オプションはSSPIのためにサポートされています。
include_realm
0に設定されている場合は、認証されたユーザプリンシパルからのrealm名が、ユーザ名マッピング(21.2)で渡されるシステムユーザ名から外されています。
krb_realm
も一緒に使われていない限り、これは複数realm環境で安全ではありませんので、非推奨であり、主に後方互換性のために利用できます。
include_realm
をデフォルト(1)にしたまま、プリンシパル名をPostgreSQLユーザ名に変換するためにpg_ident.conf
で明示的なマッピングを指定することをお薦めします。
compat_realm
1に設定されている場合は、(NetBIOS名としても知られている)ドメインのSAM互換名がinclude_realm
オプションのために使用されます。
これはデフォルトの動作です。
0に設定されている場合は、ケルベロスユーザプリンシパル名からの真のrealm名が使用されます。
ドメインアカウント(これはドメインメンバシステムの仮想サービスアカウントを含みます)にて実行されているサーバで、SSPIで認証されているすべてのクライアントがドメインアカウントを使用している場合を除き、このオプションを無効にしないでください。 さもなくば認証は失敗します。
upn_username
compat_realm
と共にこのオプションが有効の場合、認証にはケルベロスUPNからユーザ名が使用されます。
無効(デフォルト)である場合は、SAM互換ユーザ名が使用されます。
デフォルトでは、これらの2つのユーザ名は新しいユーザアカウントでは同じものとなります。
明示的なユーザ名が指定されない場合、libpqはSAM互換名を使用することに注意してください。 libpqもしくはlibpqを基礎としたドライバを使用する場合は、このオプションを無効のままにするか、明示的なユーザ名を接続文字列にて指定してください。
map
システムとデータベースユーザ名の間のマッピングを許可します。
詳細は21.2を参照してください。
SSPI/Kerberosプリンシパルusername@EXAMPLE.COM
(もしくは、あまり一般的ではありませんがusername/hostbased@EXAMPLE.COM
)に対しては、もしinclude_realm
が0に設定されていない限り、マッピングに使われるユーザ名はusername@EXAMPLE.COM
(もしくはusername/hostbased@EXAMPLE.COM
)です。
0に設定されている場合には、username
(もしくはusername/hostbased
)がマッピング時のシステムユーザ名です。
krb_realm
realmをユーザプリンシパル名に一致するように設定します。もしこのパラメータが設定されている場合は realmのユーザのみが受け付けられます。もしこれが設定されていない場合は、 どのようなrealmのユーザも接続可能で、ユーザ名マッピングが設定されていれば、どれでも影響を受けます。