자바 권한 참조

현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동
정보

자바 권한 정책에 대해 알아야 할 사항

자바 콜아웃 정책을 개발하는 경우 Edge JVM에 적용되는 권한 정책과 이 정책이 코드에 미치는 영향을 알아야 합니다. 예를 들어 커스텀 자바 코드는 파일 시스템에 대한 무제한 액세스 권한을 갖지 않습니다. 하지만 파일 시스템 액세스의 경우 정책 리소스 파일과 같은 특정 파일을 읽을 수 있습니다. 그러나 대부분의 다른 파일 시스템 액세스는 차단됩니다. 이 주제에는 모든 JDK 권한 유형과 해당 대상 또는 작업이 나열됩니다. Google은 각 대상 또는 작업에 대해 권한 정책 및 사용자가 알아야 하는 모든 예외를 지정합니다.

JDK 권한 유형과 각 권한이 허용하는 항목을 자세히 알아보려면 자바 개발 키트(JDK)의 권한을 참조하세요.

보안 제한사항 사용 설정

프라이빗 클라우드용 Edge에서는 보안 제한이 기본적으로 사용 중지되어 있습니다. 즉, 맞춤 자바 콜아웃 코드는 제한 없이 모든 리소스에 액세스할 수 있습니다. Private Cloud용 Edge 설치에서 보안 제한을 사용 설정하려면 아래 절차를 따르세요.

  1. 첫 번째 메시지 프로세서 노드에서 편집기에서 $APIGEE_ROOT/customer/application/message-processor.properties 파일을 엽니다. 파일이 없으면 새로 만듭니다.
  2. 파일에 다음 줄을 추가합니다.
    conf_security-policy_enable.security.manager=true
  3. Save the file and ensure the file is owned by the apigee user:
    chown apigee:apigee $APIGEE_ROOT/customer/application/message-processor.properties
  4. 메시지 프로세서를 다시 시작합니다.
    apigee-service message-processor restart
  5. 나머지 모든 메시지 프로세서에서 이 단계를 반복합니다.
권한 유형 대상 또는 작업 이름 권한 부여됨
java.awt.AWTPermission
accessClipboard 아니요
accessEventQueue 아니요
accessSystemTray 아니요
createRobot 아니요
fullScreenExclusive 아니요
listenToAllAWTEvents 아니요
readDisplayPixels 아니요
replaceKeyboardFocusManager 아니요
setAppletStub 아니요
setWindowsAlwaysOnTop 아니요
showWindowWithoutWarningBanner 아니요
toolkitModality 아니요
watchMousePointer 아니요
java.io.FilePermission

java.io.FilePermission은 파일 또는 디렉터리에 대한 액세스를 나타냅니다. FilePermission은 경로 이름과 해당 경로 이름에 유효한 작업 집합으로 구성됩니다.
read 예. 하지만 제한사항이 적용됩니다. 제한사항을 참조하세요.
write 아니요
execute 아니요
delete 아니요
readLink
java.io.SerializablePermission

SerializablePermission에는 이름('대상 이름'이라고도 함)이 포함되지만 작업 목록은 없으며 이름이 지정된 권한이 있거나 없습니다.
enableSubclassImplementation
enableSubstitution 아니요
java.lang.management.ManagementPermission

자바 플랫폼의 관리 인터페이스에 정의된 메서드
control 아니요
monitor 아니요
java.lang.reflect.ReflectPermission

리플렉션 작업용입니다. ReflectPermission은 이름이 지정된 권한이며 작업은 없습니다.
suppressAccessChecks 아니요
newProxyInPackage.{패키지 이름} 아니요
java.lang.RuntimePermission

이름('대상 이름'이라고도 함)을 포함하지만 작업 목록이 없습니다. 이름이 지정된 권한이 있거나 없는 경우입니다.
createClassLoader 아니요
getClassLoader
setContextClassLoader
enableContextClassLoaderOverride
closeClassLoader 아니요
setSecurityManager 아니요
createSecurityManager 아니요
getenv.{변수 이름} 아니요
exitVM.{종료 상태} 아니요
shutdownHooks 아니요
setFactory 아니요
setIO 아니요
modifyThread
stopThread
modifyThreadGroup
getProtectionDomain
getFileSystemAttributes 아니요
readFileDescriptor
writeFileDescriptor 아니요
loadLibrary.{라이브러리 이름} 아니요
accessClassInPackage. {패키지 이름}
defineClassInPackage. {패키지 이름} 아니요
accessDeclaredMembers 아니요
queuePrintJob 아니요
getStackTrace 아니요
setDefaultUncaughtExceptionHandler 아니요
preferences 아니요
usePolicy 아니요
java.net.NetPermission

NetPermission에는 이름이 있지만 작업 목록은 없으며 이름이 지정된 권한이 있거나 없습니다.
setDefaultAuthenticator 아니요
requestPasswordAuthentication 아니요
specifyStreamHandler
setProxySelector 아니요
getProxySelector 아니요
setCookieHandler 아니요
getCookieHandler 아니요
setResponseCache 아니요
getResponseCache 아니요
getNetworkInformation 아니요
java.net.SocketPermission

소켓을 통한 네트워크에 대한 액세스를 나타냅니다. SocketPermission은 호스트 사양과 해당 호스트에 연결하는 방법을 지정하는 '작업' 집합으로 구성됩니다.
host = (hostname | IPaddress)[:portrange]
portrange = portnumber | -portnumber | portnumber-[portnumber]

호스트에 연결하는 방법은 다음과 같습니다.

accept
connect
listen
resolve

'listen' 작업은 'localhost'와 함께 사용하는 경우에만 의미가 있습니다. 다른 작업이 있으면 'resolve'(호스트/ip 이름 서비스 조회 결정) 작업이 암시적으로 적용됩니다.
resolve
connect

예. 하지만 제한사항이 적용됩니다. 제한사항을 참조하세요.

Apigee에서는 sitelocal, anylocal, loopback, linklocal 주소에 대한 액세스를 제한합니다.

listen,
accept
아니요
java.net.URLPermission

특정 URL에서 정의한 리소스 또는 리소스 집합과 사용자가 설정할 수 있는 요청 메서드 집합 및 요청 헤더에 액세스하는 권한을 나타냅니다. 권한 이름은 URL 문자열입니다. 작업 문자열은 요청 메서드와 헤더를 연결한 것입니다. 메서드 및 헤더 이름의 범위는 이 클래스에 의해 제한되지 않습니다.
LinkPermission

링크 생성 작업에 대한 권한 클래스입니다.
hard 아니요
symbolic 아니요
java.security.SecurityPermission

SecurityPermission에는 이름('대상 이름'이라고도 함)이 포함되지만 작업 목록은 없으며 이름이 지정된 권한이 있거나 없습니다.
대상 이름은 보안 구성 매개변수의 이름입니다(아래 참조). 현재 SecurityPermission 객체는 정책, 보안, 제공업체, 서명자, ID 객체에 대한 액세스를 보호하는 데 사용됩니다.
createAccessControlContext 아니요
getDomainCombiner 아니요
getPolicy 아니요
setPolicy 아니요
createPolicy.{정책 유형} 아니요
getProperty.{키} 아니요
setProperty.{키} 아니요
insertProvider 아니요
removeProvider.{제공업체 이름} 아니요
clearProviderProperties.{제공업체 이름} 아니요
putProviderProperty.{제공업체 이름} 아니요
removeProviderProperty.{제공업체 이름} 아니요
SQLPermission setLog 아니요
callAbort 아니요
setSyncFactory 아니요
setNetworkTimeout 아니요
deregisterDriver 아니요
java.util.logging.LoggingPermission

SecurityManager가 실행 중인 코드가 로깅 제어 메서드(예: Logger.setLevel) 중 하나를 호출하는 코드가 실행될 때 SecurityManager는 java.util.logging.LoggingPermission 객체를 확인합니다.
control 아니요
java.util.PropertyPermission
이름은 속성의 이름입니다('java.home', 'os.name' 등). 이름 지정 규칙은 계층적 속성 이름 지정 규칙을 따릅니다. 또한 와일드 카드 일치를 나타내기 위해 이름 끝에 '.' 뒤에 별표 또는 별표 단독으로 표시될 수 있습니다. 예를 들어 'java.*' 또는 '*'는 유효하지만 '*java' 또는 'a*b'는 유효하지 않습니다.

허용할 작업은 0개 이상의 쉼표로 구분된 키워드 목록이 포함된 문자열의 생성자로 전달됩니다.
read
write 아니요
javax.xml.ws.WebServicePermission
publishEndpoint 아니요
javax.xml.bind.JAXBPermission setDatatypeConverter 아니요
javax.sound.sampled.AudioPermission

오디오 시스템 리소스에 대한 액세스 권한입니다.
play 아니요
record 아니요
javax.security.auth.PrivateCredentialPermission

특정 주제에 속하는 비공개 사용자 인증 정보에 대한 액세스를 보호합니다. 제목은 주 구성원 집합으로 표현됩니다. 이 권한의 대상 이름은 사용자 인증 정보 클래스 이름 및 주 구성원 집합을 지정합니다. 이 권한의 작업에 유효한 값은 'read'입니다.
CredentialClass {PrincipalClass "PrincipalName"}* 아니요
javax.security.auth.kerberos.ServicePermission

Kerberos 서비스와 해당 서비스에 액세스하는 데 필요한 사용자 인증 정보를 보호합니다.
initiate 아니요
accept 아니요
javax.security.auth.kerberos.DelegationPermission

Kerberos 위임 모델(예: 전달 및 프록시 가능 티켓)의 사용을 제한하는 데 사용됩니다.

이 권한의 대상 이름은 Kerberos 서비스 주 구성원의 쌍을 지정합니다. 첫 번째는 허용 티켓(TGT)을 사용하는 데 사용되는 종속 서비스 주 구성원입니다. 두 번째 서비스 주 구성원은 시작하는 KerberosPrincipal을 대신하여 종속 서비스 주 구성원이 상호작용하는 대상 서비스를 지정합니다.
initiate 아니요
accept 아니요
javax.security.auth.AuthPermission

현재 AuthPermission 객체는 Subject, SubjectDomainCombiner, LoginContext, Configuration 객체에 대한 액세스를 보호하는 데 사용됩니다.
doAs 아니요
doAsPrivileged 아니요
getSubject 아니요
getSubjectFromDomainCombiner 아니요
setReadOnly 아니요
modifyPrincipals 아니요
modifyPublicCredentials 아니요
modifyPrivateCredentials 아니요
refreshCredential 아니요
destroyCredential 아니요
createLoginContext.{이름} 아니요
getLoginConfiguration 아니요
setLoginConfiguration 아니요
createLoginConfiguration.{구성 유형} 아니요
refreshLoginConfiguration 아니요
javax.net.ssl.SSLPermission
setHostnameVerifier 아니요
getSSLSessionContext 아니요
setDefaultSSLContext 아니요
javax.management.MBeanPermission

MBeanServer 작업에 대한 액세스를 제어하는 권한입니다. System.setSecurityManager(java.lang.SecurityManager)를 사용하여 보안 관리자가 설정된 경우 대부분의 MBeanServer 작업에서 호출자의 권한이 작업에 적합한 MBeanPermission을 의미해야 합니다.

action className#member[objectName]

MBeanPermission이 있는 경우 4개의 모든 항목이 일치하여야만 작업을 허용합니다.
addNotificationListener 아니요
getAttribute 아니요
getClassLoader 아니요
getClassLoaderFor 아니요
getClassLoaderRepository 아니요
getDomains 아니요
getMBeanInfo 아니요
getObjectInstance 아니요
instantiate 아니요
invoke 아니요
isInstanceOf 아니요
queryMBeans 아니요
queryNames 아니요
registerMBean 아니요
removeNotificationListener 아니요
setAttribute 아니요
unregisterMBean 아니요
javax.management.MBeanServerPermission
createMBeanServer 아니요
findMBeanServer 아니요
newMBeanServer 아니요
releaseMBeanServer 아니요
javax.management.MBeanTrustPermission

이 권한은 서명자 또는 코드베이스의 '신뢰'를 나타냅니다.
register 아니요
* 아니요
javax.management.remote.SubjectDelegationPermission
아니요