7장. IdM (Identity Management)
7.1. 보안 LDAP 통신 링크 복사링크가 클립보드에 복사되었습니다!
LDAP 서버에서 ID 정보를 인증하거나 검색하도록 ID 서비스(keystone)를 구성한 경우 CA 인증서를 사용하여 ID 서비스의 LDAP 통신을 보호할 수 있습니다.
이 섹션에서는 Active Directory에서 CA 인증서를 가져오는 방법, CA 인증서 파일을 Privacy Enhanced mail(PEM) 파일 형식으로 변환하는 방법, ID 서비스에 대한 보안 LDAP 통신을 구성하는 세 가지 방법을 간략하게 설명합니다. 각 방법의 절차는 CA 신뢰의 위치와 방법에 따라 수행해야 합니다.
7.1.1. Active Directory에서 CA 인증서 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
다음 코드는 Active Directory를 쿼리하여 CA 인증서를 가져오는 방법의 예를 보여줍니다. CA_NAME은 인증서의 이름이며(mmc.exe에서 볼 수 있음) 설정에 따라 나머지 매개변수를 변경할 수 있습니다.
7.1.2. CA 인증서를 PEM 파일 형식으로 변환 링크 복사링크가 클립보드에 복사되었습니다!
아래 예제와 같이 /path/cacert.pem이라는 파일을 만들고 Active Directory에서 CA 인증서를 가져온 LDAP 쿼리의 내용을 헤더 및 footer 내에 포함합니다.
-----BEGIN CERTIFICATE----- MIIDbzCCAlegAwIBAgIQQD14hh1Yz7tPFLXCkKUOszANB... -----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDbzCCAlegAwIBAgIQQD14hh1Yz7tPFLXCkKUOszANB... -----END
CERTIFICATE-----
문제 해결을 위해 다음 쿼리를 실행하여 LDAP가 작동하는지 확인하고 PEM 인증서 파일이 올바르게 생성되었는지 확인할 수 있습니다.
LDAPTLS_CACERT=/path/cacert.pem ldapsearch -xLLL -ZZ -H $LDAPURL -s base -b "" "objectclass=*" currenttime
LDAPTLS_CACERT=/path/cacert.pem ldapsearch -xLLL -ZZ -H $LDAPURL -s base -b "" "objectclass=*" currenttime
쿼리에서 다음과 유사한 결과를 반환해야 합니다.
dn: currentTime: 20141022050611.0Z
dn: currentTime:
20141022050611.0Z
다음 명령을 실행하여 웹 서버에서 호스팅한 경우 CA 인증서를 가져올 수 있습니다.
예
- $HOST=redhat.com
- $PORT=443
echo Q | openssl s_client -connect $HOST:$PORT | sed -n -e '/BEGIN CERTIFICATE/,/END CERTIFICATE/ p'
# echo Q | openssl s_client -connect $HOST:$PORT | sed -n -e '/BEGIN CERTIFICATE/,/END CERTIFICATE/ p'
7.1.3. ID 서비스에 대한 보안 LDAP 통신 구성 방법 링크 복사링크가 클립보드에 복사되었습니다!
7.1.3.1. 방법 1 링크 복사링크가 클립보드에 복사되었습니다!
PEM 파일을 사용하여 CA 신뢰가 LDAP 수준에서 구성된 경우 이 방법을 사용합니다. CA 인증서 파일의 위치를 수동으로 지정합니다. 다음 절차에서는 OpenLDAP 라이브러리를 사용하는 모든 애플리케이션뿐만 아니라 ID 서비스뿐만 아니라 LDAP 통신을 보호합니다.
-
PEM 형식의 CA 인증서 체인이 포함된 파일을
/etc/openldap/certs디렉터리에 복사합니다. /etc/openldap/ldap.conf를 편집하고 다음 지시문을 추가하여 [CA_FILE]을 CA 인증서 파일의 위치 및 이름으로 바꿉니다.TLS_CACERT /etc/openldap/certs/[CA_FILE]
TLS_CACERT /etc/openldap/certs/[CA_FILE]Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack-keystone 서비스를 다시 시작합니다.
systemctl restart openstack-keystone.service
# systemctl restart openstack-keystone.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.1.3.2. 방법 2 링크 복사링크가 클립보드에 복사되었습니다!
NSS(Network Security Services) 데이터베이스를 사용하여 LDAP 라이브러리 수준에서 CA 신뢰가 구성된 경우 이 방법을 사용합니다. certutil 명령을 사용하여 OpenLDAP 라이브러리에서 사용하는 NSS 인증서 데이터베이스로 CA 인증서를 가져오고 신뢰합니다. 다음 절차에서는 OpenLDAP 라이브러리를 사용하는 모든 애플리케이션뿐만 아니라 ID 서비스뿐만 아니라 LDAP 통신을 보호합니다.
[CA_FILE]을 CA 인증서 파일의 위치 및 이름으로 교체하여 인증서를 가져오고 신뢰합니다.
certutil -d /etc/openldap/certs -A -n "My CA" -t CT,, -a -i [CA_FILE]
# certutil -d /etc/openldap/certs -A -n "My CA" -t CT,, -a -i [CA_FILE]Copy to Clipboard Copied! Toggle word wrap Toggle overflow CA 인증서를 올바르게 가져왔는지 확인합니다.
certutil -d /etc/openldap/certs -L
# certutil -d /etc/openldap/certs -LCopy to Clipboard Copied! Toggle word wrap Toggle overflow CA 인증서가 나열되고 신뢰 속성은 gRPC( ,)로 설정됩니다.
openstack-keystone 서비스를 다시 시작합니다.
systemctl restart openstack-keystone.service
# systemctl restart openstack-keystone.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.1.3.3. 방법 3 링크 복사링크가 클립보드에 복사되었습니다!
PEM 파일을 사용하여 Keystone 수준에서 CA 신뢰가 구성된 경우 이 방법을 사용합니다. ID 서비스와 LDAP 서버 간의 통신을 보호하는 마지막 방법은 ID 서비스에 대해 TLS를 구성하는 것입니다.
그러나 위의 두 방법과 달리 이 방법은 ID 서비스의 LDAP 통신만 보호하고 OpenLDAP 라이브러리를 사용하는 다른 애플리케이션의 LDAP 통신을 보호하지 않습니다.
다음 절차에서는 openstack-config 명령을 사용하여 /etc/keystone/keystone.conf 파일의 값을 편집합니다.
TLS를 활성화합니다.
openstack-config --set /etc/keystone/keystone.conf ldap use_tls True
# openstack-config --set /etc/keystone/keystone.conf ldap use_tls TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 인증서 위치를 지정하고 [CA_FILE]을 CA 인증서 이름으로 교체합니다.
openstack-config --set /etc/keystone/keystone.conf ldap tls_cacertfile [CA_FILE]
# openstack-config --set /etc/keystone/keystone.conf ldap tls_cacertfile [CA_FILE]Copy to Clipboard Copied! Toggle word wrap Toggle overflow LDAP 서버에서 들어오는 TLS 세션에서 수행되는 클라이언트 인증서 검사를 지정하고 [CERT_BEHAVIOR]을 아래에 나열된 동작 중 하나로 교체합니다.
- 수요
- 인증서는 항상 LDAP 서버에서 요청합니다. 인증서를 제공하지 않거나 제공된 인증서를 기존 인증 기관 파일에 대해 확인할 수 없는 경우 세션이 종료됩니다.
- allow
- 인증서는 항상 LDAP 서버에서 요청합니다. 이 세션은 인증서를 제공하지 않더라도 정상적으로 진행됩니다. 인증서가 제공되지만 기존 인증 기관 파일에 대해 확인할 수 없는 경우 인증서가 무시되고 세션은 정상적으로 진행됩니다.
- never
- 인증서가 요청되지 않습니다.
openstack-config --set /etc/keystone/keystone.conf ldap tls_req_cert [CERT_BEHAVIOR]
# openstack-config --set /etc/keystone/keystone.conf ldap tls_req_cert [CERT_BEHAVIOR]Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack-keystone 서비스를 다시 시작합니다.
systemctl restart openstack-keystone.service
# systemctl restart openstack-keystone.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow