26.6. Ansible 플레이북을 사용하여 IdM 사용자, 그룹, 호스트 또는 호스트 그룹을 사용하여 서비스의 키탭을 생성할 수 있습니다.

keytab은 Kerberos 주체와 암호화된 키의 쌍을 포함하는 파일입니다. 키탭 파일은 일반적으로 일반 텍스트 파일에 저장된 암호나 사람의 상호 작용 없이도 Kerberos를 사용하여 스크립트를 자동으로 인증할 수 있도록 하는 데 사용됩니다. 그런 다음 스크립트가 가져온 자격 증명을 사용하여 원격 시스템에 저장된 파일에 액세스할 수 있습니다.

IdM(Identity Management) 관리자는 다른 사용자가 IdM에서 실행되는 서비스에 대한 키탭을 검색하거나 만들 수 있습니다. 특정 사용자와 사용자 그룹이 키탭을 만들 수 있도록 허용하면 IdM 관리자 암호를 공유하지 않고 서비스 관리를 위임할 수 있습니다. 이 위임은 보다 세부적인 시스템 관리를 제공합니다.

특정 IdM 사용자, 사용자 그룹, 호스트 및 호스트 그룹이 IdM 클라이언트에서 실행되는 HTTP 서비스에 대한 키탭을 생성하도록 하려면 다음 절차를 따르십시오. 특히 user01 IdM 사용자가 client. idm.example.com 이라는 IdM 클라이언트에서 실행되는 HTTP 서비스에 대한 키탭을 생성하는 방법을 설명합니다.

사전 요구 사항

  • IdM 관리자 암호를 알고 있습니다.
  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • HTTP 서비스를 IdM에 등록했습니다.
  • HTTP 서비스를 호스팅하는 시스템은 IdM 클라이언트입니다.
  • 키탭을 생성할 수 있도록 허용하려는 IdM 사용자 및 사용자 그룹은 IdM에 있습니다.
  • 키탭을 생성할 수 있도록 허용하려는 IdM 호스트 및 호스트 그룹은 IdM에 있습니다.

절차

  1. 인벤토리 파일을 생성합니다(예: inventory.file:

    $ touch inventory.file
  2. inventory.file 을 열고 [ipaserver] 섹션에서 구성할 IdM 서버를 정의합니다. 예를 들어 server.idm.example.com을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.

    [ipaserver]
    server.idm.example.com
  3. /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_create_keytab-present.yml Ansible 플레이북 파일의 복사본을 만듭니다. 예를 들면 다음과 같습니다.

    $ cp /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_create_keytab-present.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_create_keytab-present-copy.yml
  4. 편집을 위해 /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_create_keytab-present-copy.yml Ansible 플레이북 파일을 엽니다.
  5. 다음을 변경하여 파일을 조정합니다.

    • ipaadmin_password 변수에 지정된 IdM 관리자 암호입니다.
    • HTTP 서비스가 실행 중인 IdM 클라이언트의 이름입니다. 현재 예제에서는 HTTP/client.idm.example.com입니다.
    • allow_create_keytab_user: 섹션에 나열된 IdM 사용자의 이름입니다. 현재 예제에서는 user01 입니다.
    • allow_create_keytab_group: 섹션에 나열된 IdM 사용자 그룹의 이름입니다.
    • allow_create_keytab_host: 섹션에 나열된 IdM 호스트의 이름입니다.
    • allow_create_keytab_hostgroup: 섹션에 나열된 IdM 호스트 그룹의 이름입니다.
    • tasks 섹션의 name 변수에서 지정한 작업의 이름입니다.

      현재 예제에 맞게 수정한 후 복사된 파일은 다음과 같습니다.

    ---
    - name: Service member allow_create_keytab present
      hosts: ipaserver
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Service HTTP/client.idm.example.com members allow_create_keytab present for user01
        ipaservice:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: HTTP/client.idm.example.com
          allow_create_keytab_user:
          - user01
          action: member
  6. 파일을 저장합니다.
  7. Ansible 플레이북을 실행합니다. Playbook 파일, secret.yml 파일을 보호하는 암호를 저장하는 파일, 인벤토리 파일을 지정합니다.

    $ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_create_keytab-present-copy.yml

검증 단계

  1. 특정 HTTP 서비스에 대한 keytab을 생성할 권한이 있는 IdM 사용자로 IdM 서버에 SSH 연결을 수행합니다.

    $ ssh user01@server.idm.example.com
    Password:
  2. ipa-getkeytab 명령을 사용하여 HTTP 서비스에 대한 새 keytab을 생성합니다.

    $ ipa-getkeytab -s server.idm.example.com -p HTTP/client.idm.example.com -k /etc/httpd/conf/krb5.keytab

    s 옵션은 키 탭을 생성할 KDC(키 배포 센터) 서버를 지정합니다.

    p 옵션은 생성하려는 주체를 지정합니다.

    k 옵션은 새 키를 추가할 키탭 파일을 지정합니다. 파일이 없는 경우 생성됩니다.

명령이 오류가 발생하지 않으면 user01HTTP/client.idm.example.com 의 키탭을 성공적으로 생성했습니다.