>백엔드 개발 >Golang >Golang 프로젝트의 Vault 통합 가이드

Golang 프로젝트의 Vault 통합 가이드

WBOY
WBOY원래의
2023-07-17 14:16:361607검색

Golang 프로젝트의 Vault 통합 가이드

개요:
Vault는 민감한 데이터를 관리하고 보호하기 위한 도구로 비밀번호, API 키, 액세스 토큰 등과 같은 민감한 정보를 안전하게 저장할 수 있습니다. Golang 프로젝트에서는 Vault를 통합하여 승인되지 않은 사람의 유출이나 접근을 방지함으로써 민감한 정보를 보호할 수 있습니다. 이 글에서는 Vault를 Golang 프로젝트에 통합하는 방법을 소개하고 코드 예제를 제공합니다.

1단계: Vault 설치 및 구성

먼저 Vault를 설치하고 기본 설정을 수행해야 합니다.

1.1 Vault 설치
Vault 공식 웹사이트(https://www.vaultproject.io/)에서 사용 중인 운영 체제에 맞는 Vault 바이너리를 다운로드하여 시스템 경로에 추가할 수 있습니다.

1.2 Vault 서버 시작
터미널에서 다음 명령을 실행하여 Vault 서버를 시작합니다.

vault server -dev

이렇게 하면 개발 모드 Vault 서버가 로컬에서 시작됩니다.

1.3 Vault 구성
다음 명령을 실행하여 Vault 주소를 설정합니다.

export VAULT_ADDR='http://127.0.0.1:8200'

2단계: Vault API를 사용하여 인증

다음으로 Vault의 API를 사용하여 액세스 토큰을 인증하고 획득합니다.

2.1 Vault 라이브러리 가져오기
Golang 프로젝트에서 Vault 라이브러리를 가져옵니다.

import (
"github.com/hashicorp/vault/api"
)

2.2 Vault 클라이언트 만들기
다음 코드 조각을 사용하여 만들기 Vault 클라이언트:

func CreateVaultClient() (*api.Client, error) {
client, err := api.NewClient(&api.Config{

Address: os.Getenv("VAULT_ADDR"),

})

if err != nil {

return nil, err

}

return client, nil
}

2.3 로그인 및 액세스 토큰 받기
다음 코드를 사용하여 로그인하고 액세스 토큰 받기:

func GetVaultToken(client *api.Client) (문자열, 오류) {
옵션: = map[string]인터페이스{}{

"role_id":   os.Getenv("VAULT_ROLE_ID"),
"secret_id": os.Getenv("VAULT_SECRET_ID"),

}

response, err := client.Logical().Write("auth/approle/login", options)
if err != nil {

return "", err

}

token, ok := response.Auth.ClientToken
if !ok {

return "", errors.New("failed to retrieve token from Vault")

}

return token, nil
}

2.4 액세스 토큰 사용
이전 단계에서 얻은 액세스 토큰을 사용하여 민감한 파일에 액세스 Vault 정보:

func GetSecretFromVault(client *api.Client, secretPath string) (문자열, 오류) {
secret, err := client.Logical().Read(secretPath)
if err != nil {

return "", err

}

if secret == nil {

return "", errors.New("secret not found")

}

data, ok := secret.Data["data"].(map[string]interface{})
if !ok {

return "", errors.New("invalid secret format")

}

key , ok := data["key"].(string)
if !ok {

return "", errors.New("key not found in secret")

}

return key, nil
}

3단계: 코드에서 Vault 사용

위 단계를 통해 우리는 이미 a Vault로 인증하고 민감한 정보에 액세스할 수 있는 Golang 클라이언트. 이제 코드에서 사용할 수 있습니다.

func main() {
// Vault 클라이언트 만들기
클라이언트, err := CreateVaultClient()
if err != nil {

log.Fatalf("failed to create Vault client: %v", err)

}

// 액세스 토큰 가져오기
토큰, err := GetVaultToken( 클라이언트)
if err != nil {

log.Fatalf("failed to get Vault token: %v", err)

}

// 액세스 토큰을 사용하여 Vault
secretKey, err := GetSecretFromVault(client, "secret/my-secret-key")
if err != nil {

log.Fatalf("failed to get secret key from Vault: %v", err)

}

// 획득한 민감한 정보를 비즈니스 로직 처리에 사용
// ...
}

위 코드에서는 먼저 Vault 클라이언트를 생성한 후 Vault의 API를 사용하여 로그인하고 액세스 토큰. 다음으로 액세스 토큰을 사용하여 Vault에서 민감한 정보를 얻고 이를 비즈니스 로직 처리에 사용합니다.

결론:
Vault를 통합하면 Golang 프로젝트의 민감한 정보를 보호하고 관리하는 것이 더욱 간편해지고 안전해집니다. Vault의 API를 사용하면 Vault에 저장된 민감한 정보를 쉽게 인증하고 액세스할 수 있습니다. 이 문서에 제공된 통합 가이드와 샘플 코드가 Golang 프로젝트에서 Vault를 사용하는 데 도움이 되기를 바랍니다.

위 내용은 Golang 프로젝트의 Vault 통합 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.