Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào
tài liệu Apigee X. thông tin
Những điều bạn cần biết về chính sách quyền Java
Nếu đang phát triển các chính sách Lời gọi Java, bạn cần biết những chính sách về quyền nào đang có hiệu lực trong JVM Edge và cách các chính sách đó sẽ ảnh hưởng đến mã của bạn. Ví dụ: mã Java tuỳ chỉnh của bạn không có quyền truy cập không giới hạn vào hệ thống tệp. Tuy nhiên, trong trường hợp truy cập vào hệ thống tệp, bạn có thể đọc một số tệp nhất định, chẳng hạn như tệp tài nguyên chính sách. Nhưng hầu hết các quyền truy cập khác vào hệ thống tệp đều bị chặn. Chủ đề này liệt kê tất cả các loại quyền JDK và mục tiêu hoặc hành động tương ứng của chúng. Đối với mỗi mục tiêu hoặc hành động, chúng tôi chỉ định chính sách về quyền và mọi trường hợp ngoại lệ mà bạn cần biết.
Để tìm hiểu thêm về các loại quyền JDK và những gì mà mỗi quyền cho phép, hãy xem bài viết Các quyền trong Java Development Kit (JDK).
Bật chế độ hạn chế bảo mật
Trong Edge cho Đám mây riêng tư, các quy định hạn chế về bảo mật sẽ bị vô hiệu hoá theo mặc định. Điều này có nghĩa là mã gọi Java tuỳ chỉnh của bạn có thể truy cập vào tất cả các tài nguyên mà không bị hạn chế. Để bật các quy định hạn chế bảo mật trong quá trình cài đặt Edge cho Đám mây riêng tư, hãy làm theo quy trình bên dưới:
- Trên nút Message Processor đầu tiên, hãy mở tệp
$APIGEE_ROOT/customer/application/message-processor.propertiestrong một trình chỉnh sửa. Nếu tệp không tồn tại, hãy tạo tệp. - Thêm dòng sau vào tệp:
conf_security-policy_enable.security.manager=true
- Save the file and ensure the file is owned by the
apigeeuser:chown apigee:apigee $APIGEE_ROOT/customer/application/message-processor.properties
- Khởi động lại Trình xử lý tin nhắn:
apigee-service message-processor restart
- Lặp lại các bước này trên tất cả các Trình xử lý thư còn lại.
| Loại quyền | Tên mục tiêu hoặc hành động | Quyền đã được cấp |
| java.awt.AWTPermission | ||
| accessClipboard | KHÔNG | |
| accessEventQueue | KHÔNG | |
| accessSystemTray | KHÔNG | |
| createRobot | KHÔNG | |
| fullScreenExclusive | KHÔNG | |
| listenToAllAWTEvents | KHÔNG | |
| readDisplayPixels | KHÔNG | |
| replaceKeyboardFocusManager | KHÔNG | |
| setAppletStub | KHÔNG | |
| setWindowsAlwaysOnTop | KHÔNG | |
| showWindowWithoutWarningBanner | KHÔNG | |
| toolkitModality | KHÔNG | |
| watchMousePointer | KHÔNG | |
| java.io.FilePermission java.io.FilePermission đại diện cho quyền truy cập vào một tệp hoặc thư mục. FilePermission bao gồm một tên đường dẫn và một tập hợp các thao tác hợp lệ cho tên đường dẫn đó. |
đọc | CÓ nhưng có áp dụng một số quy định hạn chế. Xem Các quy định hạn chế. |
| viết | KHÔNG | |
| thực thi | KHÔNG | |
| xoá | KHÔNG | |
| readLink | NÊN | |
| java.io.SerializablePermission SerializablePermission chứa một tên (còn được gọi là "tên mục tiêu") nhưng không có danh sách hành động; bạn có quyền được đặt tên hoặc không. |
enableSubclassImplementation | NÊN |
| enableSubstitution | KHÔNG | |
| java.lang.management.ManagementPermission Các phương thức được xác định trong giao diện quản lý cho nền tảng Java |
âm lượng | KHÔNG |
| giám sát | KHÔNG | |
| java.lang.reflect.ReflectPermission Đối với các thao tác phản chiếu. ReflectPermission là một quyền được đặt tên và không có hành động nào |
suppressAccessChecks | KHÔNG |
| newProxyInPackage.{package name} | KHÔNG | |
| java.lang.RuntimePermission Chứa một tên (còn được gọi là "tên mục tiêu") nhưng không có danh sách thao tác; bạn có thể có quyền được đặt tên hoặc không. |
createClassLoader | KHÔNG |
| getClassLoader | NÊN | |
| setContextClassLoader | NÊN | |
| enableContextClassLoaderOverride | NÊN | |
| closeClassLoader | KHÔNG | |
| setSecurityManager | KHÔNG | |
| createSecurityManager | KHÔNG | |
| getenv.{variable name} | KHÔNG | |
| exitVM.{exit status} | KHÔNG | |
| shutdownHooks | KHÔNG | |
| setFactory | KHÔNG | |
| setIO | KHÔNG | |
| modifyThread | NÊN | |
| stopThread | NÊN | |
| modifyThreadGroup | NÊN | |
| getProtectionDomain | NÊN | |
| getFileSystemAttributes | KHÔNG | |
| readFileDescriptor | NÊN | |
| writeFileDescriptor | KHÔNG | |
| loadLibrary.{library name} | KHÔNG | |
| accessClassInPackage. {package name} | NÊN | |
| defineClassInPackage. {package name} | KHÔNG | |
| accessDeclaredMembers | KHÔNG | |
| queuePrintJob | KHÔNG | |
| getStackTrace | KHÔNG | |
| setDefaultUncaughtExceptionHandler | KHÔNG | |
| tùy chọn | KHÔNG | |
| usePolicy | KHÔNG | |
| java.net.NetPermission NetPermission chứa một tên nhưng không có danh sách hành động; bạn có thể có quyền được đặt tên hoặc không. |
setDefaultAuthenticator | KHÔNG |
| requestPasswordAuthentication | KHÔNG | |
| specifyStreamHandler | NÊN | |
| setProxySelector | KHÔNG | |
| getProxySelector | KHÔNG | |
| setCookieHandler | KHÔNG | |
| getCookieHandler | KHÔNG | |
| setResponseCache | KHÔNG | |
| getResponseCache | KHÔNG | |
| getNetworkInformation | KHÔNG | |
| java.net.SocketPermission Đại diện cho quyền truy cập vào mạng thông qua các ổ cắm. SocketPermission bao gồm một quy cách máy chủ và một tập hợp "hành động" chỉ định các cách kết nối với máy chủ đó. host = (hostname | IPaddress)[:portrange] portrange = portnumber | -portnumber | portnumber-[portnumber] Các cách có thể để kết nối với máy chủ lưu trữ là accept connect listen resolve Hành động "listen" (lắng nghe) chỉ có ý nghĩa khi được dùng với "localhost". Thao tác "resolve" (phân giải các lượt tìm kiếm dịch vụ tên máy chủ/địa chỉ IP) được ngầm hiểu khi có bất kỳ thao tác nào khác. |
phân giải | NÊN |
| kết nối |
CÓ nhưng có áp dụng một số quy định hạn chế. Xem Các quy định hạn chế. Apigee hạn chế quyền truy cập vào các địa chỉ sitelocal, anylocal, loopback và linklocal. |
|
| listen, accept |
KHÔNG | |
| java.net.URLPermission Đại diện cho quyền truy cập vào một tài nguyên hoặc tập hợp tài nguyên do một URL nhất định xác định, đồng thời cho một tập hợp các phương thức yêu cầu và tiêu đề yêu cầu mà người dùng có thể đặt. Tên của quyền là chuỗi URL. Chuỗi hành động là một phép nối các phương thức và tiêu đề yêu cầu. Phạm vi của tên phương thức và tên tiêu đề không bị hạn chế bởi lớp này. |
NÊN | |
| LinkPermission Lớp Quyền cho các thao tác tạo đường liên kết. |
khó | KHÔNG |
| tượng trưng | KHÔNG | |
| java.security.SecurityPermission SecurityPermission chứa một tên (còn được gọi là "tên mục tiêu") nhưng không có danh sách thao tác; bạn có quyền được đặt tên hoặc không. Tên đích là tên của một tham số cấu hình bảo mật (xem bên dưới). Hiện tại, đối tượng SecurityPermission được dùng để bảo vệ quyền truy cập vào các đối tượng Policy, Security, Provider, Signer và Identity. |
createAccessControlContext | KHÔNG |
| getDomainCombiner | KHÔNG | |
| getPolicy | KHÔNG | |
| setPolicy | KHÔNG | |
| createPolicy.{policy type} | KHÔNG | |
| getProperty.{key} | KHÔNG | |
| setProperty.{key} | KHÔNG | |
| insertProvider | KHÔNG | |
| removeProvider.{provider name} | KHÔNG | |
| clearProviderProperties.{provider name} | KHÔNG | |
| putProviderProperty.{provider name} | KHÔNG | |
| removeProviderProperty.{provider name} | KHÔNG | |
| SQLPermission | setLog | KHÔNG |
| callAbort | KHÔNG | |
| setSyncFactory | KHÔNG | |
| setNetworkTimeout | KHÔNG | |
| deregisterDriver | KHÔNG | |
| java.util.logging.LoggingPermission SecurityManager sẽ kiểm tra đối tượng java.util.logging.LoggingPermission khi mã chạy bằng SecurityManager gọi một trong các phương thức kiểm soát nhật ký (chẳng hạn như Logger.setLevel). |
âm lượng | KHÔNG |
| java.util.PropertyPermission Tên là tên của thuộc tính ("java.home", "os.name", v.v.). Quy ước đặt tên tuân theo quy ước đặt tên theo thứ bậc cho tài sản. Ngoài ra, dấu hoa thị có thể xuất hiện ở cuối tên, sau dấu "." hoặc xuất hiện một mình để biểu thị một kết quả khớp có ký tự đại diện. Ví dụ: "java.*" hoặc "*" là hợp lệ, "*java" hoặc "a*b" là không hợp lệ. Các thao tác cần cấp được truyền đến hàm khởi tạo trong một chuỗi chứa danh sách gồm 0 hoặc nhiều từ khoá được phân tách bằng dấu phẩy. |
đọc | NÊN |
| viết | KHÔNG | |
|
javax.xml.ws.WebServicePermission
|
publishEndpoint | KHÔNG |
| javax.xml.bind.JAXBPermission | setDatatypeConverter | KHÔNG |
| javax.sound.sampled.AudioPermission Quyền truy cập vào các tài nguyên của hệ thống âm thanh. |
phát | KHÔNG |
| bản ghi | KHÔNG | |
| javax.security.auth.PrivateCredentialPermission Bảo vệ quyền truy cập vào các Thông tin đăng nhập riêng tư thuộc một Đối tượng cụ thể. Đối tượng được biểu thị bằng một Tập hợp các chủ thể. Tên đích của Quyền này chỉ định một tên lớp Chứng chỉ và một Tập hợp các đối tượng chính. Giá trị hợp lệ duy nhất cho các thao tác của Quyền này là "read". |
CredentialClass {PrincipalClass "PrincipalName"}* | KHÔNG |
| javax.security.auth.kerberos.ServicePermission Bảo vệ các dịch vụ Kerberos và thông tin xác thực cần thiết để truy cập vào các dịch vụ đó. |
bắt đầu | KHÔNG |
| chấp nhận | KHÔNG | |
| javax.security.auth.kerberos.DelegationPermission Dùng để hạn chế việc sử dụng mô hình uỷ quyền Kerberos; tức là vé có thể chuyển tiếp và có thể uỷ quyền. Tên đích của Quyền này chỉ định một cặp tên chính của dịch vụ Kerberos. Đầu tiên là bên chính của dịch vụ cấp dưới được giao phó sử dụng Ticket Granting Ticket (TGT). Chủ thể dịch vụ thứ hai chỉ định dịch vụ đích mà chủ thể dịch vụ phụ sẽ tương tác thay cho KerberosPrincipal khởi tạo. |
bắt đầu | KHÔNG |
| chấp nhận | KHÔNG | |
| javax.security.auth.AuthPermission Hiện tại, đối tượng AuthPermission được dùng để bảo vệ quyền truy cập vào các đối tượng Subject, SubjectDomainCombiner, LoginContext và Configuration. |
doAs | KHÔNG |
| doAsPrivileged | KHÔNG | |
| getSubject | KHÔNG | |
| getSubjectFromDomainCombiner | KHÔNG | |
| setReadOnly | KHÔNG | |
| modifyPrincipals | KHÔNG | |
| modifyPublicCredentials | KHÔNG | |
| modifyPrivateCredentials | KHÔNG | |
| refreshCredential | KHÔNG | |
| destroyCredential | KHÔNG | |
| createLoginContext.{name} | KHÔNG | |
| getLoginConfiguration | KHÔNG | |
| setLoginConfiguration | KHÔNG | |
| createLoginConfiguration.{configuration type} | KHÔNG | |
| refreshLoginConfiguration | KHÔNG | |
| javax.net.ssl.SSLPermission |
setHostnameVerifier | KHÔNG |
| getSSLSessionContext | KHÔNG | |
| setDefaultSSLContext | KHÔNG | |
| javax.management.MBeanPermission Quyền kiểm soát quyền truy cập vào các thao tác MBeanServer. Nếu một trình quản lý bảo mật đã được thiết lập bằng System.setSecurityManager(java.lang.SecurityManager), thì hầu hết các thao tác trên MBeanServer đều yêu cầu quyền của phương thức gọi ngụ ý một MBeanPermission phù hợp cho thao tác. action className#member[objectName] Nếu bạn có MBeanPermission, thì thao tác chỉ được phép nếu cả 4 mục đều khớp. |
addNotificationListener | KHÔNG |
| getAttribute | KHÔNG | |
| getClassLoader | KHÔNG | |
| getClassLoaderFor | KHÔNG | |
| getClassLoaderRepository | KHÔNG | |
| getDomains | KHÔNG | |
| getMBeanInfo | KHÔNG | |
| getObjectInstance | KHÔNG | |
| tạo bản sao | KHÔNG | |
| gọi | KHÔNG | |
| isInstanceOf | KHÔNG | |
| queryMBeans | KHÔNG | |
| queryNames | KHÔNG | |
| registerMBean | KHÔNG | |
| removeNotificationListener | KHÔNG | |
| setAttribute | KHÔNG | |
| unregisterMBean | KHÔNG | |
| javax.management.MBeanServerPermission |
createMBeanServer | KHÔNG |
| findMBeanServer | KHÔNG | |
| newMBeanServer | KHÔNG | |
| releaseMBeanServer | KHÔNG | |
| javax.management.MBeanTrustPermission Quyền này thể hiện "mức độ tin cậy" đối với một trình ký hoặc cơ sở mã. |
phát hiện | KHÔNG |
| * | KHÔNG | |
|
javax.management.remote.SubjectDelegationPermission
|
KHÔNG |