Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
vault — 비밀 관리, 서비스로서의 암호화, 권한 있는 접근 관리를 위한 도구 | Kitploit
도구/GitHubGitHub/hashicorp/vault
Authentication & AuthorizationEncryption/Decryption ToolsCloud SecurityDevSecOpsSecret DetectionIdentity & Access Management (IAM)
GitHubhashicorp/vault

vault

비밀 관리, 서비스로서의 암호화, 권한 있는 접근 관리를 위한 도구

저장소 보기
36.1k4.7k10시간 40분 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

Vault build ci vault enterprise


참고: 저희는 Vault의 보안과 사용자 신뢰를 매우 중요하게 생각합니다. Vault에서 보안 문제를 발견하셨다고 생각되면 [email protected]으로 연락하여 책임 있는 방식으로 공개해 주시기 바랍니다.


  • 웹사이트: developer.hashicorp.com/vault
  • 공지 목록: Google Groups
  • 토론 포럼: Discuss
  • 문서: https://developer.hashicorp.com/vault/docs
  • 튜토리얼: https://developer.hashicorp.com/vault/tutorials
  • 인증 시험: https://developer.hashicorp.com/certifications/security-automation
  • 문서 원본: https://github.com/hashicorp/web-unified-docs
Vault 로고

Vault는 시크릿에 안전하게 접근하기 위한 도구입니다. 시크릿은 API 키, 비밀번호, 인증서 등 접근을 엄격히 제어하려는 모든 것을 의미합니다. Vault는 모든 시크릿에 대해 통합된 인터페이스를 제공하면서도 엄격한 접근 제어와 상세한 감사 로그 기록을 제공합니다.

현대 시스템은 데이터베이스 자격 증명, 외부 서비스용 API 키, 서비스 지향 아키텍처 통신을 위한 자격 증명 등 수많은 시크릿에 접근해야 합니다. 누가 어떤 시크릿에 접근하는지 파악하는 것 자체가 이미 매우 어렵고 플랫폼에 따라 다릅니다. 여기에 키 순환, 안전한 저장, 상세한 감사 로그까지 추가하는 것은 맞춤형 솔루션 없이는 거의 불가능합니다. 바로 이 지점에서 Vault가 등장합니다.

Vault의 주요 기능은 다음과 같습니다:

  • 안전한 시크릿 저장: Vault는 임의의 키/값 쌍을 저장할 수 있습니다. Vault는 데이터를 영구 저장소에 쓰기 전에 암호화하므로, 원시 저장소에 접근한다고 해서 시크릿에 접근할 수 있는 것은 아닙니다. Vault는 디스크, Consul 등에 쓸 수 있습니다.

  • 동적 시크릿: Vault는 AWS나 SQL 데이터베이스와 같은 일부 시스템에 대해 필요할 때 시크릿을 생성할 수 있습니다. 예를 들어, 애플리케이션에서 S3 버킷에 접근해야 할 때 Vault에 자격 증명을 요청하면, Vault가 유효한 권한을 가진 AWS 키 쌍을 그때그때 생성합니다. 이러한 동적 시크릿을 생성한 후, Vault는 임대 기간이 끝나면 자동으로 해지합니다.

  • 데이터 암호화: Vault는 데이터를 저장하지 않고도 암호화 및 복호화할 수 있습니다. 이를 통해 보안 팀은 암호화 매개변수를 정의하고, 개발자는 자체 암호화 방법을 설계할 필요 없이 SQL 데이터베이스와 같은 위치에 암호화된 데이터를 저장할 수 있습니다.

  • 임대 및 갱신: Vault는 각 시크릿에 임대(lease) 를 연결합니다. 임대가 끝나면 Vault가 자동으로 시크릿을 해지합니다. 클라이언트는 내장된 갱신 API를 통해 임대를 갱신할 수 있습니다.

  • 해지: Vault는 시크릿 해지 기능을 내장하고 있습니다. Vault는 단일 시크릿뿐만 아니라 시크릿 트리(예: 특정 사용자가 읽은 모든 시크릿, 특정 유형의 모든 시크릿)를 해지할 수 있습니다. 해지는 키 순환뿐만 아니라 침해 발생 시 시스템 잠금에도 도움이 됩니다.

문서, 시작하기 및 인증 시험

문서는 Vault 웹사이트에서 확인할 수 있습니다.

Vault가 처음이고 보안 자동화를 시작하려면, HashiCorp 학습 플랫폼의 시작하기 가이드를 확인해 보세요. 학습을 계속하기 위한 추가 가이드도 있습니다.

애플리케이션 내에서 다양한 프로그래밍 언어로 Vault와 상호 작용하는 방법에 대한 예제는 vault-examples 저장소를 참조하세요. 바로 사용할 수 있는 샘플 애플리케이션도 제공됩니다.

인증 시험에 합격하여 Vault 지식을 인증받으세요. 시험에 대한 정보는 인증 페이지를 방문하고, HashiCorp 학습 플랫폼에서 학습 자료를 찾아보세요.

Vault 개발하기

Vault 자체나 내장 시스템을 개발하려면 먼저 Go가 머신에 설치되어 있어야 합니다.

로컬 개발을 위해서는 Go가 제대로 설치되었는지 확인하고, GOPATH를 설정한 다음 GOBIN 변수를 $GOPATH/bin으로 설정하세요. $GOPATH/bin이 PATH에 포함되어 있는지 확인하세요. 일부 배포판에서는 이전 버전의 빌드 도구를 제공하기 때문입니다.

다음으로 이 저장소를 클론합니다. Vault는 Go Modules을 사용하므로, GOPATH 외부 에 저장소를 클론하는 것이 좋습니다. 그런 다음 환경을 부트스트래핑하여 필요한 빌드 도구를 다운로드할 수 있습니다:

root@kitploit:~
$ make bootstrap
...

Vault의 개발 버전을 컴파일하려면 make 또는 make dev를 실행하세요. 그러면 Vault 바이너리가 bin과 $GOPATH/bin 폴더에 생성됩니다:

root@kitploit:~
$ make dev
...
$ bin/vault
...

UI가 포함된 Vault의 개발 버전을 컴파일하려면 make static-dist dev-ui를 실행하세요. 그러면 Vault 바이너리가 bin과 $GOPATH/bin 폴더에 생성됩니다:

root@kitploit:~
$ make static-dist dev-ui
...
$ bin/vault
...

테스트를 실행하려면 make test를 입력하세요. 참고: 이를 위해서는 Docker가 설치되어 있어야 합니다. 종료 코드 0으로 종료되면 모든 것이 정상입니다!

root@kitploit:~
$ make test
...

특정 패키지를 개발 중인 경우 TEST 변수를 지정하여 해당 패키지에 대한 테스트만 실행할 수 있습니다. 예를 들어 아래에서는 vault 패키지 테스트만 실행됩니다.

root@kitploit:~
$ make test TEST=./vault
...

문제 해결

could not read Username for 'https://github.com'와 같은 오류가 발생하면 git 구성을 다음과 같이 조정해야 할 수 있습니다:

root@kitploit:~
$ git config --global --add url."[email protected]:".insteadOf "https://github.com/"

Vault 가져오기

이 저장소는 다른 프로젝트에서 가져올 수 있는 두 개의 라이브러리를 게시합니다: github.com/hashicorp/vault/api와 github.com/hashicorp/vault/sdk입니다.

이 저장소에는 Vault(제품)도 포함되어 있으며, 대부분의 Go 프로젝트와 마찬가지로 Vault는 Go 모듈을 사용하여 종속성을 관리합니다. 이를 위한 메커니즘은 go.mod 파일입니다. 이 파일이 있으면 이론적으로 Vault를 다른 프로젝트의 종속성으로 가져올 수 있습니다. 일부 다른 프로젝트에서는 Vault 자체 테스트를 위해 개발된 테스트 도구를 활용하기 위해 이렇게 하는 경우도 있습니다. 이것은 Vault 프로젝트의 지원되는 사용 방식이 아니며, 앞으로도 그렇지 않습니다. github.com/hashicorp/vault를 프로젝트로 가져오지 못하는 것과 관련된 버그는 수정하지 않을 것입니다.

아래의 "Docker 기반 테스트" 섹션도 참조하세요.

승인 테스트

Vault는 시크릿 및 인증 방법의 대부분의 기능을 포괄하는 포괄적인 승인 테스트를 제공합니다.

시크릿 또는 인증 방법의 기능을 작업 중이고 제대로 작동하는지(그리고 다른 것을 망가뜨리지 않았는지) 확인하려면 승인 테스트를 실행하는 것이 좋습니다.

경고: 승인 테스트는 실제 리소스를 생성/파괴/수정하므로, 경우에 따라 실제 비용이 발생할 수 있습니다. 버그가 있는 경우 백엔드가 손상되어 고립된 데이터가 남을 가능성이 있습니다. 따라서 승인 테스트는 사용자 책임 하에 실행하시기 바랍니다. 최소한 테스트 중인 백엔드에 대해 별도의 개인 계정에서 실행하는 것이 좋습니다.

승인 테스트를 실행하려면 make testacc를 호출하세요:

root@kitploit:~
$ make testacc TEST=./builtin/logical/consul
...

TEST 변수는 필수이며, 백엔드가 있는 폴더를 지정해야 합니다. TESTARGS 변수를 사용하여 테스트할 특정 리소스로 범위를 좁히는 것이 좋습니다. 한 번에 모두 테스트하면 시간이 매우 오래 걸릴 수 있기 때문입니다.

승인 테스트는 일반적으로 액세스 키와 같은 항목에 대해 다른 환경 변수를 설정해야 합니다. 테스트 자체에서 초기에 오류를 발생시키고 무엇을 설정해야 하는지 알려주므로 여기서는 설명하지 않습니다.

Vault Enterprise 기능에 대한 자세한 내용은 Vault Enterprise 사이트를 방문하세요.

Docker 기반 테스트

NewTestCluster에서 영감을 받은 실험적인 새 테스트 메커니즘을 만들었습니다. 사용 방법 예시:

root@kitploit:~
import (
  "testing"
  "github.com/hashicorp/vault/sdk/helper/testcluster/docker"
)

func Test_Something_With_Docker(t *testing.T) {
  opts := &docker.DockerClusterOptions{
    ImageRepo: "hashicorp/vault", // 또는 "hashicorp/vault-enterprise"
    ImageTag:    "latest",
  }
  cluster := docker.NewTestDockerCluster(t, opts)
  
  client := cluster.Nodes()[0].APIClient()
  _, err := client.Logical().Read("sys/storage/raft/configuration")
  if err != nil {
    t.Fatal(err)
  }
}

Enterprise의 경우:

root@kitploit:~
import (
  "testing"
  "github.com/hashicorp/vault/sdk/helper/testcluster/docker"
)

func Test_Something_With_Docker(t *testing.T) {
  opts := &docker.DockerClusterOptions{
    ImageRepo: "hashicorp/vault-enterprise",
    ImageTag:  "latest",
	VaultLicense: licenseString, // 경로가 아닌 실제 라이선스 바이트
  }
  cluster := docker.NewTestDockerCluster(t, opts)
}

다음은 실제로 사용하는 더 현실적인 예입니다. DefaultOptions는 repo와 tag로 hashicorp/vault:latest를 사용하지만, 환경 변수 VAULT_BINARY도 확인합니다. 설정되어 있으면 VAULT_BINARY가 참조하는 로컬 파일을 컨테이너에 복사합니다. 이는 로컬 변경 사항을 테스트할 때 유용합니다.

VaultLicense 옵션을 설정하는 대신 VAULT_LICENSE_CI 환경 변수를 설정할 수 있습니다. 이는 라이선스를 버전 관리에 커밋하는 것보다 낫습니다.

선택적으로 COMMIT_SHA를 설정할 수 있으며, 이는 디버깅 편의를 위해 빌드하는 이미지 이름에 추가됩니다.

root@kitploit:~
func Test_Custom_Build_With_Docker(t *testing.T) {
  opts := docker.DefaultOptions(t)
  cluster := docker.NewTestDockerCluster(t, opts)
}

github.com/hashicorp/vault/sdk/helper/testcluster 패키지에는 다양한 헬퍼가 있습니다. 예를 들어 아래 테스트는 각각 PR 또는 DR 복제를 사용하여 3-노드 클러스터 쌍을 만들고 연결하며, 전달된 컨텍스트가 만료되기 전에 복제 상태가 정상이 되지 않으면 실패합니다.

다시 말하지만, 작성된 대로 이러한 테스트는 로컬에 Vault Enterprise 바이너리가 있고 env var VAULT_BINARY가 이를 가리키도록 설정되어 있으며 VAULT_LICENSE_CI가 설정되어 있어야 합니다.

root@kitploit:~
func TestStandardPerfReplication_Docker(t *testing.T) {
  opts := docker.DefaultOptions(t)
  r, err := docker.NewReplicationSetDocker(t, opts)
  if err != nil {
      t.Fatal(err)
  }
  defer r.Cleanup()

  ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
  defer cancel()
  err = r.StandardPerfReplication(ctx)
  if err != nil {
    t.Fatal(err)
  }
}

func TestStandardDRReplication_Docker(t *testing.T) {
  opts := docker.DefaultOptions(t)
  r, err := docker.NewReplicationSetDocker(t, opts)
  if err != nil {
    t.Fatal(err)
  }
  defer r.Cleanup()

  ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
  defer cancel()
  err = r.StandardDRReplication(ctx)
  if err != nil {
    t.Fatal(err)
  }
}

마지막으로, 사용자 지정 바이너리로 기존 OSS Docker 테스트를 실행하는 예시입니다:

root@kitploit:~
$ GOOS=linux make dev
$ VAULT_BINARY=$(pwd)/bin/vault go test -run 'TestRaft_Configuration_Docker' ./vault/external_tests/raft/raft_binary
ok      github.com/hashicorp/vault/vault/external_tests/raft/raft_binary        20.960s
도구 다운로드