분산 서비스에 대한 Kerberos 주체 이름

분산 서비스에 대한 Kerberos 주체 이름

Kerberos(v5) 주체 이름의 두 가지 일반적인 형식은 다음과 같습니다.

username[/instance]@REALM
service/fully-qualified-domain-name@REALM

또한 여러 포트에 존재할 수 있는 서비스에 대해 다음과 같은 내용을 본 적이 있습니다.

service/fully-qualified-domain-name:port@REALM

현재 Kerberos화 중인 내부 응용 프로그램이 있으며 서비스 주체의 이름을 지정하는 방법을 알고 싶습니다. 서비스는 여러 하위 도메인 각각의 여러 컴퓨터에서 실행되는 여러 인스턴스로 분산됩니다.

예를 들어 내 도메인 이름이 다음과 같다고 가정해 보겠습니다.zombo.com, 내 Kerberos화된 서비스 "tenaciousd"는 "www1"부터 "www5"까지의 시스템에서 실행됩니다. 또한 각 시스템에는 잘 알려진 포트(예: 25001~25010)에 10개의 인스턴스가 있습니다.

따라서 기본적으로 모두 동일한 50개의 서버 인스턴스가 있으므로 로드 균형을 맞추고 새 버전을 점진적으로 배포하는 등의 작업을 수행할 수 있습니다.

이제 Kerberos에서 서비스 주체의 이름을 어떻게 지정해야 합니까? 가장 일반적인 형태로 보이는 것처럼 서비스를 실행하는 각 호스트마다 하나씩 있어야 합니까?

tenaciousd/[email protected]
tenaciousd/[email protected]
tenaciousd/[email protected]
tenaciousd/[email protected]
tenaciousd/[email protected]

아니면 서비스 인스턴스당 하나의 서비스 주체를 갖는 것이 더 나은 방법이며 그 이유는 무엇입니까?

tenaciousd/www1.zombo.com:[email protected]
tenaciousd/www1.zombo.com:[email protected]
tenaciousd/www1.zombo.com:[email protected]
...
tenaciousd/www5.zombo.com:[email protected]

마지막으로, 단순해 보이지만 덜 일반적으로 수행되는 서비스 주체를 하나만 갖는 것은 어떻습니까?

[email protected]

중요한 경우 Kerberos화된 서비스(및 클라이언트)는 Cyrus SASL, GNU GSSAPI 및 MIT Kerberos 5를 사용합니다. SASL API는 서비스 이름 외에 "정규화된 도메인 이름" 매개변수를 사용하지만 이를 지원하기 때문인 것으로 의심됩니다. Kerberos 그 이상이며 실제 FQDN 이외의 항목을 전달할 수도 있습니다.

내가 찾은 대부분의 문서에서는 각 서비스가 영역의 단일 호스트에서 실행되거나 적어도 클라이언트가 어떤 서비스 인스턴스에 연결하는지에 대해 깊이 관심을 갖는다고 가정합니다. 제 경우에는 클라이언트 관점에서 볼 때 서비스가 모두 거의 동일합니다. 여기서 가장 좋은 방법은 무엇입니까?

답변1

고유하지 않은 작업(즉, 정확히 동일한 임무를 수행하는 복제된 서비스)의 경우 일반적으로 하나의 공통 서버 주체를 공유합니다. 이는 예를 들어 외부 엔터티가 동일한 도메인 이름을 보는 경우 해당 환상을 유지하므로 잘 작동합니다.

이는 또한 사용자가 인스턴스-1에서 인스턴스-49로 전환하는 경우 이미 유효한 작업 티켓을 가지고 있으므로 또 다른 Kerberos 핸드셰이크를 수행할 필요가 없음을 의미합니다. 인스턴스별로 새 티켓을 가져올 필요 없이 해당 티켓을 사용하여 모든 인스턴스에 인증합니다.

따라서 다음을 사용합니다.

tenaciousd/[email protected]

www.example.com이 클라이언트에서 이 서비스를 처리하는 방식이라고 가정하면 이 서비스의 기본 이름으로 사용됩니다.

관련 정보