ID 관리에서 자격 증명 모음 작업
IdM에 민감한 데이터 저장 및 관리
초록
Red Hat 문서에 관한 피드백 제공
문서에 대한 피드백에 감사드립니다. 어떻게 개선할 수 있는지 알려주십시오.
Jira를 통해 피드백 제출 (등록 필요)
- Jira 웹 사이트에 로그인합니다.
- 상단 탐색 모음에서 생성 을 클릭합니다.
- Summary (요약) 필드에 설명 제목을 입력합니다.
- Description (설명) 필드에 개선을 위한 제안을 입력합니다. 문서의 관련 부분에 대한 링크를 포함합니다.
- 대화 상자 하단에서 생성 을 클릭합니다.
1장. IdM의 자격 증명 모음
이 장에서는 IdM(Identity Management)의 자격 증명 모음에 대해 설명합니다. 다음과 같은 주제를 소개합니다.
1.1. 자격 증명 모음 및 이점
자격 증명 모음은 모든 중요한 데이터를 안전하게 저장하지만 한 곳에 편리하게 저장하려는 IdM(Identity Management) 사용자에게 유용한 기능입니다. 다양한 유형의 자격 증명 모음이 있으며 요구 사항에 따라 사용할 자격 증명을 선택해야 합니다.
자격 증명 모음은 시크릿을 저장, 검색, 공유 및 복구하기 위한 (IdM)의 안전한 위치입니다. 시크릿은 제한된 사용자 또는 엔티티 그룹만 액세스할 수 있는 보안 민감한 데이터(일반적으로 인증 자격 증명)입니다. 예를 들어 시크릿은 다음과 같습니다.
- 암호
- 핀
- 개인 SSH 키
자격 증명 모음은 암호 관리자와 비교됩니다. 암호 관리자와 마찬가지로 자격 증명 모음에는 일반적으로 사용자가 자격 증명 모음에 저장된 정보를 잠금 해제하고 액세스하기 위해 하나의 기본 암호를 생성하고 기억해야 합니다. 그러나 사용자는 표준 자격 증명 모음을 선택할 수도 있습니다. 표준 자격 증명 모음에서는 사용자가 자격 증명 모음에 저장된 시크릿에 액세스하기 위해 암호를 입력할 필요가 없습니다.
IdM에서 자격 증명 모음의 목적은 IdM이 아닌 외부 서비스에 인증할 수 있는 인증 자격 증명을 저장하는 것입니다.
IdM 자격 증명 모음의 기타 중요한 특성은 다음과 같습니다.
- 자격 증명 모음 소유자는 vault 소유자와 자격 증명 모음 소유자가 자격 증명 모음 멤버로 선택하는 IdM 사용자만 액세스할 수 있습니다. 또한 IdM 관리자는 자격 증명 모음에 액세스할 수 있습니다.
- 사용자가 자격 증명 모음을 생성할 수 있는 권한이 없는 경우 IdM 관리자는 자격 증명 모음을 생성하고 사용자를 소유자로 설정할 수 있습니다.
- 사용자 및 서비스는 IdM 도메인에 등록된 시스템에서 자격 증명 모음에 저장된 시크릿에 액세스할 수 있습니다.
- 하나의 자격 증명 모음에는 하나의 시크릿만 포함할 수 있습니다(예: 하나의 파일). 그러나 파일 자체는 암호, 키탭 또는 인증서와 같은 여러 시크릿을 포함할 수 있습니다.
Vault는 IdM 웹 UI가 아닌 IdM 명령행(CLI)에서만 사용할 수 있습니다.
1.2. Vault 소유자, 멤버 및 관리자
IdM(Identity Management)은 다음과 같은 자격 증명 모음 사용자 유형을 구분합니다.
- Vault 소유자
자격 증명 모음 소유자는 자격 증명 모음에 대한 기본 관리 권한이 있는 사용자 또는 서비스입니다. 예를 들어 자격 증명 모음 소유자는 자격 증명 모음의 속성을 수정하거나 새 자격 증명 모음 멤버를 추가할 수 있습니다.
각 자격 증명 모음에는 하나 이상의 소유자가 있어야 합니다. 자격 증명 모음에는 소유자가 여러 개 있을 수도 있습니다.
- Vault 멤버
- 자격 증명 모음 멤버는 다른 사용자 또는 서비스에서 생성한 자격 증명 모음에 액세스할 수 있는 사용자 또는 서비스입니다.
- Vault 관리자
Vault 관리자는 모든 자격 증명 모음에 대한 무제한 액세스 권한이 있으며 모든 자격 증명 모음 작업을 수행할 수 있습니다.
참고대칭 및 symmetric 자격 증명 모음은 암호 또는 키로 보호되며 특수 액세스 제어 규칙을 적용합니다( Vault 유형참조). 관리자는 다음 규칙을 충족해야 합니다.
- 대칭 및 symmetric 자격 증명 모음의 시크릿에 액세스합니다.
- vault 암호 또는 키를 변경하거나 재설정합니다.
자격 증명 모음 관리자는
Vault 관리자
권한이 있는 모든 사용자입니다. IdM의 RBAC(역할 기반 액세스 제어) 컨텍스트에서는 역할에 적용할 수 있는 권한 그룹입니다.- Vault 사용자
자격 증명 모음 사용자는 자격 증명 모음에 있는 컨테이너를 나타냅니다.
Vault 사용자
정보는ipa vault-show
와 같은 특정 명령의 출력에 표시됩니다.$ ipa vault-show my_vault Vault name: my_vault Type: standard Owner users: user Vault user: user
자격 증명 모음 컨테이너 및 사용자 자격 증명 모음에 대한 자세한 내용은 Vault 컨테이너를 참조하십시오.
추가 리소스
- 자격 증명 모음에 대한 자세한 내용은 표준, 대칭 및 symmetric 자격 증명 모음을 참조하십시오.
1.3. 표준, 대칭 및 symmetric 자격 증명 모음
IdM은 보안 및 액세스 제어 수준에 따라 자격 증명 모음을 다음 유형으로 분류합니다.
- 표준 자격 증명 모음
- Vault 소유자와 자격 증명 모음 멤버는 암호 또는 키를 사용하지 않고도 시크릿을 보관하고 검색할 수 있습니다.
- 대칭 자격 증명 모음
- 자격 증명 모음의 시크릿은 대칭 키로 보호됩니다. Vault 소유자와 멤버는 시크릿을 보관하고 검색할 수 있지만 자격 증명 모음 암호를 제공해야 합니다.
- Vertical 자격 증명 모음
- 자격 증명 모음의 시크릿은 symmetric 키로 보호됩니다. 사용자는 공개 키를 사용하여 시크릿을 보관하고 개인 키를 사용하여 검색합니다. Vault 멤버는 시크릿만 보관할 수 있지만 자격 증명 모음 소유자는 시크릿을 모두 보관하고 검색할 수 있습니다.
1.5. Vault 컨테이너
자격 증명 모음 컨테이너는 자격 증명 모음 컬렉션입니다. 아래 표에 는 IdM(Identity Management)에서 제공하는 기본 자격 증명 모음 컨테이너가 나열되어 있습니다.
유형 | 설명 | 목적 |
---|---|---|
사용자 컨테이너 | 사용자의 개인 컨테이너 | 특정 사용자의 사용자 자격 증명 모음 저장 |
서비스 컨테이너 | 서비스의 개인 컨테이너 | 특정 서비스에 대한 서비스 자격 증명 모음 저장 |
공유 컨테이너 | 여러 사용자 및 서비스를 위한 컨테이너 | 여러 사용자 또는 서비스에서 공유할 수 있는 자격 증명 모음 저장 |
IdM은 사용자 또는 서비스의 첫 번째 개인 자격 증명 모음을 생성할 때 각 사용자 또는 서비스에 대해 사용자 및 서비스 컨테이너를 자동으로 생성합니다. 사용자 또는 서비스가 삭제되면 IdM에서 컨테이너와 해당 콘텐츠를 제거합니다.
1.6. 기본 IdM 자격 증명 모음 명령
아래에 설명된 기본 명령을 사용하여 IdM(Identity Management) 자격 증명 모음을 관리할 수 있습니다. 아래 표에 는 해당 목적에 대한 설명이 포함된 ipa vault-*
명령 목록이 포함되어 있습니다.
ipa vault-*
명령을 실행하기 전에 IdM 도메인의 하나 이상의 서버에 KRA(키 복구 기관) 인증서 시스템 구성 요소를 설치합니다. 자세한 내용은 IdM에 키 복구 기관 설치를 참조하십시오.
명령 | 목적 |
---|---|
| IdM 자격 증명 모음 및 샘플 자격 증명 모음 명령에 대한 개념 정보를 표시합니다. |
|
특정 |
| 자격 증명 모음 멤버로 액세스할 때 자격 증명 모음 소유자를 지정해야 합니다. vault 소유자를 지정하지 않으면 IdM에서 자격 증명 모음을 찾지 못했음을 알려줍니다. [admin@server ~]$ ipa vault-show user_vault ipa: ERROR: user_vault: vault not found |
| 공유 자격 증명 모음에 액세스할 때 액세스하려는 자격 증명 모음이 공유 자격 증명 모음임을 지정해야 합니다. 그렇지 않으면 IdM에서 자격 증명 모음을 찾지 못했음을 알려줍니다. [admin@server ~]$ ipa vault-show shared_vault ipa: ERROR: shared_vault: vault not found |
1.7. IdM에서 주요 복구 기관 설치
다음 절차에 따라 특정 IdM 서버에 KRA(Key Recovery Authority) 인증 시스템(CS) 구성 요소를 설치하여 IdM(Identity Management)에서 자격 증명 모음을 활성화합니다.
사전 요구 사항
-
IdM 서버에
root
로 로그인되어 있습니다. - IdM 인증 기관이 IdM 서버에 설치되어 있습니다.
-
Directory Manager
자격 증명이 있습니다.
절차
KRA를 설치합니다.
# ipa-kra-install
숨겨진 복제본에 IdM 클러스터의 첫 번째 KRA를 설치할 수 있습니다. 그러나 추가 KRA를 설치하려면 금지되지 않은 복제본에 KRA 복제본을 설치하기 전에 숨겨진 복제본을 일시적으로 활성화해야 합니다. 그런 다음 원래 숨겨진 복제본을 다시 숨길 수 있습니다.
자격 증명 모음 서비스를 사용하고 탄력적으로 사용하려면 두 개의 IdM 서버에 KRA를 설치합니다. 여러 개의 KRA 서버를 유지 관리하면 데이터 손실이 발생하지 않습니다.
추가 리소스
- 숨겨진 복제본 데모 또는 승격을 참조하십시오.
- 숨겨진 복제본 모드를 참조하십시오.
2장. IdM 사용자 자격 증명 모음 사용: 시크릿 저장 및 검색
이 장에서는 Identity Management에서 사용자 자격 증명 모음을 사용하는 방법을 설명합니다. 특히 사용자가 IdM 자격 증명 모음에 시크릿을 저장하는 방법과 사용자가 이를 검색하는 방법을 설명합니다. 사용자는 두 개의 다른 IdM 클라이언트에서 저장 및 검색을 수행할 수 있습니다.
사전 요구 사항
- 키 복구 기관(KRA) 인증서 시스템 구성 요소가 IdM 도메인에 있는 하나 이상의 서버에 설치되어 있습니다. 자세한 내용은 IdM에 키 복구 기관 설치를 참조하십시오.
2.1. 사용자 자격 증명 모음에 시크릿 저장
중요한 정보가 있는 파일을 안전하게 저장하기 위해 하나 이상의 개인 자격 증명 모음으로 vault 컨테이너를 생성하려면 다음 절차를 따르십시오. 아래 절차에 사용된 예에서 idm_user 사용자는 표준 유형의 자격 증명 모음을 생성합니다. 표준 자격 증명 모음 유형을 사용하면 파일에 액세스할 때 idm_user 를 인증할 필요가 없습니다. idm_user 는 사용자가 로그인한 IdM 클라이언트에서 파일을 검색할 수 있습니다.
절차의 경우:
- idm_user 는 자격 증명 모음을 생성하려는 사용자입니다.
- my_vault 는 사용자의 인증서를 저장하는 데 사용되는 자격 증명 모음입니다.
-
자격 증명 모음 유형은
표준
이므로 보관된 인증서에 액세스하는 경우 사용자가 vault 암호를 제공할 필요가 없습니다. - secret.txt 는 사용자가 자격 증명 모음에 저장하려는 인증서가 포함된 파일입니다.
사전 요구 사항
- idm_user 의 암호를 알고 있습니다.
- IdM 클라이언트인 호스트에 로그인되어 있습니다.
절차
idm_user
에 대한 TGT(K Kerberos 티켓 부여 티켓)를 받으십시오.$ kinit idm_user
ipa vault-add
명령을--type standard
옵션과 함께 사용하여 표준 자격 증명 모음을 생성합니다.$ ipa vault-add my_vault --type standard ---------------------- Added vault "my_vault" ---------------------- Vault name: my_vault Type: standard Owner users: idm_user Vault user: idm_user
중요동일한 사용자가 첫 번째 사용자 자격 증명 모음을 만들어야 합니다. 사용자에 대한 첫 번째 자격 증명 모음을 생성하면 사용자의 자격 증명 모음 컨테이너도 생성됩니다. 생성 에이전트는 자격 증명 모음 컨테이너의 소유자가 됩니다.
예를 들어
admin
와 같은 다른 사용자가user1
에 대해 첫 번째 사용자 자격 증명 모음을 만들고 사용자의 vault 컨테이너 소유자도admin
이고user1
은 사용자 자격 증명 모음에 액세스할 수 없거나 새 사용자 자격 증명 모음을 생성할 수 없습니다.secret.txt
파일을 자격 증명 모음에 저장하려면ipa vault-archive
명령을--in
옵션과 함께 사용합니다.$ ipa vault-archive my_vault --in secret.txt ----------------------------------- Archived data into vault "my_vault" -----------------------------------
2.2. 사용자 자격 증명 모음에서 시크릿 검색
IdM(Identity Management)으로 사용자 개인 자격 증명 모음의 시크릿을 사용자가 로그인한 모든 IdM 클라이언트로 검색할 수 있습니다.
다음 절차에 따라 idm_user 라는 IdM 사용자로 my_vault 라는 사용자 개인 자격 증명 모음에서 idm_client.idm.example.com 에 대한 시크릿을 검색합니다.
사전 요구 사항
- idm_user 는 my_vault 의 소유자입니다.
- idm_user 는 자격 증명 모음에 시크릿을 보관 했습니다.
- my_vault 는 표준 자격 증명 모음입니다. 즉, idm_user 는 자격 증명 모음의 콘텐츠에 액세스하기 위해 암호를 입력하지 않아도 됩니다.
절차
SSH to idm_client as idm_user:
$ ssh idm_user@idm_client.idm.example.com
idm_user
로 로그인 :$ kinit user
자격 증명 모음의 콘텐츠를 검색하고
secret_exported.txt
파일에 저장하려면ipa vault-retrieve
명령을 --out 옵션과 함께 사용합니다.--out
$ ipa vault-retrieve my_vault --out secret_exported.txt -------------------------------------- Retrieved data from vault "my_vault" --------------------------------------
2.3. 추가 리소스
3장. Ansible을 사용하여 IdM 사용자 자격 증명 모음 관리: 시크릿 저장 및 검색
이 장에서는 Ansible 자격 증명 모음 모듈을 사용하여 Identity Management에서 사용자 자격 증명 모음
을 관리하는 방법을 설명합니다. 특히 사용자가 Ansible 플레이북을 사용하여 다음과 같은 세 가지 연속 작업을 수행하는 방법을 설명합니다.
사용자는 두 개의 다른 IdM 클라이언트에서 저장 및 검색을 수행할 수 있습니다.
사전 요구 사항
- 키 복구 기관(KRA) 인증서 시스템 구성 요소가 IdM 도메인에 있는 하나 이상의 서버에 설치되어 있습니다. 자세한 내용은 IdM에 키 복구 기관 설치를 참조하십시오.
3.1. Ansible을 사용하여 IdM에 표준 사용자 자격 증명 모음이 있는지 확인
중요한 정보를 안전하게 저장하기 위해 Ansible 플레이북을 사용하여 하나 이상의 개인 자격 증명 모음 컨테이너를 생성하려면 다음 절차를 따르십시오. 아래 절차에 사용된 예제에서 idm_user 사용자는 my_vault 라는 표준 유형의 자격 증명 모음을 생성합니다. 표준 자격 증명 모음 유형을 사용하면 파일에 액세스할 때 idm_user 를 인증할 필요가 없습니다. idm_user 는 사용자가 로그인한 IdM 클라이언트에서 파일을 검색할 수 있습니다.
사전 요구 사항
- 절차의 단계를 실행하는 호스트인 Ansible 컨트롤러에 ansible-freeipa 패키지를 설치했습니다.
- idm_user 의 암호를 알고 있습니다.
절차
/usr/share/doc/ansible-freeipa/playbooks/vault
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/vault
인벤토리 파일(예: inventory.file )을 생성합니다.
$ touch inventory.file
inventory.file 을 열고
[ipaserver]
섹션에서 구성할 IdM 서버를 정의합니다. 예를 들어, server.idm.example.com 을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com
ensure-standard-vault-is-present.yml Ansible 플레이북 파일을 복사합니다. 예를 들면 다음과 같습니다.
$ cp ensure-standard-vault-is-present.yml ensure-standard-vault-is-present-copy.yml
- 편집을 위해 ensure-standard-vault-is-present-copy.yml 파일을 엽니다.
ipavault
작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.-
ipaadmin_principal
변수를 idm_user 로 설정합니다. -
ipaadmin_password
변수를 암호 idm_user 로 설정합니다. -
사용자
변수를 idm_user 로 설정합니다. -
name
변수를 my_vault 로 설정합니다. vault_type
변수를 표준 으로 설정합니다.현재 예에 대해 수정된 Ansible 플레이북 파일입니다.
--- - name: Tests hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - ipavault: ipaadmin_principal: idm_user ipaadmin_password: idm_user_password user: idm_user name: my_vault vault_type: standard
-
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-standard-vault-is-present-copy.yml
3.2. Ansible을 사용하여 IdM의 표준 사용자 자격 증명 모음에 시크릿 보관
Ansible 플레이북을 사용하여 중요한 정보를 개인 자격 증명 모음에 저장하려면 다음 절차를 따르십시오. 사용된 예에서 idm_user 사용자는 my_vault 라는 자격 증명 모음에 민감한 정보가 있는 파일을 아카이브합니다 .
사전 요구 사항
- 절차의 단계를 실행하는 호스트인 Ansible 컨트롤러에 ansible-freeipa 패키지를 설치했습니다.
- idm_user 의 암호를 알고 있습니다.
- idm_user 는 my_vault 의 소유자 또는 적어도 멤버 사용자입니다.
- my_vault 에 보관할 시크릿인 password.txt 에 액세스할 수 있습니다.
절차
/usr/share/doc/ansible-freeipa/playbooks/vault
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/vault
인벤토리 파일을 열고 구성할 IdM 서버가
[ipaserver]
섹션에 나열되어 있는지 확인합니다. 예를 들어, server.idm.example.com 을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com
data-archive-in-symmetric-vault.yml Ansible 플레이북 파일을 복사하고 "standard"으로 "symmetric"을 바꿉니다. 예를 들면 다음과 같습니다.
$ cp data-archive-in-symmetric-vault.yml data-archive-in-standard-vault-copy.yml
- 편집을 위해 data-archive-in-standard-vault-copy.yml 파일을 엽니다.
ipavault
작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.-
ipaadmin_principal
변수를 idm_user 로 설정합니다. -
ipaadmin_password
변수를 암호 idm_user 로 설정합니다. -
사용자
변수를 idm_user 로 설정합니다. -
name
변수를 my_vault 로 설정합니다. -
중요한 정보를 사용하여
in
변수를 파일의 전체 경로로 설정합니다. action
변수를 member 로 설정합니다.현재 예에 대해 수정된 Ansible 플레이북 파일입니다.
--- - name: Tests hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - ipavault: ipaadmin_principal: idm_user ipaadmin_password: idm_user_password user: idm_user name: my_vault in: /usr/share/doc/ansible-freeipa/playbooks/vault/password.txt action: member
-
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file data-archive-in-standard-vault-copy.yml
3.3. Ansible을 사용하여 IdM의 표준 사용자 자격 증명에서 시크릿 검색
Ansible 플레이북을 사용하여 사용자 개인 자격 증명 모음에서 시크릿을 검색하려면 다음 절차를 따르십시오. 아래 절차에 사용된 예제에서 idm_user 사용자는 host01. idm_user라는 IdM 클라이언트에 대한 표준 유형의 자격 증명 모음에서 중요한 데이터가 있는 파일을 검색합니다.idm_user 는 파일에 액세스할 때 인증할 필요가 없습니다. idm_user 는 Ansible이 설치된 모든 IdM 클라이언트에서 파일을 검색할 수 있습니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장한다고 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - idm_user 의 암호를 알고 있습니다.
- idm_user 는 my_vault 의 소유자입니다.
- idm_user 는 my_vault 에 시크릿을 저장했습니다.
- Ansible은 시크릿을 검색하려는 IdM 호스트의 디렉터리에 쓸 수 있습니다.
- idm_user 는 시크릿을 검색할 IdM 호스트의 디렉터리에서 읽을 수 있습니다.
절차
/usr/share/doc/ansible-freeipa/playbooks/vault
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/vault
인벤토리 파일을 열고 명확하게 정의된 섹션에서 시크릿을 검색할 IdM 클라이언트를 언급합니다. 예를 들어, host01.idm.example.com 에서 시크릿을 검색하도록 Ansible에 지시하려면 다음을 입력합니다.
[ipahost] host01.idm.example.com
retrive-data-symmetric-vault.yml Ansible 플레이북 파일의 사본을 만듭니다. "symmetric"을 "standard"로 바꿉니다. 예를 들면 다음과 같습니다.
$ cp retrive-data-symmetric-vault.yml retrieve-data-standard-vault.yml-copy.yml
- 편집을 위해 retrieve-data-standard-vault.yml-copy.yml 파일을 엽니다.
-
hosts
변수를 ipahost 로 설정하여 파일을 조정합니다. ipavault
작업 섹션에서 다음 변수를 설정하여 파일을 조정합니다.-
ipaadmin_principal
변수를 idm_user 로 설정합니다. -
ipaadmin_password
변수를 암호 idm_user 로 설정합니다. -
사용자
변수를 idm_user 로 설정합니다. -
name
변수를 my_vault 로 설정합니다. -
시크릿을 내보낼 파일의 전체 경로로
out
변수를 설정합니다. state
변수를 검색된 로 설정합니다.현재 예에 대해 수정된 Ansible 플레이북 파일입니다.
--- - name: Tests hosts: ipahost gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - ipavault: ipaadmin_principal: idm_user ipaadmin_password: idm_user_password user: idm_user name: my_vault out: /tmp/password_exported.txt state: retrieved
-
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file retrieve-data-standard-vault.yml-copy.yml
검증
user01 으로 host01 에
SSH
로 :$ ssh user01@host01.idm.example.com
Ansible Playbook 파일의
out
변수로 지정된 파일을 확인합니다.$ vim /tmp/password_exported.txt
내보낸 시크릿을 볼 수 있습니다.
-
Ansible을 사용하여 IdM 자격 증명 및 사용자 시크릿을 관리하는 방법에 대한 자세한 내용은
/usr/share/doc/ansible-freeipa/
디렉토리에서 사용 가능한 README-vault.md Markdown 파일과 /usr/share/doc/ansible-freeipa/playbooks/playbooks/vault/
디렉토리에서 사용 가능한 샘플 플레이북을 참조하십시오.
4장. IdM 서비스 시크릿 관리: 시크릿 저장 및 검색
이 섹션에서는 관리자가 IdM(Identity Management)에서 서비스 자격 증명 모음을 사용하여 서비스 시크릿을 중앙 집중식 위치에 안전하게 저장하는 방법을 보여줍니다. 이 예제에 사용된 자격 증명 모음 은 비대칭이므로 이를 사용하려면 관리자가 다음 단계를 수행해야 합니다.
-
예를 들어
openssl
유틸리티를 사용하여 개인 키를 생성합니다. - 개인 키를 기반으로 공개 키를 생성합니다.
관리자가 자격 증명 모음에 보관할 때 서비스 시크릿은 공개 키로 암호화됩니다. 이후 도메인의 특정 시스템에서 호스팅되는 서비스 인스턴스는 개인 키를 사용하여 시크릿을 검색합니다. 서비스와 관리자만 시크릿에 액세스할 수 있습니다.
보안이 손상되면 관리자는 서비스 자격 증명 모음에서 이를 교체한 다음 손상되지 않은 개별 서비스 인스턴스에 재배포할 수 있습니다.
사전 요구 사항
- 키 복구 기관(KRA) 인증서 시스템 구성 요소가 IdM 도메인에 있는 하나 이상의 서버에 설치되어 있습니다. 자세한 내용은 IdM에 키 복구 기관 설치를 참조하십시오.
이 섹션에는 다음 절차가 포함됩니다.
사용된 용어
절차의 경우:
- admin 은 서비스 암호를 관리하는 관리자입니다.
- private-key-to-externally-signed-certificate.pem 은 서비스 보안이 포함된 파일입니다(이 경우 외부 서명된 인증서에 대한 개인 키). 이 개인 키를 자격 증명 모음에서 시크릿을 검색하는 데 사용되는 개인 키와 혼동하지 마십시오.
- secret_vault 는 서비스에 대해 생성된 자격 증명 모음입니다.
- HTTP/webserver.idm.example.com 은 보안이 보관되는 서비스입니다.
- service-public.pem 은 password_vault 에 저장된 암호를 암호화하는 데 사용되는 서비스 공개 키입니다.
- service-private.pem 은 secret_vault 에 저장된 암호를 해독하는 데 사용되는 서비스 개인 키입니다.
4.1. 대칭 자격 증명 모음에 IdM 서비스 시크릿 저장
다음 절차에 따라 asymmetric 자격 증명 모음을 만들고 이를 사용하여 서비스 시크릿을 보관합니다.
사전 요구 사항
- IdM 관리자 암호를 알고 있습니다.
절차
관리자로 로그인합니다.
$ kinit admin
서비스 인스턴스의 공개 키를 가져옵니다. 예를 들어
openssl
유틸리티를 사용합니다.service-private.pem
개인 키를 생성합니다.$ openssl genrsa -out service-private.pem 2048 Generating RSA private key, 2048 bit long modulus .+++ ...........................................+++ e is 65537 (0x10001)
개인 키를 기반으로
service-public.pem
공개 키를 생성합니다.$ openssl rsa -in service-private.pem -out service-public.pem -pubout writing RSA key
서비스 인스턴스 자격 증명 모음으로 symmetric 자격 증명 모음을 생성하고 공개 키를 제공합니다.
$ ipa vault-add secret_vault --service HTTP/webserver.idm.example.com --type asymmetric --public-key-file service-public.pem ---------------------------- Added vault "secret_vault" ---------------------------- Vault name: secret_vault Type: asymmetric Public key: LS0tLS1C...S0tLS0tCg== Owner users: admin Vault service: HTTP/webserver.idm.example.com@IDM.EXAMPLE.COM
자격 증명 모음에 보관된 암호는 키로 보호됩니다.
서비스 시크릿을 서비스 자격 증명 모음에 보관합니다.
$ ipa vault-archive secret_vault --service HTTP/webserver.idm.example.com --in private-key-to-an-externally-signed-certificate.pem ----------------------------------- Archived data into vault "secret_vault" -----------------------------------
이렇게 하면 서비스 인스턴스 공개 키로 보안이 암호화됩니다.
시크릿이 필요한 모든 서비스 인스턴스에 대해 이 단계를 반복합니다. 각 서비스 인스턴스에 대해 새 symmetric 자격 증명 모음을 만듭니다.
4.2. IdM 서비스 인스턴스에 대한 서비스 시크릿 검색
서비스 인스턴스를 사용하여 로컬에 저장된 서비스 개인 키로 서비스 자격 증명 모음 시크릿을 검색하려면 다음 절차를 따르십시오.
사전 요구 사항
- 서비스 주체를 소유하는 서비스 주체의 키 탭에 액세스할 수 있습니다(예: HTTP/webserver.idm.example.com).
- symmetric 자격 증명 모음을 생성하고 자격 증명 모음에 시크릿을 보관 했습니다.
- 서비스 자격 증명 모음 시크릿을 검색하는 데 사용되는 개인 키에 액세스할 수 있습니다.
절차
관리자로 로그인합니다.
$ kinit admin
서비스에 대한 Kerberos 티켓을 받습니다.
# kinit HTTP/webserver.idm.example.com -k -t /etc/httpd/conf/ipa.keytab
서비스 자격 증명 모음 암호를 검색합니다.
$ ipa vault-retrieve secret_vault --service HTTP/webserver.idm.example.com --private-key-file service-private.pem --out secret.txt ------------------------------------ Retrieved data from vault "secret_vault" ------------------------------------
4.3. 손상된 경우 IdM 서비스 자격 증명 모음 시크릿 변경
서비스 자격 증명 모음 시크릿을 변경하여 손상된 서비스 인스턴스를 분리하려면 다음 절차를 따르십시오.
사전 요구 사항
- IdM 관리자 암호를 알고 있습니다.
- 서비스 시크릿 을 저장하기 위해 symmetric 자격 증명 모음을 생성 했습니다.
- 새 보안을 생성하고 이에 대한 액세스 권한이 있습니다(예: new-private-key-to-an-externally-signed-certificate.pem ).
절차
새 시크릿을 서비스 인스턴스 자격 증명 모음에 보관합니다.
$ ipa vault-archive secret_vault --service HTTP/webserver.idm.example.com --in new-private-key-to-an-externally-signed-certificate.pem ----------------------------------- Archived data into vault "secret_vault" -----------------------------------
이는 자격 증명 모음에 저장된 현재 시크릿을 덮어씁니다.
- 확인되지 않은 서비스 인스턴스에서만 새 시크릿을 검색합니다. 자세한 내용은 IdM 서비스 인스턴스에 대한 서비스 시크릿 검색에서 참조하십시오.
4.4. 추가 리소스
5장. Ansible을 사용하여 IdM 서비스 자격 증명 모음 관리: 시크릿 저장 및 검색
이 섹션에서는 관리자가 ansible-freeipa
vault
모듈을 사용하여 서비스 시크릿을 중앙 집중식 위치에 안전하게 저장하는 방법을 보여줍니다. 예제에 사용되는 자격 증명 모음 은 CloudEvent입니다. 즉, 관리자는 다음 단계를 수행해야 함을 의미합니다.
-
예를 들어
openssl
유틸리티를 사용하여 개인 키를 생성합니다. - 개인 키를 기반으로 공개 키를 생성합니다.
관리자가 자격 증명 모음에 보관할 때 서비스 시크릿은 공개 키로 암호화됩니다. 이후 도메인의 특정 시스템에서 호스팅되는 서비스 인스턴스는 개인 키를 사용하여 시크릿을 검색합니다. 서비스와 관리자만 시크릿에 액세스할 수 있습니다.
보안이 손상되면 관리자는 서비스 자격 증명 모음에서 이를 교체한 다음 손상되지 않은 개별 서비스 인스턴스에 재배포할 수 있습니다.
사전 요구 사항
- 키 복구 기관(KRA) 인증서 시스템 구성 요소가 IdM 도메인에 있는 하나 이상의 서버에 설치되어 있습니다. 자세한 내용은 IdM에 키 복구 기관 설치를 참조하십시오.
이 섹션에는 다음 절차가 포함됩니다.
절차의 경우:
- admin 은 서비스 암호를 관리하는 관리자입니다.
- private-key-to-externally-signed-certificate.pem 은 서비스 보안이 포함된 파일입니다(이 경우 외부 서명된 인증서에 대한 개인 키). 이 개인 키를 자격 증명 모음에서 시크릿을 검색하는 데 사용되는 개인 키와 혼동하지 마십시오.
- secret_vault 는 서비스 시크릿을 저장하도록 생성된 자격 증명 모음입니다.
- HTTP/webserver1.idm.example.com 은 자격 증명 모음의 소유자입니다.
- HTTP/webserver2.idm.example.com 및 HTTP/webserver3.idm.example.com 은 자격 증명 모음 멤버 서비스입니다.
- service-public.pem 은 password_vault 에 저장된 암호를 암호화하는 데 사용되는 서비스 공개 키입니다.
- service-private.pem 은 secret_vault 에 저장된 암호를 해독하는 데 사용되는 서비스 개인 키입니다.
5.1. Ansible을 사용하여 IdM에 symmetric 서비스 자격 증명 모음이 있는지 확인
중요한 정보를 안전하게 저장하기 위해 Ansible 플레이북을 사용하여 하나 이상의 개인 자격 증명 모음 컨테이너를 생성하려면 다음 절차를 따르십시오. 아래 절차에서 사용된 예에서는 관리자가 secret_vault 라는 symmetric 자격 증명 모음을 만듭니다. 이렇게 하면 자격 증명 모음 멤버가 개인 키를 사용하여 자격 증명 모음의 시크릿을 검색해야 합니다. 자격 증명 모음 멤버는 모든 IdM 클라이언트에서 파일을 검색할 수 있습니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장한다고 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
절차
/usr/share/doc/ansible-freeipa/playbooks/vault
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/vault
서비스 인스턴스의 공개 키를 가져옵니다. 예를 들어
openssl
유틸리티를 사용합니다.service-private.pem
개인 키를 생성합니다.$ openssl genrsa -out service-private.pem 2048 Generating RSA private key, 2048 bit long modulus .+++ ...........................................+++ e is 65537 (0x10001)
개인 키를 기반으로
service-public.pem
공개 키를 생성합니다.$ openssl rsa -in service-private.pem -out service-public.pem -pubout writing RSA key
선택 사항: inventory 파일이 없는 경우 인벤토리 파일을 생성합니다(예: inventory.file ).
$ touch inventory.file
인벤토리 파일을 열고
[ipaserver]
섹션에서 구성할 IdM 서버를 정의합니다. 예를 들어, server.idm.example.com 을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com
ensure-asymmetric-vault-is-present.yml Ansible 플레이북 파일을 복사합니다. 예를 들면 다음과 같습니다.
$ cp ensure-asymmetric-vault-is-present.yml ensure-asymmetric-service-vault-is-present-copy.yml
- 편집을 위해 ensure-asymmetric-vault-is-present-copy.yml 파일을 엽니다.
- Ansible 컨트롤러에서 server.idm.example.com 서버에 service-public.pem 공개 키를 복사하는 작업을 추가합니다.
ipavault
작업 섹션에서 다음 변수를 설정하여 파일의 나머지 부분을 수정합니다.-
ipaadmin_password
변수를 IdM 관리자 암호로 설정합니다. -
name 변수를 사용하여 자격 증명 모음의
이름을
정의합니다(예: secret_vault ). -
vault_type
변수를 symmetric 으로 설정합니다. -
서비스
변수를 자격 증명 모음을 소유하는 서비스 주체로 설정합니다(예: HTTP/webserver1.idm.example.com ). public_key_file
을 공개 키의 위치로 설정합니다.현재 예에 대해 수정된 Ansible 플레이북 파일입니다.
--- - name: Tests hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Copy public key to ipaserver. copy: src: /path/to/service-public.pem dest: /usr/share/doc/ansible-freeipa/playbooks/vault/service-public.pem mode: 0600 - name: Add data to vault, from a LOCAL file. ipavault: ipaadmin_password: "{{ ipaadmin_password }}" name: secret_vault vault_type: asymmetric service: HTTP/webserver1.idm.example.com public_key_file: /usr/share/doc/ansible-freeipa/playbooks/vault/service-public.pem
-
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-asymmetric-service-vault-is-present-copy.yml
5.2. Ansible을 사용하여 symmetric 자격 증명 모음에 멤버 서비스 추가
Ansible 플레이북을 사용하여 서비스 자격 증명 모음에 멤버 서비스를 추가하여 모두 자격 증명 모음에 저장된 시크릿을 검색할 수 있도록 다음 절차를 따르십시오. 아래 절차에 사용된 예제에서 IdM 관리자는 HTTP/webserver2.idm.example.com 및 HTTP/webserver3.idm.example.com 서비스 주체를 HTTP/webserver1.idm.example.com 에서 소유한 secret_vault 자격 증명 모음에 추가합니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장한다고 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
- 서비스 시크릿 을 저장하기 위해 symmetric 자격 증명 모음을 생성 했습니다.
절차
/usr/share/doc/ansible-freeipa/playbooks/vault
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/vault
선택 사항: inventory 파일이 없는 경우 인벤토리 파일을 생성합니다(예: inventory.file ).
$ touch inventory.file
인벤토리 파일을 열고
[ipaserver]
섹션에서 구성할 IdM 서버를 정의합니다. 예를 들어, server.idm.example.com 을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com
data-archive-in-asymmetric-vault.yml Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.
$ cp data-archive-in-asymmetric-vault.yml add-services-to-an-asymmetric-vault.yml
- 편집을 위해 data-archive-in-asymmetric-vault-copy.yml 파일을 엽니다.
ipavault
작업 섹션에서 다음 변수를 설정하여 파일을 수정합니다.-
ipaadmin_password
변수를 IdM 관리자 암호로 설정합니다. -
name
변수를 자격 증명 모음의 이름으로 설정합니다(예: secret_vault ). -
서비스
변수를 자격 증명 모음의 서비스 소유자(예: HTTP/webserver1.idm.example.com )로 설정합니다. -
services 변수를 사용하여 자격 증명 모음 시크릿에 액세스할
서비스를
정의합니다. 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/webserver1.idm.example.com services: - HTTP/webserver2.idm.example.com - HTTP/webserver3.idm.example.com action: member
-
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file add-services-to-an-asymmetric-vault.yml
5.3. Ansible을 사용하여 대칭 자격 증명 모음에 IdM 서비스 시크릿 저장
나중에 서비스에서 검색할 수 있도록 Ansible 플레이북을 사용하여 서비스 자격 증명 모음에 시크릿을 저장하려면 다음 절차를 따르십시오. 아래 절차에서 사용된 예제에서 관리자는 secret_vault 라는 symmetric 자격 증명 모음에 보안이 포함된 PEM
파일을 저장합니다. 이렇게 하면 서비스가 개인 키를 사용하여 자격 증명 모음에서 시크릿을 검색해야 합니다. 자격 증명 모음 멤버는 모든 IdM 클라이언트에서 파일을 검색할 수 있습니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장한다고 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
- 서비스 시크릿 을 저장하기 위해 symmetric 자격 증명 모음을 생성 했습니다.
- 보안은 Ansible 컨트롤러에 로컬로 저장됩니다(예: /usr/share/doc/ansible-freeipa/playbooks/vault/private-key-to-an-externally-signed-certificate.pem ).
절차
/usr/share/doc/ansible-freeipa/playbooks/vault
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/vault
선택 사항: inventory 파일이 없는 경우 인벤토리 파일을 생성합니다(예: inventory.file ).
$ touch inventory.file
인벤토리 파일을 열고
[ipaserver]
섹션에서 구성할 IdM 서버를 정의합니다. 예를 들어, server.idm.example.com 을 구성하도록 Ansible에 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com
data-archive-in-asymmetric-vault.yml Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.
$ cp data-archive-in-asymmetric-vault.yml data-archive-in-asymmetric-vault-copy.yml
- 편집을 위해 data-archive-in-asymmetric-vault-copy.yml 파일을 엽니다.
ipavault
작업 섹션에서 다음 변수를 설정하여 파일을 수정합니다.-
ipaadmin_password
변수를 IdM 관리자 암호로 설정합니다. -
name
변수를 자격 증명 모음의 이름으로 설정합니다(예: secret_vault ). -
서비스
변수를 자격 증명 모음의 서비스 소유자(예: HTTP/webserver1.idm.example.com )로 설정합니다. -
in
변수를 "{{ lookup('file', '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/webserver1.idm.example.com in: "{{ lookup('file', 'private-key-to-an-externally-signed-certificate.pem') | b64encode }}" action: member
-
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file data-archive-in-asymmetric-vault-copy.yml
5.4. Ansible을 사용하여 IdM 서비스의 서비스 시크릿 검색
Ansible 플레이북을 사용하여 서비스 대신 서비스 자격 증명 모음에서 시크릿을 검색하려면 다음 절차를 따르십시오. 아래 절차에 사용된 예제에서 플레이북을 실행하면 secret_vault라는 secret_vault 의 시크릿을 사용하여 PEM
파일을 검색하고 Ansible 인벤토리 파일에 나열된 모든 호스트의 지정된 위치에 해당 파일을 ipaservers
.
서비스는 keytab을 사용하여 IdM에 인증하고 개인 키를 사용하여 자격 증명 모음에 인증합니다. ansible-freeipa
가 설치된 IdM 클라이언트에서 서비스를 대신하여 파일을 검색할 수 있습니다.
사전 요구 사항
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장한다고 가정합니다.
-
ansible-freeipa
모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다. - IdM 관리자 암호를 알고 있습니다.
- 서비스 시크릿 을 저장하기 위해 symmetric 자격 증명 모음을 생성 했습니다.
- 자격 증명 모음에 시크릿을 보관 했습니다.
-
Ansible 컨트롤러의
private_key_file
변수에서 지정한 위치에서 서비스 자격 증명 모음 시크릿을 검색하는 데 사용되는 개인 키를 저장했습니다.
절차
/usr/share/doc/ansible-freeipa/playbooks/vault
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/vault
선택 사항: inventory 파일이 없는 경우 인벤토리 파일을 생성합니다(예: inventory.file ).
$ touch inventory.file
인벤토리 파일을 열고 다음 호스트를 정의합니다.
-
[ipaserver]
섹션에 IdM 서버를 정의합니다. -
[webservers]
섹션에서 시크릿을 검색할 호스트를 정의합니다. 예를 들어, Ansible에 webserver1.idm.example.com,webserver2.idm.example.com, webserver3.idm.example.com 에 시크릿을 검색하도록 지시하려면 다음을 입력합니다.
[ipaserver] server.idm.example.com [webservers] webserver1.idm.example.com webserver2.idm.example.com webserver3.idm.example.com
-
retrieve-data-asymmetric-vault.yml Ansible 플레이북 파일의 사본을 만듭니다. 예를 들면 다음과 같습니다.
$ cp retrieve-data-asymmetric-vault.yml retrieve-data-asymmetric-vault-copy.yml
- 편집을 위해 retrieve-data-asymmetric-vault-copy.yml 파일을 엽니다.
ipavault
작업 섹션에서 다음 변수를 설정하여 파일을 수정합니다.-
ipaadmin_password
변수를 IdM 관리자 암호로 설정합니다. -
name
변수를 자격 증명 모음의 이름으로 설정합니다(예: secret_vault ). -
서비스
변수를 자격 증명 모음의 서비스 소유자(예: HTTP/webserver1.idm.example.com )로 설정합니다. -
private_key_file
변수를 서비스 자격 증명 모음 시크릿을 검색하는 데 사용되는 개인 키의 위치로 설정합니다. -
private-key-to-an-externally-signed-certificate.pem 시크릿을 검색하려는 IdM 서버의 위치로
out
변수를 설정합니다(예: 현재 작업 디렉터리). 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: private-key-to-an-externally-signed-certificate.pem state: retrieved
-
IdM 서버에서 Ansible 컨트롤러로 데이터 파일을 검색하는 플레이북에 섹션을 추가합니다.
--- - name: Retrieve data from vault hosts: ipaserver become: no gather_facts: false tasks: [...] - name: Retrieve data file fetch: src: private-key-to-an-externally-signed-certificate.pem dest: ./ flat: true mode: 0600
Ansible 컨트롤러의 검색된 private-key-to-externally-signed-certificate.pem 파일을 인벤토리 파일의 tag 섹션에 나열된 6443으로 전송하는 플레이북을 플레이북에 추가합니다.
--- - name: Send data file to webservers become: no gather_facts: no hosts: webservers tasks: - name: Send data to webservers copy: src: private-key-to-an-externally-signed-certificate.pem dest: /etc/pki/tls/private/httpd.key mode: 0444
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file retrieve-data-asymmetric-vault-copy.yml
5.5. Ansible을 사용하여 손상된 경우 IdM 서비스 자격 증명 시크릿 변경
서비스 인스턴스가 손상될 때 서비스 자격 증명 모음에 저장된 시크릿을 변경하기 위해 Ansible 플레이북을 재사용하려면 다음 절차를 따르십시오. 다음 예제의 시나리오에서는 webserver3.idm.example.com 에서 검색된 보안이 손상되었지만 secret을 저장하는 symmetric 자격 증명의 키가 손상되지 않은 것으로 가정합니다. 이 예제에서 관리자는 symmetric 자격 증명 모음에 시크릿을 저장할 때 사용된 Ansible 플레이북을 재사용하고 symmetric 자격 증명 에서 IdM 호스트로 시크릿을 검색합니다. 절차가 시작될 때 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 관리자 암호를 알고 있습니다.
- 서비스 시크릿 을 저장하기 위해 symmetric 자격 증명 모음을 생성 했습니다.
-
손상된 이전 키를 교체하기 위해 IdM 호스트에서 실행되는 웹 서비스에 대한 새
httpd
키를 생성했습니다. -
새
httpd
키는 Ansible 컨트롤러에 로컬로 저장됩니다(예: /usr/share/doc/ansible-freeipa/playbooks/vault/private-key-to-an-externally-signed-certificate.pem ).
절차
/usr/share/doc/ansible-freeipa/playbooks/vault
디렉터리로 이동합니다.$ cd /usr/share/doc/ansible-freeipa/playbooks/vault
인벤토리 파일을 열고 다음 호스트가 올바르게 정의되었는지 확인합니다.
-
[ipaserver]
섹션의 IdM 서버. [webservers]
섹션에서 시크릿을 검색할 호스트입니다. 예를 들어, Ansible에 webserver1.idm.example.com 및 webserver2.idm.example.com 에 시크릿을 검색하도록 지시하려면 다음을 입력합니다.[ipaserver] server.idm.example.com [webservers] webserver1.idm.example.com webserver2.idm.example.com
중요현재 예제 webserver3.idm.example.com 에서 목록에 손상된 웹 서버가 포함되어 있지 않은지 확인합니다.
-
- 편집을 위해 data-archive-in-asymmetric-vault-copy.yml 파일을 엽니다.
ipavault
작업 섹션에서 다음 변수를 설정하여 파일을 수정합니다.-
ipaadmin_password
변수를 IdM 관리자 암호로 설정합니다. -
name
변수를 자격 증명 모음의 이름으로 설정합니다(예: secret_vault ). -
서비스
변수를 자격 증명 모음의 서비스 소유자(예: HTTP/webserver.idm.example.com )로 설정합니다. -
in
변수를 "{{ 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
-
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file data-archive-in-asymmetric-vault-copy.yml
- 편집을 위해 retrieve-data-asymmetric-vault-copy.yml 파일을 엽니다.
ipavault
작업 섹션에서 다음 변수를 설정하여 파일을 수정합니다.-
ipaadmin_password
변수를 IdM 관리자 암호로 설정합니다. -
name
변수를 자격 증명 모음의 이름으로 설정합니다(예: secret_vault ). -
서비스
변수를 자격 증명 모음의 서비스 소유자(예: HTTP/webserver1.idm.example.com )로 설정합니다. -
private_key_file
변수를 서비스 자격 증명 모음 시크릿을 검색하는 데 사용되는 개인 키의 위치로 설정합니다. -
new-private-key-to-an-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
-
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: true mode: 0600
검색된 new-private-key-to-externally-signed-certificate.pem 파일을 Ansible 컨트롤러에서 inventory 파일의
webservers
섹션에 나열된 6443으로 전송하는 섹션을 플레이북에 추가합니다.--- - 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
- 파일을 저장합니다.
플레이북을 실행합니다.
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file retrieve-data-asymmetric-vault-copy.yml
5.6. 추가 리소스
-
/usr/share/doc/ansible-freeipa/
디렉토리에서 README-vault.md 마크다운 파일을 참조하십시오. -
/usr/share/doc/ansible-freeipa/playbooks/vault/
디렉터리에서 샘플 플레이북을 참조하십시오.