임대 개수 quota(lease count quota) 만들기

임대 개수 quota(lease count quota) 만들기

임대 개수 quota를 사용하면 마운트별로 생성되는 임대 수를 제한하고, 하드 리밋(hard limit)이 적합한 Vault 인스턴스의 리소스 소비를 제어할 수 있습니다.

출처: 문서

본문

시작하기 전에

  • Vault 인스턴스의 root 또는 관리 namespace에 접근 권한이 있는지 확인하세요. 임대 개수 quota를 수정하는 것은 제한된 활동입니다.

1단계: 적절한 세분성(granularity) 결정

임대 한도의 세분성은 Vault 클러스터의 성능에 영향을 줄 수 있습니다. 특히 임대 한도로 인해 거부되는 요청 수가 급격히 늘어나면 audit 로깅 증가가 Vault 성능에 영향을 줄 수 있습니다.

과거 시스템 동작을 검토해 quota 한도를 상속 가능(inheritable)하게 할지, 특정 역할(role)로 한정할지 판단하세요.

2단계: count quota 적용

vault writesys/quotas/lease-count/{quota-name} 마운트 경로를 사용해 새 임대 개수 quota를 만듭니다:

$ vault write                           \
    sys/quotas/lease-count/<QUOTA_NAME> \
    name="<QUOTA_NAME>"                 \
    path="<PLUGIN_MOUNT_PATH>"          \
    role="<OPTIONAL_AUTHN_ROLE>"        \
    max_leases=<LEASE_LIMIT>

예를 들어 기본 마운트 경로에서 approle 플러그인의 webapp 역할에 webapp-tokens라는 대상 quota 제한을 만들려면:

$ vault write                            \
    sys/quotas/lease-count/webapp-tokens \
    name="webapp-tokens"                 \
    path="auth/approle"                  \
    role="webapp"                        \
    max_leases=100

Success! Data written to: sys/quotas/lease-count/webapp-tokens

quota 설정이 포함된 페이로드 파일을 만듭니다:

{
  "name": "<QUOTA_NAME>",
  "path": "<PLUGIN_MOUNT_PATH>",
  "role": "<OPTIONAL_AUTHN_ROLE>",
  "max_leases": <LEASE_LIMIT>,
}

예를 들어 webapp-tokens quota를 만들려면:

{
  "name": "webapp-tokens",
  "path": "auth/approle",
  "role": "webapp",
  "max_leases": 100,
}

/sys/quotas/lease-count/{quota-name} 엔드포인트를 호출해 임대 개수 quota를 적용합니다. 예를 들어 webapp-tokens quota를 적용하려면:

$ curl \
 --request POST \
 --header "X-Vault-Token: ${VAULT_TOKEN}" \
 --data @payload.json \
 ${VAULT_ADDR}/v1/sys/quotas/lease-count/webapp-tokens

무음 엔드포인트 /sys/quotas/lease-count/{quota-name} 엔드포인트는 성공 시 아무 출력도 반환하지 않습니다.

임대 개수 quota를 정의하려면 vault_quota_lease_count 리소스 유형을 사용하세요. 예를 들어 webapp-tokens quota를 만들려면:

resource "vault_quota_lease_count" "webapp-tokens" {
  name = "webapp-tokens"
  path = "auth/approle"
  role = "webapp"
  max_leases = 100
  depends_on = [ vault_approle_auth_backend_role.webapp ]
}

3단계: quota 설정 확인

vault readsys/quotas/lease-count/{quota-name} 마운트 경로를 사용해 임대 개수 quota 세부 정보를 표시합니다:

$ vault read sys/quotas/lease-count/<QUOTA_NAME>

예를 들어 webapp-tokens quota 세부 정보를 읽으려면:

$ vault read sys/quotas/lease-count/webapp-tokens

Key            Value
---            -----
counter        0
inheritable    true
max_leases     100
name           webapp-tokens
path           auth/approle/
role           webapp
type           lease-count

sys/quotas/lease-count/{quota-name} 엔드포인트를 호출해 임대 개수 quota를 표시할 수도 있습니다. 예를 들어 webapp-tokens quota를 읽으려면:

$ curl                                      \
  --header "X-Vault-Token: ${VAULT_TOKEN}"  \
  --request GET                             \
  --silent                                  \
  ${VAULT_ADDR}/v1/sys/quotas/lease-count/webapp-tokens | jq

{
  "request_id": "188e22f1-dc1a-251a-a0a1-005e256fe70f",
  "lease_id": "",
  "renewable": false,
  "lease_duration": 0,
  "data": {
    "counter": 0,
    "inheritable": false,
    "max_leases": 100,
    "name": "webapp-tokens",
    "path": "auth/approle/",
    "role": "webapp",
    "type": "lease-count"
  },
  "wrap_info": null,
  "warnings": null,
  "auth": null
}

다음 단계

사전 예방적 모니터링과 주기적인 사용 분석은 문제가 악화되기 전에 잠재적 문제를 식별하는 데 도움이 됩니다.

  • 일반적인 Vault 리소스 quota에 대해 자세히 알아보세요.
  • 요청 볼륨을 제어하는 rate limit quota에 대해 알아보세요.
  • audit 디바이스 로그를 조회하는 방법을 알아보세요.
  • 일반적인 건강 검진을 위해 핵심 Vault 메트릭을 검토하세요.

더 알아보기