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 중국어 웹사이트의 기타 관련 기사를 참조하세요!