자격 증명 라이브러리(Credential libraries)

자격 증명 라이브러리(Credential libraries)

자격 증명 라이브러리는 단일 자격 증명 저장소(credential store)에서 같은 유형과 같은 접근 수준의 자격 증명(credentials)을 제공하는 리소스예요.

출처: HashiCorp Boundary docs

본문

자격 증명 라이브러리는 단일 자격 증명 저장소에서 같은 유형과 같은 접근 수준의 자격 증명을 제공하는 리소스예요.

속성(Attributes)

자격 증명 라이브러리는 다음의 구성 가능한 속성을 가져요.

  • name — (선택) 이 속성을 설정하면 name은 자격 증명 라이브러리의 부모 자격 증명 저장소 안에서 고유해야 해요.
  • description — (선택) 식별 목적으로 자격 증명 라이브러리를 설명하는 사용자 정의 설명이에요.

Vault generic 자격 증명 라이브러리 속성

generic Vault 자격 증명 라이브러리는 다음의 추가 속성을 가져요.

  • vault-path — (필수) 자격 증명을 요청할 Vault의 경로예요.
  • credential-type — (선택) 이 라이브러리가 발급하는 자격 증명의 유형이에요. 기본값은 unspecified예요.
  • credential-mapping-override — (선택) 설정하면 Vault에서 검색한 자격 증명의 필드 속성을 재정의해요.
  • vault-http-method — (선택) 라이브러리가 Vault에서 자격 증명을 요청할 때 사용하는 HTTP 메서드예요. GET 또는 POST일 수 있어요. 기본값은 GET이에요.
  • vault-http-request-body — (선택) 라이브러리가 자격 증명을 요청할 때 Vault에 보내는 HTTP 요청 본문이에요. http_method가 POST로 설정된 경우에만 유효해요.

Vault LDAP 자격 증명 라이브러리 속성

Vault의 LDAP 시크릿 엔진을 사용해 자격 증명 라이브러리를 구성할 수 있어요.

Vault LDAP 자격 증명 라이브러리는 다음의 추가 속성을 가져요.

  • vault-path — (필수) 자격 증명을 요청할 Vault의 경로예요.

Vault SSH certificate 자격 증명 라이브러리 속성

Vault의 SSH 시크릿 엔진을 사용해 SSH 자격 증명 주입을 구성해 SSH 인증서 자격 증명을 만들 수 있어요. SSH 인증서 기반 인증은 디지털 서명을 사용해 키 기반 인증을 확장해요. 사용자의 진위는 신뢰된 인증 기관(CA)이 서명한 인증서로 판별돼요. Vault의 SSH 시크릿 엔진을 CA 역할로 구성할 수 있어요.

SSH 인증서는 유효 기간, 대상 호스트에 접근할 수 있는 사람, 사용자가 로그인하는 방법, 대상 머신에서 사용할 수 있는 명령을 지정할 수 있게 해줘요. SSH 키 쌍과 달리 SSH 인증서는 수명이 짧고 자동 소멸(self-destructive)돼요.

Vault SSH certificate 자격 증명 라이브러리는 다음의 추가 속성을 가져요.

Note: 인증서는 전체 세션 동안 발급되므로, ttl 값이 대상의 session_max_seconds 값보다 짧으면 이후 연결이 실패할 수 있어요. 실패를 방지하려면 ttl 값이 대상의 session_max_seconds보다 같거나 길어야 해요. 또는 자격 증명 라이브러리를 사용하는 모든 대상에 대해 session_connection_limit을 1로 설정할 수도 있어요.

  • vault-path — (필수) 자격 증명을 요청할 Vault의 경로예요.
  • username — (필수) SSH 인증서와 함께 사용할 사용자 이름이에요. Vault 자격 증명 라이브러리 파라미터 템플릿을 사용해 이 값의 템플릿을 만들 수 있어요.
  • key_type — (선택) 생성되는 SSH 개인 키에 사용할 키 유형이에요. 키 유형은 ed25519, ecdsa, 또는 rsa예요. 기본 키 유형은 ed25519예요.
  • key_bits — (선택) SSH 개인 키를 생성하는 데 사용되는 비트 수예요. 비트 수는 선택한 key_type 값에 따라 달라져요: ed25519 키 유형의 경우 key_bits 값을 설정하지 않아야 해요. ecdsa 키 유형의 경우 256, 384, 521 중 선택할 수 있어요. rsa 키 유형의 경우 2048, 3072, 4096 중 선택할 수 있어요.
  • ttl — (선택) SSH 인증서의 유효 시간(TTL)이에요.
  • key_id — (선택) 생성된 SSH 인증서의 키 ID예요. Vault 자격 증명 라이브러리 파라미터 템플릿을 사용해 이 값의 템플릿을 만들 수 있어요.
  • critical_options — (선택) 인증서가 서명되어야 하는 모든 critical option이에요. 자세한 내용은 OpenSSH가 지원하는 critical options 목록을 참고하세요.
  • extensions — (선택) 인증서가 서명되어야 하는 모든 확장이에요. 자세한 내용은 OpenSSH가 지원하는 extensions 목록을 참고하세요. 대화형 셸이 제대로 동작하려면 permit-pty 값을 설정해야 해요.
  • additional_valid_principals — (선택) 제공된 사용자 이름 외에 인증서가 서명되어야 하는 Valid Principals예요. 자세한 내용은 OpenSSH의 "valid principals" 정의와 Vault의 SSH 시크릿 엔진 문서를 참고하세요. Vault SSH certificate 자격 증명 라이브러리가 발급하는 모든 SSH 인증서는 OpenSSH 정의 링크에 언급된 SSH_CERT_TYPE_USER 인증서 유형을 사용한다는 점을 참고하세요. Boundary 1.0.2부터 additional_valid_principals 속성은 세션과 계정 변수를 사용한 파라미터 템플릿을 지원해요. 예: {{.Account.Subject}}, {{.Account.Email}}, {{.User.Name}}. 정적 값은 변경 없이 계속 동작해요. ec2-user 같은 정적 주체(principal)와 {{.Account.Subject}} 같은 동적으로 해석되는 주체를 같은 목록에 함께 포함할 수 있어요.

Vault 파라미터 템플릿(Vault parameter templating)

Vault에 호출을 할 때 Boundary 사용자나 계정에 대한 정보를 제공하는 것이 유용할 때가 있어요. 예를 들어 데이터베이스 자격 증명을 요청할 때 올바른 역할을 고르거나(역할이 사용자별로 분리된 경우), Vault가 생성하는 X.509 인증서에 인코딩할 값을 제공하는 데 쓸 수 있죠. Vault의 경로, POST 요청 본문, 또는 둘 다에 사용자와 계정 정보를 템플릿할 수 있어요.

Boundary 1.0.2부터 additional_valid_principals 속성은 세션과 계정 변수를 사용한 파라미터 템플릿을 지원해요. 예: {{.Account.Subject}}, {{.Account.Email}}, {{.User.Name}}. 정적 값은 변경 없이 계속 동작해요.

Vault generic 자격 증명 라이브러리 파라미터 템플릿

다음 Vault 템플릿 파라미터는 Boundary의 Vault generic 자격 증명 라이브러리에서 지원돼요. 계정 값은 호출에 사용된 토큰과 연관된 계정에 묶여 있다는 점을 참고하세요.

  • {{.User.Id}} — 사용자의 ID예요.
  • {{.User.Name}} — 사용자 리소스의 사용자 이름이에요.
  • {{.User.FullName}} — 사용자의 스코프에서 기본 인증 방법에 해당하는 계정의 사용자 이름이에요. 이 값은 채워지지 않을 수도 있고, 템플릿에 사용된 계정 이름과 다를 수도 있어요.
  • {{.User.Email}} — 사용자의 스코프에서 기본 인증 방법에 해당하는 계정의 이메일 주소예요. 이 값은 채워지지 않을 수도 있고, 템플릿에 사용된 계정 이름과 다를 수도 있어요.
  • {{.Account.Id}} — 계정의 ID예요.
  • {{.Account.Name}} — 계정 리소스의 계정 이름이에요.
  • {{.Account.LoginName}} — 해당 유형의 계정이 로그인 이름을 사용한다면, 계정의 로그인 이름이에요.
  • {{.Account.Subject}} — 해당 유형의 계정이 subject를 사용한다면, 계정의 subject예요.
  • {{.Account.Email}} — 해당 유형의 계정이 email을 사용한다면, 계정의 email이에요.
Vault certificate 라이브러리 파라미터 템플릿

다음 Vault 템플릿 파라미터는 Boundary의 Vault certificate 라이브러리에서 지원돼요. 계정 값은 호출에 사용된 토큰과 연관된 계정에 묶여 있다는 점을 참고하세요.

username과 key_id 필드는 다음 변수를 지원해요.

  • {{.User.Name}} — 사용자 리소스의 사용자 이름이에요.
  • {{.Account.Id}} — 계정의 ID예요.

Boundary 1.0.2부터 additional_valid_principals 필드도 다음 변수를 지원해요.

  • {{.User.Id}} — 사용자의 ID예요.
  • {{.User.Name}} — 사용자 리소스의 사용자 이름이에요.
  • {{.User.FullName}} — 사용자의 스코프에서 기본 인증 방법에 해당하는 계정의 사용자 이름이에요. 이 값은 채워지지 않을 수도 있고, 템플릿에 사용된 계정 이름과 다를 수도 있어요.
  • {{.User.Email}} — 사용자의 스코프에서 기본 인증 방법에 해당하는 계정의 이메일 주소예요. 이 값은 채워지지 않을 수도 있고, 템플릿에 사용된 계정 이름과 다를 수도 있어요.
  • {{.Account.Id}} — 계정의 ID예요.
  • {{.Account.Name}} — 계정 리소스의 계정 이름이에요.
  • {{.Account.LoginName}} — 계정이 로그인 이름을 사용한다면, 계정의 로그인 이름이에요.
  • {{.Account.Subject}} — 계정이 subject를 사용한다면, 계정의 subject예요.
  • {{.Account.Email}} — 계정이 email을 사용한다면, 계정의 email이에요.
유용한 템플릿 함수

truncateFrom 함수는 지정된 부분 문자열 이후의 나머지 문자열을 잘라내요. 이 함수는 이메일 주소에서 사용자 이름이나 계정 이름을 꺼낼 때 유용해요. 다음 예시는 [email protected]을 foo로 바꿔요.

{{truncateFrom .Account.Email "@"}}

위 예시는 계정 이메일을 사용하지만, 다른 어떤 파라미터도 될 수 있어요.

coalesce 함수는 목록에서 첫 번째 비어 있지 않은 값을 고릅니다. 계정 이름이나 로그인 이름 중 하나만 채워질 수 있을 때 유용해요.

{{coalesce .Account.Name .Account.LoginName}}

튜토리얼

Vault를 사용해 SSH 인증서로 자격 증명 주입을 구성하는 방법은 SSH certificate injection with HCP Boundary 튜토리얼을 참고하세요.

참조되는 곳(Referenced by)

  • Credential
  • Credential store
  • Target

서비스 API 문서

이 리소스와 관련된 서비스는 다음과 같아요.

  • Credential library service