IBM RACF LDAP 자격 증명 관리하기
IBM RACF LDAP 자격 증명 관리하기
IBM Resource Access Control Facility(RACF) 메인프레임 보안 시스템과 함께 LDAP 플러그인을 사용해 엔터프라이즈 환경에서 인증과 접근 제어를 관리해요.
시작 전에(Before you start)
- Vault 권한을 확인하세요. Vault에서 플러그인을 활성화하고 구성할 권한이 있어야 해요.
- Vault용 RACF 지원 LDAP 사용자 계정을 만드세요. 사용자 자격 증명을 관리할 수 있는 충분한 권한이 있는 RACF 지원 LDAP 사용자 계정이 필요해요.
- Vault 비밀번호 정책을 결정하세요. z/OS에서 전통적인 비밀번호나 암호 구(passphrase)를 사용할 수 있지만, 무단 접근과 무차별(brute-force) 공격에 대한 더 강력한 보호를 제공하는 암호 구 사용을 적극 권장해요. RACF 암호 구는 대소문자 혼합 문자, 숫자, 공백, 특수 문자를 포함할 수 있어요.
출처: 문서
본문
1단계: Vault 비밀번호 정책 만들기(Create a Vault password policy)
z/OS LDAP 자격 증명을 Vault에서 안전하게 관리하려면 플러그인이 LDAP 자격 증명을 회전하는 방식을 제어하는 비밀번호 정책을 Vault에 만들어야 해요.
참고: z/OS 배포에서 ICHPWX11 종료 루틴(exit routine)을 허용하면 9100자 길이의 암호 구를 사용할 수 있어요. 그렇지 않으면 암호 구는 14100자여야 해요.
정책 구성 파일 racf-policy.hcl을 만들어요.
암호 구 정책(Passphrase policy) — 다음 비밀번호 정책은 IBM RACF의 암호 구 정책을 따르며 다음을 요구해요:
- 14자
- 소문자 1개 이상
- 대문자 1개 이상
- 숫자 1개 이상
- 집합
[@$#!?.:;&<>()[]{}~*_|=]의 특수 문자 1개 이상
length=14
rule "charset" {
charset = "abcdefghijklmnopqrstuvwxyz"
min-chars = 1
}
rule "charset" {
charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
min-chars = 1
}
rule "charset" {
charset = "0123456789"
min-chars = 1
}
rule "charset" {
charset = "@$#!?.:;&<>()[]{}~*_|="
min-chars = 1
}
비밀번호 정책(Password policy) — 다음 비밀번호 정책은 IBM RACF의 비밀번호 정책을 따르며 8자를 요구해요.
length=8
정책을 Vault에 저장하기(Save the policy to Vault)
CLI — vault write에 /sys/policies/password/{policy_name} 경로와 정책 파일을 사용해 새 비밀번호 정책을 만들어요.
$ vault write /sys/policies/password/<policy_name> \
policy=<policy_configuration_file>
예를 들어:
$ vault write /sys/policies/password/racf-passphrase \
policy=racf-policy.hcl
API — 정책 파일로 새 비밀번호 정책을 만들려면 POST 호출.
$ curl \
--request POST \
--header "X-Vault-Token: ${VAULT_TOKEN}" \
--namespace "X-Vault-Namespace: ${VAULT_NAMESPACE}" \
--data {"policy": @racf-policy.hcl} \
${VAULT_ADDR}/v1/sys/policies/password/racf-passphrase
비밀번호 정책이 올바르게 저장됐는지 확인해요.
$ vault read /sys/policies/password/racf-passphrase
2단계: LDAP 시크릿 플러그인 활성화하기(Enable the LDAP secrets plugin)
CLI — vault secrets enable을 사용해 ldap 플러그인의 새 인스턴스를 만들어요. 기본적으로 Vault는 플러그인 이름을 마운트 경로로 사용해요. 사용자 지정 마운트 경로를 구성하려면 -path 플래그를 사용하세요.
$ vault secrets enable -path devcreds ldap
API — /sys/mounts/{mount_path}에 POST 호출.
$ curl \
--request POST \
--header "X-Vault-Token: ${VAULT_TOKEN}" \
--namespace "X-Vault-Namespace: ${VAULT_NAMESPACE}" \
--data '{"type": "ldap"}' \
${VAULT_ADDR}/v1/sys/mounts/devcreds
/sys/mounts/{mount_path}는 성공 시 데이터를 반환하지 않아요.
3단계: 플러그인 구성 파일 만들기(Create your plugin configuration file)
유지보수와 재사용을 쉽게 하기 위해 선호하는 구성 세부 정보가 담긴 JSON 파일을 만들어요. racf 스키마 열거형, phrase 자격 증명 유형, 그리고 Vault 비밀번호 정책 이름을 사용해 기본 구성 파일 ldap.json을 만들어요.
{
"schema": "racf",
"binddn": "racfid=<ldap_username>,profiletype=user,cn=RACF",
"bindpass": "<ldap_password>",
"url": "<ldap_server_uri>",
"credential_type": "phrase",
"password_policy": "<vault_policy_name>"
}
예를 들어:
{
"schema": "racf",
"binddn": "racfid=vault,profiletype=user,cn=RACF",
"bindpass": "iamabadpassword",
"url": "ldap://9.12.41.127:389",
"credential_type": "phrase",
"password_policy": "racf-passphrase"
}
4단계: LDAP 플러그인 구성하기(Configure the LDAP plugin)
RACF 지원 LDAP 사용자로 LDAP 플러그인을 구성하고 Vault를 IBM RACF LDAP 서버에 연결해요.
CLI — vault write에 {mount_path}/config 경로를 사용해 구성 파일을 적용해요.
$ vault write devcreds/config @ldap.json
API — 구성 파일을 적용하려면 /{mount_path}/config에 POST 호출.
$ curl \
--request POST \
--header "X-Vault-Token: ${VAULT_TOKEN}" \
--namespace "X-Vault-Namespace: ${VAULT_NAMESPACE}" \
--data @ldap.json \
${VAULT_ADDR}/v1/devcreds/config
5단계: 루트 비밀번호 회전하기(Rotate the root password)
Vault와 LDAP 서버를 연결한 후에는 Vault만 자격 증명을 알도록 binddn 계정의 루트 비밀번호를 회전해요.
CLI — /{mount_path}/rotate-root 경로로 루트 자격 증명을 회전해요.
$ vault write -f devcreds/rotate-root
API — 루트 자격 증명을 회전하려면 POST 호출:
$ curl \
--request POST \
--header "X-Vault-Token: ${VAULT_TOKEN}" \
--namespace "X-Vault-Namespace: ${VAULT_NAMESPACE}" \
${VAULT_ADDR}/v1/sys/devcreds/rotate-root
루트 자격 증명을 회전한 후에는 새로 생성된 비밀번호를 검색할 수 없어요.
6단계: 정적 역할 만들기(Create a static role)
역할 설정이 담긴 구성 파일 ldap-role.json을 만들어요.
{
"role_name": "hashicorp",
"username": "vault",
"dn": "racfid=vault,profiletype=user,cn=RACFHC4",
"rotation_period": "24h"
}
새 역할을 저장해요.
CLI — /{mount_path}/static-role 경로와 정적 역할 구성으로 새 정적 역할을 만들어요.
$ vault write devcreds/static-role @ldap-role.json
API — 정적 역할 구성으로 /{mount_path}/static-role에 POST 호출.
$ curl \
--request POST \
--header "X-Vault-Token: ${VAULT_TOKEN}" \
--namespace "X-Vault-Namespace: ${VAULT_NAMESPACE}" \
--data @ldap-role.json \
${VAULT_ADDR}/v1/devcreds/static-role
플러그인에서 자격 증명을 요청해 역할 설정을 확인해요.
$ vault read devcreds/static-role/hashicorp
7단계: 정적 역할 테스트하기(Test the static role)
Vault는 구성된 정적 역할에 설정한 회전 기간에 따라 비밀번호를 자동으로 회전해요. 정적 역할에 대한 자격 증명을 가져와요. 응답에는 현재 자격 증명에 더해 다음 회전까지의 시간(ttl)이 포함돼요.
제공된 자격 증명을 사용해 메인프레임 z/OS 시스템에 SSH로 접속해요.
$ ssh [email protected]
추가 리소스(Additional resources)
- HashiCorp 콘텐츠: 전체 LDAP 플러그인 API 참조, 동적 자격 증명 사용, 클라이언트가 서비스 계정 체크아웃
- IBM 콘텐츠: 비밀번호 및 비밀번호 구 개요, RACF 비밀번호-구 정책, Resource access control facility 개요
더 알아보기 (Learn more)
- LDAP 시크릿 엔진 개요에서 동적·정적 자격 증명을 살펴보세요.
- 동적 자격 증명 및 서비스 계정 라이브러리 방법 가이드를 확인해 보세요.