Ansible Vault로 비밀 보호



이 Ansible 볼트 블로그는 민감한 데이터 (암호 / 비밀 키 / 인증서 파일)가 암호화 된 파일에 저장되고 Ansible 플레이 북에 포함되는 방법을 설명합니다.

기술 사용이 높을수록 보안에 대한 위협이 커집니다. 일반적인 Ansible 설정에서는 'Secrets'를 입력해야합니다. 이러한 비밀은 말 그대로 모든 것이 될 수 있습니다. 암호, API 토큰, SSH 공개 또는 개인 키, SSL 인증서 등이 될 수 있습니다. 이러한 비밀을 어떻게 안전하게 유지합니까? Ansible은 Ansible Vault라는 기능을 제공합니다.

이 블로그에서는 Ansible Vault를 사용하는 방법을 보여주고 데이터를 안전하게 유지하기위한 몇 가지 모범 사례를 살펴 보겠습니다.





이 블로그에서 다루는 주제 :

DevOps를 마스터하려면 ' 코스는 당신의 선택이 될 것입니다.



SQL에서 하위 문자열을 사용하는 방법

Ansible Vault 란 무엇입니까?

코드 형 인프라를 사용하면 민감한 데이터가 세상에 노출되어 원치 않는 보안 문제가 발생할 수 있습니다. Ansible Vault는 모든 비밀을 안전하게 유지할 수있는 기능입니다. 전체 파일, 전체 YAML 플레이 북 또는 몇 가지 변수를 암호화 할 수 있습니다. 민감한 데이터를 암호화 할 수있을뿐만 아니라이를 플레이 북에 통합 할 수있는 기능을 제공합니다.

Vault는 파일이 완전히 암호화되거나 완전히 암호화되지 않은 파일 수준 세분화로 구현됩니다. 암호화 및 파일 복호화에 동일한 암호를 사용하므로 Ansible Vault를 매우 사용자 친화적으로 사용할 수 있습니다.

Ansible Vault를 사용하는 이유는 무엇입니까?

Ansible이 자동화에 사용되고 있으므로 플레이 북에 특정 자격 증명, SSL 인증서 또는 기타 민감한 데이터가 포함될 가능성이 높습니다. 이러한 민감한 데이터를 일반 텍스트로 저장하는 것은 좋지 않습니다. GitHub 또는 노트북 도난에 대한 한 번의 잘못된 커밋은 조직에 막대한 손실을 초래할 수 있습니다. 이것이 Ansible Vault가 등장하는 곳입니다. 보안을 손상시키지 않으면 서 인프라를 코드로 사용할 수있는 좋은 방법입니다.



AWS에서 EC2 인스턴스를 프로비저닝하는 플레이 북이 있다고 가정 해 보겠습니다. 플레이 북에 AWS 액세스 키 ID와 AWS 보안 키를 제공해야합니다. 명백한 이유로 이러한 키를 다른 사람과 공유하지 않습니다. 노출되지 않게 유지하는 방법은 무엇입니까? 두 가지 방법이 있습니다.이 두 변수를 암호화하여 플레이 북에 포함하거나 전체 플레이 북을 암호화합니다.

이것은 ansible Vault를 사용할 수있는 시나리오 중 하나 일뿐입니다. 전체 파일을 암호화하거나 민감한 데이터를 보유 할 수있는 몇 가지 변수 만 암호화 한 다음 Ansible이 런타임 동안 자동으로 해독합니다. 이제 이러한 값을 GitHub에 안전하게 커밋 할 수 있습니다.

암호화 된 파일 생성

암호화 된 파일을 생성하려면 ansible-vault 생성 명령을 내리고 파일 이름을 전달하십시오.

$ ansible-vault create filename.yaml

비밀번호를 만든 다음 다시 입력하여 확인하라는 메시지가 표시됩니다.

Ansible Vault 만들기-Ansible Vault-Edureka

비밀번호가 확인되면 새 파일이 생성되고 편집 창이 열립니다. 기본적으로 Ansible Vault의 편집기는 vi입니다. 데이터를 추가하고 저장하고 종료 할 수 있습니다.

그리고 파일은 암호화됩니다.

암호화 된 파일 편집

암호화 된 파일을 편집하려면 다음을 사용하여 편집 할 수 있습니다. ansible-vault 편집 명령.

$ ansible-vault edit secrets.txt

secrets.txt는 이미 생성되고 암호화 된 파일입니다.

Vault 비밀번호를 입력하라는 메시지가 표시됩니다. 파일 (복호화 된 버전)이 vi 편집기에서 열리고 필요한 변경을 수행 할 수 있습니다.

출력을 확인하면 저장하고 닫을 때 텍스트가 자동으로 암호화된다는 것을 알 수 있습니다.

암호화 된 파일보기

암호화 된 파일 만보고 싶다면 다음을 사용할 수 있습니다. ansible-vault보기 명령.

$ ansible-vault보기 filename.yml

다시 비밀번호를 입력하라는 메시지가 표시됩니다.

유사한 출력이 표시됩니다.

Vault 비밀번호 재 입력

물론 Vault 비밀번호를 변경해야하는 경우도 있습니다. 당신은 사용할 수 있습니다 ansible-vault rekey 명령.

$ ansible-vault rekey secrets.txt

Vault의 현재 비밀번호와 새 비밀번호를 묻는 메시지가 표시되고 마지막으로 새 비밀번호를 확인하면 완료됩니다.

암호화되지 않은 파일 암호화

암호화하려는 파일이 있다고 가정하면 ansible-vault 암호화 명령.

$ ansible-vault 암호화 파일 이름 .txt

비밀번호를 삽입하고 확인하라는 메시지가 표시되며 파일이 암호화됩니다.

이제 파일 내용을 살펴 보았으므로 모두 암호화되었습니다.

암호화 된 파일 해독

암호화 된 파일의 암호를 해독하려면 다음을 사용할 수 있습니다. ansible-vault 해독 명령.

$ ansible-vault decrypt filename.txt

평소처럼 Vault 비밀번호를 삽입하고 확인하라는 메시지가 표시됩니다.

특정 변수 암호화

Ansible Vault를 사용하는 동안 모범 사례는 민감한 데이터 만 암호화하는 것입니다. 위에 설명 된 예에서 개발 팀은 프로덕션 및 스테이징 팀과 암호를 공유하고 싶지 않지만 자체 작업을 수행하기 위해 특정 데이터에 액세스해야 할 수 있습니다. 이러한 경우 다른 사람과 공유하지 않으려는 데이터 만 암호화하고 나머지는 그대로 두어야합니다.

Ansible Vault를 사용하면 특정 변수 만 암호화 할 수 있습니다. 당신은 사용할 수 있습니다 ansible-vault encrypt_string 이것에 대한 명령.

$ ansible-vault encrypt_string

Vault 비밀번호를 삽입하고 확인하라는 메시지가 표시됩니다. 그런 다음 암호화하려는 문자열 값을 삽입 할 수 있습니다. ctrl-d를 눌러 입력을 종료합니다. 이제이 암호화를 할당 할 수 있습니다.플레이 북의 문자열에.

한 줄로 동일한 결과를 얻을 수도 있습니다.

$ ansible-vault encrypt_string 'string'--name 'variable_name'

런타임 중 암호화 된 파일 해독

런타임 중에 파일의 암호를 해독하려면 다음을 사용할 수 있습니다. –ask-vault-pass 깃발.

$ ansible-playbook launch.yml --ask-vault-pass

이 launch.yml 플레이 북을 실행하는 데 사용되는 모든 암호화 된 파일을 해독합니다. 또한 모든 파일이 동일한 암호로 암호화 된 경우에만 가능합니다.

암호 프롬프트는 성 가실 수 있습니다. 자동화의 목적은 무의미 해집니다. 어떻게하면 더 좋을까요? Ansible에는 암호가 포함 된 파일을 참조하는 '암호 파일'이라는 기능이 있습니다. 그런 다음 런타임 중에이 암호 파일을 전달하여 자동화 할 수 있습니다.

$ ansible-playbook launch.yml --vault-password-file ~ / .vault_pass.txt

암호를 지정하는 별도의 스크립트를 가질 수도 있습니다. 스크립트 파일이 실행 가능한지 확인하고 성가신 오류없이 작동하도록 암호가 표준 출력으로 인쇄되었는지 확인해야합니다.

$ ansible-playbook launch.yml --vault-password-file ~ / .vault_pass.py

Vault ID 사용

볼트 ID는 특정 볼트 암호에 식별자를 제공하는 방법입니다. Vault ID는 플레이 북 내에서 참조 할 서로 다른 암호로 서로 다른 파일을 암호화하는 데 도움이됩니다. Ansible의이 기능은 Ansible 2.4의 릴리스와 함께 나왔습니다. 이 릴리스 이전에는 각 ansible 플레이 북 실행에 하나의 볼트 암호 만 사용할 수있었습니다.

이제 다른 비밀번호로 암호화 된 여러 파일을 사용하는 Ansible 플레이 북을 실행하려는 경우 Vault Id를 사용할 수 있습니다.

$ ansible-playbook --vault-id vault-pass1 --vault-id vault-pass2 filename.yml

이것으로 우리는이 Ansible Vault 블로그의 끝입니다. 기술을 따라 잡고 최대한 활용하는 것은 놀랍지 만 보안을 손상 시키지는 않습니다. 이것은 IaC (Infrastructure as Code)를 사용하는 가장 좋은 방법 중 하나입니다.

이 기사가 유용하다고 생각되면 ' Edureka 제공. 여기에는 IT 산업을 더 똑똑하게 만든 모든 도구가 포함됩니다.

질문이 있으십니까? 그것을 게시하십시오 다시 연락 드리겠습니다.