مرجع اجازه جاوا

درحال مشاهده اسناد Apigee Edge هستید.
به اسناد Apigee X بروید.
اطلاعات

آنچه باید درباره خط‌مشی‌های اجازه Java بدانید

اگر درحال توسعه خط‌مشی‌های «تماس با Java» هستید، باید بدانید کدام خط‌مشی‌های اجازه در «ماشین مجازی Edge» فعال هستند و چگونه بر کد شما تأثیر می‌گذارند. برای مثال، کد سفارشی Java شما به سیستم فایل دسترسی نامحدود ندارد. بااین‌حال، درصورت دسترسی به سیستم فایل، می‌توانید فایل‌های خاصی مثل فایل‌های منبع خط‌مشی را بخوانید. اما دسترسی به اکثر سیستم‌های فایل دیگر مسدود است. این موضوع همه انواع اجازه JDK و هدف‌ها یا کنش‌های مربوط به آن‌ها را فهرست می‌کند. برای هر هدف یا کنش، خط‌مشی اجازه و هرگونه استثنایی را که باید بدانید مشخص می‌کنیم.

برای کسب اطلاعات بیشتر درباره انواع اجازه JDK و اینکه هر اجازه چه کاری را مجاز می‌کند، به اجازه‌ها در «کیت توسعه نرم‌افزار Java» (JDK) مراجعه کنید.

فعال کردن محدودیت‌های امنیتی

در Edge for Private Cloud، محدودیت‌های امنیتی به‌طور پیش‌فرض غیرفعال هستند. این یعنی کد تماس‌گیری Java سفارشی شما می‌تواند بدون محدودیت به همه منابع دسترسی داشته باشد. برای فعال کردن محدودیت‌های امنیتی در نصب Edge for Private Cloud، مراحل زیر را دنبال کنید:

  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 از نام مسیر و مجموعه‌ای از کنش‌های معتبر برای آن نام مسیر تشکیل شده است.
خواندن بله، اما محدودیت‌هایی اعمال می‌شود. محدودیت‌ها را ببینید.
بنویسم نه
اجرا نه
حذف نه
readLink بله
java.io.SerializablePermission

‫SerializablePermission نامی (که به‌عنوان «نام هدف» نیز شناخته می‌شود) دارد اما فهرست کنش ندارد؛ یا اجازه نام‌گذاری‌شده را دارید یا ندارید.
enableSubclassImplementation بله
enableSubstitution نه
java.lang.management.ManagementPermission

روش‌های تعریف‌شده در رابط مدیریت برای پلاتفرم جاوا
میزان صدا نه
پایشگر نه
java.lang.reflect.ReflectPermission

برای عملیات بازتابی. ‫ReflectPermission یک اجازه نام‌گذاری‌شده است و هیچ کنشی ندارد
suppressAccessChecks نه
newProxyInPackage.{package name} نه
java.lang.RuntimePermission

حاوی نام (که به‌عنوان «نام هدف» نیز شناخته می‌شود) است اما فهرست کنش ندارد؛ یا اجازه نام‌گذاری‌شده را دارید یا ندارید.
createClassLoader نه
getClassLoader بله
setContextClassLoader بله
enableContextClassLoaderOverride بله
closeClassLoader نه
setSecurityManager نه
createSecurityManager نه
getenv.{variable name} نه
exitVM.{exit status} نه
shutdownHooks نه
setFactory نه
setIO نه
modifyThread بله
stopThread بله
modifyThreadGroup بله
getProtectionDomain بله
getFileSystemAttributes نه
readFileDescriptor بله
writeFileDescriptor نه
loadLibrary.{library name} نه
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 از مشخصات میزبان و مجموعه‌ای از «کنش‌ها» تشکیل شده است که روش‌های اتصال به آن میزبان را مشخص می‌کند.
میزبان = (نام میزبان | نشانی IP)[:محدوده درگاه]
محدوده درگاه = شماره درگاه | -شماره درگاه | شماره درگاه-[شماره درگاه]

روش‌های ممکن برای اتصال به میزبان عبارت‌اند از

پذیرفتن
متصل شدن
گوش دادن
حل کردن

عمل «گوش دادن» فقط زمانی معنا دارد که با «میزبان محلی» استفاده شود. وقتی هریک از کنش‌های دیگر وجود داشته باشد، کنش «حل کردن» (حل کردن جستجوی خدمات نام میزبان/نشانی IP) به‌طور ضمنی وجود دارد.
حل کردن بله
متصل کردن

بله، اما محدودیت‌هایی اعمال می‌شود. محدودیت‌ها را ببینید.

‫Apigee دسترسی به نشانی‌های sitelocal،‏ anylocal،‏ loopback، و linklocal را محدود می‌کند.

گوش دادن،
پذیرفتن
نه
java.net.URLPermission

نشان‌دهنده اجازه دسترسی به منبع یا مجموعه‌ای از منابع تعریف‌شده توسط نشانی وب داده‌شده، و برای مجموعه داده‌شده‌ای از روش‌های درخواست و سرایندهای درخواست قابل‌تنظیم توسط کاربر است. نام اجازه رشته نشانی وب است. رشته کنش‌ها ترکیبی از روش‌های درخواست و سرصفحه‌ها است. گستره نام‌های روش و سرایند توسط این کلاس محدود نمی‌شود.
بله
LinkPermission

کلاس «اجازه» برای عملیات ایجاد پیوند.
سخت نه
نمادین نه
java.security.SecurityPermission

‫SecurityPermission (اجازه امنیتی) حاوی نام (که به‌عنوان «نام هدف» نیز شناخته می‌شود) است اما فهرست کنش‌ها را ندارد؛ یا اجازه نام‌گذاری‌شده را دارید یا ندارید.
نام هدف نام پارامتر پیکربندی امنیتی است (در زیر ببینید). درحال‌حاضر از شیء SecurityPermission برای محافظت از دسترسی به اشیای Policy،‏ Security،‏ Provider،‏ Signer، و Identity استفاده می‌شود.
createAccessControlContext نه
getDomainCombiner نه
getPolicy نه
setPolicy نه
createPolicy.{policy type} نه
getProperty.{key} نه
setProperty.{key} نه
insertProvider نه
removeProvider.{provider name} نه
clearProviderProperties.{provider name} نه
putProviderProperty.{provider name} نه
removeProviderProperty.{provider name} نه
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» معتبر نیست.

کنش‌هایی که باید اعطا شوند در رشته‌ای حاوی فهرستی از صفر یا چند کلیدواژه جداشده با کاما به سازنده ارسال می‌شوند.
خواندن بله
بنویسم نه
javax.xml.ws.WebServicePermission
publishEndpoint نه
javax.xml.bind.JAXBPermission setDatatypeConverter نه
javax.sound.sampled.AudioPermission

حقوق دسترسی به منابع سیستم صوتی.
پخش کردن نه
ضبط نه
javax.security.auth.PrivateCredentialPermission

از دسترسی به «اطلاعات اعتباری خصوصی» متعلق به «موضوع» خاصی محافظت می‌کند. «موضوع» با «مجموعه‌ای از اصول» نشان داده می‌شود. نام هدف این «اجازه» یک نام کلاس «اطلاعات اعتباری» و یک «مجموعه اصول» را مشخص می‌کند. تنها مقدار معتبر برای کنش‌های این «اجازه»، «خواندن» است.
‫CredentialClass {PrincipalClass "PrincipalName"}* نه
javax.security.auth.kerberos.ServicePermission

از سرویس‌های Kerberos و اطلاعات اعتباری لازم برای دسترسی به آن سرویس‌ها محافظت می‌کند.
آغاز نه
پذیرفتن نه
javax.security.auth.kerberos.DelegationPermission

برای محدود کردن استفاده از مدل واگذاری Kerberos استفاده می‌شود؛ یعنی بلیت‌های قابل‌انتقال و قابل‌وکالت.

نام هدف این «اجازه» جفت اصلی سرویس کربروس را مشخص می‌کند. اولین مورد مدیر خدمات فرعی است که برای استفاده از «بلیت اعطای بلیت» (TGT) به آن اعتماد شده است. مدیر سرویس دوم سرویس هدفی را تعیین می‌کند که مدیر سرویس فرعی باید ازطرف KerberosPrincipal آغازگر با آن تعامل داشته باشد.
آغاز نه
پذیرفتن نه
javax.security.auth.AuthPermission

درحال‌حاضر از شیء AuthPermission برای محافظت از دسترسی به اشیای Subject، SubjectDomainCombiner،‏ LoginContext، و Configuration استفاده می‌شود.
doAs نه
doAsPrivileged نه
getSubject نه
getSubjectFromDomainCombiner نه
setReadOnly نه
modifyPrincipals نه
modifyPublicCredentials نه
modifyPrivateCredentials نه
refreshCredential نه
destroyCredential نه
createLoginContext.{name} نه
getLoginConfiguration نه
setLoginConfiguration نه
createLoginConfiguration.{configuration type} نه
refreshLoginConfiguration نه
javax.net.ssl.SSLPermission
setHostnameVerifier نه
getSSLSessionContext نه
setDefaultSSLContext نه
javax.management.MBeanPermission

اجازه کنترل دسترسی به عملیات MBeanServer. اگر مدیر امنیتی بااستفاده از System.setSecurityManager(java.lang.SecurityManager) تنظیم شده باشد، اکثر عملیات در MBeanServer مستلزم آن است که اجازه‌های تماس‌گیرنده به MBeanPermission مناسب برای عملیات اشاره داشته باشد.

action className#member[objectName]

اگر MBeanPermission دارید، فقط درصورتی عملیات را مجاز می‌کند که هر چهار مورد مطابقت داشته باشند.
addNotificationListener نه
getAttribute نه
getClassLoader نه
getClassLoaderFor نه
getClassLoaderRepository نه
getDomains نه
getMBeanInfo نه
getObjectInstance نه
نمونه ساختن : نمونه‌سازی نه
فراخواندن نه
isInstanceOf نه
queryMBeans نه
queryNames نه
registerMBean نه
removeNotificationListener نه
setAttribute نه
unregisterMBean نه
javax.management.MBeanServerPermission
createMBeanServer نه
findMBeanServer نه
newMBeanServer نه
releaseMBeanServer نه
javax.management.MBeanTrustPermission

این اجازه نشان‌دهنده «اعتماد» به امضاکننده یا پایگاه کد است.
ثبت کردن نه
* نه
javax.management.remote.SubjectDelegationPermission
نه