<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Squarespace Site Server v5.9.2 (http://www.squarespace.com/) on Wed, 10 Mar 2010 08:24:00 GMT--><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>Security Journal</title><link>http://www.itsm-blueprint.com/securityjournal/</link><description></description><lastBuildDate>Tue, 10 Nov 2009 14:43:46 +0000</lastBuildDate><copyright></copyright><language>en-GB</language><generator>Squarespace Site Server v5.9.2 (http://www.squarespace.com/)</generator><item><title>Encountering issues when installing or updating WebSphere Application Server</title><dc:creator>Stephen Williams</dc:creator><pubDate>Fri, 02 Oct 2009 11:39:17 +0000</pubDate><link>http://www.itsm-blueprint.com/securityjournal/2009/10/2/encountering-issues-when-installing-or-updating-websphere-ap.html</link><guid isPermaLink="false">195884:1901968:5368084</guid><description><![CDATA[<p>When attempting to install or update an instance of WebSphere Application Server (WAS) on a 64-bit operating system, the following messages can be encountered:</p>
<ul>
<li><tt>Failed : Your operating system failed the prerequisites check. <br />A supported operating system was not detected. Support for your operating system might have been added after the release of the product. You can continue with the installation, but the installation might not succeed.</tt></li>
<li>Install, com.ibm.ws.install.ni.ismp.actions.PopulateMultipleMaintenanceSelectionPanelAction, msg1, 6.1.0-WS-WAS-LinuxX64-FP0000023.pak. A supported platform, operating system, related operating system architecture, and bit architecture were not detected. For example, a 32-bit product for a specific operating system and operating system architecture must be installed onto a 32-bit installation with the same operating system and operating system architecture. Similarly, a 64-bit product for a specific operating system and operating system architecture must be installed onto a 64-bit installation with the same operating system and operating system architecture. Install a product that has the platform, operating system, related operating system architecture, and bit architecture which is supported by the existing installation </li>
</ul>
<p>To resolve this issue, it is required that the target WAS instance is uninstalled completely, and then reinstalled with an updated/fixed 'maintenance.xml' file. The file <strong>must</strong> be placed into the directory '<tt>WAS/was.primary.pak' </tt>within the WAS installation image directory.</p>
<p>The file can be downloaded from this IBM page: <a href="http://www-01.ibm.com/support/docview.wss?rs=180&amp;uid=swg21268993">http://www-01.ibm.com/support/docview.wss?rs=180&amp;uid=swg21268993</a>. Detailed instructions can also be found on this page.</p>]]></description><wfw:commentRss>http://www.itsm-blueprint.com/securityjournal/rss-comments-entry-5368084.xml</wfw:commentRss></item><item><title>Managing your ITIM recycle bin</title><dc:creator>Anjola Adeniyi</dc:creator><pubDate>Fri, 11 Sep 2009 10:02:46 +0000</pubDate><link>http://www.itsm-blueprint.com/securityjournal/2009/9/11/managing-your-itim-recycle-bin.html</link><guid isPermaLink="false">195884:1901968:5159918</guid><description><![CDATA[<p>Pre ITIM 5.0 the recycle bin is enabled by default, which means that when an object is deleted in ITIM this object goes into the recycle bin.&nbsp;</p>
<p>The recycle bin is disabled by default in ITIM 5, because it can reduce ITIM performance.</p>
<p>You can disable the ITIM recycle bin manually. To disable the recycle bin, edit the enrole.properties file and update enrole.recyclebin.enable to false.</p>
<p>ITIM allows a user to set how long an object should be in the recycle bin before it can be deleted using clean up scripts. enrole.ldapserver.agelimit can be set to n number of days, in the enrole.properties file.</p>
<p>You can manually run the script below, when necessary, to delete the aged objects in the recycle bin. It may be better to insert it in the cron table.</p>
<p>Windows: &lt;ITIM_HOME&gt;\bin\win\ldapClean.cmd <br />UNIX: &lt;ITIM_HOME&gt;/bin/Unix/ldapClean.sh</p>]]></description><wfw:commentRss>http://www.itsm-blueprint.com/securityjournal/rss-comments-entry-5159918.xml</wfw:commentRss></item><item><title>Creating a service type adoption policy for specific services</title><dc:creator>Anjola Adeniyi</dc:creator><pubDate>Fri, 07 Aug 2009 13:47:27 +0000</pubDate><link>http://www.itsm-blueprint.com/securityjournal/2009/8/7/creating-a-service-type-adoption-policy-for-specific-service.html</link><guid isPermaLink="false">195884:1901968:4840201</guid><description><![CDATA[<p>At times it may be easier to create a service-type based adoption rule with separate functions to be called for separate services than creating 2 service based adoption rules.</p>
<p>JavaScript "if expressions" can be used to determine which service is in process and then call the associated function for the service. The code should be something similar to this:</p>
<p>var serviceName= service.getProperty("erservicename")[0];<br />if(serviceName == &lt;service1&gt;){<br />...//function call</p>
<p>}</p>
<p>else if(serviceName == &lt;service2&gt;) {<br />...//function call<br />}</p>]]></description><wfw:commentRss>http://www.itsm-blueprint.com/securityjournal/rss-comments-entry-4840201.xml</wfw:commentRss></item><item><title>IBM Tivoli Access Manager (TAMeb) Force Unconfigure</title><dc:creator>Jason Ross</dc:creator><pubDate>Mon, 13 Jul 2009 08:53:24 +0000</pubDate><link>http://www.itsm-blueprint.com/securityjournal/2009/7/13/ibm-tivoli-access-manager-tameb-force-unconfigure.html</link><guid isPermaLink="false">195884:1901968:4604413</guid><description><![CDATA[<p><span>With TAMeb, you may have accidentally unconfigured the TAM Policy Server before you unconfigured the authorisation server or WebSEAL instances. </span></p>
<p><span>This creates a problem, as now there is no way to unconfigure WebSEAL once the Policy Server has been unconfigured.</span></p>
<p><span>The way to solve this is to just delete the flags that TAM uses to tell if a component has been configured.</span></p>
<p>&nbsp;</p>
<p><span><strong>For UNIX:</strong></span></p>
<p><span>&nbsp;</span></p>
<p><span>The flags are in the directory &ldquo;/opt/PolicyDirector/.configure&rdquo;, as shown below</span></p>
<p><span style="font-family: 'Courier New';">&nbsp;</span></p>
<p><span># ls -la /opt/PolicyDirector/.configure</span></p>
<p><span>drwxrwxr-x<span>&nbsp; </span>2 ivmgr ivmgr 4096 Jan<span>&nbsp; </span>9 14:06 .</span></p>
<p><span>drwxrwxr-x 12 ivmgr ivmgr 4096 Feb 24 11:20 ..</span></p>
<p><span>-rw-r--r--<span>&nbsp; </span>1 root<span>&nbsp; </span>root<span>&nbsp;&nbsp;&nbsp;&nbsp; </span>0 Jan<span>&nbsp; </span>9 14:06 PDAcld-PD</span></p>
<p><span>-rw-r--r--<span>&nbsp; </span>1 ivmgr ivmgr<span>&nbsp;&nbsp; </span>47 Feb 18<span>&nbsp; </span>2008 PDlic.txt</span></p>
<p><span>-rw-r--r--<span>&nbsp; </span>1 root<span>&nbsp; </span>root<span>&nbsp;&nbsp;&nbsp;&nbsp; </span>0 Jan<span>&nbsp; </span>9 13:51 PDMgr-PD</span></p>
<p><span>-rw-r--r--<span>&nbsp; </span>1 root<span>&nbsp; </span>root<span>&nbsp;&nbsp;&nbsp;&nbsp; </span>0 Jan<span>&nbsp; </span>9 13:50 PDRTE-PD</span></p>
<p><span>So this shows that the Authorisation server (PDAcld), the Policy Server (PDMgr) and the Runtime Environment (PDRTE) are configured. If we deleted, say, the PDAcld-PD file, then in pdconfig the Authorisation server will show as not being configured.<span>&nbsp; </span>We can then configure the Authorisation server as normal.</span></p>
<p>&nbsp;</p>
<p><span><strong>For Windows:</strong></span></p>
<p><span>The flags are in the registry &ldquo;HKEY_LOCAL_MACHINE\SOFTWARE\Tivoli\&lt;component&gt;\&lt;version&gt;&rdquo;</span></p>
<p>If you change the value of &lsquo;Configured&rsquo; to &lsquo;No&rsquo; - then this component will show up as not being configured. We can then configure it as normal.</p>
<p><span>&nbsp;</span></p>
<p><span><strong>Note:</strong></span></p>
<p><span>As of TAMeb 6.1, WebSEAL uses the existence of the configuration file and the "status" key in the webseal-config stanza to determine which WebSEAL instances exist and their configuration state</span></p>
<p>&nbsp;</p>]]></description><wfw:commentRss>http://www.itsm-blueprint.com/securityjournal/rss-comments-entry-4604413.xml</wfw:commentRss></item><item><title>String pattern matching in provisioning policies</title><dc:creator>Anjola Adeniyi</dc:creator><pubDate>Tue, 23 Jun 2009 13:36:15 +0000</pubDate><link>http://www.itsm-blueprint.com/securityjournal/2009/6/23/string-pattern-matching-in-provisioning-policies.html</link><guid isPermaLink="false">195884:1901968:4413760</guid><description><![CDATA[<p>Provisioning policies can be written to do a substring match on account attributes, using the wildcard character. Select the Regular Expression menu option in the Expression Type field, and the regular expression can be written in this form: .*&lt;value&gt;.*</p>
<p>When using regular expressions special characters must be escaped using a backslash (\), and the a wildcard is escaped using a dot. The table below details the special characters and how to escape them.</p>
<table style="border-collapse: collapse; height: 120px; margin-left: 76.5pt;" border="0" cellspacing="0" cellpadding="0" width="179">
<tbody>
<tr style="height: 15pt;">
<td style="padding-bottom: 0cm; padding-left: 5.4pt; width: 93.75pt; padding-right: 5.4pt; height: 15pt; padding-top: 0cm;" width="125" valign="bottom">
<p style="margin-bottom: 0.0001pt; line-height: normal;"><span style="color: black;">Special Character</span></p>
</td>
<td style="padding-bottom: 0cm; padding-left: 5.4pt; width: 40.35pt; padding-right: 5.4pt; height: 15pt; padding-top: 0cm;" width="54" valign="bottom">
<p style="margin-bottom: 0.0001pt; line-height: normal;"><span style="color: black;">Syntax</span></p>
</td>
</tr>
<tr style="height: 15pt;">
<td style="padding-bottom: 0cm; padding-left: 5.4pt; width: 93.75pt; padding-right: 5.4pt; height: 15pt; padding-top: 0cm;" width="125" valign="bottom">
<p style="margin-bottom: 0.0001pt; line-height: normal;"><span style="color: black;">* (wildcard)</span></p>
</td>
<td style="padding-bottom: 0cm; padding-left: 5.4pt; width: 40.35pt; padding-right: 5.4pt; height: 15pt; padding-top: 0cm;" width="54" valign="bottom">
<p style="margin-bottom: 0.0001pt; line-height: normal;"><span style="color: black;">.*</span></p>
</td>
</tr>
<tr style="height: 15pt;">
<td style="padding-bottom: 0cm; padding-left: 5.4pt; width: 93.75pt; padding-right: 5.4pt; height: 15pt; padding-top: 0cm;" width="125" valign="bottom">
<p style="margin-bottom: 0.0001pt; line-height: normal;"><span style="color: black;">?</span></p>
</td>
<td style="padding-bottom: 0cm; padding-left: 5.4pt; width: 40.35pt; padding-right: 5.4pt; height: 15pt; padding-top: 0cm;" width="54" valign="bottom">
<p style="margin-bottom: 0.0001pt; line-height: normal;"><span style="color: black;">\?</span></p>
</td>
</tr>
<tr style="height: 15pt;">
<td style="padding-bottom: 0cm; padding-left: 5.4pt; width: 93.75pt; padding-right: 5.4pt; height: 15pt; padding-top: 0cm;" width="125" valign="bottom">
<p style="margin-bottom: 0.0001pt; line-height: normal;"><span style="color: black;">}</span></p>
</td>
<td style="padding-bottom: 0cm; padding-left: 5.4pt; width: 40.35pt; padding-right: 5.4pt; height: 15pt; padding-top: 0cm;" width="54" valign="bottom">
<p style="margin-bottom: 0.0001pt; line-height: normal;"><span style="color: black;">\}</span></p>
</td>
</tr>
<tr style="height: 15pt;">
<td style="padding-bottom: 0cm; padding-left: 5.4pt; width: 93.75pt; padding-right: 5.4pt; height: 15pt; padding-top: 0cm;" width="125" valign="bottom">
<p style="margin-bottom: 0.0001pt; line-height: normal;"><span style="color: black;">/</span></p>
</td>
<td style="padding-bottom: 0cm; padding-left: 5.4pt; width: 40.35pt; padding-right: 5.4pt; height: 15pt; padding-top: 0cm;" width="54" valign="bottom">
<p style="margin-bottom: 0.0001pt; line-height: normal;"><span style="color: black;">\/</span></p>
</td>
</tr>
<tr style="height: 15pt;">
<td style="padding-bottom: 0cm; padding-left: 5.4pt; width: 93.75pt; padding-right: 5.4pt; height: 15pt; padding-top: 0cm;" width="125" valign="bottom">
<p style="margin-bottom: 0.0001pt; line-height: normal;"><span style="color: black;">&rsquo;</span></p>
</td>
<td style="padding-bottom: 0cm; padding-left: 5.4pt; width: 40.35pt; padding-right: 5.4pt; height: 15pt; padding-top: 0cm;" width="54" valign="bottom">
<p style="margin-bottom: 0.0001pt; line-height: normal;"><span style="color: black;">\&rsquo;</span></p>
</td>
</tr>
</tbody>
</table>]]></description><wfw:commentRss>http://www.itsm-blueprint.com/securityjournal/rss-comments-entry-4413760.xml</wfw:commentRss></item><item><title>The IBM Tivoli Identity Manager API Scripting Tool</title><dc:creator>Eustace Cornwall</dc:creator><pubDate>Thu, 28 May 2009 15:34:18 +0000</pubDate><link>http://www.itsm-blueprint.com/securityjournal/2009/5/28/the-ibm-tivoli-identity-manager-api-scripting-tool.html</link><guid isPermaLink="false">195884:1901968:4112048</guid><description><![CDATA[<p style="padding-left: 30px;"><span>The ITIM API Scripting tool, (apiscript), is a good way to perform ITIM operations from the command line. It provides a quick an easy way of accessing the ITIM APIs without having to do any programming or developing ITDI assembly lines, thus, potentially reducing the time and effort for delivering a particular function, or just simply extracting data or doing a task in ITIM without the overhead of having ITDI installed or of starting up the ITIM Admin console. It will be particularly useful for labour intensive repetitive tasks, the sort of tasks that ITDI would typically be used for.</span></p>
<h2 style="MARGIN: 10pt 0cm 0pt"><span>What is it?</span></h2>
<p style="MARGIN: 0cm 0cm 10pt"><span>This tool is simply a front end to the IBM WebSphere Adminisrative Scripting tool (wsadmin) which uses the Jython environment to access the following public APIs:</span></p>
<ul>
<li>
<div style="padding-left: 60px;"><span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><span><span style="FONT: 7pt 'Times New Roman'">&nbsp;</span></span></span><span>Container Management</span></div>
</li>
<li>
<div style="padding-left: 60px;"><span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><span><span style="FONT: 7pt 'Times New Roman'">&nbsp;</span></span></span><span>Person Management</span></div>
</li>
<li>
<div style="padding-left: 60px;"><span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><span><span style="FONT: 7pt 'Times New Roman'">&nbsp;</span></span></span><span>Policy Mnagement</span></div>
</li>
<li>
<div style="padding-left: 60px;"><span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><span><span style="FONT: 7pt 'Times New Roman'">&nbsp;</span></span></span><span>Role Management</span></div>
</li>
<li>
<div style="padding-left: 60px;"><span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><span><span style="FONT: 7pt 'Times New Roman'">&nbsp;</span></span></span><span>Request Management</span></div>
</li>
</ul>
<p style="MARGIN: 0cm 0cm 10pt">&nbsp;</p>
<h2 style="MARGIN: 10pt 0cm 0pt"><span>Using it</span></h2>
<p style="MARGIN: 0cm 0cm 10pt"><span>The script you write is used as a file argument for the executable, apiscript.bat for Windows platforms and apiscript.ksh for UNIX).</span></p>
<p style="padding-left: 150px;"><span style="FONT-FAMILY: 'Courier New'">apiscript.bat &ndash;f &lt;scriptname&gt;</span></p>
<h3 style="MARGIN: 10pt 0cm 0pt"><span>Example</span></h3>
<p style="MARGIN: 0cm 0cm 10pt"><span>The following script will create a dynamic role in ITIM, where the rule for membership is all users that have the location attribute set in their profile as &ldquo;London&rdquo;, i.e. LDAP filter: l=London. Note the use if the arguments on the &ldquo;request&rdquo; line.</span></p>
<p><span>
<p style="padding-left: 150px;"><span style="FONT-FAMILY: 'Courier New'">#SCRIPT FILE NAME<span style="mso-spacerun: yes"> </span>test_dynorgrole.py</span></p>
<p style="padding-left: 150px;"><span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"># import w/ rename for less typing</span></p>
<p style="padding-left: 150px;"><span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'">from apiscript.util import orgchart</span></p>
<p style="padding-left: 150px;"><span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'">from apiscript.util import orgrole</span></p>
<p style="padding-left: 150px;"><span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'">import apiscript.util</span></p>
<p style="padding-left: 150px;"><span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'">from com.ibm.itim.apps import Request</span></p>
<p style="padding-left: 150px;"><span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'">org_cont_mo = orgchart.get_default_org_mo()</span></p>
<p style="padding-left: 150px;"><span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'">print "found default org %s" % org_cont_mo.data.name</span></p>
<p style="padding-left: 150px;">&nbsp;</p>
<p style="padding-left: 150px;"><span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'">request = orgrole.submit_create_dyn_role_from_args(org_cont_mo, 'Example Dynamic Role', 'A simple description for an example dynamic role.', '(l=London)')</span></p>
<p style="padding-left: 150px;"><span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'">print "waiting on request %s" % request.ID</span></p>
<p style="padding-left: 150px;"><span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'">apiscript.util.wait_requests([request])</span></p>
<p style="padding-left: 150px;"><span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'">assert request.status == Request.SUCCEEDED</span></p>
</span>
<p><span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'">
<p style="MARGIN: 0cm 0cm 10pt">&nbsp;</p>
</span></p>
</p>
<p style="padding-left: 90px;">&nbsp;</p>
<p style="MARGIN: 0cm 0cm 10pt"><span>A properties file should be added to the /etc directory (a location within the directory structure created when the code is download and uncompressed/unzipped). The file should be named <em style="mso-bidi-font-style: normal">&lt;hostname&gt;.</em>properties, where hostname is the actual hostname of the server the code resides on &ndash; in this example, the hostname was &ldquo;<strong style="mso-bidi-font-weight: normal">itimserver&rdquo;</strong>.</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span>Alternatively, the file, default.properties file could be edited with the relevant WebSphere and ITIM admin login credentials.</span></p>
<p style="MARGIN: 0cm 0cm 10pt">&nbsp;</p>
<p><span>
<p style="padding-left: 150px;"><span style="FONT-FAMILY: 'Courier New'">#properties file:<span style="mso-spacerun: yes"> </span>itimserver.properties</span></p>
<p style="padding-left: 150px;"><span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"># default.properties: local configuration</span></p>
<p style="padding-left: 150px;"><span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'">enrole.appServer.ejbuser.principal=wasadmin</span></p>
<p style="padding-left: 150px;"><span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'">enrole.appServer.ejbuser.credentials=passw0rd</span></p>
<p style="padding-left: 150px;"><span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'">enrole.appServer.systemuser.principal=ITIM Manager</span></p>
<p style="padding-left: 150px;"><span style="FONT-SIZE: 9pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'">enrole.appServer.systemuser.credentials=passw0rd</span></p>
<p style="padding-left: 150px;">&nbsp;</p>
</span>
<p>&nbsp;</p>
</p>
<p style="MARGIN: 0cm 0cm 10pt"><span style="mso-bidi-font-family: 'Courier New'">The following is the command line to execute the script shown above:</span></p>
<p>&nbsp;</p>
<p style="padding-left: 150px;"><strong style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 'Courier New'">apiscript.bat &ndash;f test_dynorgrole.py</span></strong></p>
<p style="padding-left: 150px;">
<p style="MARGIN: 0cm 0cm 10pt"><span style="mso-bidi-font-family: 'Courier New'">Note: If the script file is not in the same directory as the executable, then the full pathname should be used to specify the location of the script file, as shown in the screenshot below. Also, if WebSphere and ITIM have not been installed in their default locations, the environment settings for these should be set. Editng and executing the env_hostname.bat file, included in the download can be used for this purpose.</span></p>
<p>&nbsp;</p>
<p><span style="FONT-SIZE: 11pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-bidi-font-family: 'Courier New'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-ansi-language: EN-GB; mso-fareast-language: EN-US; mso-bidi-language: AR-SA">
<h2 style="MARGIN: 10pt 0cm 0pt"><span>Getting the code</span></h2>
</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span>The Scripting tool can be downloaded from the IBM OPAL <span style="FONT-SIZE: 11pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-GB; mso-fareast-language: EN-US; mso-bidi-language: AR-SA">(Open Process Automation Library) </span>site:</span></p>
<p>
<p style="MARGIN: 0cm 0cm 10pt"><span><a href="http://www-01.ibm.com/software/brandcatalog/portal/opal/details?NavCode=1TW10IM14">http://www-01.ibm.com/software/brandcatalog/portal/opal/details?NavCode=1TW10IM14</a></span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span>The code can be uncompressed anywhere on the filesystem (where ITIM is installed). The code includes a helpful Readme file and some example scripts. There are some further scripts on the Tivoli ITIM WIKI</span></p>
<p style="MARGIN: 0cm 0cm 10pt"><span><a href="http://www.ibm.com/developerworks/wikis/display/tivoliim/Related+Resources">http://www.ibm.com/developerworks/wikis/display/tivoliim/Related+Resources</a></span></p>
</p>
<p>&nbsp;</p>
</p>]]></description><wfw:commentRss>http://www.itsm-blueprint.com/securityjournal/rss-comments-entry-4112048.xml</wfw:commentRss></item><item><title>Working with BIRT report designs and extracting key data items</title><dc:creator>Stephen Williams</dc:creator><pubDate>Thu, 12 Mar 2009 16:57:40 +0000</pubDate><link>http://www.itsm-blueprint.com/securityjournal/2009/3/12/working-with-birt-report-designs-and-extracting-key-data-ite.html</link><guid isPermaLink="false">195884:1901968:3291242</guid><description><![CDATA[<p>BIRT report design files are highly structured XML documents, which are comprised of several differing sections. Usually these are provided as input into application written using the BIRT APIs, however in certain circumstances there can be a requirement to interrogate (and modify) the contents of a BIRT report design directly. For example, the verfication of BIRT report data sources or the roll out of a large number of data source schema changes.</p>
<p>Below is a set of examples that show how to extract several key data items from a BIRT report design file. These examples would operate on a BIRT report design that contains content such as that which is shown below.</p>
<p>&lt;oda-data-set extensionID="org.eclipse.birt.report.data.oda.jdbc.JdbcSelectDataSet" name="Data Set" id="1000"&gt;<br />....<br />&nbsp;&nbsp; &lt;property name="rowFetchLimit"&gt;0&lt;/property&gt;<br />&nbsp;&nbsp; &lt;property name="dataSource"&gt;Reports Data Source&lt;/property&gt;<br />&nbsp;&nbsp; &lt;list-property name="parameters"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;structure&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="name"&gt;type&lt;/property&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="paramName"&gt;chosen_type&lt;/property&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="dataType"&gt;any&lt;/property&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="position"&gt;1&lt;/property&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="isInput"&gt;true&lt;/property&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="isOutput"&gt;false&lt;/property&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;/structure&gt;<br />&nbsp;&nbsp; &lt;/list-property&gt;<br />&nbsp;&nbsp; &lt;list-property name="resultSet"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;structure&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="position"&gt;1&lt;/property&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="name"&gt;ID&lt;/property&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="nativeName"&gt;ID&lt;/property&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="dataType"&gt;decimal&lt;/property&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="nativeDataType"&gt;-5&lt;/property&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;/structure&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;structure&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="position"&gt;2&lt;/property&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="name"&gt;TYPE&lt;/property&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="nativeName"&gt;TYPE&lt;/property&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="dataType"&gt;string&lt;/property&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="nativeDataType"&gt;12&lt;/property&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;/structure&gt;<br />&nbsp;&nbsp; &lt;/list-property&gt;<br />&nbsp;&nbsp; &lt;property name="queryText"&gt;select ID, TYPE from TYPES ts where TYPE = ?&lt;/property&gt;<br />&lt;/oda-data-set&gt;</p>
<p>&nbsp;</p>
<p><strong><span style="text-decoration: underline;">Code example</span></strong></p>
<p># Retrieve the BIRT report design file and receive a report handle object</p>
<p>IReportRunnable design = this.engine.openReportDesign("c:\reports\report.rptdesign");<br />ReportDesignHandle reportHandle = (ReportDesignHandle) design.getDesignHandle();</p>
<p># Retrieve a handle to a specific data set. A data set is a specific section of a BIRT report design that describes the schema of the data returned by query embedded in the report.</p>
<p>String mainDataSetName = "Data Set";<br />OdaDataSetHandle dataSetHandle = (OdaDataSetHandle) reportHandle.findDataSet(mainDataSetName);</p>
<p># Retrieve the report query</p>
<p>String statementQuery;<br />if(dataSetHandle != null) {<br />&nbsp;&nbsp;&nbsp;&nbsp; statementQuery = dataSetHandle.getQueryText();<br />}</p>
<p># Read the schema for the resultset items. In this example there would be 2 result set items</p>
<p>Iterator resultSetIt = dataSetHandle.resultSetIterator();<br />while(resultSetIt.hasNext()) {<br />&nbsp;&nbsp;&nbsp;&nbsp; String columnName = ((ResultSetColumnHandle)resultSetIt.next()).getColumnName();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; # columnName would be "ID" and "TYPE"<br />}</p>
<p>#Retrieve an iterator for the report parameters.</p>
<p>Iterator paramsIt = dataSetHandle.parametersIterator();</p>
<p>#Iterate through the report parameters. In this example there would be 1 parameter</p>
<p>while(paramsIt.hasNext()) {<br />DataSetParameterHandle param = (DataSetParameterHandle) paramsIt.next();<br /><br />String parameterName = param.getName();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // "type"<br />Integer parameterPosition = param.getPosition();&nbsp;&nbsp; // "1"<br />String parameterMappedName = param.getMember("paramName").getStringValue(); // "chosen_type"<br />}</p>
<p># In the above code example, the position relates to which '?' placeholder this particular parameter should be inserted into within the query text. In this example there is only one placeholder, therefore the position would be "1" (and not "0").</p>]]></description><wfw:commentRss>http://www.itsm-blueprint.com/securityjournal/rss-comments-entry-3291242.xml</wfw:commentRss></item><item><title>UnsatisfiedLinkError: xaConnect -WebSphere</title><category>ITIM</category><category>Identity Management</category><category>UnsatisfiedLinkError: xaConnect</category><category>WebSphere</category><dc:creator>Ryan McConnell</dc:creator><pubDate>Fri, 27 Feb 2009 14:05:21 +0000</pubDate><link>http://www.itsm-blueprint.com/securityjournal/2009/2/27/unsatisfiedlinkerror-xaconnect-websphere.html</link><guid isPermaLink="false">195884:1901968:3142916</guid><description><![CDATA[<p><strong>Impact</strong><br />ITIM wont start. When testing JDBC connection, the following error is received.</p>
<p><strong>Error Message</strong><br />[25/02/09 09:10:07:001 GMT] 244d182e SystemErr R java.lang.UnsatisfiedLinkError: xaConnect <br />[25/02/09 09:10:07:001 GMT] 244d182e SystemErr R at COM.ibm.db2.jdbc.DB2XAConnection.(Unknown Source) <br />[25/02/09 09:10:07:002 GMT] 244d182e SystemErr R at COM.ibm.db2.jdbc.DB2XADataSource.getXAConnection(Unknown Source)<br />[25/02/09 09:10:07:002 GMT] 244d182e SystemErr R at com.ibm.ws.rsadapter.DSConfigurationHelper$1.run(DSConfigurationHelper.java:934)</p>
<p><strong>Root Cause</strong><br />DB2 profile wasnt sourced when starting websphere</p>
<p><strong>Conclusion</strong><br />The WebSphere user needs to run . .db2profile from the users home directory, before starting WebSphere</p>]]></description><wfw:commentRss>http://www.itsm-blueprint.com/securityjournal/rss-comments-entry-3142916.xml</wfw:commentRss></item><item><title>ITIM 5.0 SAP Netweaver Adapter V5.0.1 Performance Improvement</title><dc:creator>Paul Kennedy</dc:creator><pubDate>Thu, 26 Feb 2009 22:20:35 +0000</pubDate><link>http://www.itsm-blueprint.com/securityjournal/2009/2/26/itim-50-sap-netweaver-adapter-v501-performance-improvement.html</link><guid isPermaLink="false">195884:1901968:3141098</guid><description><![CDATA[<p><strong>PROBLEM:</strong></p>
<p>The SAP Netweaver Adapter for IBM Tivoli Identity Manager can experience performance issues when reconciling against a target SAP system. In recent lab testing a typical reconciliation for approximately 60,000 accounts was found to take over 24 hours to complete.</p>
<p><strong>SOLUTION:</strong></p>
<p>As part of the SAP deployment an xsl folder is supplied. Modify the file "<strong>sapnw_bapi_user_getdetail_precall.xsl</strong>" to include the following highlighted line.</p>
<p>&lt;BAPI_USER_GET_DETAIL&gt;</p>
<p align="left">&lt;USERNAME&gt;&lt;xsl:value-of select="$sapUserName" /&gt;&lt;/USERNAME&gt;</p>
<p align="left"><strong>&lt;CACHE_RESULTS&gt; &lt;/CACHE_RESULTS&gt;</strong></p>
<p align="left">&lt;/BAPI_USER_GET_DETAIL&gt;</p>
<p align="left">&nbsp;</p>
<p align="left">This file and the folder are to be deployed to ITDI 611 FP3.</p>
<p align="left">Following update to this file the target SAP system is able to cache results of lookups - thereby decreasing processing time (in our test environment this setting reduced the reconciliation time for approximately 60,000 SAP accounts to around 3 hours 20 minutes). Note however that this setting will result in increased memory usage on the target SAP system.</p>]]></description><wfw:commentRss>http://www.itsm-blueprint.com/securityjournal/rss-comments-entry-3141098.xml</wfw:commentRss></item><item><title>UNIX permission enforcement and TAMOS auditing</title><dc:creator>Paul Keeler</dc:creator><pubDate>Mon, 23 Feb 2009 18:18:39 +0000</pubDate><link>http://www.itsm-blueprint.com/securityjournal/2009/2/23/unix-permission-enforcement-and-tamos-auditing.html</link><guid isPermaLink="false">195884:1901968:3093866</guid><description><![CDATA[<p style="MARGIN: 0cm 0cm 12pt; LINE-HEIGHT: normal; mso-layout-grid-align: none">T<span>his article discusses how UNIX permissions are enforced, and the implications for TAMOS auditing. <br /></span></p>
<p style="MARGIN: 0cm 0cm 12pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><span>As a general rule the principle of "least privilege" will always apply when UNIX permissions are evaluated. Consider the following examples:<br /></span></p>
<p style="margin: 0cm 0cm 12pt; line-height: normal;"><strong><span>Scenario 1:</span></strong></p>
<ul>
<li><span>File /testfile has UNIX permissions <strong>rwxrwxrwx</strong> and ownership <strong>root:system</strong></span></li>
</ul>
<ul>
<li><span>A TAMOS ACL applied to the file object states that user root has full access but anyone other user will have no access.</span></li>
</ul>
<ul>
<li><span><em>Result</em>: root can update the file as expected, but anyone else will be denied by TAMOS even though UNIX permissions have the file world-writable.</span></li>
</ul>
<p style="MARGIN: 0cm 0cm 12pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><strong><span>&nbsp;Scenario 2:</span></strong></p>
<ul>
<li><span>File /testfile has UNIX permissions <strong>rwxr-xr-x</strong> and ownership <strong>root:system</strong></span></li>
</ul>
<ul>
<li><span>A TAMOS ACL <span>applied to the file object states</span> that all users have full access to the file.</span></li>
</ul>
<ul>
<li><span><em>Result</em>: Only root can write to the file. Everyone else will be denied by UNIX despite the fact that TAMOS grants them access. The "least privilege" rule applies.<br /></span></li>
</ul>
<p style="MARGIN: 0cm 0cm 12pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><span><strong>How does this effect TAMOS Auditing?</strong></span></p>
<p style="MARGIN: 0cm 0cm 12pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><span>The scenarios as described can stop audit events being generated for denied actions in certain circumstances. For example:</span></p>
<ul>
<li><span>A resource-level POP is attached to object /testfile to capture denied write access. The file has UNIX permissions <strong>rwxr-x---</strong> and ownership <strong>root:system</strong>. </span></li>
</ul>
<ul>
<li><span>User jbloggs attempts to update /testfile and is correctly denied write access but no TAMOS audit event is written.</span></li>
</ul>
<p style="MARGIN: 0cm 0cm 12pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><span>However, making /testfile UNIX permissions <strong>rwxrwxrwx</strong> and then enforcing access via a TAMOS ACL so that user root has full access but anyone else has no access will generate a TAMOS audit event. Thereafter, when user jbloggs attempts to update /testfile he will be denied by TAMOS - and the denied audit event is generated.</span></p>
<p style="MARGIN: 0cm 0cm 12pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><span>General Rule: If UNIX makes the denial then TAMOS is unaware of this and will not audit the event.</span></p>
<p style="MARGIN: 0cm 0cm 12pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><span><strong>Conclusion:</strong> When deploying TAMOS carefully evaluate the files you are wishing to protect and audit against. Consider the type of audit event (permit or deny) you wish to have before creating ACL's and POP's to attach to the object. </span></p>
<p style="MARGIN: 0cm 0cm 12pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><span>Note: It is not necessarily advisable to assign full UNIX access (777) permissions for files!</span></p>]]></description><wfw:commentRss>http://www.itsm-blueprint.com/securityjournal/rss-comments-entry-3093866.xml</wfw:commentRss></item></channel></rss>