Pour implémenter la sécurité administrative précise, votre code doit
identifier l'instance de ressource représentée par le bean géré (MBean) et
affecter à l'utilisateur le rôle requis pour cette instance de la ressource. Cette
rubrique explique ce qu'il faut faire pour identifier la ressource et affecter le rôle
requis. Cette rubrique explique également comment exécuter la méthode de MBean sous une identité d'utilisateur différente
afin que la méthode puisse accéder à d'autres instances de ressource. Enfin,
cette rubrique explique comment contrôler si une méthode de MBean a accès à une instance de ressource
à l'aide d'interfaces de programmes.
Avant de commencer
Cette tâche suppose une
connaissance de base de la programmation MBean. Pour plus d'informations sur la programmation MBean,
voir la documentation sur l'API (Application Programming Interface) Java™ MBean.
Dans le centre de documentation, cliquez sur .
Pourquoi et quand exécuter cette tâche
Effectuez les tâches suivantes pour vous assurer qu'un MBean ou qu'un méthode de MBean
est protégé. Identifiez l'instance de ressource représentée par le MBean ou la méthode de MBean
et affectez des rôles requis pour accéder au MBean. Effectuez cette tâche
lors du développement du MBean.
Procédure
- Déterminez l'instance de ressource représentée par le MBean
et les rôles requis pour appeler les méthodes de MBean.
Chaque méthode de MBean
possède des règles de sécurité de MBean par défaut. Lorsque la méthode de MBean utilise les règles
de sécurité par défaut, l'instance de ressource représentée par le MBean est censée être
le serveur dans lequel le MBean est exécuté. Si un MBean ou une méthode de MBean représente
une instance de ressource différente du serveur sur lequel il est exécuté, procédez comme
suit :
- Identifiez l'instance de ressource représentée par le MBean.
- Si un MBean, tel que le MBean de serveur, accède au serveur
dans lequel le MBean est exécuté et le modifie, ne spécifiez pas de règle de sécurité vérifiant que l'utilisateur
qui appelle le MBean a reçu les droits d'accès au serveur, car les règles de sécurité en vigueur sont celles par défaut. Dans la plupart des cas, vous utilisez un MBean pour accéder
au serveur et le modifier.
- Si un MBean exécuté dans un serveur peut accéder et modifier des ressources
qui n'appartiennent pas directement au serveur, vérifiez si l'utilisateur appelant le
MBean possède les droits d'accès à l'instance de la ressource avant d'autoriser l'exécution
de la méthode de MBean.
Dans la plupart des cas, identifiez l'instance de ressource en identifiant
la paire clé-valeur dans le nom d'objet du MBean qui représente l'instance de ressource. L'attribut resourceIndentifierKey définit la clé.
Par
exemple, vous pouvez utiliser le MBean EJBModule pour accéder à un module Enterprise JavaBeans (EJB)
au sein d'une application exécutée dans le serveur. Dans ce cas, le nom d'objet du MBean EJBModule contient une paire clé-valeur. La clé est Application.
La valeur représente l'instance de ressource
auquel tente d'accéder le MBean EJBModule. L'utilisateur appelant cette méthode de
MBean est vérifié afin de s'assurer que les droits d'accès à cette instance de l'application ont été octroyés
avant d'autoriser l'exécution de la méthode de MBean.
L'exemple suivant
illustre la description de la sécurité administrative précise pour
le type EJBModule de MBean dans le descripteur de MBean :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE MBean SYSTEM "MbeanDescriptor.dtd">
<MBean type="EJBModule" j2eeType="EJBModule"
version="5.0"
platform="dynamicproxy"
resourceIdentifierKey="Application"
resourceType="Application"
deployerMBean="true"
description="Management interface for the EJBModule component.">
- Si vous pouvez déterminer la ressource à laquelle accède le MBean avant l'appel du MBean
mais que vous ne pouvez pas utiliser le nom d'objet de MBean pour déterminer l'instance de ressource
à laquelle accède le MBean, utilisez plutôt les paramètres transmis au MBean.
Identifiez le nom de paramètre de méthode de MBean avec une valeur de paramètre
représentant l'instance de ressource. Marquez les métadonnées de paramètre correspondant
dans le descripteur de MBean comme identifiant de ressource. Pour marquer un paramètre comme
l'identifiant de ressource, ajoutez l'attribut resourceType. L'attribut spécifie
la ressource de type que la valeur de paramètre contient. Lorsque l'attribut resourceType
est présent pour les paramètres de méthode de MBean, la valeur de paramètre détermine
l'instance de ressource que la méthode de MBean représente.
Par exemple,
une instance du MBean ApplicationManager est exécutée sur chaque serveur. Le même
MBean peut être utilisé pour démarrer et arrêter toutes les applications dans le serveur. Les méthodes
de démarrage et d'arrêt de ce MBean prennent chacune le nom d'application comme paramètre.
Elles utilisent le paramètre pour déterminer l'instance de l'application à laquelle cette
méthode de MBean tente d'accéder.
L'exemple suivant
illustre la description de la sécurité administrative précise pour
ce type de MBean dans le descripteur de MBean :
<operation
description="Start Application"
impact="ACTION" name="startApplication" role="operation"
targetObjectType="objectReference" type="void" proxyInvokeType="spray">
<signature>
<parameter description="Application Name" resourceType="Application"
name="applicationName" type="java.lang.String"/>
</signature>
</operation>
- Si la ressource à laquelle un MBean accède ne peut pas être déterminée tant que le
MBean n'est pas appelé, vérifiez si l'utilisateur appelant le MBean possède les droits d'accès à
l'instance de la ressource à l'aide des interfaces de programme d'application (API).
Marquez
le MBean ou la méthode de MBean comme exclus du contrôle d'accès dans le descripteur de MBean
à l'aide de l'attribut excludeAccessCheck. Lorsqu'un MBean est marqué comme exclu
du contrôle d'accès, toutes ses méthodes sont également exclues du contrôle d'accès.
Par
exemple, le MBean ConfigService exécutant le gestionnaire de déploiement est utilisé
pour configurer toutes les ressources au sein d'une cellule. Excluez ce MBean du contrôle d'accès
avant d'appeler les méthodes de MBean. Contrôlez que le MBean ConfigService
possède les droits d'accès à la ressource de configuration lorsque le MBean tente
d'accéder à la ressource.
L'exemple suivant
illustre la description de la sécurité administrative précise pour
le type ConfigServices de MBean dans le descripteur de MBean :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE MBean SYSTEM "MbeanDescriptor.dtd">
<MBean
version="5.0"
platform="proxy"
collaboratorClass="com.ibm.ws390.management.proxy.ConfigServiceManager"
description="Config Service component provides service of
configuration related tasks on top of configuration repository service."
type="ConfigService"
excludeAccessCheck="true"
configureMBean="true">
Certaines instructions sont présentées sur plusieurs lignes à des fins d'affichage.
L'exemple suivant illustre l'appel
la logique de méthode de MBean pour effectuer le contrôle des autorisations à l'aide d'un programme :
// Get administration authorizer.
AdminAuthorizer aa = AdminAuthorizerFactory.getAdminAuthorizer();
// Set the role that is required for this operation.
String role = com.ibm.ws.security.util.Constants.CONFIG_ROLE;
// Set the resource name.
// cells/cellName is optional.
String resource = "/nodes/"+ nodeName + /servers/" + serverName;
// Check access
if ( aa != null && !aa.checkAccess(resource, role) )
// Disallow access.
else
// Allow access.
- Affectez les rôles requis pour le MBean et les méthodes de MBean.
Les rôles requis sont automatiquement affectés selon le type
de MBean et l'impact de la méthode de MBean, comme décrit dans la rubrique relative
aux règles de sécurité de MBean par défaut.
- Spécifiez le mode de délégation.
Dans certains cas, après le contrôle d'accès initial, il peut être nécessaire d'exécuter la méthode de MBean sous une identité d'utilisateur différente
afin de pouvoir accéder à d'autres instances de ressource. Par exemple
l'opération syncNode dans le MBean CellSync attribue à l'utilisateur le rôle d'opérateur
sur l'instance du noeud synchronisé. L'opération syncNode
tente d'accéder aux ressources à portée de la cellule. Il se peut que l'utilisateur ne possède pas le droit
nécessaire pour ouvrir les fichiers sous le répertoire de cellule. Le MBean doit être exécuté comme System après
le contrôle d'accès initial de façon à ce que l'opération s'achève sans problèmes
de refus d'accès.
Paramétrez l'attribut runAs à System pour
spécifier le mode de délégation pour un MBean ou une méthode de MBean. Lorsque vous configurez l'attribut runAs
pour un MBean, la valeur s'applique à toutes les méthodes de MBean de ce MBean.
L'exemple suivant
illustre la description de la sécurité administrative précise pour
le type CellSync de MBean dans le descripteur de MBean.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE MBean SYSTEM "MbeanDescriptor.dtd">
<MBean type="CellSync"
version="5.0.1"
platform="common"
runAs="System"
description="Management interface for the configuration synchronization logic
performed at the central deployment manager for the cell.">
<operation
description="Initiate a synchronization request for a given node" impact="ACTION"
name="syncNode" role="operation" targetObjectType="objectReference" type="ja
va.lang.Boolean">
<signature>
<parameter resourceType="Node"
description="The name of the node"
name="nodeName" type="java.lang.String"/>
</signature>
</operation>
Résultats
Vous avez déterminé le type de ressource à laquelle une méthode de MBean donnée accède
et effectué le contrôle d'accès nécessaire pour que le produit
puisse accéder à la ressource.