Vault backend storage용 DynamoDB 구성
Vault backend storage용 DynamoDB 구성
DynamoDB storage backend는 Vault의 데이터를 DynamoDB 테이블에 영구 저장하는 데 사용됩니다.
출처: 문서
본문
- 고가용성 – DynamoDB storage backend는 고가용성을 지원합니다. DynamoDB는 잠금의 세션 수명을 구현할 때 Vault 노드의 시간을 사용하므로, Vault 노드 간의 심한 시계 오차(clock skew)는 잠금에 경합 문제를 일으킬 수 있습니다.
- 커뮤니티 지원 – DynamoDB storage backend는 커뮤니티가 지원합니다. HashiCorp 직원의 검토를 거쳤지만 기술에 대해 그렇게 잘 알지 못할 수 있습니다. 이 storage backend에 문제가 발생하면 원저자에게 지원을 받으라고 안내받을 수 있습니다.
storage "dynamodb" {
ha_enabled = "true"
region = "us-west-2"
table = "vault-data"
}
DynamoDB 테이블의 읽기/쓰기 용량에 대한 자세한 내용은 공식 AWS DynamoDB 문서를 참고하세요.
DynamoDB 파라미터
-
billing_mode(string: "PROVISIONED")- 테이블에 사용해야 하는 과금 모드를 지정합니다. 선택지는 "PROVISIONED" 또는 "PAY_PER_REQUEST"입니다.AWS_DYNAMODB_BILLING_MODE환경 변수로도 과금 모드를 구성할 수 있습니다. -
dynamodb_allow_updates(string: "")- 제공된 값이 기존 테이블과 다르면 테이블의 과금 모드 또는 읽기/쓰기 용량을 갱신해야 하는지 여부를 지정합니다.AWS_DYNAMODB_ALLOW_UPDATES환경 변수로도 갱신을 구성할 수 있습니다. -
endpoint(string: "")– AWS 호환 대체 DynamoDB 엔드포인트를 지정합니다. 환경 변수AWS_DYNAMODB_ENDPOINT로도 제공할 수 있습니다. -
ha_enabled(string: "false")– 이 backend를 사용해 Vault를 고가용성 모드로 실행할지 여부를 지정합니다. 유효한 값은 "true" 또는 "false"입니다. 환경 변수DYNAMODB_HA_ENABLED로도 제공할 수 있습니다. -
max_parallel(string: "128")– 최대 동시 요청 수를 지정합니다. -
region(string "us-east-1")– AWS 리전을 지정합니다. 환경 변수AWS_DEFAULT_REGION으로도 제공할 수 있습니다. -
read_capacity(int: 5)– Vault가 DynamoDB 테이블을 만드는 경우 사용할 테이블의 초당 최대 읽기 소비 수를 지정합니다.table이 이미 존재하고dynamodb_allow_updates가 설정되지 않았으면 이 값은 효과가 없습니다.AWS_DYNAMODB_READ_CAPACITY환경 변수로도 읽기 용량을 설정할 수 있습니다. -
table(string: "vault-dynamodb-backend")– Vault 데이터를 저장할 DynamoDB 테이블의 이름을 지정합니다. 지정된 테이블이 아직 없으면 초기화 중에 생성됩니다. 환경 변수AWS_DYNAMODB_TABLE로도 제공할 수 있습니다. 아래의 테이블 스키마 정보를 참고하세요. -
write_capacity(int: 5)– Vault가 DynamoDB 테이블을 만드는 경우 사용할 테이블의 초당 최대 쓰기 수를 지정합니다.table이 이미 존재하고dynamodb_allow_updates가 설정되지 않았으면 이 값은 효과가 없습니다.AWS_DYNAMODB_WRITE_CAPACITY환경 변수로도 쓰기 용량을 설정할 수 있습니다.
AWS로 인증하는 데 다음 설정이 사용됩니다. EC2 인스턴스에서 Vault 서버를 실행한다면 EC2 인스턴스 프로파일 서비스를 사용해 Vault가 DynamoDB API 호출에 사용할 자격 증명을 제공할 수도 있습니다. access_key와 secret_key 필드를 비워 두면 Vault가 AWS 메타데이터 서비스에서 자격 증명을 검색하려 시도합니다.
-
access_key(string: <required>)– AWS access key를 지정합니다. 환경 변수AWS_ACCESS_KEY_ID로도 제공할 수 있습니다. -
secret_key(string: <required>)– AWS secret key를 지정합니다. 환경 변수AWS_SECRET_ACCESS_KEY로도 제공할 수 있습니다. -
session_token(string: "")– AWS 세션 토큰을 지정합니다. 환경 변수AWS_SESSION_TOKEN으로도 제공할 수 있습니다.
필요한 AWS 권한
Vault가 DynamoDB에 접근하는 데 사용하는 IAM 사용자 또는 EC2 인스턴스 프로파일의 관리 정책은 Vault가 DynamoDB 테이블에 필요한 작업을 수행하기 위해 다음 권한을 포함해야 합니다:
"Statement": [
{
"Action": [
"dynamodb:DescribeLimits",
"dynamodb:DescribeTimeToLive",
"dynamodb:ListTagsOfResource",
"dynamodb:DescribeReservedCapacityOfferings",
"dynamodb:DescribeReservedCapacity",
"dynamodb:ListTables",
"dynamodb:BatchGetItem",
"dynamodb:BatchWriteItem",
"dynamodb:CreateTable",
"dynamodb:DeleteItem",
"dynamodb:GetItem",
"dynamodb:GetRecords",
"dynamodb:PutItem",