키/값 v2 데이터 패치(Patch)
키/값 v2 데이터 패치(Patch)
패치 과정을 사용해 kv v2 플러그인의 기존 데이터 경로에서 특정 값을 업데이트하거나 새 키/값 쌍을 추가해요.
전제 조건(Assumptions)
kvv2 플러그인을 설정했어요.- 인증 토큰에
kvv2 플러그인에 대한 적절한 권한이 있어요.PATCH작업으로 직접 업데이트하려면patch권한.GET과POST작업을 결합해 Vault CLI로 간접 업데이트하려면create+update권한.
- 패치할 키 또는 서브키를 알고 있어요.
출처: 문서
본문
CLI
vault kv patch 명령을 사용하고 패치를 적용하기 전에 체크-앤-셋 작업을 수행하려면 -cas 플래그를 기대하는 데이터 버전으로 설정해요.
$ vault kv patch \
-cas <target_version> \
-max-versions <max_versions> \
-mount <mount_path> \
<secret_path> \
<key_name>=<key_value>
예를 들어:
$ vault kv patch \
-cas 2 \
-mount shared \
dev/square-api \
prod=5678
======= Secret Path =======
shared/data/dev/square-api
======= Metadata =======
Key Value
--- -----
created_time 2024-11-13T21:52:10.326204209Z
custom_metadata <nil>
deletion_time n/a
destroyed false
version 2
-cas 버전이 대상 경로 데이터의 현재 버전보다 오래되면 패치가 실패해요.
$ vault kv patch -cas 1 -mount shared dev/square-api prod=5678
Error writing data to shared/data/dev/square-api: Error making API request.
URL: PATCH http://192.168.0.1:8200/v1/shared/data/dev/square-api
Code: 400. Errors:
* check-and-set parameter did not match the current version
패치를 강제하려면 -cas 플래그를 빼거나, -method 플래그로 read+write 패치 방식을 사용할 수 있어요. 예를 들어:
$ vault kv patch -method rw -mount shared dev/square-api prod=5678
======= Secret Path =======
shared/data/dev/square-api
======= Metadata =======
Key Value
--- -----
created_time 2024-11-13T21:58:32.128442898Z
custom_metadata <nil>
deletion_time n/a
destroyed false
version 3
HTTP PATCH 작업 대신, read+write 방식은 GET과 POST 작업의 시퀀스를 사용해 대상 경로에 저장된 최신 버전의 데이터를 가져오고, 대상 키에 대해 인메모리 업데이트를 수행한 다음, 업데이트를 플러그인에 푸시해요.
GUI
시크릿 경로의 Overview 화면을 열고, Secret 탭을 선택한 뒤 Patch를 클릭해 GUI에서 패치를 수행할 수 있어요.
API
/{plugin_mount_path}/data/{secret_path}에 PATCH 호출을 보내 데이터를 패치할 수 있어요. cas 옵션에 기대 버전을 지정하면 체크-앤-셋 검증을 수행할 수 있어요.
더 알아보기 (Learn more)
- kv v2 플러그인 설정 방법을 살펴보세요.
- 데이터 작성(write)과 서브키 읽기(read subkey) 방법을 확인해 보세요.
- KV v2 플러그인 API 문서에서 data 엔드포인트를 확인해 보세요.