درحال مشاهده اسناد Apigee Edge هستید.
به
اسناد Apigee X بروید. اطلاعات
آنچه باید درباره خطمشیهای اجازه Java بدانید
اگر درحال توسعه خطمشیهای «تماس با Java» هستید، باید بدانید کدام خطمشیهای اجازه در «ماشین مجازی Edge» فعال هستند و چگونه بر کد شما تأثیر میگذارند. برای مثال، کد سفارشی Java شما به سیستم فایل دسترسی نامحدود ندارد. بااینحال، درصورت دسترسی به سیستم فایل، میتوانید فایلهای خاصی مثل فایلهای منبع خطمشی را بخوانید. اما دسترسی به اکثر سیستمهای فایل دیگر مسدود است. این موضوع همه انواع اجازه JDK و هدفها یا کنشهای مربوط به آنها را فهرست میکند. برای هر هدف یا کنش، خطمشی اجازه و هرگونه استثنایی را که باید بدانید مشخص میکنیم.
برای کسب اطلاعات بیشتر درباره انواع اجازه JDK و اینکه هر اجازه چه کاری را مجاز میکند، به اجازهها در «کیت توسعه نرمافزار Java» (JDK) مراجعه کنید.
فعال کردن محدودیتهای امنیتی
در Edge for Private Cloud، محدودیتهای امنیتی بهطور پیشفرض غیرفعال هستند. این یعنی کد تماسگیری Java سفارشی شما میتواند بدون محدودیت به همه منابع دسترسی داشته باشد. برای فعال کردن محدودیتهای امنیتی در نصب Edge for Private Cloud، مراحل زیر را دنبال کنید:
- در اولین گره «پردازشگر پیام»، فایل
$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
apigeeuser: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 از نام مسیر و مجموعهای از کنشهای معتبر برای آن نام مسیر تشکیل شده است. |
خواندن | بله، اما محدودیتهایی اعمال میشود. محدودیتها را ببینید. |
| بنویسم | نه | |
| اجرا | نه | |
| حذف | نه | |
| 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
|
نه |