Ansible: Playbook 암호화하기

Playbook 암호화하기

Ansible: Playbook 암호화하기

Playbook 암호화라 함은, Ansible Playbook의 코드나 변수 등 중요한 값들을 암호화하여, 특정 유저나 그룹만이 열람할 수 있도록 만드는 작업입니다. 이는 공격자의 코드 열람 및 변조를 막아줄 뿐만 아니라, 기업 내부의 인사관리, 자동화 등 여러 조직적 관리를 보호해줄 수 있습니다.

암호화 방법으로는 Ansible Vault가 주로 사용되며, 이것은 Ansible에서 제공하는 암호화 모듈입니다. Ansible Vault는 높은 수준의 보안을 확보할 수 있는 방법을 제공하면서도 Playbook의 가독성을 해치지 않습니다.

1. Ansible-vault를 이용한 암호화

Ansible에서는 Ansible-vault라는 기능을 제공하여 Playbook을 암호화할 수 있습니다. 이를 통해 중요한 정보를 안전하게 보호하고 노출을 방지할 수 있습니다.

1.1. Ansible-vault란?

Ansible-vault란 암호화된 데이터 파일을 생성, 보안, 관리하기 위한 Ansible의 도구입니다. 암호화된 파일을 처리하려면 별도의 암호 지정 키가 필요합니다.

1.2. Ansible-vault 사용 방법

Ansible-vault를 사용하려면 암호화할 파일을 작성한 다음, 해당 파일을 암호화한 다음 Playbook에서 호출하면 됩니다. 암호화된 파일을 수정하거나 보기 위해서는 별도의 암호를 입력해야 합니다.

2. Playbook 보안 요소들

Playbook에서 사용하는 모든 데이터에는 중요한 정보가 포함될 수 있으므로 보안 강화는 매우 중요합니다. 다음과 같은 요소들을 통해 Playbook을 보호할 수 있습니다.

2.1. SSH Key 및 사용자 관리

Playbook을 실행하는 시스템과 관련하여 SSH Key를 생성하고 관리하는 방법입니다. 사용자 세부 정보를 포함한 사용자 계정에 대한 제한도 설정할 수 있습니다.

2.2. Firewalls 설정

방화벽 설정을 통해 Playbook 실행 환경에서 연결을 제한할 수 있습니다. 이를 통해 일부 방화벽을 보다 쉽게 우회하거나 보안 정책을 무시하는 시도를 막을 수 있습니다.

3. Playbook 암호화 설정 실습

이제 암호화된 데이터 파일을 사용하여 Playbook 암호화를 구성하는 방법에 대해 설명하겠습니다.

3.1. Ansible-vault 명령어 예제

Ansible-vault 명령어의 사용 예제를 통해 Playbook을 암호화하고 복호화하는 방법에 대해 살펴보겠습니다.

3.2. Secret 변수 사용 예제

Playbook에서 Secret 변수를 선언하여 Ansible-vault를 사용하지 않고도 중요한 데이터를 보호하는 방법에 대해 살펴보겠습니다.

# secret_key.yml
password: test-secret-password

# tasks/main.yml
---
- name: Encrypt files
  hosts: localhost
  become: no
  gather_facts: no
  vars_files:
    - secret_key.yml
  tasks:
    - name: Generate key files
      file:
        path: /root/secret-key.txt
        state: touch
    - name: Set key files content
      blockinfile:
        path: /root/secret-key.txt
        block: |
          --- !vault | $ANSIBLE_VAULT;1.1;AES256 {{ password}}
        state: present   
        insertafter: EOF

Leave a Comment