서비스 계정 라이브러리 만들기
서비스 계정 라이브러리 만들기
사용자와 머신이 필요할 때 체크아웃해서 쓸 수 있는 서비스 계정 라이브러리를 만들어요. 클라이언트가 서비스 계정을 라이브러리로 돌려주면 Vault가 계정 비밀번호를 자동으로 회전해요.
시작 전에(Before you start)
- Vault 권한을 확인하세요. Vault에서 플러그인을 활성화하고 구성할 권한이 있어야 해요.
- OpenLDAP 또는 Active Directory용 LDAP 플러그인이 구성되어 있어야 해요. 아직 없으면 설정 가이드를 따라 LDAP 서버에 라이브러리 계정을 만드세요. 라이브러리 전용 계정을 만드는 것을 적극 권장해요.
출처: 문서
본문
1단계: 라이브러리 구성 파일 만들기(Create a library configuration file)
유지보수와 재사용을 쉽게 하기 위해 자격 증명 라이브러리 구성 세부 정보가 담긴 JSON 파일 library.json을 만들어요.
{
"service_account_names": "<list_of_LDAP_accounts>",
"ttl": "<default_checkout_period>",
"max_ttl": "<max_allowed_checkout_period>",
"disable_check_in_enforcement": false
}
예를 들어:
{
"service_account_names": "[email protected],[email protected]",
"ttl": "10h",
"max_ttl": "24h",
"disable_check_in_enforcement": false
}
다음 구성 파일은:
- 라이브러리의 계정 집합을
[email protected]과[email protected]으로 정의해요. - 기본 체크아웃 시간을 10시간으로 설정해요.
- 24시간 후 갱신을 허용하지 않아요.
- 서비스 계정을 체크아웃한 Vault 엔티티 또는 클라이언트 토큰만 라이브러리로 계정을 다시 체크인할 수 있게 해요.
팁: 워크플로가 정리(cleanup) 과정을 사용해 서비스를 돌려주는 클라이언트가 체크아웃하는 클라이언트와 자주 다른 토큰을 쓰는 경우 disable_check_in_enforcement=true로 설정하세요.
2단계: 플러그인 구성하기(Configure the plugin)
라이브러리 구성 파일을 플러그인에 적용해요.
CLI — vault write에 {mount_path}/library/{set_name} 경로를 사용해 구성 파일을 적용해요:
$ vault write <mount_path>/library/<set_name> @library.json
예를 들어:
$ vault write devcreds/library/accounting-team @library.json
API — 구성 파일을 적용하려면 POST 호출:
$ curl \
--request POST \
--header "X-Vault-Token: ${VAULT_TOKEN}" \
--namespace "X-Vault-Namespace: ${VAULT_NAMESPACE}" \
--data @library.json \
${VAULT_ADDR}/v1/<mount_path>/library/<set_name>
예를 들어:
$ curl \
--request POST \
--header "X-Vault-Token: ${VAULT_TOKEN}" \
--namespace "X-Vault-Namespace: ${VAULT_NAMESPACE}" \
--data @library.json \
${VAULT_ADDR}/v1/devcreds/library/accounting-team
3단계: 서비스 계정 설정 확인하기(Verify the service account settings)
라이브러리 설정을 확인하려면 집합 상태를 봐요.
$ vault read devcreds/library/accounting-team
Key Value
--- -----
[email protected] map[available:true]
[email protected] map[available:true]
4단계: 체크아웃 과정 테스트하기(Test the check-out process)
Vault와 LDAP 서버 사이의 연결을 테스트하려면 서비스 계정을 체크아웃하고 돌려봐요.
CLI — {mount_path}/library/{set_name}/check-out 경로에 서비스 계정 이름과 함께 서비스 계정을 요청해요:
$ vault write -f devcreds/library/accounting-team/check-out \
service_account_names=["[email protected]"]
호출자가 계정을 하나만 체크아웃했다면 계정 목록을 생략하고 -f 플래그로 명시적 파라미터 없이 엔드포인트를 호출할 수 있어요.
API — {mount_path}/library/{set_name}/check-out에 동적 파라미터로 서비스 계정을 요청해요.
$ curl \
--request POST \
--header "X-Vault-Token: ${VAULT_TOKEN}" \
--namespace "X-Vault-Namespace: ${VAULT_NAMESPACE}" \
${VAULT_ADDR}/v1/<mount_path>/library/<set_name>/check-out
기본 체크아웃 시간이 필요보다 길면 명시적 ttl 값을 제공해 서비스 계정이 어떤 이유로 버려진 경우 Vault가 계정을 더 빨리 회수할 수 있게 해요.
5단계: 서비스 계정 체크인하기(Check in the service account)
사용을 마친 후 서비스 계정을 되돌려주면 Vault가 비밀번호를 자동으로 회전해요.
CLI — -f 플래그와 함께 vault write -f를 사용하세요.
$ vault write -f devcreds/library/accounting-team/check-in
Key Value
--- -----
lease_id devcreds/library/accounting-team/check-out/EpuS8cX7uEsDzOwW9kkKOyGW
lease_duration 10h
lease_renewable true
password ?@09AZKh03hBORZPJcTDgLfntlHqxLy29tcQjPVThzuwWAx/Twx4a2ZcRQRqrZ1w
service_account_name [email protected]
API — {mount_path}/library/{set_name}/check-in에 서비스 계정 이름과 함께 POST 호출로 계정을 반환해요.
$ curl \
--request POST \
--header "X-Vault-Token: ${VAULT_TOKEN}" \
--namespace "X-Vault-Namespace: ${VAULT_NAMESPACE}" \
--data '{"service_account_names": ["[email protected]"]}' \
${VAULT_ADDR}/v1/devcreds/library/accounting-team/check-in
더 알아보기 (Learn more)
- LDAP 시크릿 엔진 개요에서 서비스 계정 기능을 살펴보세요.
- 서비스 계정 체크아웃·체크인·리스 연장·폐기 쿡북 예시를 확인해 보세요.