আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন। তথ্য
Java অনুমতি সংক্রান্ত নীতি সম্পর্কে আপনার যা জানা প্রয়োজন নীতি
আপনি Java কলআউট নীতি ডেভেলপ করলে, Edge JVM-এ কোন অনুমতি নীতি কার্যকর আছে এবং সেগুলি কীভাবে আপনার কোডকে প্রভাবিত করবে তা আপনাকে জানতে হবে। যেমন, আপনার কাস্টম জাভা কোডের ফাইল সিস্টেমে সীমাহীন অ্যাক্সেস নেই। তবে, ফাইল সিস্টেম অ্যাক্সেসের ক্ষেত্রে, আপনি নীতি রিসোর্স ফাইলের মতো নির্দিষ্ট ফাইল পড়তে পারবেন। তবে, অন্যান্য বেশিরভাগ ফাইল সিস্টেম অ্যাক্সেস ব্লক করা আছে। এই বিষয়ে JDK অনুমতির সব ধরন এবং সেগুলির সংশ্লিষ্ট টার্গেট বা অ্যাকশন তালিকাভুক্ত করা আছে। প্রতিটি টার্গেট বা অ্যাকশনের জন্য, আমরা অনুমতির নীতি এবং কোনও ব্যতিক্রম নির্দিষ্ট করি যা আপনাকে জানতে হবে।
JDK অনুমতির ধরন এবং প্রতিটি অনুমতি কী কী করতে দেয় সেই সম্পর্কে আরও জানতে, Java Development Kit (JDK)-এর অনুমতি দেখুন।
নিরাপত্তা সংক্রান্ত বিধিনিষেধ চালু করা
প্রাইভেট ক্লাউডের জন্য Edge-এ, নিরাপত্তা সংক্রান্ত বিধিনিষেধ ডিফল্ট হিসেবে বন্ধ করা থাকে। এর অর্থ হল যে আপনার কাস্টম জাভা কলআউট কোড কোনও বিধিনিষেধ ছাড়াই সব রিসোর্স অ্যাক্সেস করতে পারবে। প্রাইভেট ক্লাউডের জন্য Edge ইনস্টলেশনে নিরাপত্তা সংক্রান্ত বিধিনিষেধ চালু করতে নিচে উল্লেখ করা পদ্ধতি অনুসরণ করুন:
- প্রথম মেসেজ প্রসেসর নোডে, এডিটরে
$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 প্ল্যাটফর্মের জন্য ম্যানেজমেন্ট ইন্টারফেসে সংজ্ঞায়িত পদ্ধতি |
নিয়ন্ত্রণ | না |
| মনিটর | না | |
| 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. {package name} | হ্যাঁ | |
| defineClassInPackage. {package name} | না | |
| accessDeclaredMembers | না | |
| queuePrintJob | না | |
| getStackTrace | না | |
| setDefaultUncaughtExceptionHandler | না | |
| পছন্দ | না | |
| usePolicy | না | |
| java.net.NetPermission NetPermission-এ একটি নাম আছে কিন্তু কোনও অ্যাকশন তালিকা নেই; আপনার কাছে হয় নামের অনুমতি আছে অথবা নেই। |
setDefaultAuthenticator | না |
| requestPasswordAuthentication | না | |
| specifyStreamHandler | হ্যাঁ | |
| setProxySelector | না | |
| getProxySelector | না | |
| setCookieHandler | না | |
| getCookieHandler | না | |
| setResponseCache | না | |
| getResponseCache | না | |
| getNetworkInformation | না | |
| java.net.SocketPermission সকেটের মাধ্যমে নেটওয়ার্কে অ্যাক্সেসকে বোঝায়। SocketPermission-এ একটি হোস্ট স্পেসিফিকেশন এবং সেই হোস্টের সাথে কানেক্ট করার উপায় নির্দিষ্ট করা "অ্যাকশন"-এর একটি সেট থাকে। host = (hostname | IPaddress)[:portrange] portrange = portnumber | -portnumber | portnumber-[portnumber] হোস্টের সাথে কানেক্ট করার সম্ভাব্য উপায়গুলি হল accept connect listen resolve "localhost"-এর সাথে ব্যবহার করা হলেই "listen" অ্যাকশন অর্থপূর্ণ হয়। অন্যান্য অ্যাকশনের মধ্যে কোনও একটি অ্যাকশন উপস্থিত থাকলে, "সমাধান করুন" (সমাধান করুন হোস্ট/আইপি নেম সার্ভিস লুক-আপ) অ্যাকশনটি ধরে নেওয়া হয়। |
সমাধান করা | হ্যাঁ |
| কানেক্ট করা |
হ্যাঁ, তবে বিধিনিষেধ প্রযোজ্য। বিধিনিষেধ দেখুন। Apigee, sitelocal, anylocal, loopback এবং linklocal অ্যাড্রেসে অ্যাক্সেস সীমাবদ্ধ করে। |
|
| শুনুন, সম্মতি জানান |
না | |
| java.net.URLPermission প্রদত্ত URL-এর মাধ্যমে সংজ্ঞায়িত রিসোর্স বা রিসোর্সের সেট অ্যাক্সেস করার অনুমতিকে বোঝায় এবং ব্যবহারকারীর সেট করা অনুরোধ পদ্ধতি ও অনুরোধ হেডারগুলির প্রদত্ত সেটের জন্য। অনুমতির নাম হল URL স্ট্রিং। অ্যাকশন স্ট্রিং হল অনুরোধের পদ্ধতি ও হেডারের কনক্যাটেনেশন। এই ক্লাসের মাধ্যমে পদ্ধতি ও হেডার নামের রেঞ্জ সীমাবদ্ধ করা হয় না। |
হ্যাঁ | |
| LinkPermission লিঙ্ক তৈরি করার অপারেশনের জন্য অনুমতি ক্লাস। |
কঠিন | না |
| প্রতীকী | না | |
| java.security.SecurityPermission SecurityPermission-এ একটি নাম (এছাড়াও "টার্গেট নাম" হিসেবে উল্লেখ করা হয়) থাকে, কিন্তু কোনও অ্যাকশন তালিকা থাকে না; আপনার কাছে হয় নামের অনুমতি থাকে, নয়তো থাকে না। টার্গেটের নাম হল নিরাপত্তা কনফিগারেশন প্যারামিটারের নাম (নিচে দেখুন)। বর্তমানে নীতি, নিরাপত্তা, প্রদানকারী, স্বাক্ষরকারী ও পরিচয় অবজেক্টে অ্যাক্সেস সুরক্ষিত রাখতে SecurityPermission অবজেক্ট ব্যবহার করা হয়। |
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 সহ কোড চলমান অবস্থায় SecurityManager লগিং কন্ট্রোল পদ্ধতিগুলির (যেমন Logger.setLevel) কোনও একটিকে কল করলে, 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 কোনও নির্দিষ্ট সাবজেক্টের ব্যক্তিগত ক্রেডেনশিয়াল অ্যাক্সেস সুরক্ষিত করে। সাবজেক্টকে একগুচ্ছ নীতি দ্বারা উপস্থাপন করা হয়। এই অনুমতির টার্গেটের নামে ক্রেডেনশিয়াল ক্লাস নেম এবং প্রিন্সিপালের সেট উল্লেখ করা থাকে। এই অনুমতির অ্যাকশনের একমাত্র সঠিক মান হল, "read"। |
CredentialClass {PrincipalClass "PrincipalName"}* | না |
| javax.security.auth.kerberos.ServicePermission কেরবেরস পরিষেবা এবং সেইসব পরিষেবা অ্যাক্সেস করার জন্য প্রয়োজনীয় ক্রেডেনশিয়াল সুরক্ষিত করে। |
চালু | না |
| সম্মতি জানান | না | |
| javax.security.auth.kerberos.DelegationPermission কেরবেরস ডেলিগেশন মডেলের ব্যবহার সীমাবদ্ধ করতে ব্যবহৃত হয়; অর্থাৎ, ফরওয়ার্ড করা যায় ও প্রক্সি করা যায় এমন টিকিট। এই অনুমতির টার্গেট নামের মধ্যে কেরবেরস সার্ভিস প্রিন্সিপালের একটি পেয়ার নির্দিষ্ট করা থাকে। প্রথমটি হল সাবঅর্ডিনেট সার্ভিস প্রিন্সিপাল যাকে টিকিট গ্রান্টিং টিকিট (TGT) ব্যবহার করার জন্য বিশ্বাস করা হয়। দ্বিতীয় পরিষেবা প্রিন্সিপালটি সেই টার্গেট পরিষেবাটিকে নির্ধারণ করে যার সাথে সাবঅর্ডিনেট পরিষেবা প্রিন্সিপালটি ইনিশিয়েটিং KerberosPrincipal-এর হয়ে ইন্টার্যাক্ট করবে। |
চালু | না |
| সম্মতি জানান | না | |
| javax.security.auth.AuthPermission বর্তমানে, Subject, SubjectDomainCombiner, LoginContext এবং Configuration অবজেক্টে অ্যাক্সেস সুরক্ষিত করতে AuthPermission অবজেক্ট ব্যবহার করা হয়। |
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
|
না |