Anwendungsclientberechtigung

Die Anwendungsclientberechtigung setzt sich aus ObjectGrid-Berechtigungsklassen, Berechtigungsmechanismen, einem Berechtigungsprüfintervall und dem Feature "Zugriff nur durch Ersteller" zusammen.

Bei eXtreme Scale basiert die Berechtigung auf dem Subject-Objekt und auf Berechtigungen. Das Produkt unterstützt zwei Arten von Berechtigungsmechanismen: Java Authentication and Authorization Service (JAAS) und angepasste Berechtigungen.

ObjectGrid-Berechtigungsklassen

Die Berechtigung basiert auf Berechtigungen. Es gibt die folgenden vier verschiedenen Typen von Berechtigungsklassen:
  • Die Klasse MapPermission stellt Berechtigungen für den Zugriff auf die Daten in ObjectGrid-Maps dar.
  • Die Klasse ObjectGridPermission stellt Berechtigungen für den Zugriff auf ObjectGrid dar.
  • Die Klasse ServerMapPermission stellt Berechtigungen für den Zugriff auf ObjectGrid-Maps auf der Serverseite über einen Client dar.
  • Die Klasse AgentPermission stellt Berechtigungen zum Starten eines Agenten auf der Serverseite dar.
Weitere Informationen finden Sie unter Programmierung der Clientberechtigung.

Berechtigungsprüfintervall

eXtreme Scale unterstützt das Caching der Berechtigungsprüfergebnisse für Leistungszwecke. Wenn dieser Mechanismus nicht verwendet wird und eine Methode, die in der Liste der Methoden für Ihre spezielle Berechtigungsklasse aufgeführt ist, aufgerufen wird, ruft die Laufzeitumgebung den konfigurierten Berechtigungsmechanismus für die Berechtigung des Zugriffs auf. Wenn das Berechtigungsprüfintervall definiert ist, wird der Berechtigungsmechanismus auf der Basis des festgelegten Berechtigungsprüfintervalls in regelmäßigen Abständen aufgerufen. Eine Liste der Methoden für jede Berechtigungsklasse finden Sie im Abschnitt Programmierung der Clientberechtigung.

Die Berechtigungsinformationen basieren auf dem Subject-Objekt. Wenn ein Client versucht, auf die Methoden zuzugreifen, durchsucht die Laufzeitumgebung von eXtreme Scale den Cache nach dem Subject-Objekt. Wird das Objekt nicht im Cache gefunden, prüft die Laufzeitumgebung die für dieses Subject-Objekt erteilten Berechtigungen und speichert dann die Berechtigungen in einem Cache.

Das Berechtigungsprüfintervall muss vor der Initialisierung von ObjectGrid definiert werden. Sie können das Berechtigungsprüfintervall auf zwei Arten konfigurieren:

Sie können die ObjectGrid-XML-Datei verwenden, um ein ObjectGrid zu definieren und das Berechtigungsprüfintervall festzulegen. Im folgenden Beispiel wird das Berechtigungsprüfintervall auf 45 Sekunden gesetzt:
<objectGrids>
	<objectGrid name="secureClusterObjectGrid" securityEnabled="true"
	authorizationMechanism="AUTHORIZATION_MECHANISM_JAAS" 
	permissionCheckPeriod="45">
		<bean id="bean id="TransactionCallback"
className="com.ibm.websphere.samples.objectgrid.HeapTransactionCallback" />
...
</objectGrids>
Wenn Sie ein ObjectGrid über APIs erstellen möchten, rufen Sie die folgende Methode auf, um das Berechtigungsprüfintervall festzulegen. Diese Methode kann nur vor der Initialisierung der ObjectGrid-Instanz aufgerufen werden. Sie gilt nur dann für das lokale eXtreme-Scale-Programmiermodell, wenn Sie die ObjectGrid-Instanz direkt instanziieren.
/**
 * Diese Methode akzeptiert einen einzigen Parameter, der angibt, wie oft
 * die Berechtigung geprüft werden soll, die verwendet wird, um einem
 * Clientzugriff zuzulassen. Wenn der Parameter den Wert 0 hat, wird
 * der Berechtigungsmechanismus (JAAS-Berechtigung oder angepasste
 * Berechtigung) bei jedem Aufruf von get/put/update/remove/evict
 * aufgefordert zu prüfen, ob das aktuelle Subject-Objekt die erforderlichen
 * Berechtigungen besitzt. Dies kann je nach Berechtigungsimplementierung
 * vom Leistungsstandpunkt aus gesehen untragbar kostenintensiv sein, aber
 * sollten Sie den Berechtigungsmechanismus jemals aufrufen müssen, dann
 * setzen Sie den Parameter auf 0.
 * Wenn Sie den Parameter auf einen Wert > 0 setzen, gibt er an, wie lange
 * (in Sekunden) ein Berechtigungssatz zwischengespeichert werden soll, bevor
 * sie zur Aktualisierung an den Berechtigungsmechanismus zurückgegeben werden.
 * Dieser Wert liefert eine sehr viel bessere Leistung, aber wenn die
 * Back-End-Berechtigungen in dieser Zeit geändert werden, kann das
 * ObjectGrid den Zugriff zulassen oder verweigern, obwohl der
 * Back-End-Sicherheitsprovider geändert wurde.
 * 
 * @param Zeitraum - Das Berechtigungsprüfintervall in Sekunden
 */
void setPermissionCheckPeriod(int period);

Berechtigung "Zugriff nur durch Ersteller"

Die Berechtigung "Zugriff nur durch Ersteller" gewährleistet, dass ausschließlich der Benutzer (dargestellt durch die zugeordneten Principal-Objekte), der den Eintrag in die ObjectGrid-Map einfügt, auf diesen Eintrag zugreifen (lesen, aktualisieren, ungültig machen und entfernen) kann.

Das vorhandene Berechtigungsmodell für ObjectGrid-Maps basiert auf dem Zugriffstyp, aber nicht auf Dateneinträgen. Anders ausgedrückt, ein Benutzer kann mit einem bestimmten Zugriffstyp (z. B. lesen, schreiben, einfügen, löschen oder ungültig machen) entweder auf alle Daten in der Map oder auf keine Daten in der Map zugreifen. eXtreme Scale berechtigt Benutzer jedoch nicht für den Zugriff auf einzelne Dateneinträge. Dieses Feature bietet eine neue Methode für die Berechtigung von Benutzern für den Zugriff auf Dateneinträge.

In einem Szenario, in dem verschiedene Benutzer auf verschiedene Datengruppen zugreifen, kann dieses Modell hilfreich sein. Wenn der Benutzer Daten aus dem persistenten Speicher in die ObjectGrid-Maps lädt, kann der Zugriff vom persistenten Speicher berechtigt werden. In diesem Fall muss keine weitere Berechtigung auf der Ebene der ObjectGrid-Maps erfolgen. Sie müssen lediglich sicherstellen, dass die Person, die die Daten in die Map lädt, auf die Map zugreifen kann, indem Sie das Feature "Zugriff nur durch Ersteller" aktivieren.

Werte für das Attribut "accessByCreatorOnlyMode":
disabled
Das Feature "Zugriff nur durch Ersteller" ist inaktiviert.
complement
Das Feature "Zugriff nur durch Ersteller" ist aktiviert, um die Map-Berechtigung zu ergänzen. In anderen Worten, die Map-Berechtigung und das Feature "Zugriff nur durch Ersteller" sind wirksam. Deshalb können Sie die Datenoperationen weiter einschränken. Der Ersteller kann die Daten beispielsweise nicht ungültig machen.
supersede
Das Feature "Zugriff nur durch Ersteller" ist aktiviert, um die Map-Berechtigung außer Kraft zu setzen. In anderen Worten, das Feature "Zugriff nur durch Ersteller" setzt die Map-Berechtigung außer Kraft, d. h., es wird keine Map-Berechtigung durchgeführt.

Sie können den Modus für das Feature "Zugriff nur durch Ersteller" auf zwei Arten konfigurieren:

Mit einer XML-Datei:

Sie können die ObjectGrid-XML-Datei verwenden, um ein ObjectGrid zu definieren und den Modus für das Feature "Zugriff nur durch Ersteller" auf disabled (Inaktiviert), complement (Ergänzung) oder supersede (Überlagern) zu setzen.
<objectGrids>
    <objectGrid name="secureClusterObjectGrid" securityEnabled="true"	
	        accessByCreatorOnlyMode="supersede"
        <bean id="TransactionCallback"
              classname="com.ibm.websphere.samples.objectgrid.HeapTransactionCallback" />
    ...
</objectGrids>

Programmgesteuert:

Wenn Sie ein ObjectGrid über das Programm erstellen möchten, können Sie die folgende Methode aufrufen, um den Modus für das Feature "Zugriff nur durch Ersteller" festzulegen. Der Aufruf dieser Methode gilt nur dann für das lokale eXtreme-Scale-Programmiermodell, wenn Sie die ObjectGrid-Instanz direkt instanziieren:
/**
 * Legen Sie den Modus für das Feature "Zugriff nur durch Ersteller"
 * (ACCESS_BY_CREATOR_ONLY) fest.
 * Wenn Sie das Feature "Zugriff nur durch Ersteller" aktivieren, kann nur
 * der Benutzer (dargestellt durch die zugeordneten Principals), der den
 * Datensatz in die Map einfügt, auf den Datensatz zugreifen (lesen,
 * aktualisieren, ungültig machen und entfernen).
 * Das Feature "Zugriff nur durch Ersteller"  kann inaktiviert werden
 * oder das ObjectGrid-Berechtigungsmodell ergänzen oder sogar außer
 * Kraft setzen. Standardmäßig ist das Feature inaktiviert:
 * {@link SecurityConstants#ACCESS_BY_CREATOR_ONLY_DISABLED}.
 * @see SecurityConstants#ACCESS_BY_CREATOR_ONLY_DISABLED
 * @see SecurityConstants#ACCESS_BY_CREATOR_ONLY_COMPLEMENT
 * @see SecurityConstants#ACCESS_BY_CREATOR_ONLY_SUPERSEDE
 *
 * @param accessByCreatorOnlyMode the access by creator mode.
 *
 * @since WAS XD 6.1 FIX3
*/
void setAccessByCreatorOnlyMode(int accessByCreatorOnlyMode);
Zur weiteren Veranschaulichung stellen Sie sich ein Szenario vor, in dem eine ObjectGrid-Map "account" ein Bankengrid ist und Manager1 und Employee1 zwei Benutzer sind. Die eXtreme-Scale-Berechtigungsrichtlinie erteilt "Manager1" alle Zugriffsberechtigungen, "Employee1" aber nur Lesezugriff. Die JAAS-Richtlinie für die ObjectGrid-Map-Berechtigung ist im folgenden Beispiel gezeigt:
grant codebase "http://www.ibm.com/com/ibm/ws/objectgrid/security/PrivilegedAction" 
    Principal com.acme.PrincipalImpl "Manager1" {
    permission com.ibm.websphere.objectgrid.security.MapPermission 
        "banking.account", "all"
};
grant codebase "http://www.ibm.com/com/ibm/ws/objectgrid/security/PrivilegedAction" 
    Principal com.acme.PrincipalImpl "Employee1" {
    permission com.ibm.websphere.objectgrid.security.MapPermission 
        "banking.account", "read, insert"
};
Machen Sie sich Gedanken darüber, wie sich das Feature "Zugriff nur durch Ersteller" auf die Berechtigung auswirkt:
  • Inaktiviert: Wenn das Feature "Zugriff nur durch Ersteller" inaktiviert ist, sind keine Auswirkungen auf die Map-Berechtigung zu verzeichnen. Der Benutzer "Manager1" kann auf alle Daten in der Map "account" zugreifen. Der Benutzer "Employee1" kann alle Daten in der Map lesen, aber keine Daten in der Map aktualisieren, ungültig machen oder entfernen.
  • Ergänzung: Wenn Sie das Feature "Zugriff nur durch Ersteller" mit der Option "complement" (Ergänzung) aktivieren, sind die Map-Berechtigung und die Berechtigung über das Feature "Zugriff nur durch Ersteller" wirksam. Der Benutzer "Manager1" kann auf die Daten in der Map "account" zugreifen, aber nur dann, wenn ausschließlich er sie in die Map geladen hat. Der Benutzer "Employee1" kann die Daten in der Map "account" lesen, aber nur dann, wenn auschließlich er sie in die Map geladen hat. (Dieser Benutzer kann jedoch keine Daten in der Map aktualisieren, ungültig machen oder entfernen.)
  • Überlagern: Wenn Sie das Feature "Zugriff nur durch Ersteller" mit der Option "supersede" (Überlagern) aktivieren, wird die Map-Berechtigung nicht umgesetzt. Die Berechtigung über das Feature "Zugriff nur durch Ersteller" ist die einzige Berechtigungsrichtlinie. Der Benutzer "Manager1" hat dieselben Privilegien wie im Modus "Ergänzung". Er kann nur auf die Daten in der Map "account" zugreifen, wenn er selbst die Daten in die Map geladen hat. Der Benutzer "Employee1" hat jedoch vollständigen Zugriff auf die Daten in der Map "account", wenn er selbst die Daten in die Map geladen hat. Anders ausgedrückt, die in der JAAS-Richtlinie definierte Berechtigungsrichtlinie wird nicht umgesetzt.