JobScheduler Security - Software- und Organisations
Transcription
JobScheduler Security - Software- und Organisations
JobScheduler - Job Execution and Scheduling System Software Open Source März 2015 März 2015 Seite: 1 - Impressum Software Open Source Impressum Software- und Organisations-Service GmbH Giesebrechtstr. 15 D-10629 Berlin Germany Telefon +49 (0)30 86 47 90-0 Telefax +49 (0)30 8 61 33 35 Mail [email protected] Web http://www.sos-berlin.com Letzte Aktualisierung: 03/13/2015 12:06 PM Diese Dokumentation basiert auf der JobScheduler Version 1.7.4169. Copyright © 2005-2015 SOS GmbH Berlin. All rights reserved. All trademarks or registered trademarks are the property of their respective holders. Alle Informationen in diesem Dokument können ohne vorherige Ankündigung verändert werden. This product includes software developed by the Apache Software Foundation (http://apache.org/) We would appreciate any feedback you have, or suggestions for changes and improvements; please forward your comments to [email protected]. März 2015 Seite: 2 - Inhaltsverzeichnis Software Open Source Inhaltsverzeichnis 1 ...............................................................................................................4 2 ...............................................................................................................5 3 ...............................................................................................................9 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 5 Glossar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 März 2015 Seite: 3 Software Open Source 1 März 2015 Seite: 4 Software Open Source 2 shiro will be configured with the file shiro.ini found in the class_path. This file specifies the realm with which the authentication and the authorization will be done. Authentication The authentication will be done by a user name password combination. Authentication method There are three available authentication methods • authentication against a database • authentication against ldap • authentication against a shiro.ini file Configuration with Hibernate To enable the Hibernate Realm, the following shiro.ini must be found in the classpath [main] hibernateRealm = com.sos.dialog.auth.SOSHibernateAuthorizingRealm hibernateRealm.hibernateConfigurationFile=C:\Users\nn\Documents\sos-berlin.com\jobscheduler\scheduler_current\config\hi bernate.cfg.xml securityManager.realms = $hibernateRealm cacheManager = org.apache.shiro.cache.MemoryConstrainedCacheManager securityManager.cacheManager = $cacheManager The information containing users, roles and right are stored in the following tables März 2015 Seite: 5 Software Open Source Table with user and passwords. CREATE TABLE SOS_USER ( "ID" NUMBER(9,0), "SOS_USER_NAME" VARCHAR2(250 BYTE), "SOS_USER_PASSWORD" VARCHAR2(250 BYTE), primaray key("ID") ) /*MD5 Hash*/ Directly assigned rights to roles or users. CREATE TABLE SOS_USER_RIGHT ( "ID" NUMBER(9,0), "ROLE_ID" NUMBER(9,0), "USER_ID" NUMBER(9,0), "SOS_USER_RIGHT" VARCHAR2(250), primaray key("ID") ) Table with roles CREATE TABLE SOS_USER_ROLE ( "ID" NUMBER(9,0), "SOS_USER_ROLE" VARCHAR2(250 BYTE), primaray key("ID") ) Assignment of roles to users CREATE TABLE SOS_USER2ROLE ( "ID" NUMBER(9,0), "USER_ID" NUMBER(9,0), "ROLE_ID" NUMBER(9,0), primaray key("ID") ) Configuration with LDAP To enable the Realm LDAP, the following shiro.ini must be found in the classpath In the LDAP Realm it is not possible to assign rights directly to an user. The user in LDAP will have a password which is be used for authentication. The user also will be assigned to shiro role. The mapping between shiro role and permissions is specified in the shiro.ini file . The [roles] section specifies the assignment of rights to roles März 2015 Seite: 6 Software Open Source [main] ldapRealm = com.sos.dialog.auth.SOSLdapAuthorizingRealm ldapRealm.userDnTemplate = cn={0},ou=ehp,cn=Manager,dc=my-domain,dc=com ldapRealm.searchBase = ou=ehp,cn=Manager,dc=my-domain,dc=com ldapRealm.contextFactory.url = ldap://<server>:<port> ldapRealm.groupNameAttribute=cn ldapRealm.userNameAttribute=sn #Mapping of a ldap group to roles. You can assign more than one role with the seperator sign | ldapRealm.groupRolesMap = "<user1>":"<role1>|<role2>", \ "<user2>":"<role>" rolePermissionResolver = com.sos.dialog.auth.SOSPermissionResolverAdapter rolePermissionResolver.ini = $iniRealm ldapRealm.rolePermissionResolver = $rolePermissionResolver securityManager.realms = $ldapRealm cacheManager = org.apache.shiro.cache.MemoryConstrainedCacheManager securityManager.cacheManager = $cacheManager securityManager.sessionManager.globalSessionTimeout = 1800000 [roles] <role1> = <permission1>, <permission2> <role2> = <permission1>, <permission2> Configuration with Ini File It is possible to specify users, roles and passwords in the shiro.ini file without using ldap or a database. The list of users in the section [users] asssigns each user a password (first item after assign sign) and a list of roles. In the section [roles] is a list of roles which have a comma seperated list of permissions. März 2015 Seite: 7 Software Open Source [users] root = secret, jobscheduler_dashboard_admin ur = ur, joc, joe joe = joe, joe, jid guest = guest [roles] admin = sos:products:jid:joe,sos:products:jid:joc,sos:products:jid:events jobscheduler_dashboard_admin = sos:products:jid:* joc = sos:products:jid:joc joc_admin = sos:products:jid:joc:* joe = sos:products:jid:joe events = sos:products:jid:events jobnet = sos:products:jid:jobnet März 2015 Seite: 8 Software Open Source 3 März 2015 Seite: 9 Software Open Source 4 When the JobScheduler command Restservice is enabled you can execute commands using rest service urls with http post. The command executer needs a valid login done in the SOS Security server. The command executer plugin will be installed by adding the $scheduler_data/config/scheduler.xml <plugin java_class="com.sos.jobscheduler.tools.webservices.SOSCommandSecurityPlugin"> <plugin.config/> </plugin> Here is a list of known commands • /plugin/security/login • /plugin/security/logout • /plugin/security/is_enabled • /plugin/security/start_job • /plugin/security/modify_order • /plugin/security/add_order • /plugin/security/job_chain • /plugin/security/job_chain_modify • /plugin/security/job_chain_node_modify • /plugin/security/kill_task • /plugin/security/modify_job • /plugin/security/modify_spooler • /plugin/security/process_class • /plugin/security/process_class_remove • /plugin/security/consumes • /plugin/security/remove_job_chain • /plugin/security/remove_order • /plugin/security/lock • /plugin/security/lock_remove • /plugin/security/terminate Parameters März 2015 Seite: 10 plugin in the file Software Open Source Command: /start_job |session_id| |job| |at| |force| |name| |params| Command: /modify_order |session_id| |job_chain| |order| |action| |at| |end_state| |priority| |setback| |state| |suspended| |title| |params| |runtime| Command: /add_order |session_id| |job_chain| |order| |at| |end_state| |priority| |replace| |state| |title| |web_service| |params| |runtime| Command: /job_chain |session_id| |distributed| |max_orders| |name| |orders_recoverable| |title| |visible| Command: /job_chain_modify |session_id| |job_chain| |state| Command: /job_chain_node_modify| |session_id| |job_chain| |action| |state| Command: /kill_task| |session_id| |id| |immediately| |job| Command: /modify_job| |session_id| |job| |cmd| Command: /modify_spooler| |session_id| |cmd| März 2015 Seite: 11 Software Open Source |timeout| Command: /process_class| |session_id| |scheduler_id| |name| |remote_scheduler| |replace| |max_processes| Command: /process_class_remove| |session_id| |process_class| Command: /remove_job_chain| |session_id| |job_chain| Command: /remove_order| |session_id| |job_chain| |order| Command: /lock| |session_id| |max_non_exclusive| |name| Command: /lock_remove| |session_id| |lock| Command: /terminate| |session_id| |all_schedulers| |continue_exclusive_operation| |restart| |timeout| Command: /login| |user| |password| Command: /logout| |session_id| The command executer uses the security server configured with the param security_server_address in the file $scheduler_data/config/scheduler.xml The answer of the command executer is xml <sos_security_webservice_answer> <isEnabled>true</isEnabled> <jobSchedulerAnswer/> <message> user: root, password: ********, resource: http://host:port/jobscheduler/rest/sosPermission --> authenticated </message> <resource> http://host:port/jobscheduler/rest/sosPermission </resource> <sessionId>607932d1-7499-4431-aa4c-d8580879a61a</sessionId> <user>root</user> </sos_security_webservice_answer> The login provides a session id which must be used with all commands to get the authorization for the command März 2015 Seite: 12 - Glossar Software Open Source Glossar Auftrag Ein Auftrag aktiviert die Verarbeitung einer Job-Kette. Der Auftrag enthält die Parameter für die Jobs einer Job-Kette. Jeder Job der Job-Kette hat Zugriff auf die Parameter eines Auftrags. Auftrag-Parameter überschreiben gleichnamige Job-Parameter. Ein Auftrag kann eine Zeitsteuerung enthalten. Ein Auftrag durchläuft nacheinander die Jobs einer Job-Kette. Tritt ein Verarbeitungsfehler in einem Job auf, dann kann konfiguriert werden, dass der Auftrag... • aus der Job-Kette entfernt wird. • von einem weiteren Job der Kette ausgeführt wird. • vom fehlerhaften Job wiederholt ausgeführt wird. • in der Kette am fehlerhaften Job stehen bleibt, dass heißt die Verarbeitung des Auftrag wird ausgesetzt, bis dieser wieder manuell fortgesetzt wird. Job Programme und Skripte, die vom JobScheduler ausgeführt werden sollen, müssen in Jobs eingebettet werden. Jobs können beliebige ausführbare Dateien starten oder Job-Skripte enthalten, die die Programmschnittstelle des JobScheduler verwenden. Jobs können in mehreren Instanzen (Tasks) ablaufen, wenn dies zur Skalierung der Leistung gewünscht ist. Es wird zwischen Standalone-Jobs und Auftrags-Jobs unterschieden. Während Auftrags-Jobs durch Aufträge innerhalb einer Job-Kette gestartet werden, können Standalone-Jobs davon unabhängig gestartet werden, dass heißt manuell, durch eine Zeitsteuerung oder per Verzeichnis-Überwachung. Standalone-Jobs können nicht in Job-Ketten eingereiht werden. Job-Kette Eine Reihe von Jobs, die nacheinander Aufträge verarbeiten. Der JobScheduler startet die Jobs einer Job-Kette automatisch, wenn ein Auftrag eintrifft. Job-Ketten bieten die Möglichkeit mehrere Aufträge parallel zu verarbeiten, indem die Jobs in mehreren Instanzen (Tasks) gestartet werden. JOC (JobScheduler Operations Center) JOC (JobScheduler Operations Center) ist die Oberfläche des JobScheduler zur Überwachung und Steuerung der JobScheduler Objekte, also zum Beispiel Jobs, Job-Ketten und Aufträge. _JOC öffnen Sie im Browser mit http://[scheduler_host]:[scheduler_port] , wobei [scheduler_host] und [scheduler_port] der Hostname und die Nummer des TCP Ports des JobScheduler sind (z.B. http://localhost:4444). JOE (JobScheduler Object Editor) JOE ist der JobScheduler Object Editor. Mit ihm können die JobScheduler Objekte (Jobs, Job-Ketten, Aufträge, Schedules, Prozess-Klassen, Sperren) konfiguriert werden. Gestartet wird JOE mit dem Skript: • $SCHEDULER_HOME \bin\jobeditor.cmd (Windows™) • März 2015 $SCHEDULER_HOME /bin/jobeditor.sh (Unix™) Seite: 13 - Glossar Software Open Source Schedule Die Zeitsteuerung eines Jobs oder Auftrags kann direkt am Job oder Auftrag angegeben oder in einem Schedule ausgelagert werden. Dem Job oder Auftrag wird dann lediglich der Schedule zugewiesen. Falls mehrere Jobs oder Aufträge die gleiche Zeitsteuerung haben sollen, braucht man diese so nur einmal zu formulieren. Überdies können Schedules für einen bestimmten Zeitraum andere Schedules ersetzen. So erreicht man in der Verwendung von Schedules noch mehr Flexibilität bei der Zeitsteuerung. März 2015 Seite: 14