5장. Ansible을 사용하여 IdM 서비스 자격 증명 모음 관리: 보안 저장 및 검색
이 섹션에서는 관리자가 ansible-freeipa vault 모듈을 사용하여 서비스 시크릿을 중앙 집중식 위치에 안전하게 저장하는 방법을 설명합니다. 예제에 사용되는 자격 증명 모음 은 CloudEvent입니다. 즉, 관리자는 다음 단계를 수행해야 함을 의미합니다.
-
openssl유틸리티와 같이 을 사용하여 개인 키를 생성합니다. - 개인 키를 기반으로 공개 키를 생성합니다.
관리자가 자격 증명 모음에 아카이브할 때 서비스 시크릿은 공개 키로 암호화됩니다. 이후 도메인의 특정 시스템에서 호스팅되는 서비스 인스턴스는 개인 키를 사용하여 시크릿을 검색합니다. 서비스 및 관리자만 보안에 액세스할 수 있습니다.
보안이 손상된 경우 관리자는 서비스 자격 증명 모음에서 이를 교체한 다음 손상되지 않은 개별 서비스 인스턴스에 다시 배포할 수 있습니다.
사전 요구 사항
- 아래 플레이북에 정의된 ipaserver 호스트 카테고리의 모든 IdM 서버에는 KRA(Key Recovery Authority) 인증서 시스템 구성 요소가 설치되어 있습니다. 자세한 내용은 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-freeipa패키지가 설치되어 있습니다. - 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password를 저장한다고 가정합니다.
-
ansible-freeipa모듈이 실행되는 노드인 대상 노드는 IdM 도메인의 일부인 IdM 클라이언트, 서버 또는 복제본입니다.
절차
MyPlaybooks 디렉터리로 이동합니다.
cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/Copy to Clipboard Copied! Toggle word wrap Toggle overflow /usr/share/doc/ansible-freeipa/playbooks/vault/ensure-asymmetric-vault-is-present.yml Ansible 플레이북 파일의 사본을 만듭니다. 예를 들어 다음과 같습니다.
cp /usr/share/doc/ansible-freeipa/playbooks/vault/ensure-asymmetric-vault-is-present.yml ensure-asymmetric-vault-is-present-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/vault/ensure-asymmetric-vault-is-present.yml ensure-asymmetric-vault-is-present-copy.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 서비스 인스턴스의 공개 키를 가져옵니다. 예를 들어
openssl유틸리티를 사용합니다.service-private.pem개인 키를 생성합니다.openssl genrsa -out service-private.pem 2048 Generating RSA private key, 2048 bit long modulus .+++ ...........................................+++ e is 65537 (0x10001)
$ openssl genrsa -out service-private.pem 2048 Generating RSA private key, 2048 bit long modulus .+++ ...........................................+++ e is 65537 (0x10001)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 개인 키를 기반으로
service-public.pem공개 키를 생성합니다.openssl rsa -in service-private.pem -out service-public.pem -pubout writing RSA key
$ openssl rsa -in service-private.pem -out service-public.pem -pubout writing RSA keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 편집할 수 있도록 ensure-asymmetric-vault-is-present-copy.yml 파일을 엽니다.
- service-public.pem 공개 키를 Ansible 컨트롤러에서 server.idm.example.com 서버로 복사하는 작업을 추가합니다.
ipavault작업 섹션에서 다음 변수를 설정하여 파일의 나머지 부분을 수정합니다.-
ipaadmin_password변수를 IdM 관리자 암호로 설정합니다. -
name 변수를 사용하여 자격 증명 모음의
이름을정의합니다(예: secret_vault ). -
vault_type변수를 symmetric 으로 설정합니다. -
서비스변수를 자격 증명 모음을 소유한 서비스 주체(예: HTTP/webserver1.idm.example.com )로 설정합니다. public_key_file을 공개 키의 위치로 설정합니다.이는 현재 예제에서 수정된 Ansible 플레이북 파일입니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
- 파일을 저장합니다.
플레이북을 실행합니다.
ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-asymmetric-service-vault-is-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-asymmetric-service-vault-is-present-copy.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow