Tham chiếu quyền Java

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:

  1. Trên nút Message Processor đầu tiên, hãy mở tệp $APIGEE_ROOT/customer/application/message-processor.properties trong một trình chỉnh sửa. Nếu tệp không tồn tại, hãy tạo tệp.
  2. Thêm dòng sau vào tệp:
    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. Khởi động lại Trình xử lý tin nhắn:
    apigee-service message-processor restart
  5. 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