14.4. 단일 사용 승인(SSO)을 위해 LDAP 및 Kerberos 설정

단일 사용 승인(single sign-on)을 사용하면 암호를 다시 입력할 필요 없이 사용자 포털 또는 관리 포털에 로그인할 수 있습니다. 인증 자격은 Kerberos 서버에서 받습니다. 관리 포털 및 사용자 포털에 대해 단일 사용 승인을 설정하려면 ovirt-engine-extension-aaa-miscovirt-engine-extension-aaa-ldap라는 두 개의 확장파일과 mod_auth_kerb라는 한 개의 Apache 모듈을 설정해야 합니다. Kerberos 없이 SSO 설정이 가능하지만 이 문서에서는 다루지 않습니다.

참고

사용자 포털에 단일 사용 승인이 활성화되어 있을 경우 가상 머신으로의 단일 사용 승인은 사용할 수 없게 됩니다. 사용자 포털로의 단일 사용 승인이 활성화되어 있으면 사용자 포털에서는 암호를 확인할 필요가 없기 때문에 암호는 가상 머신에 사용 승인하도록 위임될 수 없습니다.
예시에서는 다음을 전제로 합니다:
  • 기존 KDC (Key Distribution Center) 서버는 Kerberos 5의 MIT 버전을 사용합니다.
  • KDC 서버의 관리자 권한이 있어야 합니다.
  • Red Hat Virtualization Manager 및 사용자 시스템에 Kerberos 클라이언트가 설치되어 있어야 합니다.
  • kadmin 유틸리티를 사용하여 Kerberos 서비스 사용자 및 keytab 파일을 생성합니다.
이는 다음과 같은 요소로 구성되어 있어야 합니다:

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. 사용자 포털 또는 관리 포털에 단일 사용 승인 (SSO) 설정

  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. SSO 설정 파일을 사용하기 위해 Apache의 /etc/httpd/conf.d 디렉토리에 대한 심볼릭 링크를 생성합니다:
    # ln -s /etc/ovirt-engine/aaa/ovirt-sso.conf /etc/httpd/conf.d
  5. Kerberos 인증을 사용하기 위해 Apache의 인증 방식 파일을 편집합니다:
    # 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}
    LDAP 서버와 통신하는 TLS 또는 SSL 프로토콜을 사용하려면 LDAP 서버의 root CA 인증서를 취득하고 이를 사용하여 공개 keystore 파일을 생성합니다. 다음 행을 주석 해제 처리하고 공개 keystore 파일로의 완전 경로 및 파일에 액세스하기 위한 암호를 지정합니다.

    참고

    공개 keystore 생성에 대한 보다 자세한 내용은 D.2절. “Manager 및 LDAP 서버 간의 SSL 또는 TLS 연결 설정”에서 참조하십시오.

    예 14.7. 프로파일 예: keystore 부분

    # 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