ServicePermission

ServicePermission (서비스 권한)

Kerberos 서비스와 그 서비스에 접근하는 데 필요한 자격증명을 보호하는 데 사용되는 권한 클래스입니다.

출처: Java API Reference

본문

서비스 프린시펄과 그 서비스에 접근하는 데 필요한 자격증명은 일대일로 대응됩니다. 따라서 서비스 프린시펄에 대한 접근을 허용하면, 그 서비스 프린시펄과 보안 컨텍스트를 맺는 데 필요한 자격증명에 대한 접근도 암묵적으로 허용됩니다. 이는 자격증명이 캐시에 있든 KDC와의 교환으로 얻었든 동일해요. 자격증명은 티켓 발급 티켓, 서비스 티켓, 또는 키 테이블의 비밀 키 중 하나일 수 있습니다.

ServicePermission은 서비스 프린시펄 이름과, 자격증명을 사용할 수 있는 문맥을 지정하는 동작(action) 목록을 담습니다. 서비스 프린시펄 이름은 서비스를 제공하는 KerberosPrincipal의 정식 이름이며 대소문자에 민감하게 처리됩니다. 별표(*) 단독으로 쓰면 임의의 서비스 프린시펄을 의미해요.

이 권한을 부여하면 호출자가 동작이 지정한 문맥 안에서 캐시된 자격증명(TGT, 서비스 티켓 또는 비밀 키)을 사용할 수 있음을 뜻합니다. TGT의 경우 인증 서비스(Authentication Service) 교환으로 TGT를 얻을 수 있음을 뜻하기도 하고, Kerberos 영역을 지정하지 않고 KerberosPrincipal이나 GSSName을 만들 수 있음을 뜻하기도 해요.

가능한 동작은 두 가지입니다.

  • initiate — 호출자가 자격증명을 사용해 서비스 프린시펄과 보안 컨텍스트를 시작하도록 허용
  • accept — 호출자가 특정 주체로 보안 컨텍스트를 수락하도록 허용

예를 들어 TGT에 접근해 보안 컨텍스트를 시작하는 권한은 다음과 같이 만듭니다.

ServicePermission("krbtgt/[email protected]", "initiate");

"host" 서비스와 컨텍스트를 시작하기 위한 서비스 티켓은 다음과 같습니다.

ServicePermission("host/[email protected]", "initiate");

Kerberos화된 서버에서는 동작이 "accept"가 됩니다.

ServicePermission("host/[email protected]", "accept");

더 알아보기 (Learn more)

Java 공식 API