Tham chiếu quyền Java

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về Apigee X.
thông tin

Những điều bạn cần biết về chính sách quyền trong Java

Nếu đang phát triển các chính sách Chú thích Java, bạn cần biết những chính sách quyền nào đang có hiệu lực trong Edge JVM và ảnh hưởng của các chính sách đó đế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 có quyền 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 về chính sách. Tuy nhiên, hầu hết các quyền truy cập vào hệ thống tệp khác đều bị chặn. Chủ đề này liệt kê tất cả các loại quyền JDK và các mục tiêu hoặc hành động tương ứng. Đối với mỗi mục tiêu hoặc hành động, chúng tôi nêu rõ chính sách cấp 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à quyền của từng quyền, hãy xem nội dung Các quyền trong Bộ phát triển Java (JDK).

Bật các hạn chế bảo mật

Trong Edge dành cho đám mây riêng tư, các giới hạn bảo mật sẽ bị tắt theo mặc định. Điều này có nghĩa là mã chú thích Java tuỳ chỉnh của bạn có thể truy cập vào tất cả tài nguyên mà không có hạn chế. Để bật tính năng 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 Bộ xử lý thông báo đầ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 bộ xử lý thư:
    apigee-service message-processor restart
  5. Lặp lại các bước này trên tất cả Bộ xử lý thư còn lại.
Loại quyền Tên mục tiêu hoặc tên hành động Đã cấp quyền
java.awt.AWTPermission
accessClipboard KHÔNG NÊN
accessEventQueue KHÔNG NÊN
accessSystemTray KHÔNG NÊN
createRobot KHÔNG NÊN
fullScreenExclusive KHÔNG NÊN
listenToAllAWTEvents KHÔNG NÊN
readDisplayPixels KHÔNG NÊN
replaceKeyboardFocusManager KHÔNG NÊN
setAppletStub KHÔNG NÊN
setWindowsAlwaysOnTop KHÔNG NÊN
showWindowWithoutWarningBanner KHÔNG NÊN
toolkitModality KHÔNG NÊN
watchMousePointer KHÔNG NÊN
java.io.FilePermission

java.io.FilePermission biểu thị 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ệ với tên đường dẫn đó.
đọc CÓ nhưng có áp dụng hạn chế. Hãy xem phần Hạn chế.
ghi KHÔNG NÊN
execute KHÔNG NÊN
xóa KHÔNG NÊN
readLink NÊN
java.io.SerializablePermission

SerializablePermission chứa 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 bạn không có.
enableSubclassImplementation NÊN
enableSubstitution KHÔNG NÊN
java.lang.management.ManagementPermission

Các phương thức được xác định trong giao diện quản lý dành cho nền tảng Java
kiểm soát KHÔNG NÊN
giám sát KHÔNG NÊN
java.lang.reflect.ReflectPermission

Đối với các thao tác phản ánh. ReflectPermission là một quyền được đặt tên và không có hành động nào
suppressAccessChecks KHÔNG NÊN
newProxyInPackage.{tên gói} KHÔNG NÊN
java.lang.RuntimePermission

Chứa 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 đã đặt tên hoặc bạn không có.
createClassLoader KHÔNG NÊN
getClassLoader NÊN
setContextClassLoader NÊN
enableContextClassLoaderOverride NÊN
closeClassLoader KHÔNG NÊN
setSecurityManager KHÔNG NÊN
createSecurityManager KHÔNG NÊN
getenv.{tên biến} KHÔNG NÊN
exitVM.{exit status} KHÔNG NÊN
shutdownHooks KHÔNG NÊN
setFactory KHÔNG NÊN
setIO KHÔNG NÊN
modifyThread NÊN
stopThread NÊN
modifyThreadGroup NÊN
getProtectionDomain NÊN
getFileSystemAttributes KHÔNG NÊN
readFileDescriptor NÊN
writeFileDescriptor KHÔNG NÊN
loadLibrary.{library name} (tên thư viện) KHÔNG NÊN
accessClassInPackage. {tên gói} NÊN
validationClassInPackage. {tên gói} KHÔNG NÊN
accessDeclaredMembers KHÔNG NÊN
queuePrintJob KHÔNG NÊN
getStackTrace KHÔNG NÊN
setDefaultUncaughtExceptionHandler KHÔNG NÊN
tùy chọn KHÔNG NÊN
usePolicy KHÔNG NÊN
java.net.NetPermission

NetPermission chứa tên nhưng không có danh sách hành động; bạn có quyền được đặt tên hoặc bạn không có.
setDefaultAuthenticator KHÔNG NÊN
requestPasswordAuthentication KHÔNG NÊN
specifyStreamHandler NÊN
setProxySelector KHÔNG NÊN
getProxySelector KHÔNG NÊN
setCookieHandler KHÔNG NÊN
getCookieHandler KHÔNG NÊN
setResponseCache KHÔNG NÊN
getResponseCache KHÔNG NÊN
getNetworkInformation KHÔNG NÊN
java.net.SocketPermission

Biểu thị quyền truy cập vào mạng thông qua ổ cắm. SocketPermission bao gồm thông số kỹ thuật của máy chủ lưu trữ và một tập hợp các "thao tác" để chỉ định cách kết nối với máy chủ lưu trữ đó.
host = (tên máy chủ | địa chỉ IP)[:portrange]
cổng = số cổng | -portnumber | cổng số-[portnumber]

Các cách kết nối với máy chủ lưu trữ là

chấp nhận
kết nối
nghe
phân giải

Thao tác "nghe" chỉ có ý nghĩa khi được dùng với "máy chủ cục bộ". Thao tác "resolve" (giải quyết việc tra cứu dịch vụ tên máy chủ lưu trữ/ip) được ngụ ý khi có bất kỳ thao tác nào khác.
resolve NÊN
connect

CÓ nhưng có áp dụng hạn chế. Hãy xem phần Hạn chế.

Apigee hạn chế quyền truy cập vào các địa chỉ sitelocal, bất kỳđịa phương nào, loopback và linklocal.

nghe,
chấp nhận
KHÔNG NÊN
java.net.URLPermission

Biểu thị quyền truy cập vào một tài nguyên hoặc nhóm tài nguyên được xác định bởi một URL nhất định và cho một tập hợp các phương thức yêu cầu có thể thiết lập cho người dùng và các tiêu đề của yêu cầu. Tên của quyền là chuỗi URL. Chuỗi hành động là sự nối các phương thức yêu cầu và tiêu đề. Lớp này không hạn chế phạm vi của các tên tiêu đề và phương thức.
NÊN
LinkPermission

Lớp Quyền cho các thao tác tạo mối liên kết.
khó KHÔNG NÊN
tượng trưng KHÔNG NÊN
java.security.SecurityPermission

SecurityPermission chứa 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 đã đặt tên hoặc bạn không có.
Tên mục tiêu là tên của một thông 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 Chính sách, Bảo mật, Nhà cung cấp, Người ký và Danh tính.
createAccessControlContext KHÔNG NÊN
getDomainCombiner KHÔNG NÊN
getPolicy KHÔNG NÊN
setPolicy KHÔNG NÊN
createPolicy.{policy type} KHÔNG NÊN
getProperty.{key} KHÔNG NÊN
setProperty.{key} KHÔNG NÊN
insertProvider KHÔNG NÊN
removeProvider.{tên nhà cung cấp} KHÔNG NÊN
clearProviderProperties.{tên nhà cung cấp} KHÔNG NÊN
PutProviderProperty.{tên nhà cung cấp} KHÔNG NÊN
removeProviderProperty.{tên nhà cung cấp} KHÔNG NÊN
SQLPermission setLog KHÔNG NÊN
callAbort KHÔNG NÊN
setSyncFactory KHÔNG NÊN
setNetworkTimeout KHÔNG NÊN
deregisterDriver KHÔNG NÊN
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 việc ghi nhật ký (chẳng hạn như Logger.setLevel).
kiểm soát KHÔNG NÊN
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 thuộc tính phân cấp. Ngoài ra, dấu hoa thị có thể xuất hiện ở cuối tên, theo sau dấu "." hoặc đứng riêng lẻ để biểu thị kiểu khớp ký tự đại diện. Ví dụ: "java.*" hoặc "*" là hợp lệ, "*java" hoặc "a*b" không hợp lệ.

Các thao tác sẽ được chuyển đến hàm khởi tạo trong một chuỗi chứa danh sách 0 hoặc nhiều từ khoá được phân tách bằng dấu phẩy.
đọc NÊN
ghi KHÔNG NÊN
javax.xml.ws.WebServicePermission
publishEndpoint KHÔNG NÊN
javax.xml.bind.JAXBPermission setDatatypeConverter KHÔNG NÊN
javax.audio.sampled.AudioPermission

Truy cập quyền vào tài nguyên của hệ thống âm thanh.
phát KHÔNG NÊN
kỷ lục KHÔNG NÊN
javax.security.auth.PrivacyCredentialPermission

Bảo vệ quyền truy cập vào Thông tin xác thực riêng tư thuộc về một Chủ đề cụ thể. Đối tượng do một nhóm Hiệu trưởng đại diện. Tên mục tiêu của Quyền này chỉ định tên lớp thông tin xác thực và một bộ Hiệu trưởng. Giá trị hợp lệ duy nhất cho các thao tác của Quyền này là "đọc".
Lớp thông tin xác thực {PrincipalClass "PrincipalName"}* KHÔNG NÊN
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ụ đó.
initiate KHÔNG NÊN
chấp nhận KHÔNG NÊN
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à các vé có thể chuyển tiếp và proxy.

Tên mục tiêu của Quyền này chỉ định một cặp chính của dịch vụ kerberos. Nội dung thứ nhất là người uỷ nhiệm dịch vụ cấp dưới được uỷ thác để sử dụng Phiếu cấp vé (TGT). Dịch vụ chính thứ hai chỉ định dịch vụ mục tiêu mà dịch vụ chính thứ cấp sẽ tương tác thay mặt cho KerberosPrincipal đã khởi tạo.
initiate KHÔNG NÊN
chấp nhận KHÔNG NÊN
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 Chủ đề, Chủ đề, Chủ thể kết hợp, Đăng nhập và Cấu hình.
doAs KHÔNG NÊN
doAsPrivileged KHÔNG NÊN
getSubject KHÔNG NÊN
getSubjectFromDomainCombiner KHÔNG NÊN
setReadOnly KHÔNG NÊN
modifyPrincipals KHÔNG NÊN
modifyPublicCredentials KHÔNG NÊN
modifyPrivateCredentials KHÔNG NÊN
refreshCredential KHÔNG NÊN
destroyCredential KHÔNG NÊN
createLoginContext.{name} KHÔNG NÊN
getLoginConfiguration KHÔNG NÊN
setLoginConfiguration KHÔNG NÊN
createLoginConfiguration.{Configuration type} (Loại cấu hình) KHÔNG NÊN
refreshLoginConfiguration KHÔNG NÊN
javax.net.ssl.SSLPermission
setHostnameVerifier KHÔNG NÊN
getSSLSessionContext KHÔNG NÊN
setDefaultSSLContext KHÔNG NÊN
javax.management.MBeanPermission

Kiểm soát quyền kiểm soát quyền truy cập vào các hoạt động của 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 bao hàm một MBeanPermission phù hợp với thao tác đó.

action className#member[objectName]

Nếu bạn có một MBeanPermission, nó chỉ cho phép thực hiện các thao tác khi cả bốn mục khớp.
addNotificationListener KHÔNG NÊN
getAttribute KHÔNG NÊN
getClassLoader KHÔNG NÊN
getClassLoaderFor KHÔNG NÊN
getClassLoaderRepository KHÔNG NÊN
getDomains KHÔNG NÊN
getMBeanInfo KHÔNG NÊN
getObjectInstance KHÔNG NÊN
tạo bản sao KHÔNG NÊN
gọi KHÔNG NÊN
isInstanceOf KHÔNG NÊN
queryMBeans KHÔNG NÊN
queryNames KHÔNG NÊN
registerMBean KHÔNG NÊN
removeNotificationListener KHÔNG NÊN
setAttribute KHÔNG NÊN
unregisterMBean KHÔNG NÊN
javax.management.MBeanServerPermission
createMBeanServer KHÔNG NÊN
findMBeanServer KHÔNG NÊN
newMBeanServer KHÔNG NÊN
releaseMBeanServer KHÔNG NÊN
javax.management.MBeanTrustPermission

Quyền này thể hiện sự "tin cậy" trong một trình ký hoặc cơ sở mã.
register KHÔNG NÊN
* KHÔNG NÊN
javax.management.remote.SubjectDelegationPermission
KHÔNG NÊN