자격 증명 라이브러리(Credential libraries)
자격 증명 라이브러리(Credential libraries)
자격 증명 라이브러리는 단일 자격 증명 저장소(credential store)에서 같은 유형과 같은 접근 수준의 자격 증명(credentials)을 제공하는 리소스예요.
본문
자격 증명 라이브러리는 단일 자격 증명 저장소에서 같은 유형과 같은 접근 수준의 자격 증명을 제공하는 리소스예요.
속성(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