7.4. Ansible을 사용하여 스마트 카드 인증을 위해 IdM 클라이언트 구성

IdM 사용자가 스마트 카드로 인증할 수 있도록 ansible-freeipa ipasmartcard_client 모듈을 사용하여 특정 IdM(Identity Management) 클라이언트를 구성하려면 다음 절차를 따르십시오. 다음 절차를 실행하여 IdM에 액세스하는 데 다음을 사용하는 IdM 사용자의 스마트 카드 인증을 활성화합니다.

참고

IdM 웹 UI로 인증하는 데는 이 절차가 필요하지 않습니다. IdM 웹 UI에 인증하려면 두 개의 호스트가 필요합니다. 이 호스트 중 어느 것도 IdM 클라이언트여야 합니다.

  • 브라우저가 실행 중인 시스템입니다. 시스템이 IdM 도메인 외부에 있을 수 있습니다.
  • httpd 가 실행 중인 IdM 서버입니다.

사전 요구 사항

  • Ansible을 사용하여 스마트 카드 인증을 위해 IdM 서버를 구성하는 데 설명된 대로 IdM 서버는 스마트 카드 인증을 위해 구성되어 있습니다.
  • IdM 서버와 IdM 클라이언트에 대한 루트 액세스 권한이 있습니다.
  • 루트 CA 인증서, IdM CA 인증서 및 모든 중간 CA 인증서가 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.

절차

  1. CA 인증서가 DER 와 같은 다른 형식의 파일에 저장된 경우 PEM 형식으로 변환합니다.

    # openssl x509 -in <filename>.der -inform DER -out <filename>.pem -outform PEM

    IdM CA 인증서는 PEM 형식이며 /etc/ipa/ca.crt 파일에 있습니다.

  2. 필요한 경우 openssl x509 유틸리티를 사용하여 PEM 형식의 파일 내용을 보고 IssuerSubject 값이 올바른지 확인합니다.

    # openssl x509 -noout -text -in root-ca.pem | more
  3. Ansible 제어 노드에서 ~/MyPlaybook/ 디렉터리로 이동합니다.

    $ cd ~/MyPlaybooks/
  4. CA 인증서 전용 하위 디렉터리를 생성합니다.

    $ mkdir SmartCard/
  5. 편의를 위해 필요한 모든 인증서를 ~/MyPlaybook/SmartCard/ 디렉터리에 복사합니다. 예를 들면 다음과 같습니다.

    # cp /tmp/root-ca.pem ~/MyPlaybooks/SmartCard/
    # cp /tmp/intermediate-ca.pem ~/MyPlaybooks/SmartCard/
    # cp /etc/ipa/ca.crt ~/MyPlaybooks/SmartCard/ipa-ca.crt
  6. Ansible 인벤토리 파일에서 다음을 지정합니다.

    • 스마트 카드 인증을 위해 구성할 IdM 클라이언트입니다.
    • IdM 관리자 암호입니다.
    • 다음 순서로 CA 인증서의 경로입니다.

      • 루트 CA 인증서 파일
      • 중간 CA 인증서 파일
      • IdM CA 인증서 파일

    파일은 다음과 같습니다.

    [ipaclients]
    ipaclient1.example.com
    ipaclient2.example.com
    
    [ipaclients:vars]
    ipaadmin_password=SomeADMINpassword
    ipasmartcard_client_ca_certs=/home/<user_name>/MyPlaybooks/SmartCard/root-ca.pem,/home/<user_name>/MyPlaybooks/SmartCard/intermediate-ca.pem,/home/<user_name>/MyPlaybooks/SmartCard/ipa-ca.crt
  7. 다음 콘텐츠를 사용하여 install-smartcard-clients.yml 플레이북을 생성합니다.

    ---
    - name: Playbook to set up smart card authentication for an IdM client
      hosts: ipaclients
      become: true
    
      roles:
      - role: ipasmartcard_client
        state: present
  8. 파일을 저장합니다.
  9. Ansible 플레이북을 실행합니다. Playbook 및 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i inventory install-smartcard-clients.yml

    ipasmartcard_client Ansible 역할은 다음 작업을 수행합니다.

    • 스마트 카드 데몬을 구성합니다.
    • 시스템 전체 신뢰 저장소를 설정합니다.
    • 사용자가 사용자 이름 및 암호 또는 스마트 카드로 인증할 수 있도록 SSSD(System Security Services Daemon)를 구성합니다. 스마트 카드 인증에 대한 SSSD 프로필 옵션에 대한 자세한 내용은 RHEL의 스마트 카드 인증 옵션을 참조하십시오.

인벤토리 파일의 ipaclients 섹션에 나열된 클라이언트가 스마트 카드 인증을 위해 구성됩니다.

참고

--mkhomedir 옵션을 사용하여 IdM 클라이언트를 설치한 경우 원격 사용자가 홈 디렉터리에 로그인할 수 있습니다. 그렇지 않으면 기본 로그인 위치는 디렉터리 구조의 루트입니다. /.

추가 리소스

  • /usr/share/doc/ansible-freeipa/playbooks/ 디렉터리에서 ipasmartcard_server 역할을 사용하는 샘플 플레이북