Vault backend storage용 Google Cloud Spanner 구성
Vault backend storage용 Google Cloud Spanner 구성
Google Cloud Spanner storage backend는 Vault의 데이터를 Spanner에 영구 저장하는 데 사용됩니다. Spanner는 글로벌 규모의 트랜잭션 일관성, 스키마, SQL, 고가용성을 위한 자동·동기 복제를 제공하는 완전 관리형 미션 크리티컬 관계형 데이터베이스 서비스입니다.
출처: 문서
본문
- 고가용성 – Google Cloud Spanner storage backend는 고가용성을 지원합니다. Google Cloud Spanner storage backend는 세션을 획득할 때 Vault 노드의 시스템 시간을 사용하므로, Vault 서버 간의 시계 오차는 잠금 경합을 일으킬 수 있습니다.
- 커뮤니티 지원 – Google Cloud Spanner storage backend는 커뮤니티가 지원합니다. HashiCorp 직원의 검토를 거쳤지만 기술에 대해 그렇게 잘 알지 못할 수 있습니다. 문제가 발생하면 원저자에게 문의하도록 안내받을 수 있습니다.
storage "spanner" {
database = "projects/my-project/instances/my-instance/databases/my-database"
}
스키마 또는 Google Cloud Spanner에 대한 자세한 내용은 Google Cloud Spanner 문서를 참고하세요.
spanner 설정
Google Cloud Spanner Vault storage backend를 사용하려면 Google Cloud Platform 계정이 있어야 합니다. API 또는 웹 인터페이스를 사용해 데이터베이스와 다음 테이블을 만드세요:
"Edit as text"를 선택하고 다음을 스키마로 복사-붙여넣기할 수 있습니다. 이들은 기본 테이블 이름입니다. 다른 테이블 이름을 사용하기로 선택했다면 구성도 그에 맞게 갱신해야 합니다.
CREATE TABLE Vault (
Key STRING(MAX) NOT NULL,
Value BYTES(MAX),
) PRIMARY KEY (Key);
CREATE TABLE VaultHA (
Key STRING(MAX) NOT NULL,
Value STRING(MAX),
Identity STRING(36) NOT NULL,
Timestamp TIMESTAMP NOT NULL,
) PRIMARY KEY (Key);
현재 Google Cloud Spanner storage backend는 테이블 자동 생성을 지원하지 않지만, 이는 향후 개선 사항이 될 수 있습니다. 스키마 또는 Google Cloud Spanner에 대한 자세한 내용은 Google Cloud Spanner 문서를 참고하세요.
spanner 인증
Google Cloud Spanner Vault storage backend는 공식 Google Cloud Golang SDK를 사용합니다. 즉 Google Cloud에 자격 증명을 제공하는 일반적인 방법을 지원합니다.
-
환경 변수
GOOGLE_APPLICATION_CREDENTIALS. 이는 보통 서비스 계정용 Google Cloud 자격 증명 파일의 경로로 지정됩니다. 이 환경 변수가 있으면 그 결과 자격 증명이 사용됩니다. 자격 증명이 유효하지 않으면 오류가 반환됩니다. -
기본 인스턴스 자격 증명. 환경 변수가 없으면 기본 서비스 계정 자격 증명이 사용됩니다.
서비스 계정에 대한 자세한 내용은 Google Cloud Service Accounts 문서를 참고하세요.
이 storage backend를 사용하려면 서비스 계정에 다음 최소 scope가 있어야 합니다:
https://www.googleapis.com/auth/google-cloud-spanner.data
spanner 파라미터
-
database(string: <required>)– 데이터베이스의 이름을 지정합니다. 프로젝트 ID와 인스턴스를 포함한 "경로"로 지정됩니다. 예를 들어:projects/my-project/instances/my-instance/databases/my-database -
table(string: "Vault")- 데이터가 저장되고 검색되는 테이블의 이름을 지정합니다. -
max_parallel(int: 128)- 수행할 최대 병렬 작업 수를 지정합니다.
고가용성 파라미터
-
ha_enabled(string: "false")- 고가용성 모드가 활성화되었는지 여부를 지정합니다. 부울 값이지만 "true" 또는 "false" 같은 문자열로 지정됩니다. -
ha_table(string: "VaultHA")- 고가용성 정보를 저장하는 데 사용할 테이블의 이름을 지정합니다. 기본적으로table이름 뒤에 "HA"를 붙인 것입니다.
spanner 예시
고가용성
이 예시는 고가용성을 활성화한 Google Cloud Spanner를 구성하는 방법을 보여줍니다.
api_addr = "https://vault-leader.my-company.internal"
storage "spanner" {
database = "projects/demo/instances/abc123/databases/vault-data"
ha_enabled = "true"
}
사용자 지정 테이블
이 예시는 Google Cloud Spanner Vault storage backend에서 데이터 및 HA용 사용자 지정 테이블 이름을 나열하는 방법을 보여줍니다.
storage "spanner" {
database = "projects/demo/instances/abc123/databases/vault-data"
table = "VaultData"
ha_table = "VaultLeader"
}