<ph type="x-smartling-placeholder"></ph>
현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서. 정보
자바 권한 정책에 대해 알아야 할 사항
Java 콜아웃 정책을 개발하는 경우 이것이 코드에 어떤 영향을 미치는지에 대해 설명합니다. 예를 들어 커스텀 자바 코드는 파일 시스템에 대한 무제한 액세스 권한을 갖지 않습니다. 하지만 파일 시스템 액세스의 경우 정책 리소스 파일과 같은 특정 파일을 읽을 수 있습니다. 그러나 대부분의 다른 파일 시스템 액세스는 차단됩니다. 이 주제에는 모든 JDK 권한 유형과 해당 대상 또는 작업이 나열됩니다. Google은 각 대상 또는 작업에 대해 권한 정책 및 사용자가 알아야 하는 모든 예외를 지정합니다.
JDK 권한 유형과 각 권한이 허용하는 항목을 자세히 알아보려면 자바 개발 키트(JDK)의 권한을 참조하세요.
보안 제한사항 사용 설정
프라이빗 클라우드용 Edge에서 보안 제한은 기본적으로 사용 중지되어 있습니다. 즉, 커스텀 자바 콜아웃 코드는 제한 없이 모든 리소스에 액세스할 수 있습니다. 사용 설정 프라이빗 클라우드용 Edge 설치에 보안 제한사항이 있는 경우 다음 절차를 따르세요.
- 첫 번째 메시지 프로세서 노드에서 파일을 엽니다.
편집기의
$APIGEE_ROOT/customer/application/message-processor.properties
파일이 없으면 새로 만듭니다. - 파일에 다음 줄을 추가합니다.
conf_security-policy_enable.security.manager=true
- Save the file and ensure the file is owned by the
apigee
user:chown apigee:apigee $APIGEE_ROOT/customer/application/message-processor.properties
- 메시지 프로세서를 다시 시작합니다.
apigee-service message-processor restart
- 나머지 모든 메시지 프로세서에서 이 단계를 반복합니다.
권한 유형 | 대상 또는 작업 이름 | 권한 부여됨 |
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 자바 플랫폼의 관리 인터페이스에 정의된 메서드 |
제어 | 아니요 |
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 | 아니요 | |
환경설정 | 아니요 | |
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 | 예 |
연결 |
예. 하지만 제한사항이 적용됩니다. 제한사항을 참조하세요. 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 객체를 확인합니다. |
제어 | 아니요 |
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 오디오 시스템 리소스에 대한 액세스 권한입니다. |
재생 | 아니요 |
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 | 아니요 | |
호출하기 | 아니요 | |
isInstanceOf | 아니요 | |
queryMBeans | 아니요 | |
queryNames | 아니요 | |
registerMBean | 아니요 | |
removeNotificationListener | 아니요 | |
setAttribute | 아니요 | |
unregisterMBean | 아니요 | |
javax.management.MBeanServerPermission |
createMBeanServer | 아니요 |
findMBeanServer | 아니요 | |
newMBeanServer | 아니요 | |
releaseMBeanServer | 아니요 | |
javax.management.MBeanTrustPermission 이 권한은 서명자 또는 코드베이스의 '신뢰'를 나타냅니다. |
register | 아니요 |
* | 아니요 | |
javax.management.remote.SubjectDelegatedPermission
|
아니요 |