JavaTM Platform
Standard Ed. 6

java.security
클래스 SecurityPermission

java.lang.Object 
  상위를 확장 java.security.Permission 
      상위를 확장 java.security.BasicPermission 
          상위를 확장 java.security.SecurityPermission
모든 구현된 인터페이스:
Serializable , Guard


public final class SecurityPermission
extends BasicPermission

이 클래스는 시큐리티 액세스권을 위해서(때문에) 준비되어 있습니다. SecurityPermission 는 이름 ( 「타겟명」이라고도 불린다)을 가집니다만, 액션 리스트는 가지지 않습니다. 사용자는 이름 첨부 액세스권을 가지는 경우와 가지지 않는 경우가 있습니다.  

타겟명에는, 시큐리티 구성 파라미터의 이름 (아래와 같이를 참조)을 지정합니다. 현재, SecurityPermission 객체를 사용하면(자), Policy, Security, Provider, Signer, Identity 객체에의 액세스를 보호할 수 있습니다.  

이하의 겉(표)에, 가능한 SecurityPermission 타겟명의 모두와 그 타겟명의 각각 붙어 액세스권이 허가하는 내용, 및 코드에 액세스권을 주는 리스크에 대한 설명의 일람을 나타냅니다.  

액세스권 타겟명 액세스권에 의해 허가되는 기능 이 액세스권을 허가했을 경우의 리스크
createAccessControlContext createAccessControlContext 의 작성. 이 액세스권은 DomainCombiner 를 사용해 AccessControlContext 를 인스턴스화한다. 현재 스택에 있는 ProtectionDomains 에의 레퍼런스가 DomainCombiners 에게 줄 수 있으므로, 악의가 있는 DomainCombiners 인 경우, 프라이버시가 누출하는 위험성이 있습니다.
getDomainCombiner AccessControlContext 의 DomainCombiner 를 취득. 이 액세스권은 AccessControlContext 의 DomainCombiner 를 취득한다. DomainCombiner 에는 중요한 정보가 있으므로, 프라이버시의 누설로 연결될 가능성이 있다
getPolicy 시스템 전체의 시큐리티 정책 (구체적으로는, 현재 인스톨 되고 있는 Policy 객체)의 취득. 특정의 CodeSource 에 대해서 어떠한 액세스권이 주어지고 있을까를 알 수 있는 getPermissions 의 호출에 의해, 시스템 전체의 시큐리티 정책에 대해서 문의를 할 수 있게 됩니다. 정책 정보가 도둑맞아도 시스템의 시큐리티가 위협해지는 것은 아닙니다만, 공격의 목적을 보다 정확하게 정하기 위한 추가 정보를 악의가 있는 코드에게 주어 버립니다. 필요 이상의 정보는 공개하지 않게 할 필요가 있습니다.
setPolicy 시스템 전체의 시큐리티 정책 (구체적으로는, Policy 객체)의 설정. 이 액세스권을 주면(자), 악의가 있는 코드는, 시스템을 공격하는데 필요한 액세스권의 모든 것을 스스로에게 줄 수가 있게 되기 (위해)때문에, 지극히 위험합니다.
createPolicy. {policy type} 프로바이더로부터 Policy 구현의 인스턴스를 취득. 이 액세스권을 부여하면(자), 코드는 Policy 객체를 취득할 수 있게 됩니다. 악의가 있는 코드가, Policy 객체를 조회하는 것으로써, 자신 이외의 코드에 부여되고 있는 액세스권을 특정하려고 하는 경우가 있습니다.
getProperty. {key} 열쇠를 지정한 시큐리티 프로퍼티의 취득. 지정한 열쇠에 의해 가능하게 되는 액세스의 종류에 따라서는, 코드로부터, 시스템 전체의 정책와 사용자 시큐리티 정책의 장소외, 시큐리티 프로바이더의 리스트에도 액세스 할 수 있게 됩니다. 이 정보가 도둑맞아도 시스템의 시큐리티가 위협해지는 것은 아닙니다만, 공격의 목적을 보다 정확하게 정하기 위한 추가 정보를 악의가 있는 코드에게 주어 버립니다.
setProperty. {key} 열쇠를 지정한 시큐리티 프로퍼티의 설정. 이것에는, 시큐리티 프로바이더의 설정과 시스템 전체의 시큐리티 정책의 장소의 정의가 포함됩니다. 새로운 시큐리티 프로바이더를 설정하는 액세스권이 주어진 악의가 있는 코드는, 암호화 비공개키등의 기밀 정보를 훔치는 프로바이더를 설정할 가능성이 있습니다. 또, 시스템 전체의 시큐리티 정책의 장소를 설정하는 액세스권이 주어진 악의가 있는 코드는, 시스템을 공격하는데 필요한 액세스권의 모든 것을 공격자에게 주는 시큐리티 정책의 장소를 그 자리소로 설정할 가능성이 있습니다.
insertProvider. {provider name} 지정한 새로운 프로바이더의 추가. 악의가 있는 프로바이더 (받은 비공개키를 폭로하는 프로바이더등)를, 가장 높은 우선 순위를 가지는 프로바이더로서 추가할 수 있게 됩니다. 이것은, 인스톨 되고 있는 프로바이더를 관리하는 현재의 Security 객체는, 프로바이더를 추가하기 전에, 그 무결성이나 신뢰성의 체크는 실시하지 않기 때문에로입니다.
removeProvider. {provider name} 지정한 프로바이더의 삭제. 프로그램의 다른 부분의 동작을 변경하거나 그 실행을 무효로 할 수 있게 됩니다. 프로그램이 요구한 프로바이더가 벌써 삭제되어 버렸을 경우, 실행이 이상종료(ABEND) 할 가능성이 있습니다. 또, 삭제된 프로바이더가 프로그램의 나머지의 부분에서 요구되어 있지 않아도, 그 프로바이더가, 일반적으로, 암호화 서비스가 요구되었을 때에 선택되는 프로바이더인 경우는 (프로바이더의 리스트로 앞쪽에 있기 (위해)때문에), 대신에 다른 프로바이더가 선택되는지, 적절한 프로바이더가 발견되지 않는 경우는 에러가 됩니다.
setSystemScope 시스템의 아이덴티티 스코프의 설정. 공격자는, 신뢰되어야 하는 것이 아닌 증명서를 사용해 시스템의 아이덴티티 스코프를 설정해, 그러한 증명서를 사용해 서명된 애플릿이나 어플리케이션의 코드에, 시스템의 원의 아이덴티티 스코프에서는 거부되고 있던 특권을 줄 수가 있습니다.
setIdentityPublicKey Identity 의 공개키의 설정. 아이덴티티가 「신뢰할 수 있는 것」으로서 마크 되고 있는 경우, 공격자는, 시스템의 아이덴티티 스코프가 신뢰하고 있지 않는 다른 공개키 (독자적인 공개키등)를 설정해, 그 공개키를 사용해 서명된 애플릿이나 어플리케이션의 코드에, 본래라면 부정되고 있던 특권을 줄 수가 있습니다.
setIdentityInfo Identity 의 개요를 나타내는 캐릭터 라인의 설정. 공격자는, 아이덴티티의 개요를 나타내는 캐릭터 라인을 설정할 수 있게 됩니다. 이것에 의해 공격자는, 어플리케이션을 속여 목적의 것과는 다른 아이덴티티를 사용시키도록(듯이) 하거나 특정의 아이덴티티를 찾아낼 수가 없게 하거나 할 수 있습니다.
addIdentityCertificate Identity 의 증명서의 추가. 공격자는, 아이덴티티의 공개키에 증명서를 설정할 수 있게 됩니다. 시스템 전체의 신뢰 관계에 영향을 주기 (위해)때문에, 이 액세스권은 위험합니다. 이 공개키는, 본래보다 넓은 범위의 코드에 대해서 갑자기 신뢰성을 가지게 됩니다.
removeIdentityCertificate Identity 의 증명서의 삭제. 공격자는, 아이덴티티의 공개키를 위한 증명서를 삭제할 수 있게 됩니다. 시스템 전체의 신뢰 관계에 영향을 주기 (위해)때문에, 이 액세스권은 위험합니다. 이 공개키는, 갑자기 본래보다 신뢰성이 낮게 보여지게 됩니다.
printIdentity 아이덴티티의 본인의 이름, 및 필요에 따라서 그 아이덴티티가 사용되는 스코프, 그 아이덴티티가 스코프내에서 「신뢰할 수 있다」라고 보여지고 있는지 어떤지를 표시한다 출력되는 스코프가 파일명의 경우, 로컬 시스템의 정보가 전달되어 버리는 일이 있습니다. 예를 들어, 「carol」라고 하는 이름의 아이덴티티의 샘플 출력을 나타냅니다. 「carol」는, 사용자의 아이덴티티 데이타베이스에서는 「신뢰되지 않는다」로서 마크 붙이고 되고 있습니다.
carol[/home/luehe/identitydb.obj][not trusted]
clearProviderProperties. {provider name} Provider 에 의해 구현되고 있는 서비스의 참조에 사용되는 프로퍼티이 비우도록(듯이), Provider 를 「클리어」한다. 프로바이더에 의해 구현되고 있는 서비스의 참조가 무효가 됩니다. 따라서, 액세스권 「removeProvider. {provider name}」의 부분에서 설명하고 있도록(듯이), 일반적으로은 그 Provider 를 이용하고 있는 프로그램의 다른 부분의 동작이 변경되거나 그 실행이 무효가 되거나 할 가능성이 있습니다.
putProviderProperty. {provider name} 지정한 Provider 의 프로퍼티의 설정. 프로바이더의 프로퍼티은, 그 프로바이더에 의해 구현되고 있는 특정의 서비스의 이름과 장소를 지정합니다. 이 액세스권을 주면(자), 코드로부터 서비스의 지정을 변경해, 다른 구현을 지정할 수 있게 됩니다.
removeProviderProperty. {provider name} 지정한 Provider 로부터의 프로퍼티의 삭제. 프로바이더에 의해 구현되고 있는 서비스의 참조가 무효가 됩니다. 프로바이더의 이름과 장소를 지정한 프로퍼티이 삭제되기 (위해)때문에, 그 프로바이더에는 액세스 할 수 없게 됩니다. 따라서, 액세스권 「removeProvider. {provider name}」의 부분에서 설명하고 있도록(듯이), 일반적으로은 그 Provider 를 이용하고 있는 프로그램의 다른 부분의 동작이 변경되거나 그 실행이 무효가 되거나 할 가능성이 있습니다.
getSignerPrivateKey 서명자의 비공개키의 취득. 비공개키에의 액세스를 허가하는 것은 매우 위험합니다. 비공개키는, 그 밖에 알려지지 않게 해 두는 것이 전제가 되어 있습니다. 비공개키가 알려져 버리면(자), 코드는 그 비공개키를 사용해 다양한 파일에 서명해, 서명이 그 서명자의 것이다고 주장할 수 있게 됩니다.
setSignerKeyPair 서명자의 열쇠의 페어 (공개키와 비공개키)의 설정. 공격자는, 타인 (표적)의 열쇠의 페어를, 그것보다 약한 열쇠의 페어 (키 사이즈의 작은 것 등)와 옮겨놓을 수가 있게 됩니다. 또, 표적과 그 통신 상대와의 사이의 암호화된 교환을 감청할 수 있도록(듯이)도 됩니다. 표적의 통신 상대가, 표적의 「새롭다」공개키를 사용해 암호화 세션열쇠를 랩 해도, 공격자 (대응하는 비공개키의 소유자)는, 「새롭다」공개키를 사용해 그 세션열쇠의 랩을 해제해, 그 세션열쇠를 사용해 암호화된 통신 데이터를 해독할 수 있습니다.

관련 항목:
BasicPermission , Permission , Permissions , PermissionCollection , SecurityManager , 직렬화 된 형식

생성자 의 개요
SecurityPermission (String  name)
          새로운 SecurityPermission 가 지정된 이름으로 작성합니다.
SecurityPermission (String  name, String  actions)
          지정된 이름을 가지는 새로운 SecurityPermission 객체를 작성합니다.
 
메소드의 개요
 
클래스 java.security. BasicPermission 로부터 상속된 메소드
equals , getActions , hashCode , implies , newPermissionCollection
 
클래스 java.security. Permission 로부터 상속된 메소드
checkGuard , getName , toString
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , finalize , getClass , notify , notifyAll , wait , wait , wait
 

생성자 의 상세

SecurityPermission

public SecurityPermission(String  name)
새로운 SecurityPermission 가 지정된 이름으로 작성합니다. 이 이름은 SecurityPermission 의 심볼명입니다. 이름의 말미의 「.」의 나머지의 asterisk, 또는 단독의 asterisk는, 와일드 카드 매칭을 지정합니다.

파라미터:
name - 시큐리티 액세스권의 이름
예외:
NullPointerException - namenull 의 경우
IllegalArgumentException - name 가 빈 상태(empty)의 경우

SecurityPermission

public SecurityPermission(String  name,
                          String  actions)
지정된 이름을 가지는 새로운 SecurityPermission 객체를 작성합니다. name 는 SecurityPermission 의 기호명입니다. actions 의 캐릭터 라인은 현재 사용되지 않고, null 가 됩니다.

파라미터:
name - 시큐리티 액세스권의 이름
actions - null 가 아니면 안된다
예외:
NullPointerException - namenull 의 경우
IllegalArgumentException - name 가 빈 상태(empty)의 경우

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.