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.
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:
<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>
/**
* 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);
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.
Sie können den Modus für das Feature "Zugriff nur durch Ersteller" auf zwei Arten konfigurieren:
Mit einer XML-Datei:
<objectGrids>
<objectGrid name="secureClusterObjectGrid" securityEnabled="true"
accessByCreatorOnlyMode="supersede"
<bean id="TransactionCallback"
classname="com.ibm.websphere.samples.objectgrid.HeapTransactionCallback" />
...
</objectGrids>
Programmgesteuert:
/**
* 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);
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"
};