Menu Close

Red Hat Training

A Red Hat training course is available for RHEL 8

70.5. Ansible을 사용하여 손상된 경우 IdM 서비스 자격 증명 모음 시크릿 변경

이 섹션에서는 IdM(Identity Management) 관리자가 서비스 인스턴스가 손상된 경우 Ansible 플레이북을 다시 사용하여 서비스 자격 증명 모음에 저장된 시크릿을 변경할 수 있는 방법을 보여줍니다. 다음 예제의 시나리오에서는 webserver3.idm.example.com 에서 검색된 시크릿이 손상되었지만 시크릿을 저장하는 비대칭 자격 증명 모음의 키가 손상되었다고 가정합니다. 이 예제에서 관리자는 비대칭 자격 증명 모음에 비밀을 저장하고 IdM 호스트에 비대칭 자격 증명 모음에서 시크릿 을 검색할 때 사용하는 Ansible 플레이북을 재사용합니다. 절차 시작 시 IdM 관리자는 비대칭 자격 증명 모음에 새 시크릿을 사용하여 새 PEM 파일을 저장하고, 에서 손상된 웹 서버 webserver3.idm.example.com 에 새 시크릿을 검색하지 않도록 인벤토리 파일을 조정한 다음 두 절차를 다시 실행합니다.

사전 요구 사항

  • Ansible 컨트롤러에 ansible-freeipa 패키지를 설치했습니다. 이는 절차의 단계를 실행하는 호스트입니다.
  • IdM 관리자 암호를 알고 있습니다.
  • 서비스 시크릿 을 저장할 비대칭 자격 증명 모음을 생성했습니다.
  • 손상된 이전 키를 교체하기 위해 IdM 호스트에서 실행 중인 웹 서비스에 대한 새 httpd 키를 생성했습니다.
  • httpd 키는 Ansible 컨트롤러에 로컬로 저장됩니다(예: /usr/share/doc/ansible-freeipa/playbooks/vault/private-key-to-an-externally-signed-certificate.pem ).

절차

  1. /usr/share/doc/ansible-freeipa/playbooks/vault 디렉터리로 이동합니다.

    $ cd /usr/share/doc/ansible-freeipa/playbooks/vault
  2. 인벤토리 파일을 열고 다음 호스트가 올바르게 정의되었는지 확인합니다.

    • [ipaserver] 섹션의 IdM 서버.
    • [webservers] 섹션에서 시크릿을 검색할 호스트입니다. 예를 들어 webserver1.idm.example.com 및 webserver2.idm.example.com 에 대한 시크릿을 검색하도록 Ansible에 지시하려면 다음을 입력합니다.

      [ipaserver]
      server.idm.example.com
      
      [webservers]
      webserver1.idm.example.com
      webserver2.idm.example.com
    중요

    현재 예제 webserver3.idm.example.com 에 손상된 웹 서버가 포함되어 있지 않은지 확인합니다.

  3. 편집을 위해 data-archive-in-asymmetric-vault-copy.yml 파일을 엽니다.
  4. ipavault 작업 섹션에서 다음 변수를 설정하여 파일을 수정합니다.

    • ipaadmin_password 변수를 IdM 관리자 암호로 설정합니다.
    • name 변수를 자격 증명 모음의 이름으로 설정합니다(예: secret_vault ).
    • 서비스 변수를 자격 증명 모음의 서비스 소유자(예: HTTP/webserver.idm.example.com )로 설정합니다.
    • 변수 의 를 "{{ lookup('file'), 'new-private-key-to-an-externally-signed-certificate.pem') | b64encode }}" 로 설정합니다. 이렇게 하면 Ansible이 IdM 서버가 아닌 Ansible 컨트롤러의 작업 디렉터리에서 개인 키를 사용하여 파일을 검색할 수 있습니다.
    • action 변수를 member 로 설정합니다.

      이 파일은 현재 예제에 맞게 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Tests
      hosts: ipaserver
      become: true
      gather_facts: false
    
      tasks:
      - ipavault:
          ipaadmin_password: Secret123
          name: secret_vault
          service: HTTP/webserver.idm.example.com
          in: "{{ lookup('file', 'new-private-key-to-an-externally-signed-certificate.pem') | b64encode }}"
          action: member
  5. 파일을 저장합니다.
  6. 플레이북을 실행합니다.

    $ ansible-playbook -v -i inventory.file data-archive-in-asymmetric-vault-copy.yml
  7. 편집을 위해 retrieve-data-asymmetric-vault-copy.yml 파일을 엽니다.
  8. ipavault 작업 섹션에서 다음 변수를 설정하여 파일을 수정합니다.

    • ipaadmin_password 변수를 IdM 관리자 암호로 설정합니다.
    • name 변수를 자격 증명 모음의 이름으로 설정합니다(예: secret_vault ).
    • 서비스 변수를 자격 증명 모음의 서비스 소유자(예: HTTP/webserver1.idm.example.com )로 설정합니다.
    • private_key_file 변수를 서비스 자격 증명 모음 시크릿을 검색하는 데 사용되는 개인 키의 위치로 설정합니다.
    • out 변수를 new-private-key-to-an-externally-signed-certificate.pem 시크릿(예: 현재 작업 디렉터리)을 검색하려는 IdM 서버의 위치로 설정합니다.
    • action 변수를 member 로 설정합니다.

      이 파일은 현재 예제에 맞게 수정된 Ansible 플레이북 파일입니다.

    ---
    - name: Retrieve data from vault
      hosts: ipaserver
      become: no
      gather_facts: false
    
      tasks:
      - name: Retrieve data from the service vault
        ipavault:
          ipaadmin_password: Secret123
          name: secret_vault
          service: HTTP/webserver1.idm.example.com
          vault_type: asymmetric
          private_key: "{{ lookup('file', 'service-private.pem') | b64encode }}"
          out: new-private-key-to-an-externally-signed-certificate.pem
          state: retrieved
  9. IdM 서버에서 Ansible 컨트롤러에 데이터 파일을 검색하는 섹션을 플레이북에 추가합니다.

    ---
    - name: Retrieve data from vault
      hosts: ipaserver
      become: yes
      gather_facts: false
      tasks:
    [...]
      - name: Retrieve data file
        fetch:
          src: new-private-key-to-an-externally-signed-certificate.pem
          dest: ./
          flat: yes
          mode: 0600
  10. 의 Ansible 컨트롤러에서 인벤토리 파일의 webservers 섹션에 나열된 webservers로 검색된 new-private-key-to-an-externally-signed-certificate.pem 파일을 전송하는 플레이북에 섹션을 추가합니다.

    ---
    - name: Send data file to webservers
      become: yes
      gather_facts: no
      hosts: webservers
      tasks:
      - name: Send data to webservers
        copy:
          src: new-private-key-to-an-externally-signed-certificate.pem
          dest: /etc/pki/tls/private/httpd.key
          mode: 0444
  11. 파일을 저장합니다.
  12. 플레이북을 실행합니다.

    $ ansible-playbook -v -i inventory.file retrieve-data-asymmetric-vault-copy.yml

추가 리소스

  • Ansible을 사용하여 IdM 자격 증명 모음 및 서비스 시크릿 및 플레이북 변수에 대한 자세한 내용은 /usr/share/doc/ansible-freeipa/ 디렉터리에 사용 가능한 README-vault.md Markdown 파일과 /usr/ share/doc/ansible-freeipa/playbooks/vault/ 디렉터리에 있는 샘플 플레이북을 참조하십시오.