Enabling Kerberos Authentication

Prerequisite: Kerberosの理解とセットアップ

参考:https://web.mit.edu/kerberos/

Kerberos認証を構成するには、Kerberosサーバーをセットアップし、 kinit を使用してクライアントでチケットを取得する必要があります。

注:KerberosをサポートするActiveDirectoryユーザーは、kinitを必要としません。

pgAdminのKerberos認証を有効にするには、pgAdminがサーバーモードでインストールされているシステムで config_local.py または config_system.py ( config.py ドキュメントを参照)でKerberos設定を構成する必要があります。これらの設定を config.py ファイルからコピーし、次のパラメーターの値を変更できます。

Parameter

Description

AUTHENTICATION_SOURCES

このパラメーターのデフォルト値は internal です。Kerberos認証を有効にするには、このパラメーターの値のリストに kerberos を含める必要があります。次のように値を変更できます。

  • ['kerberos']:pgAdminはKerberos認証のみを使用します。

  • ['kerberos','internal']:pgAdminは、最初にkerberosを介してユーザーを認証しようとします。その認証が失敗した場合、ログインページに戻ります。ここで、認証のための内部pgAdminユーザ資格情報を提供する必要があります。

KERBEROS_AUTO_CREATE_USER

正常に認証されたKerberosユーザーに対応するpgAdminユーザーを自動的に作成する場合は、値を True に設定します。パスワードはpgAdminデータベースに保存されないことに注意してください。

KRB_APP_HOST_NAME

pgAdminウェブサーバーのホスト名 の名前を指定します。設定されていない場合、 default_server パラメーターの値を取ることに注意してください。

HTTPサービスのkeytabファイル

  • HTTPサービスプリンシパルHTTP/<host-name>@realmの Keytab ファイルを生成し、 pgAdmin ウェブサーバーマシンにコピーします。 pgAdmin ウェブサーバーを所有するオペレーティングシステムユーザーがこのファイルの所有者であり、そのユーザーがアクセスできることを確認してください。

  • krb5.conf ファイルまたは環境変数 KRB5_KTNAME で default_keytab_name パラメーターを設定する必要があることに注意してください。設定されていない場合は、 KRB_KTNAME を config_local.py または config_system.py ファイルの Keytab ファイルの場所に明示的に設定します。

ApacheHTTPD構成

pgAdmin サーバーがApacheServerの下にある場合、 Apache HTTPD Configuration の Directory ディレクティブに次のパラメーターを追加する必要があります。

  • WSGIScriptリロードオン

  • WSGIPass承認オン

Kerberos認証を構成するためのブラウザー設定

SPNEGO 経由でKerberos認証を使用するには、クライアントマシンでブラウザー設定を構成する必要があります。

  • MozillaFirefoxの場合

    • アドレスバーに about:config と入力して、低レベルFirefox構成ページを開きます。

    • Searchテキストボックスに、次のように入力します。 network.negotiate-auth.trusted-uris

    • network.negotiate-auth.trusted-uris 設定をダブルクリックし、KerberosHTTPSPNEGOで保護されているWebサーバーのホスト名またはドメインを入力します。複数のドメインとホスト名はコンマで区切ります。

    • [OK]をクリックします。

  • GoogleChromeの場合

    • Windows:

      • コントロールパネルを開き、[インターネットオプション]ダイアログにアクセスします。

      • [セキュリティ]タブを選択します。

      • [ローカルイントラネット]ゾーンを選択し、[サイト]ボタンをクリックします。

      • 最初の2つのオプション、 他のゾーンにリストされていないすべてのローカル(イントラネット)サイトを含める および プロキシサーバーをバイパスするすべてのサイトを含める がオンになっていることを確認します。

      • Advancedをクリックし、KerberosHTTPSPNEGOで保護されているドメインの名前を一度に1つずつ、Webサイトのリストに追加します。たとえば、myhost.example.comです。[閉じる]をクリックします。

      • OKをクリックして、構成の変更を保存します。

    • LinuxまたはmacOSの場合:

      • --auth-server-whitelist パラメーターをgoogle-chromeコマンドに追加します。たとえば、LinuxプロンプトからChromeを実行するには、次のようにgoogle-chromeコマンドを実行します。

      google-chrome --auth-server-whitelist = "hostname/domain"
      

Kerberos認証を構成するためのPostgreSQLサーバー設定

  • Kerberos認証でPostgreSQLサーバーに接続するには、PostgreSQLのビルド時にGSSAPIサポートを有効にし、必要な configuration を配置する必要があります。

  • pgAdminでは、Serverダイアログで/"Kerberosauthentication/"フラグをTrueに設定して、PostgreSQLサーバーのKerberos認証を有効にする必要があります。有効にすると、pgAdminはパスワードの入力を求めず、Kerberosを使用してPostgreSQLサーバーに接続しようとします。

  • Kerberos認証を使用してpgAdminにログインし、Kerberosを使用してPostgreSQLに接続する必要があることに注意してください。

マスターパスワード

マルチユーザーモードでは、pgAdminはユーザーのログインパスワードを使用して、PostgreSQLサーバーパスワードを暗号化/復号化します。Kerberos認証では、pgAdminユーザーはパスワードを持っていないため、Kerberos認証を使用するように構成されていないサーバーのPostgreSQLサーバーパスワードを保存するための暗号化キーが必要です。これを行うには、構成パラメーターMASTER_PASSWORDを True に設定します。これにより、マスターパスワードを設定すると、パスワードの保存中に暗号化キーとして使用されます。Falseの場合、サーバーパスワードを保存できません。