14.4. シングルサインオンのための LDAP と Kerberos の設定

シングルサインオンにより、ユーザーはパスワードを再入力する必要なく、ユーザーポータルまたは管理ポータルにログインすることができます。認証情報は Kerberos サーバーから取得します。管理ポータルとユーザーポータルにシングルサインオンを設定するには、拡張機能を 2 つ (ovirt-engine-extension-aaa-misc および ovirt-engine-extension-aaa-ldap) と、Apache モジュールを 1 つ (mod_auth_kerb) 設定する必要があります。Keberos を必要としないシングルサインオンを設定することは可能ですが、本ガイドの対象範囲外となっています。

注記

ユーザーポータルへのシングルサインオンが有効になっている場合は、仮想マシンへのシングルサインオンは使用できません。ユーザーポータルへのシングルサインオンが有効な状態では、ユーザーポータルによるパスワードの確認が必要ないため、このパスワードが渡されず、仮想マシンにサインインできません。
この例は、以下を前提としています。
  • 既存のキー配布センター (KDC) サーバーは Kerberos 5 の MIT バージョンを使用すること。
  • KDC サーバーの管理者権限があること。
  • Red Hat Virtualization Manager およびユーザーのマシンに Kerberos クライアントがインストール済みであること。
  • Kerberos のサービスプリンシパルおよび keytab ファイルの作成に kadmin ユーティリティーが使用されること。
この手順には以下のコンポーネントが必要となります。

KDC サーバー

  • Red Hat Virtualization Manager 上の Apache サービス用のサービスプリンシパルと keytab ファイルを作成します。

Red Hat Virtualization Manager

  • 認証および承認拡張機能のパッケージと Apache Kerberos 認証モジュールをインストールします。
  • 拡張ファイルを設定します。

手順14.4 Apache サービス用の Kerberos の設定

  1. KDC サーバーで、kadmin ユーティリティーを使用して Red Hat Virtualization Manager 上の Apache サービス用のサービスプリンシパルを作成します。サービスプリンシパルとは、Apache サービス用の KDC に対するリファレンス ID です。
    # kadmin
    kadmin> addprinc -randkey HTTP/fqdn-of-rhevm@REALM.COM
  2. Apache サービス用に keytab ファイルを作成します。keytab ファイルが共有秘密鍵を保管します。
    kadmin> ktadd -k /tmp/http.keytab HTTP/fqdn-of-rhevm@REALM.COM
    kadmin> quit
  3. KDC サーバーから Red Hat Virtualization Manager に keytab ファイルをコピーします。
    # scp /tmp/http.keytab root@rhevm.example.com:/etc/httpd

手順14.5 ユーザーポータルまたは管理ポータルへのシングルサインオンの設定

  1. Red Hat Virtualization Manager で、keytab の所有権とパーミッションを適切に設定します。
    # chown apache /etc/httpd/http.keytab
    # chmod 400 /etc/httpd/http.keytab
  2. 認証拡張機能のパッケージ、LDAP 拡張機能のパッケージ、および mod_auth_kerb 認証モジュールをインストールします。
    # yum install ovirt-engine-extension-aaa-misc ovirt-engine-extension-aaa-ldap mod_auth_kerb
  3. SSO 設定テンプレートファイルを /etc/ovirt-engine ディレクトリーにコピーします。テンプレートファイルは、Active Directory 用 (ad-sso) およびその他のディレクトリータイプ用 (simple-sso) に提供されています。以下の例では、シンプル SSO 設定テンプレートを使用しています。
    # cp -r /usr/share/ovirt-engine-extension-aaa-ldap/examples/simple-sso/. /etc/ovirt-engine
  4. Apache が SSO 設定ファイルを使用するために、/etc/httpd/conf.d ディレクトリーのシンボリックリンクを作成します。
    # ln -s /etc/ovirt-engine/aaa/ovirt-sso.conf /etc/httpd/conf.d
  5. Apache が Kerberos を認証に使用するように、認証メソッドファイルを編集します。
    # vi /etc/ovirt-engine/aaa/ovirt-sso.conf

    例14.5 認証メソッドファイルの例

    <LocationMatch ^(/ovirt-engine/(webadmin|userportal|api)|/api)>
        RewriteEngine on
        RewriteCond %{LA-U:REMOTE_USER} ^(.*)$
        RewriteRule ^(.*)$ - [L,P,E=REMOTE_USER:%1]
        RequestHeader set X-Remote-User %{REMOTE_USER}s
    
        AuthType Kerberos
        AuthName "Kerberos Login"
        Krb5Keytab /etc/httpd/http.keytab
        KrbAuthRealms REALM.COM
        Require valid-user
    </LocationMatch>
  6. 管理ポータルおよびユーザーポータルのログインページで表示されるプロファイル名と一致するように設定ファイルの名前を変更します。
    # mv /etc/ovirt-engine/aaa/profile1.properties /etc/ovirt-engine/aaa/example.properties
    # mv /etc/ovirt-engine/extensions.d/profile1-authn.properties /etc/ovirt-engine/extensions.d/example-authn.properties
    # mv /etc/ovirt-engine/extensions.d/profile1-authz.properties /etc/ovirt-engine/extensions.d/example-authz.properties
  7. LDAP プロパティー設定ファイルを編集して、LDAP サーバーのタイプの箇所をコメント解除し、ドメインとパスワードのフィールドを更新します。
    #  vi /etc/ovirt-engine/aaa/example.properties

    例14.6 プロファイル例: LDAP サーバーのセクション

    # Select one
    include = <openldap.properties>
    #include = <389ds.properties>
    #include = <rhds.properties>
    #include = <ipa.properties>
    #include = <iplanet.properties>
    #include = <rfc2307-389ds.properties>
    #include = <rfc2307-rhds.properties>
    #include = <rfc2307-openldap.properties>
    #include = <rfc2307-edir.properties>
    #include = <rfc2307-generic.properties>
    
    # Server
    #
    vars.server = ldap1.company.com
    
    # Search user and its password.
    #
    vars.user = uid=search,cn=users,cn=accounts,dc=company,dc=com
    vars.password = 123456
    
    pool.default.serverset.single.server = ${global:vars.server}
    pool.default.auth.simple.bindDN = ${global:vars.user}
    pool.default.auth.simple.password = ${global:vars.password}
    TLS または SSL プロトコルを使用して LDAP サーバーと対話するには、LDAP サーバーのルート CA 証明書を取得し、その証明書を使用して公開鍵のキーストアファイルを作成します。以下の行のコメント解除して、公開鍵のキーストアファイルへの完全パスとそのファイルにアクセスするためのパスワードを指定します。

    注記

    公開鍵のキーストアファイルについての詳しい情報は、「Manager と LDAP サーバー間の SSL または TLS 接続の設定」を参照してください。

    例14.7 プロファイル例: キーストアのセクション

    # Create keystore, import certificate chain and uncomment
    # if using ssl/tls.
    pool.default.ssl.startTLS = true
    pool.default.ssl.truststore.file = /full/path/to/myrootca.jks
    pool.default.ssl.truststore.password = password
  8. 認証設定ファイルを確認します。プロファイル名は、管理ポータルおよびユーザーポータルのログインページでユーザーに表示されるプロファイル名は、ovirt.engine.aaa.authn.profile.name で定義されます。設定プロファイルの場所は、LDAP 設定ファイルの場所と一致する必要があります。全フィールドをデフォルトのままにすることも可能です。
    # vi /etc/ovirt-engine/extensions.d/example-http-authn.properties

    例14.8 認証設定ファイルの例

    ovirt.engine.extension.name = example-http-authn
    ovirt.engine.extension.bindings.method = jbossmodule
    ovirt.engine.extension.binding.jbossmodule.module = org.ovirt.engine-extensions.aaa.misc
    ovirt.engine.extension.binding.jbossmodule.class = org.ovirt.engineextensions.aaa.ldap.AuthnExtension
    ovirt.engine.extension.provides = org.ovirt.engine.api.extensions.aaa.Authn
    ovirt.engine.aaa.authn.profile.name = example-http
    ovirt.engine.aaa.authn.authz.plugin = example-authz
    ovirt.engine.aaa.authn.mapping.plugin = example-http-mapping
    config.artifact.name = HEADER
    config.artifact.arg = X-Remote-User
  9. 承認設定ファイルを確認します。設定プロファイルの場所は、LDAP 設定ファイルの場所と一致する必要があります。
    #  vi /etc/ovirt-engine/extensions.d/example-authz.properties

    例14.9 承認設定ファイルの例

    ovirt.engine.extension.name = example-authz
    ovirt.engine.extension.bindings.method = jbossmodule
    ovirt.engine.extension.binding.jbossmodule.module = org.ovirt.engine-extensions.aaa.ldap
    ovirt.engine.extension.binding.jbossmodule.class = org.ovirt.engineextensions.aaa.ldap.AuthzExtension
    ovirt.engine.extension.provides = org.ovirt.engine.api.extensions.aaa.Authz
    config.profile.file.1 = ../aaa/example.properties
  10. 設定プロファイルの所有権とパーミッションを適切に設定します。
    # chown ovirt:ovirt /etc/ovirt-engine/aaa/example.properties
    # chmod 600 /etc/ovirt-engine/aaa/example.properties
  11. Apache サービスと engine サービスを再起動します。
    # service httpd restart
    # service ovirt-engine restart