꼭두각시 Azure Key Vault 통합
자동화는 오늘날의 IT 환경에서 필수적이지만 큰 힘에는 큰 책임이 따릅니다. 자동화된 솔루션을 개발할 때 시스템 자격 증명, API 키 및 암호와 같은 민감한 데이터를 적절하게 처리하는 것이 항상 쉬운 것은 아닙니다. 일반적인 문제 중 하나는 애플리케이션에서 사용할 수 있도록 보안 저장소에서 애플리케이션의 구성 파일로 비밀을 가져오는 것입니다.
Azure는 Azure Key Vault 및 Azure 관리 ID를 사용하여 Azure 가상 머신에 대한 이 프로세스를 단순화하는 데 도움이 됩니다. Azure Key Vault는 키, 비밀 및 인증서를 관리하는 데 사용되는 클라우드 서비스입니다. Azure 관리 ID를 사용하면 이 경우 가상 머신이 할당된 ID를 사용하여 Azure Key Vault에 대한 권한을 부여받을 수 있습니다.
이 블로그 게시물에서는 Puppet이 네이티브 Azure 서비스와 통합하여 Azure Key Vault에 저장된 비밀을 Azure 가상 머신의 애플리케이션 구성 파일에 쓰는 작업을 간소화하는 방법을 살펴봅니다.
Azure Key Vault 꼭두각시 모듈
azure_key_vault forge 모듈에는 hiera를 사용하는 서버 측 비밀 검색 및 지연된 기능을 사용하는 에이전트 측 검색에 대한 지원이 포함됩니다. 이 모듈은 Azure 메타데이터 서비스를 활용하여 Azure Key Vault와 상호 작용하여 Azure Key Vault에 저장된 비밀에 액세스하기 위한 액세스 자격 증명을 검색합니다.
서버 측 검색(hiera)
이 모듈은 사용자 정의 hiera 백엔드에 대한 지원을 포함합니다. 이렇게 하면 꼭두각시 코드가 계층 조회 중에 Azure Key Vault에서 중요한 데이터를 검색할 수 있습니다. Puppet 마스터는 Azure Key Vault에서 중요한 데이터를 가져오고 암호화되지 않은 데이터를 보안 에이전트 통신 채널을 통해 에이전트로 보냅니다. 이 게시물의 초점은 에이전트 측 검색에 있으며 서버 측 검색에 대한 추가 정보는 모듈 설명서에서 찾을 수 있습니다.
에이전트 측 검색(지연 기능)
Puppet 6에는 deferred functions으로 알려진 기능이 포함되어 있어 Puppet 실행의 일부로 에이전트 노드에서 기능을 실행할 수 있습니다. 지연된 기능을 활용하면 hiera를 사용한 서버 측 검색보다 많은 이점이 있습니다. 가장 큰 장점 중 하나는 중요한 데이터를 마스터에서 해독한 다음 에이전트 노드로 전달할 필요가 없다는 것입니다.
Azure Key Vault 통합
지연 함수의 작동 방식과 azure_key_vault 모듈이 지원하는 기능을 이해했으므로 이제 통합의 예를 살펴보겠습니다.
예제는 에이전트 노드가 Azure Key Vault에서 가져오는 암호와 함께 Puppet을 사용하여 동적으로 채워지는 애플리케이션 구성 파일입니다.
Azure 인증
에이전트 노드 가상 머신은 Azure에서 실행되고 관리되는 시스템 ID 또는 Azure 키 자격 증명 모음에 액세스할 수 있는 적절한 권한이 있는 사용자 할당 ID를 사용할 것으로 예상됩니다.
데모 앱 모듈
데모 애플리케이션 Puppet 모듈에서 모듈의 파일 디렉토리에 init.pp 매니페스트와 config.yaml.epp 템플릿 파일을 생성해야 합니다.
다음 예제에서는 구성 파일에 암호를 채우는 Azure Key Vault 통합을 강조 표시합니다. 이 예에서는 Puppet의 EPP 템플릿을 사용하여 파일 콘텐츠를 동적으로 생성하고 채웁니다.
--------
host: <%= $host %>
password: <%= $admin_password_secret.unwrap %>
The template file is placed in the module’s files directory instead of the templates directory since the template file must be present on the agent node for the deferred rendering. https://puppet.com/docs/puppet/6.17/template_with_deferred_values.html
다음 매니페스트는 Azure Key Vault에서 검색된 값으로 암호가 설정되는 방식을 보여줍니다.
class demoapp (
String $key_vault_name = 'grtdevvault',
String $key_vault_secret_name = 'app-password',
String $host = 'grtapp01.grt.local',
) {
$password = Deferred('azure_key_vault::secret',
["$key_vault_name","$key_vault_secret_name",{"metadata_api_version"=>"2018-04-02","vault_api_version"=>"2016-10-01"}])
$hash_variables = {
'admin_password_secret' => $password,
'host' => $host,
}
file { '/opt/demoapp':
ensure => directory,
}
file { '/opt/demoapp/config.yaml':
ensure => file,
content => Deferred('inline_epp',
[file('demoapp/config.yaml.epp'), $hash_variables]),
}
}
이제 Puppet 코드가 추가되었으므로 다음 Puppet 에이전트 실행은 아래 표시된 것과 유사한 애플리케이션에서 사용할 수 있도록 config.yaml 파일의 암호화되지 않은 비밀번호 버전을 사용하여 에이전트 노드의 파일 시스템에 파일을 씁니다.
--------
host: grtapp01.grt.local
password: Secret12345
이 블로그 게시물에서는 암호와 같은 중요한 데이터가 안전한 방식으로 저장되고 처리되도록 하는 간단하고 강력한 사용 사례를 다루었습니다.
참조
지연된 기능이 있는 꼭두각시 EPP 템플릿
https://puppet.com/docs/puppet/6.17/template_with_deferred_values.html
Azure 가상 머신 관리 ID
https://docs.microsoft.com/en-us/azure/key-vault/general/tutorial-python-virtual-machine
Reference
이 문제에 관하여(꼭두각시 Azure Key Vault 통합), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/puppet/puppet-azure-key-vault-integration-328j텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)