Vault Agent를 Windows 서비스로 실행하기

Vault Agent를 Windows 서비스로 실행하기

Vault Agent는 Windows 서비스로 실행할 수 있습니다. 그러려면 Vault Agent를 Windows 서비스 제어 관리자(Service Control Manager)에 등록해야 합니다. 등록 후에는 다른 Windows 서비스처럼 시작할 수 있습니다.

이 가이드는 Vault Agent를 예시로 하지만, vault.exe에 주는 구성과 하위 명령을 적절히 바꾸면 Vault Proxy에도 쉽게 적용할 수 있습니다.

참고

  • 이 페이지의 명령은 Administrator 권한이 있는 PowerShell 세션에서 실행하세요.
  • 구성 파일에서 Windows 파일 경로를 지정할 때는 백슬래시 대신 C:/foo/bar/file.txt처럼 형식화해야 합니다.

출처: 문서

본문

Vault Agent를 Windows 서비스로 등록하기

Vault Agent를 Windows 서비스로 등록하는 방법은 여러 가지입니다. 한 가지 방법은 sc.exe를 사용하는 것입니다. sc.exe는 Vault 바이너리와 연결된 에이전트 구성 파일의 경로에 공백이 없을 때 가장 잘 동작합니다. 경로에 공백이 있으면 공백이 있는 경로를 따옴표로 감싸야 하고, sc.exe가 만족하도록 따옴표를 올바르게 이스케이프하는 것은 쉬운 일이 아니므로 sc.exe를 제대로 동작시키기가 꽤 까다로울 수 있습니다. 경로에 공백이 있거나 sc.exe를 사용하고 싶지 않다면, New-Service cmdlet을 사용할 수 있습니다. New-Service는 따옴표 이스케이프 방식에 대해 덜 까다로워 때로는 더 쉬울 수 있습니다. 두 방식의 예를 아래에 보여드립니다.

sc.exe 사용하기

중요

특히 경로에 공백이 있을 때는 잠재적인 권한 상승 위험을 피하기 위해 서비스의 실행 파일 경로를 따옴표로 감싸야 합니다.

sc.exe를 사용한다면 sc가 아니라 반드시 sc.exe를 명시적으로 지정하세요. 아래 명령은 "Vault Agent"를 표시 이름으로 사용하고 Windows 시작 시 자동으로 시작되도록 Vault Agent를 서비스로 만드는 방법을 보여줍니다. binPath 인자는 Vault 실행 파일의 완전한 경로와 필요한 모든 인자를 포함해야 합니다.

PS C:\Windows\system32> sc.exe create VaultAgent binPath="C:\vault\vault.exe agent -config=C:\vault\agent-config.hcl" displayName="Vault Agent" start=auto
[SC] CreateService SUCCESS

모든 인자에서 = 뒤의 공백은 의도적이며 필수라는 점을 주의하세요.

성공 메시지를 받으면 서비스가 서비스 관리자에 등록된 것입니다.

오류가 발생하면 binPath=의 내용을 PowerShell 세션에서 직접 실행해 결과를 관찰하면서 바이너리 경로와 인자를 확인하세요.

New-Service 사용하기

New-Service의 구문은 약간 다르지만 요지는 같습니다. 아래 호출은 위의 sc.exe 호출과 동일합니다.

PS C:\Windows\system32> New-Service -Name "VaultAgent" -BinaryPathName "C:\vault\vault.exe agent -config=C:\vault\agent-config.hcl" -DisplayName "Vault Agent" -StartupType "Automatic"

Status   Name               DisplayName
------   ----               -----------
Stopped  VaultAgent         Vault Agent

앞서 언급했듯이 Vault 실행 파일 및/또는 에이전트 구성 경로에 공백이 있으면 New-Service가 더 사용하기 쉽습니다. 아래는 공백이 있는 경로로 Vault Agent를 서비스로 구성하는 예입니다.

PS C:\Windows\system32> New-Service -Name "VaultAgent" -BinaryPathName '"C:\my dir\vault.exe" agent -config="C:\my dir\agent-config.hcl"' -DisplayName "Vault Agent" -StartupType "Automatic"

Status   Name               DisplayName
------   ----               -----------
Stopped  VaultAgent         Vault Agent

경로 자체만 큰따옴표로 감싸고, 경로에 사용된 큰따옴표를 이스케이프하기 위해 전체 BinaryPathName을 작은따옴표로 감쌌다는 점을 주의하세요.

이 과정 중 문제가 생겨 나중에 경로를 수동으로 편집해야 한다면 레지스트리 편집기에서 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VaultAgent 키를 찾으세요. 해당 키의 ImagePath 값을 올바른 경로로 편집할 수 있습니다.

Vault Agent 서비스 시작하기

서비스를 시작하는 방법은 여러 가지입니다.

  • sc.exe 명령 사용.
  • Start-Service cmdlet 사용.
  • Windows 서비스 관리자로 가서 서비스 이름 열에서 VaultAgent를 찾아 Start 버튼을 클릭.

sc.exe로 Vault Agent 시작 예

PS C:\Windows\system32> sc.exe start VaultAgent

SERVICE_NAME: VaultAgent
     TYPE               : 10  WIN32_OWN_PROCESS
     STATE              : 4  RUNNING
                             (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
     WIN32_EXIT_CODE    : 0  (0x0)
     SERVICE_EXIT_CODE  : 0  (0x0)
     CHECKPOINT         : 0x0
     WAIT_HINT          : 0x0
     PID                : 6548
     FLAGS              :

Start-Service로 Vault Agent 시작 예

PS C:\Windows\system32> Start-Service -Name "VaultAgent"

서비스가 성공적으로 시작된 경우 New-Service는 출력을 반환하지 않는다는 점을 주의하세요.

더 알아보기 (Learn more)