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


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

사전 요구 사항

  • 다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.

    • Ansible 버전 2.14 이상을 사용하고 있습니다.
    • Ansible 컨트롤러에 ansible-freeipa 패키지가 설치되어 있습니다.
    • 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
    • 이 예제에서는 secret.yml Ansible 자격 증명 모음이 ipaadmin_password 를 저장하는 것으로 가정합니다.
  • ansible-freeipa 모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
  • 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
      gather_facts: false
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - ipavault:
          ipaadmin_password: "{{ ipaadmin_password }}"
          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 --vault-password-file=password_file -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
    
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Retrieve data from the service vault
        ipavault:
          ipaadmin_password: "{{ ipaadmin_password }}"
          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: true
      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: true
      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 --vault-password-file=password_file -v -i inventory.file retrieve-data-asymmetric-vault-copy.yml
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.