E スクリプトおよびMBeanを使用した管理
次の項が含まれます:
スクリプトを使用したサービスの構成
アプリケーションでユーザーおよびロールAPIを使用しており、デフォルトのcn属性とは異なるプロバイダのユーザー属性にアクセスする必要がある場合は、必要なユーザー属性を使用するように認証プロバイダを構成し、プロバイダを適切に初期化する必要があります。
次の手順に従って、プロバイダの初期化を変更するスクリプトを作成し、ユーザーおよびロールAPIで指定のユーザー属性を使用して、構成されたプロバイダのデータにアクセスできるようにします。
例E-1 使用例
ドメインでidstore.ldap認証プロバイダを使用していることを前提とします。次のコマンドを実行します:
wlst.sh /tmp/updateServiceInstanceProperty.py -si idstore.ldap -key "myPropName" -value "myValue"
このインスタンス・プロバイダの指定のプロパティが追加(または更新)されます。
<serviceInstance provider="idstore.ldap.provider" name="idstore.ldap"> ... <property name="myPropName" value="myValue"/> ... </serviceInstance>
親トピック: スクリプトおよびMBeanを使用した管理
MBeanを使用したサービスの構成
OPSSには、Fusion Middleware Controlおよびスクリプトによってサービスの管理、構成および監視に使用される、一連のJMXに準拠したJava EE Beanが用意されています。MBeanは、Java EEアプリケーションでのみ使用することをお薦めします。
次の各項では、OPSS MBeanの使用方法について説明します。
関連項目:
サポートされるOPSS MBean
表E-1に、OPSSでサポートされるMBeanとその基本機能、およびタスクを実行するために(カスタム・スクリプトまたはJava SEプログラムで)使用するオブジェクト名を示します。
表E-1 OPSS MBeansのリスト
| MBean | 機能 | MBeanServerオブジェクト名 |
|---|---|---|
|
更新または書込み操作では、サーバーを再起動して変更を有効にする必要があります。 |
|
|
|
資格証明データを管理します。 更新または書込み操作の場合は、変更を有効にするためにサーバーを再起動する必要はありません。変更はすべて即座に反映されます。アクセスは、セキュリティ管理者のみに制限されます。 |
|
|
|
デフォルトのコンテキストで構成されたセキュリティ・ストアで、グローバル・ポリシーを管理します。 更新または書込み操作の場合は、変更を有効にするためにサーバーを再起動する必要はありません。変更はすべて即座に反映されます。 |
|
|
|
デフォルトのコンテキストで構成されたセキュリティ・ストアで、アプリケーション・ポリシーを管理します。 更新または書込み操作の場合は、変更を有効にするためにサーバーを再起動する必要はありません。変更はすべて即座に反映されます。 |
|
|
|
|
現在のJMXコンテキストにログインしたユーザーが特定のロールに属しているかどうかを検証します。これによって構成の変更が容易になることはありません。 |
|
親トピック: MBeanを使用したサービスの構成
OPSS MBeanの使用
OPSS MBeanをコールするには、スクリプトを作成してWLSTを使用して実行するか、Javaプログラムを作成するか、Fusion Middleware ControlのMBeanブラウザを使用します。
Fusion Middleware Controlを使用してOPSS MBeanをコールするには、次の手順を実行します。
親トピック: MBeanを使用したサービスの構成
OPSS MBeansを使用したプログラミング
次の例は、JpsConfiguration MBeanのコール方法を示しています。次の点に注意してください:
-
次のJARファイルがクラスパスに入っていることを前提とします。
-
$ORACLE_HOME/oracle_common/modules/oracle.jps/jps-api.jar -
$ORACLE_HOME/oracle_common/modules/oracle.jps/jps-mbeans.jar -
$ORACLE_HOME/oracle_common/modules/oracle.jmx/jmxframework.jar -
$ORACLE_HOME/oracle_common/modules/oracle.idm/identitystore.jar -
$WEBLOGIC_HOME/server/lib/wljmxclient.jar
-
-
接続は、
initメソッドを使用して確立されています。 -
更新操作の後では必ず、維持のためのコールを行います。
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import javax.management.InstanceNotFoundException;
import javax.management.MBeanException;
import javax.management.MBeanServerConnection;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import javax.management.ReflectionException;
import javax.management.openmbean.CompositeData;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import javax.naming.Context;
import oracle.security.jps.mas.mgmt.jmx.credstore.PortableCredential;
import oracle.security.jps.mas.mgmt.jmx.credstore.PortablePasswordCredential;
import oracle.security.jps.mas.mgmt.jmx.policy.PortableApplicationRole;
import oracle.security.jps.mas.mgmt.jmx.policy.PortableCodeSource;
import oracle.security.jps.mas.mgmt.jmx.policy.PortableGrant;
import oracle.security.jps.mas.mgmt.jmx.policy.PortableGrantee;
import oracle.security.jps.mas.mgmt.jmx.policy.PortablePermission;
import oracle.security.jps.mas.mgmt.jmx.policy.PortablePrincipal;
import oracle.security.jps.mas.mgmt.jmx.policy.PortableRoleMember;
import oracle.security.jps.mas.mgmt.jmx.util.JpsJmxConstants;
public class InvokeJpsMbeans {
private static JMXConnector connector;
private static MBeanServerConnection wlsMBeanConn;
private static ObjectName configName;
private static ObjectName credName;
private static ObjectName appPolName;
private static ObjectName gloPolName;
private static ObjectName adminPolName;
private final static String STR_NAME =String.class.getName();
public static void main(String args[]) {
// Intialize connection and retrieve connection object
init();
//Check registration
if (isRegistered(configName))
System.out.println("Jps Config MBean is registered");
if (isRegistered(credName))
System.out.println("Jps Credential Mbean is registered");
if (isRegistered(appPolName))
System.out.println("Jps Application policy Mbean is registered");
if (isRegistered(gloPolName))
System.out.println("Jps Global policy Mbean is registered");
if (isRegistered(adminPolName))
System.out.println("Jps Admin Policy Mbean is registered");
//invoke MBeans
invokeConfigMBeanMethods();
invokeCredentialMBeanMethods();
invokeApplicationPolicyMBeanMethods();
invokeGlobalPolicyMBeanMethods();
invokeAdminPolicyMBeanMethhods();
}
private static void invokeConfigMBeanMethods() {
String KEY = "myKey";
String VALUE = "myValue";
String strVal;
try {
strVal = (String) wlsMBeanConn.invoke(configName, "updateProperty",
new Object[] { KEY, VALUE },
new String[] { STR_NAME, STR_NAME });
wlsMBeanConn.invoke(configName,"persist",null,null);
strVal = (String) wlsMBeanConn.invoke(configName, "getProperty",
new Object[] { KEY }, new String[] { STR_NAME });
System.out.println("Updated the property: " + strVal.equals(strVal));
strVal = (String) wlsMBeanConn.invoke(configName, "removeProperty",
new Object[] { KEY }, new String[] { STR_NAME });
wlsMBeanConn.invoke(configName,"persist",null,null);
} catch (InstanceNotFoundException e) {
// auto-generated catch block
e.printStackTrace();
} catch (MBeanException e) {
// auto-generated catch block
e.printStackTrace();
} catch (ReflectionException e) {
// auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// auto-generated catch block
e.printStackTrace();
}
}
private static void invokeCredentialMBeanMethods() {
String USER = "jdoe";
String PASSWORD = "password";
String ALIAS = "mapName";
String KEY = "keyValue";
PortableCredential cred = new PortablePasswordCredential(USER, PASSWORD.toCharArray());
try {
//seed a password credential
wlsMBeanConn.invoke(credName, "setPortableCredential", new Object[] { ALIAS, KEY, cred.toCompositeData(null) }, new String[] { STR_NAME, STR_NAME, CompositeData.class.getName() });
boolean bContainsMap = (Boolean) wlsMBeanConn.invoke(credName, "containsMap", new Object[] { ALIAS }, new String[] { STR_NAME });
System.out.println("Credstore contains map: " + ALIAS + " - " +bContainsMap);
boolean bContainsCred = (Boolean) wlsMBeanConn.invoke(credName, "containsCredential", new Object[] { ALIAS, KEY }, new String[] { STR_NAME, STR_NAME });
System.out.println("Contains Credential; " + bContainsCred);
CompositeData cd = (CompositeData) wlsMBeanConn.invoke(credName, "getPortableCredential", new Object[] { ALIAS, KEY }, new String[] { STR_NAME, STR_NAME });
cred = PortableCredential.from(cd);
PortablePasswordCredential pc = (PortablePasswordCredential) cred;
System.out.println("User name should be " + USER + " Retrieved - " + pc.getName());
System.out.println("Password should be " + PASSWORD + "retrieved - " + new String(pc.getPassword()));
//delete entire map
wlsMBeanConn.invoke(credName, "deleteCredentialMap", new Object[] {ALIAS}, new String[] {STR_NAME} );
} catch (InstanceNotFoundException e) {
// auto-generated catch block
e.printStackTrace();
} catch (MBeanException e) {
// auto-generated catch block
e.printStackTrace();
} catch (ReflectionException e) {
// auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// auto-generated catch block
e.printStackTrace();
}
}
private static void invokeApplicationPolicyMBeanMethods() {
//add grants to approles
//first create application policy
String TESTGET_APP_ROLES_MEMBERS = "testgetAppRolesMembers";
try {
wlsMBeanConn.invoke(appPolName, "deleteApplicationPolicy", new Object[] { TESTGET_APP_ROLES_MEMBERS }, new String[] { STR_NAME });
} catch (Exception e ) {
System.out.println("IGNORE: App " + TESTGET_APP_ROLES_MEMBERS + " might not exist");
}
try {
wlsMBeanConn.invoke(appPolName, "createApplicationPolicy", new Object[] { TESTGET_APP_ROLES_MEMBERS }, new String[] { STR_NAME });
// add remove members to applicaiton roles
// Create App Role here
String APP_ROLE_NAME = "ravenclaw_house";
wlsMBeanConn.invoke(appPolName, "createApplicationRole", new Object[] { TESTGET_APP_ROLES_MEMBERS, APP_ROLE_NAME, null, null, null }, new String[] { STR_NAME, STR_NAME, STR_NAME, STR_NAME, STR_NAME });
CompositeData cd = (CompositeData) wlsMBeanConn.invoke(appPolName, "getApplicationRole", new Object[] { TESTGET_APP_ROLES_MEMBERS, APP_ROLE_NAME }, new String[] { STR_NAME, STR_NAME });
PortableApplicationRole appRole = PortableApplicationRole.from(cd);
//Add custom principal here
PortableRoleMember prm_custom = new PortableRoleMember("My.Custom.Principal","CustomPrincipal",null,null,null);
CompositeData[] arrCompData = { prm_custom.toCompositeData(null) };
cd = (CompositeData) wlsMBeanConn.invoke(appPolName, "addMembersToApplicationRole", new Object[] { TESTGET_APP_ROLES_MEMBERS, appRole.toCompositeData(null), arrCompData }, new String[] { STR_NAME, CompositeData.class.getName(), CompositeData[].class.getName() });
// Chk if member got added
CompositeData[] arrCD = (CompositeData[]) wlsMBeanConn.invoke(appPolName, "getMembersForApplicationRole", new Object[] { TESTGET_APP_ROLES_MEMBERS, appRole.toCompositeData(null) }, new String[] { STR_NAME, CompositeData.class.getName() });
PortableRoleMember[] actRM = getRMArrayFromCDArray(arrCD);
PortableRoleMember[] expRM = { prm_custom};
chkRoleMemberArrays(actRM, expRM);
cd = (CompositeData) wlsMBeanConn.invoke(appPolName, "removeMembersFromApplicationRole", new Object[] { TESTGET_APP_ROLES_MEMBERS, appRole.toCompositeData(null), arrCompData }, new String[] { STR_NAME, CompositeData.class.getName(), CompositeData[].class.getName() });
// Chk if member got removed
arrCD = (CompositeData[]) wlsMBeanConn.invoke(appPolName, "getMembersForApplicationRole", new Object[] { TESTGET_APP_ROLES_MEMBERS, appRole.toCompositeData(null) }, new String[] { STR_NAME, CompositeData.class.getName() });
System.out.println("length should be zero :" + arrCD.length);
// Remove the App Role
wlsMBeanConn.invoke(appPolName, "removeApplicationRole", new Object[] { TESTGET_APP_ROLES_MEMBERS, APP_ROLE_NAME }, new String[] { STR_NAME, STR_NAME });
wlsMBeanConn.invoke(appPolName, "deleteApplicationPolicy", new Object[] { TESTGET_APP_ROLES_MEMBERS }, new String[] { STR_NAME });
} catch (InstanceNotFoundException e) {
// auto-generated catch block
e.printStackTrace();
} catch (MBeanException e) {
// auto-generated catch block
e.printStackTrace();
} catch (ReflectionException e) {
// auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// auto-generated catch block
e.printStackTrace();
}
}
private static PortableRoleMember[] getRMArrayFromCDArray(CompositeData[] arrCD) {
PortableRoleMember[] actRM = new PortableRoleMember[arrCD.length];
int idx = 0;
for (CompositeData cdRM : arrCD) {
actRM[idx++] = PortableRoleMember.from(cdRM);
}
return actRM;
}
private static void chkRoleMemberArrays(PortableRoleMember[] arrExpectedRM, PortableRoleMember[] arrActRM) {
List < PortableRoleMember > lstExpRM = new ArrayList < PortableRoleMember >(Arrays.asList(arrExpectedRM));
List < PortableRoleMember > lstActRM = new ArrayList < PortableRoleMember >(Arrays.asList(arrActRM));
for (PortableRoleMember actRM : lstActRM) {
for (int idx = 0; idx < lstExpRM.size(); idx++) {
PortableRoleMember expRM = (PortableRoleMember) lstExpRM.get(idx);
if (expRM.equals(actRM)) {
lstExpRM.remove(idx);
break;
}
}
}
System.out.println("List should be empty - " + lstExpRM.size());
}
private static void invokeAdminPolicyMBeanMethhods() {
//Connection is established as weblogic user, who by OOTB gets all permissions
Boolean bool;
try {
bool = (Boolean) wlsMBeanConn.invoke(adminPolName,"checkRole",new Object[]{"Admin"}, new String[]{STR_NAME});
System.out.println("Werblogic has Admin role: " + bool);
bool = (Boolean) wlsMBeanConn.invoke(adminPolName,"checkRole",new Object[] {"Configurator"}, new String[]{STR_NAME});
System.out.println("Werblogic has Configurator role: " + bool);
bool = (Boolean) wlsMBeanConn.invoke(adminPolName,"checkRole", new Object[]{new String[] {"Operator", "Admin", "Configurator"}},
new String[]{String[].class.getName()});
System.out.println("Werblogic has Admin,Operator,Configurator role: " + bool);
} catch (InstanceNotFoundException e) {
// auto-generated catch block
e.printStackTrace();
} catch (MBeanException e) {
// auto-generated catch block
e.printStackTrace();
} catch (ReflectionException e) {
// auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// auto-generated catch block
e.printStackTrace();
}
}
private static void invokeGlobalPolicyMBeanMethods() {
// lets create a grant in system policy
PortablePrincipal CUSTOM_JDOE = new PortablePrincipal("oracle.security.jps.internal.core.principals.CustomXmlUserImpl", "jdoe", PortablePrincipal.PrincipalType.CUSTOM);
PortablePrincipal CUSTOM_APP_ADMINS = new PortablePrincipal("oracle.security.jps.internal.core.principals.CustomXmlEnterpriseRoleImpl", "oc4j-app-administrators", PortablePrincipal.PrincipalType.CUSTOM);
PortablePrincipal[] arrPrincs = {CUSTOM_JDOE, CUSTOM_APP_ADMINS};
//codesource URL
String URL = "http://www.oracle.com/as/jps-api.jar";
PortableCodeSource pcs = new PortableCodeSource(URL);
PortableGrantee pge = new PortableGrantee(arrPrincs, pcs);
PortablePermission CSF_PERM = new PortablePermission("oracle.security.jps.service.credstore.CredentialAccessPermission", "context=SYSTEM,mapName=MY_MAP,keyName=MY_KEY", "read");
PortablePermission[] arrPerms = {CSF_PERM};
PortableGrant grnt = new PortableGrant(pge, arrPerms);
CompositeData[] arrCompData = { grnt.toCompositeData(null) };
try {
System.out.println("Creating System Policy grant");
wlsMBeanConn.invoke(gloPolName, "grantToSystemPolicy", new Object[] { arrCompData }, new String[] { CompositeData[].class.getName() });
System.out.println("Deleting the created grant");
wlsMBeanConn.invoke(gloPolName, "revokeFromSystemPolicy", new Object[] { arrCompData }, new String[] { CompositeData[].class.getName() });
} catch (InstanceNotFoundException e) {
// auto-generated catch block
e.printStackTrace();
} catch (MBeanException e) {
// auto-generated catch block
e.printStackTrace();
} catch (ReflectionException e) {
// auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// auto-generated catch block
e.printStackTrace();
}
}
private static boolean isRegistered(ObjectName name) {
try {
return wlsMBeanConn.isRegistered(name);
} catch (IOException e) {
// auto-generated catch block
e.printStackTrace();
}
return false;
}
private static void init() {
String protocol = "t3";
String jndi_root = "/jndi/";
String wlserver = "myWLServer";
String host = "myHost.com";
int port = 7001;
String adminUsername = "myAdminName";
String adminPassword = "myAdminPassw";
JMXServiceURL url;
try {
url = new JMXServiceURL(protocol,host,port,jndi_root+wlserver);
HashMap<String, Object> env = new HashMap<String, Object>();
env.put(Context.SECURITY_PRINCIPAL, adminUsername);
env.put(Context.SECURITY_CREDENTIALS, adminPassword);
env.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES,
"weblogic.management.remote");
connector = JMXConnectorFactory.connect(url, env);
wlsMBeanConn = connector.getMBeanServerConnection();
//create object names
// the next string is set to com.oracle.jps:type=JpsConfig
configName = new
ObjectName(JpsJmxConstants.MBEAN_JPS_CONFIG_FUNCTIONAL);
// the next string is set to com.oracle.jps:type=JpsApplicationPolicyStore
appPolName = new
ObjectName(JpsJmxConstants.MBEAN_JPS_APPLICATION_POLICY_STORE);
// the next string is set to com.oracle.jps:type=JpsGlobalPolicyStore
gloPolName = new
ObjectName(JpsJmxConstants.MBEAN_JPS_GLOBAL_POLICY_STORE);
// the next string is set to com.oracle.jps:type=JpsAdminPolicyStore
adminPolName = new
ObjectName(JpsJmxConstants.MBEAN_JPS_ADMIN_POLICY_STORE);
// the next string is set to com.oracle.jps:type=JpsCredentialStore
credName = new ObjectName(JpsJmxConstants.MBEAN_JPS_CREDENTIAL_STORE);
} catch (MalformedURLException e) {
// take proper action
e.printStackTrace();
} catch (IOException e) {
// take proper action
e.printStackTrace();
} catch (MalformedObjectNameException e) {
// auto-generated catch block
e.printStackTrace();
}
}
}親トピック: MBeanを使用したサービスの構成
MBeanへのアクセスの制限
ここでの説明はOPPS MBeansにのみ限定されるものではなく、Oracle Fusion Middleware MBeans全般に当てはまります。
論理ロールとは、Java EEアプリケーションで宣言またはプログラムによって指定するロールです。アプリケーション・デプロイメント・ディスクリプタで定義し、アプリケーション・コード内で使用します。論理ロールは、エンタープライズ・グループまたはユーザーにマップできますが、アプリケーション・ロールにはマップできません。
MBeansへのセキュリティ・アクセスは、セキュリティ許可ではなく、論理ロールに基づいています。MBeanには、JMX Frameworkによって実行時に施行されるロールベースの制約を受けた注釈が付けられます。
次の各項では、注釈の使用方法と特定のアクセス制限を示し、エンタープライズ・グループへの論理ロールのマッピングについて説明します。
注釈の例
次の例は、MBeanインタフェースでのエンタープライズ・グループの注釈(太字テキストの部分)の使用方法を示しています。
@Description(resourceKey = "demo.ScreenCustomizerRuntimeMBean.description",
resourceBundleBaseName = "demo.runtime.Messages")
@ImmutableInfo("true")
@Since("1.1")
public interface ScreenCustomizerRuntimeMXBean {
@Description(resourceKey = "demo.ScreenCustomizerRuntimeMBean.Active",
resourceBundleBaseName = "demo.runtime.Messages")
@AttrributeGetterRequiredGlobalSecurityRole(GlobalSecurityRole.Operator)
public boolean isActive();
@AttrributeSetterRequiredGlobalSecurityRole(GlobalSecurityRole.Admin)
public void setActive(boolean val);
@Description(resourceKey =
"demo.ScreenCustomizerRuntimeMBean.ActiveVirtualScreenId",
resourceBundleBaseName = "demo.runtime.Messages")
@DefaultValue("0")
@LegalValues( {"0", "2", "4", "6", "8" })
@RequireRestart(ConfigUptakePolicy.ApplicationRestart)
@OperationRequiredGlobalSecurityRole(GlobalSecurityRole.Admin)
public void setActiveVirtualScreenId(int id) throws IllegalArgumentException;
…
}
説明:
-
@AtrributeGetterRequiredGlobalSecurityRoleは、ユーザーがgetメソッドのisActiveにアクセスするには、Operatorロールに属している必要があることを指定します。 -
@AtrributeSetterRequiredGlobalSecurityRoleは、ユーザーがsetActiveメソッドにアクセスするには、Adminロールに属している必要があることを指定します。 -
@OperationRequiredGlobalSecurityRoleは、ユーザーがsetActiveVirtualScreenIdメソッドMBeanにアクセスするには、Adminロールに属している必要があることを指定します。
この3つの注釈はすべて、インタフェース内の特定のアイテムにのみ適用されることに注意してください。
次の例は、範囲の異なる注釈(太字テキスト)の使用方法を示しています。
@Description(resourceKey = "demo.ScreenCustomizerRuntimeMBean.description",
resourceBundleBaseName = "demo.runtime.Messages")
@ImmutableInfo("true")
@Since("1.1")
@MBeanRequiredGlobalSecurityRole(GlobalSecurityRole.Admin)
public interface ScreenCustomizerRuntimeMXBean { … }
@MbeanRequiredGlobalSecurityRoleは、ユーザーがMBeanの操作または属性にアクセスするには、Adminロールに属している必要があることを指定しているため、MBean全体が対象範囲になります。メソッドまたは属性の範囲を指定している注釈は、MBean全体に適用される注釈よりも優先されます。
GlobalSecurityRoleは、セキュリティ・チェックの実行前に、環境内で実際のロールにマップされるグローバルの論理ロール・セットを定義します。この列挙には、注釈付き操作または属性に対してすべてのユーザーが読取り/書込み権限を持っていることを示す値NONEが含まれています。
親トピック: MBeanへのアクセスの制限
エンタープライズ・グループへの論理ロールのマッピング
表E-2は、エンタープライズ・グループへの論理ロールのマッピングを示しています。
表E-2 WebLogic Serverグループへの論理ロールのマッピング
| 論理ロール | デフォルトのパーミッション | WebLogicグループ |
|---|---|---|
|
|
すべてのMBeansへの読取り/書込み権限 |
|
|
|
構成MBeansへの読取り/書込み権限 |
|
|
|
構成MBeanへの読取り権限。実行時MBeanへの読取り/書込み権限 |
|
|
|
すべてのMBeansへの読取り権限 |
|
|
|
すべてのアプリケーションMBeansへの読取り/書込み権限 |
|
|
|
すべてのアプリケーションMBeansへの読取り/書込み権限 |
|
|
|
アプリケーション構成MBeanへの読取り権限。アプリケーション実行時MBeanへの読取り/書込み権限 |
|
|
|
すべてのアプリケーション実行時MBeansおよび構成MBeansへの読取り権限 |
|
関連項目:
『Oracle WebLogic Serverロールおよびポリシーによるリソースの保護』のユーザー、グループ、セキュリティ・ロール
親トピック: MBeanへのアクセスの制限
特定のアクセス制限
デフォルトでは、すべてのMBeanの書込み操作および更新操作には、ユーザーがAdminロールまたはConfiguratorロールのメンバーである必要があります。また、@Impact(value=1)タグで注釈を付けられた操作には、ユーザーがAdminロールのメンバーである必要があり、@Impact(value=0)タグで注釈を付けられた操作には、ユーザーがAdminロールまたはOperatorロールのメンバーである必要があります。
表E-3は、MBeanの属性および操作へのアクセスに必要なロールの説明をまとめたものです。
表E-3 操作別に必要なロール
| 影響値を持つ操作 | MBeanタイプ | 必要なロール |
|---|---|---|
|
INFOまたは属性ゲッター |
システム構成MBean |
Monitor、Operator、Configurator、Admin |
|
INFOまたは属性ゲッター |
アプリケーション構成MBean |
Monitor、Operator、Configurator、Admin、ApplicationMonitor、ApplicationOperator、ApplicationConfigurator、ApplicationAdmin |
|
ACTION、ACTION_INFO、UNKNOWNまたは属性セッター |
システム構成MBean |
Admin、Configurator |
|
ACTION、ACTION_INFO、UNKNOWNまたは属性セッター |
アプリケーション構成MBean |
Admin、Configurator、ApplicationAdmin、ApplicationConfigurator |
|
INFOまたは属性ゲッター |
システム実行時MBean |
Monitor、Operator、Configurator、Admin |
|
INFOまたは属性ゲッター |
アプリケーション実行時MBean |
Monitor、Operator、Configurator、Admin、ApplicationMonitor、ApplicationOperator、ApplicationAdmin |
|
ACTION、ACTION_INFO、UNKNOWNまたは属性セッター |
システム実行時MBean |
Admin、Operator |
|
ACTION、ACTION_INFO、UNKNOWNまたは属性セッター |
アプリケーション実行時MBean |
Admin、Operator、ApplicationAdmin、ApplicationOperator |
親トピック: MBeanへのアクセスの制限