2012-06-19 5 views
0

임차인마다 Java 보안 관리자에 다중 정책 구성 파일을로드하려고합니다. java secuirty tutorial가 지정했기 때문에 정책 파일에 여러 개의 정책 파일을로드 할 수는 있지만, 내 멀티 테넌트 보안 모델에서 런 타임 중에 어떤 정책 파일을 어떤 사용자에게로드해야 하는지를 지정할 수있는 방법은 무엇입니까? 기본 보안 모델.Java의 다중 점유자 보안 관리자

+0

왜 보안 관리자를 별도로 갖고 싶습니까? 별도의 코드 소스를 다르게 처리하는 보안 관리자가 다르게 충분하지 않습니까? –

+0

아니요, 단일 보안 관리자가 필요합니다. 이미 구현 된 보안 관리자를 실제로 확장하는 다중 점유자 보안 관리자. 다른 코드 소스를 다르게 처리하는 것으로 충분할 것이라고 말한 것처럼 말입니다. 하지만 내가 만나는 문제는 각 임차인마다 다르게 사용하는 방법에 대한 논리를 지정할 수 없다는 것입니다. (다른 임차인을 위해 보안 관리자에로드 할 사람을 지정하십시오.) – CharmGale

+0

codeBase를 기반으로 권한을 지정할 수 있습니다. 그러나 별도의 프로세스와 OS 보안을 사용할 수 있다면 강력히 권합니다. –

답변

0

약간 무서운 것 같습니다. 가능하다면 각 임차인마다 다른 VM을 사용합니다. 그렇게 할 수 없다면 Policy.setPolicy를 사용하고 싶을 것입니다. 기본적으로 여러 정책을 감싸는 래퍼 인 Policy의 사용자 지정 구현이 필요합니다. 아마도 현재 스레드에 적용되는 사용자 컨텍스트를 확인한 다음 적합한 래핑 된 Policy 구현에 위임하기 위해 일부 ThreadLocal 변수를 참조해야합니다. 정책 파일을 읽으려면 Sun security provider을 직접 참조해야 할 것입니다. 기본적으로 리플렉션을 거부하는 것을 잊지 마십시오. 그렇지 않으면 정책 논리가 우회하지 않을 수 있습니다.

+0

제안을 주셔서 감사합니다. "기본적으로 반영을 거부하는 것을 잊지 마십시오. 또는 정책 논리가 우회하는 것을 쉽게 피할 수 있습니다."이 시점에서 더 자세히 설명 할 수 있습니까? – CharmGale

+0

코드가 특정 작업을 수행 할 수 없도록 보안 관리자를 사용하고 있습니다. 그러나 리플렉션을 사용하면 보안 관리자가 사용하는 가정을 위반하는 것을 포함하여 거의 모든 작업을 수행 할 수 있습니다. 리플렉션 호출이 private 변수를 직접 수정하고 public 메서드의 액세스 검사를 돌아 다니는 경우를 상상해보십시오. "기본적으로"라고 말했을 때 나는 반사를 비활성화함으로써 시작을 ​​의미했습니다. 그런 다음 필요에 따라 특정 사용을 허용하십시오 (화이트리스트). –

+0

정말, 스레드를 찾는 데 의존하지 마십시오. 애플릿은 ThreadGroup을 사용하지만 많은 해커 및 비공개 인터페이스가 있습니다./가능하다면 입주자마다 절차를 확실히 거쳐야합니다. –

0

this blog post을보십시오. Jens Nordahl은 신뢰할 수없는 플러그인을 샌드 박스에 저장하는 방법을 설명합니다.

ps. 이 게시물을 부탁 드려 죄송 합니다만, Google에서 최고입니다.

관련 문제