TOTP 시크릿 엔진

TOTP 시크릿 엔진

TOTP 시크릿 엔진은 TOTP 표준에 따라 시간 기반 크레덴셜을 생성해요. 이 시크릿 엔진은 새 키를 생성하고 그 키로 생성된 비밀번호를 검증하는 데도 사용할 수 있어요.

TOTP 시크릿 엔진은 생성기(Google Authenticator처럼)와 제공자(Google.com 로그인 서비스처럼) 역할을 모두 할 수 있어요.

출처: 문서

본문

생성기(Generator)로서

TOTP 시크릿 엔진은 TOTP 코드 생성기 역할을 할 수 있어요. 이 모드에서는 Google Authenticator 같은 전통적인 TOTP 생성기를 대체할 수 있어요. 코드 생성 능력이 정책으로 보호되고 전체 과정이 감사되므로 보안 레이어가 하나 더 추가돼요.

설정 (Setup)

대부분의 시크릿 엔진은 본래 기능을 수행하기 전에 미리 설정을 해 둬야 해요. 이 단계들은 보통 운영자나 설정 관리 도구가 수행해요.

1. TOTP 시크릿 엔진을 활성화합니다.

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

기본적으로 시크릿 엔진은 엔진 이름과 같은 경로에 마운트돼요. 다른 경로에 활성화하려면 -path 인자를 사용하면 됩니다.

2. 이름 있는 키를 구성합니다. 이 키의 이름은 그 용도를 나타내는 사람이 알아볼 수 있는 식별자가 돼요.

$ vault write totp/keys/my-key \
    url="otpauth://totp/Vault:[email protected]?secret=Y64VEVMBTSXCYIWRSHRNDZW62MPGVU2G&issuer=Vault"
Success! Data written to: totp/keys/my-key

url은 제3자 서비스가 제공한 바코드의 시크릿 키 또는 값에 해당해요.

사용법 (Usage)

시크릿 엔진이 설정되고 사용자/머신이 적절한 권한을 가진 Vault 토큰을 갖게 되면 크레덴셜을 생성할 수 있어요.

1. 키 이름으로 /code 엔드포인트를 읽어 새 시간 기반 OTP를 생성합니다.

$ vault read totp/code/my-key
Key     Value
---     -----
code    260610

ACL을 사용하면 신뢰할 수 있는 운영자가 키 정의를 관리하고, 사용자와 애플리케이션이 읽을 수 있는 크레덴셜이 제한되도록 TOTP 시크릿 엔진 사용을 제한할 수 있어요.

제공자(Provider)로서

TOTP 시크릿 엔진은 TOTP 제공자 역할도 할 수 있어요. 이 모드에서는 새 키를 생성하고 그 키로 생성된 비밀번호를 검증하는 데 사용할 수 있어요.

설정 (Setup)

대부분의 시크릿 엔진은 본래 기능을 수행하기 전에 미리 설정을 해 둬야 해요. 이 단계들은 보통 운영자나 설정 관리 도구가 수행해요.

1. TOTP 시크릿 엔진을 활성화합니다.

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

기본적으로 시크릿 엔진은 엔진 이름과 같은 경로에 마운트돼요. 다른 경로에 활성화하려면 -path 인자를 사용하면 됩니다.

2. generate 옵션을 사용해 이름 있는 키를 만듭니다. 이는 Vault에게 제공자 역할을 하라고 지시해요.

$ vault write totp/keys/my-user \
    generate=true \
    issuer=Vault \
    [email protected]

Key        Value
---        -----
barcode    iVBORw0KGgoAAAANSUhEUgAAAMgAAADIEAAAAADYoy0BA...
url        otpauth://totp/Vault:[email protected]?algorithm=SHA1&digits=6&issuer=Vault&period=30&secret=V7MBSK324I7KF6KVW34NDFH2GYHIF6JY

응답에는 base64 인코딩된 바코드와 OTP URL이 포함돼요. 둘은 동일해요. 이 값을 TOTP로 인증하는 사용자에게 건네주세요.

사용법 (Usage)

1. 사용자로서 제3자 앱이 생성한 TOTP 코드를 검증합니다.

$ vault write totp/code/my-user code=886531
Key      Value
---      -----
valid    true

API

TOTP 시크릿 엔진은 완전한 HTTP API를 제공해요. 자세한 내용은 TOTP 시크릿 엔진 API 문서를 참고해 주세요.

더 알아보기 (Learn more)

  • TOTP 프로토콜 표준에 대한 자세한 내용은 RFC 6238을 참고하세요.
  • Vault TOTP 시크릿 엔진 전체 API는 TOTP API 문서를 참고하세요.