Redis ElastiCache 데이터베이스 시크릿 엔진

Redis ElastiCache 데이터베이스 시크릿 엔진

Redis ElastiCache는 Vault의 데이터베이스 시크릿 엔진이 지원하는 플러그인 중 하나예요. 이 플러그인은 기존에 관리되는 롤(role)에 대한 정적 자격 증명을 생성해요.

데이터베이스 시크릿 엔진을 어떻게 구성하는지에 대한 자세한 내용은 데이터베이스 시크릿 엔진 문서를 참고해 주세요.

출처: 문서

본문

지원 기능(Capabilities)

플러그인 이름 루트 자격 증명 회전 동적 롤 정적 롤 사용자 이름 커스터마이징
redis-elasticache-database-plugin 아니요 아니요 아니요

설정(Setup)

데이터베이스 시크릿 엔진이 아직 활성화되어 있지 않다면 먼저 활성화해요.

$ vault secrets enable database
Success! Enabled the database secrets engine at: database/

기본적으로 시크릿 엔진은 엔진 이름 그대로의 경로에 활성화돼요. 다른 경로에 두고 싶다면 -path 인자를 사용하면 됩니다.

다음으로 Vault에 올바른 플러그인과 연결 구성을 설정해요.

$ vault write database/config/my-redis-elasticache-cluster \
    plugin_name="redis-elasticache-database-plugin" \
    url="primary-endpoint.my-cluster.xxx.yyy.cache.amazonaws.com:6379" \
    access_key_id="AKI***" \
    secret_access_key="ktriNYvULAWLzUmTGb***" \
    region=us-east-1 \
    allowed_roles="*"

주의할 점은 access_key_id, secret_access_key, region 파라미터가 선택 사항이라는 거예요. 생략하면 인증이 AWS 자격 증명 공급자 체인으로 폴백(fallback)돼요.

usernamepassword 파라미터는 더 이상 권장되지 않지만(Deprecated) 하위 호환성을 위해 지원돼요. 각각 access_key_idsecret_access_key 파라미터로 대체되었습니다.

Redis ElastiCache 시크릿 엔진은 ElastiCache 사용자를 관리할 수 있는 충분한 권한을 가진 AWS 자격 증명을 사용해야 해요. 아래 IAM 정책 샘플을 예시로 사용할 수 있는데, <region><account-id>는 본인의 환경에 맞게 바꿔야 해요.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Action": [
        "elasticache:ModifyUser",
        "elasticache:DescribeUsers"
      ],
      "Resource": "arn:aws:elasticache:<region>:<account-id>:user:*"
    }
  ]
}

사용법(Usage)

시크릿 엔진을 구성한 뒤에는 정적 롤을 작성해 자격 증명 생성을 활성화해요.

정적 롤(Static roles)

Vault 안의 이름을 기존 Redis ElastiCache 사용자에 매핑하는 정적 롤을 구성해요.

$ vault write database/static-roles/my-static-role \
    db_name="my-redis-elasticache-cluster" \
    username="my-existing-redis-user" \
    rotation_period=5m
Success! Data written to: database/static-roles/my-static-role

/static-creds 엔드포인트에서 자격 증명을 가져와요.

$ vault read database/static-creds/my-static-role
Key                    Value
---                    -----
last_vault_rotation    2022-09-14T11:45:57.24715105-04:00
password               GKdS6qY-UtVAMpcD9iuu
rotation_period        5m
ttl                    4m48s
username               my-existing-redis-user

참고로 새 비밀번호가 ElastiCache에 구성이 완료되기까지 수 분이 걸릴 수 있어요. 새 Redis ElastiCache 연결을 맺을 때는 재시도(retry) 전략을 쓰는 것을 권장해요. 이렇게 하면 대상 ElastiCache 클러스터에 아직 적용되지 않은 비밀번호를 사용하려다 발생하는 오류를 막을 수 있어요.

API

구성 가능한 전체 옵션 목록은 Redis ElastiCache Database Plugin API 페이지에서 확인할 수 있어요.

데이터베이스 시크릿 엔진의 HTTP API에 대한 자세한 내용은 Database Secrets Engine API 페이지를 참고해 주세요.

더 알아보기 (Learn more)

  • 데이터베이스 시크릿 엔진 문서에서 시크릿 엔진 구성 방법을 살펴보세요.
  • Redis ElastiCache 플러그인 API 페이지에서 세부 옵션을 확인해 보세요.