본문 바로가기

OSS

Kubernetes에서 Vault Agent Injector로 구성하기(2)

반응형

HCP Vault 설정

Vault CLI에 로그인하고 설정하는 방법을 설명합니다.

💡 Vault CLI가 없다면 아래 링크를 참고하여 설치할 수 있습니다. https://developer.hashicorp.com/vault/downloads

 

Install | Vault | HashiCorp Developer

Explore Vault product documentation, tutorials, and examples.

developer.hashicorp.com

 

Vault CLI로 HCP Vault 접근

Vault에 로그인하기 전에 환경변수에 Endpoint를 지정하고 로그인을 진행합니다.

Vault_ADDR 주소는 HCP Vault 웹 페이지에서 확인 가능합니다.

  1. 앞서 생성한 vault-cluster의 상세 정보를 확인합니다.
  2. 아래 스크린샷을 참고하여 Cluster URLs에서 Public 을 누르게 되면 자동으로 URL 주소가 복사됩니다.

 

복사한 URL 주소로 VAULT_ADDR 변수에 복사된 값을 저장합니다.

💡 만약 다른 Vault 서버에 접속하고 싶다면 변수를 접속하고 싶은 주소로 값을 재설정 하면 됩니다.

export VAULT_ADDR=https://vault-cluster-public-vault-xxxxxxxx.xxxxxxxx.z1.hashicorp.cloud:8200

 

vault에 로그인을 하기 위해서는 token 정보가 필요합니다. token 정보는 HCP Vault 웹 페이지에서 생성할 수 있습니다.

  1. 앞서 생성한 vault-cluster의 상세 정보를 확인합니다.
  2. 아래 스크린샷을 참고하여 Generate token을 누르게 되면 token이 생성되고 자동으로 복사됩니다.

 

복사한 token 정보로 로그인을 진행합니다.

vault login

로그인 결과는 다음과 유사합니다.

$ vault login
Token (will be hidden):
Success! You are now authenticated. The token information displayed below
is already stored in the token helper. You do NOT need to run "vault login"
again. Future Vault requests will automatically use this token.

Key                  Value
---                  -----
token                hvs.CAESILy6bAih2rLcdnhVi3kWkrQXzIhvOZDFdeVMGPfrK9A5GigKImh2cy5pTXZXY0cxeXRDYWhtcXk1NTI1d1JPT2YuNFBnRkcxxxxx
token_accessor       P2j1s60LQlA1OwHm78Ixxxxx.xxxxx
token_duration       5h59m41s
token_renewable      false
token_policies       ["default" "hcp-root"]
identity_policies    []
policies             ["default" "hcp-root"]

 

현재 token 정보를 아래 명령어로 확인 가능합니다.

vault token lookup

vault의 상태 확인을 아래 명령어로 확인 가능합니다.

vault status

 

Vault CLI로 Secret 생성

사용하려는 namespace 이름을 VAULT_NAMESPACE 변수에 저장합니다.

💡 만약 다른 namespace에 접근하고 싶다면 VAULT_NAMESPACE 변수를 원하는 namespace로 재설정 하면 됩니다. 기본 namespace는 admin 입니다.

export VAULT_NAMESPACE=admin

 

Vault에서는 다양한 Secrets Engine이 존재하지만 이 문서에서는 kv(key/vaule)로 생성합니다.

💡 kv 저장소는 version 1과 version 2로 두가지 버전으로 제공하고 있습니다. 자세한 내용은 아래 링크에서 참고할 수 있습니다.

Vault KV Secrets Engine

 

Vault KV Secrets Engine

Vault는 어플리케이션 내의 데이터베이스 접속 비밀번호나 API 접근 토근 같은 민감한 정보를 저장할 수 있도록 Key-Value 저장소를 지원합니다. 이 kv 저장소는 두 가지 모드를 지원하는데 v1과 v2가

shanta.tistory.com

 

# TEST example
vault secrets enable -path=secret kv-v2

 

생성된 kv에 secret 정보 key vaule 형태로 저장합니다.

# TEST example
vault kv put secret/test/web \\
  apiKey="ABC0DEFG9876" \\
  service="web"

 

생성한 secret 정보를 아래 명령어로 확인할 수 있습니다.

# TEST example
vault kv get secret/test/web

 

secret 확인 결과는 다음과 유사합니다.

$ vault kv get secret/test/web
==== Secret Path ====
secret/data/test/web

======= Metadata =======
Key                Value
---                -----
created_time       2023-02-04T11:45:42.67609258Z
custom_metadata    <nil>
deletion_time      n/a
destroyed          false
version            2

===== Data =====
Key        Value
---        -----
apiKey     ABC0DEFG9876
service    web

 

secret에 접근할 수 있는 정책을 생성합니다.

# TEST example
vault policy write test/web - << EOF
# Grant 'create', 'read' and 'update' permission to paths prefixed by 'secret/data/test/'
path "secret/data/test/web" {
  capabilities = [ "create", "read" ]
}
EOF

 

생성한 정책 정보를 아래 명령어로 확인할 수 있습니다.

# TEST example
vault policy read test/web

정책 확인 결과는 다음과 유사합니다.

$ vault policy read test/web
# Grant 'create', 'read' and 'update' permission to paths prefixed by 'secret/data/test/'
path "secret/data/test/web" {
  capabilities = [ "create", "read" ]
}

 

 

 

 

반응형