「管理者ロール」では 2 つのもの、つまり一連の機能と制御の範囲を定義します。「制御の範囲」という語は、管理対象の 1 つ以上の組織を指します。管理者ロールを定義してから、それを 1 人以上の管理者に割り当てることができます。
ロールと管理者ロールを混同しないようにしてください。ロールは、エンドユーザーの外部リソースへのアクセスを管理するために使用するのに対し、管理者ロールは主に、Identity Manager 管理者の Identity Manager オブジェクトへのアクセスを管理するために使用します。
この節の情報は、管理者ロールのみに限定されています。ロールの詳細については、「ロールとその管理について」を参照してください。
1 人の管理者に複数の管理者ロールを割り当て可能です。これによって、管理者は 1 つの制御の範囲内ではある一連の機能を持ち、別の制御の範囲内では別の一連の機能を持つことができます。たとえば、管理者にある管理者ロールを割り当てて、その管理者ロールで指定された管理する組織のユーザーの作成および編集の権限を与えます。次に 2 つ目の管理者ロールを同じ管理者に割り当てますが、今度はその管理者ロールで定義した管理する組織の別個のセット内に「ユーザーのパスワードの変更」権限のみを与えます。
管理者ロールによって、機能と管理範囲の組み合わせの再利用が可能になります。管理者ロールで、多数のユーザーに対する管理者特権の管理を簡素化することもできます。個々のユーザーに機能と管理する組織を直接割り当てるのではなく、管理者ロールを使用して管理者特権を付与するようにしてください。
機能または組織 (またはその両方) の管理者ロールへの割り当ては、直接または動的 (間接的) に行うことができます。
直接。機能や管理する組織を、明示的に管理者ロールに割り当てます。たとえば、管理者ロールに User Report Administrator 機能と管理する組織「Top」を割り当てることが考えられます。
動的 (間接)。この方法では、機能および管理する組織を割り当てる規則を使用します。管理者ロールが割り当てられた管理者がログインするごとに、規則が評価されます。管理者が認証されると、割り当てられる機能や管理する組織のセットが、規則に基づいて動的に決定されます。
たとえば、ユーザーがログインする場合、次のようになります。
ユーザーの Active Directory (AD) ユーザータイトルが「manager」 (マネージャー) である場合、機能規則は割り当てる機能として「アカウント管理者」を返します。
ユーザーの Active Directory (AD) ユーザー部署が「marketing」 (マーケティング) である場合、管理する組織の規則は割り当てる管理組織として「マーケティング」を返します。
管理者ロールのユーザーへの動的割り当ては、ユーザーインタフェース、管理者インタフェースなどログインインタフェースごとに有効または無効にできます。この場合は、次のシステム設定属性を true または false に設定します。
security.authz.checkDynamicallyAssignedAdminRolesAtLoginTo.logininterface
すべてのインタフェースのデフォルトは false です。
システム設定オブジェクトを編集する方法については、「Identity Manager 設定オブジェクトの編集」を参照してください。
Identity Manager には、管理者ロールの規則を作成するためのサンプル規則が用意されています。これらの規則は、Identity Manager インストールディレクトリの sample/adminRoleRules.xml にあります。
表 6–1 に、規則の名前と各規則に指定する authType を示します。
表 6–1 管理者ロールのサンプル規則
規則名 |
authType |
---|---|
管理する組織の規則 |
ControlledOrganizationsRule |
機能規則 |
CapabilitiesRule |
ユーザーへの管理者ロール割り当て規則 |
UserIsAssignedAdminRoleRule |
サービスプロバイダユーザー管理者ロールのサンプル規則については、第 17 章サービスプロバイダの管理の 「サービスプロバイダユーザーの委任管理」を参照してください。
Identity Manager には、「ユーザー管理者ロール」という組み込みの管理者ロールがあります。デフォルトでは、割り当てられた機能や管理する組織の割り当てはありません。また、このロールを削除することはできません。この管理者ロールは、ログインするインタフェース (ユーザー、管理者、コンソール、Identity Manager IDE など) にかかわらず、ログイン時に暗黙的にすべてのユーザー、つまりエンドユーザーと管理者に割り当てられます。
サービスプロバイダユーザーの管理ロールの作成については、第 17 章サービスプロバイダの管理の 「サービスプロバイダユーザーの委任管理」を参照してください。
ユーザー管理者ロールは、管理者インタフェースで「セキュリティー」を選択してから「管理者ロール」を選択することによって編集できます。
この管理者ロールによって静的に割り当てられる機能または管理する組織はすべてのユーザーに割り当てられるので、機能および管理する組織の割り当ては規則を通して行うことをお勧めします。そうすることで、異なるユーザーが異なる機能を持つまたは機能を持たないようにすることができ、ユーザーがだれか、ユーザーがどの部署に所属するか、またはユーザーが管理者であるかなど、規則のコンテキスト内で問い合わせ可能な要素に基づいて割り当ての範囲が設定されます。
ユーザー管理者ロールによって、ワークフローで使用される authorized=true フラグの有用性が低下したり、そのフラグが完全に取って代わられるわけではありません。ワークフローが実行中である場合を除き、ワークフローがアクセスするオブジェクトに対してユーザーがアクセス権を持っていないときには、依然としてこのフラグのほうが適しています。基本的には、このときユーザーは「スーパーユーザーとして実行」モードに入ります。
ただし、ユーザーに、ワークフローの外部 (および状況によっては内部) にある 1 つ以上のオブジェクトへの特定のアクセス権があるとよい場合も考えられます。そのような場合には、機能および管理する組織を動的に割り当てる規則を使用して、それらのオブジェクトに対するきめ細かい承認を行うことができます。
管理者ロールを作成または編集するには、Admin Role Administrator 機能が必要です。
管理者ロールにアクセスするには、管理者インタフェースで「セキュリティー」をクリックしてから「管理者ロール」タブをクリックします。「管理者ロール」リストページでは、Identity Manager ユーザーとサービスプロバイダユーザーの管理者ロールを作成、編集、および削除できます。
既存の管理者ロールを編集するには、リスト内の名前をクリックします。管理者ロールを作成するには、「新規」をクリックします。「管理者ロールの作成」のオプションが表示されます (図 6–3)。「管理者ロールの作成」画面には 4 つのタブが表示されます。 これらを使用して一般的な属性、機能、新しい管理者ロールの範囲、ユーザーへのロールの割り当てを指定します。
「管理者ロールの作成」または「管理者ロールの編集」画面の「一般」タブを使用して、管理者ロールの次の一般的な特性を指定します。
「名前」。この管理者ロールの一意の名前。
たとえば、財務部門 (または組織) のユーザーの管理機能を持つユーザーに対して財務管理者ロールを作成できます。
「タイプ」。タイプには「アイデンティティーオブジェクト」または「サービスプロバイダユーザー」を選択します。このフィールドは必須です。
Identity Manager ユーザー (またはオブジェクト) の管理者ロールを作成している場合は、「アイデンティティーオブジェクト」を選択します。サービスプロバイダユーザーにアクセス権限を与える管理者ロールを作成している場合は、「サービスプロバイダユーザー」を選択します。
管理者ロールを作成してサービスプロバイダユーザーにアクセス権限を与える方法については、第 17 章サービスプロバイダの管理の 「サービスプロバイダユーザーの委任管理」を参照してください。
「譲渡者」。この管理者ロールをほかのユーザーに割り当てることができるようにするユーザーを、選択または検索します。選択の対象となるユーザーセットには、「割り当て機能」権を割り当てられたユーザーが含まれます。
ユーザーを選択しなかった場合、管理者ロールを割り当てることのできるユーザーは、それを作成したユーザーのみになります。管理者ロールを作成したユーザーに「ユーザーへの機能の割り当て」機能が割り当てられていない場合、少なくとも 1 人のユーザーが管理者ロールをほかのユーザーに割り当てることができるように、1 人または複数のユーザーを「譲渡者」として選択します。
「組織」。この管理者ロールを使用できる組織を 1 つまたは複数選択します。このフィールドは必須です。
管理者は、割り当てられた組織のオブジェクト、および階層内でその組織の下位にあるすべての組織のオブジェクトを管理できます。
Identity Manager では、どのユーザーをエンドユーザーの制御範囲に置くかを管理できます。
「制御の範囲」タブ (図 6–4) を使用して、この組織のメンバーで管理可能な組織を指定するか、管理者ロールのユーザーによって管理される組織を決定する規則を指定し、管理者ロールのユーザーフォームを選択します。
「管理する組織」。「利用可能な組織」リストから、この管理者ロールが管理する権利を持つ組織を選択します。
「管理する組織の規則」。ユーザーログイン時に評価の対象となる、この管理者ロールが割り当てられたユーザーによって管理される組織に対する規則を選択します。選択する規則は、ControlledOrganizationsRule authType を持つ必要があります。デフォルトで、管理する組織の規則は選択されていません。
EndUserControlledOrganizations 規則を使用して必要なロジックを定義し、組織のニーズに応じて委任に適した一連のユーザーを選択可能にすることができます。
ユーザーが管理者インタフェースとエンドユーザーインタフェースのどちらにログインしていても、管理者に表示されるユーザーリストの範囲が同じになるようにするには、EndUserControlledOrganizations 規則を変更します。
認証中のユーザーが管理者かどうかを最初にチェックするように規則を変更し、それから次のように設定します。
ユーザーが管理者でない場合は、そのユーザー自身の組織など、エンドユーザーによって管理される一連の組織を返します (例: waveset.organization)。
ユーザーが管理者である場合はどの組織も返さず、管理者であるために割り当てられた組織のみをそのユーザーが管理するようにします。
たとえば、次のようにします。
<Rule protectedFromDelete=’true’ authType=’EndUserControlledOrganizationsRule’ id=’#ID#End User Controlled Organizations’ name=’End User Controlled Organizations’> <Comments> If the user logging in is not an Idm administrator, then return the organization that they are a member of. Otherwise, return null. </Comments> <cond> <and> <isnull><ref>waveset.adminRoles</ref></isnull> <isnull><ref>waveset.capabilities</ref></isnull> <isnull><ref>waveset.controlledOrganizations</ref></isnull> </and> <ref>waveset.organization</ref> </cond> <MemberObjectGroups> <ObjectRef type=’ObjectGroup’ id=’#ID#Top’ name=’Top’/> </MemberObjectGroups> </Rule> |
動的な組織に所属しているユーザーまたは管理者は、検索結果に返されません。
ただし、動的な組織のユーザーを返すように規則を作成することもできます。次のサンプル規則で、Idm Schema Configuration オブジェクトで定義されている Identity Manager ユーザースキーマ定義に新しい属性を追加し、このオブジェクトをインポートして、Identity Manager サーバーを再起動します。
<IDMAttributeConfigurations> ... <IDMAttributeConfiguration name='region' syntax='STRING' description='region of the country'/> </IDMAttributeConfigurations> <IDMObjectClassConfigurations> ... <IDMObjectClassConfiguration name='User' extends='Principal' description='User description'> ... <IDMObjectClassAttributeConfiguration name='region' queryable='true'/> </IDMObjectClassConfiguration> </IDMObjectClassConfigurations> Next, import the following Identity Manager objects: <!-- User member rule that will include all users whose region attribute matches the region organization display name --> <Rule name="Region User Member Rule" authType="UserMembersRule"> <Description>User Member Rule</Description> <list> <new class='com.waveset.object.AttributeCondition'> <s>region</s> <s>equals</s> <ref>userMemberRuleOrganizationDisplayName</ref> </new> </list> <MemberObjectGroups> <ObjectRef type="ObjectGroup" id="#ID#All" name="All"/> </MemberObjectGroups> </Rule> <!-- North & South Region organizations with user member rule assigned --> <ObjectGroup id='#ID#North Region' name='North Region' displayName='North Region'> <UserMembersRule cacheTimeout='3600000'> <ObjectRef type='Rule' name='Region User Member Rule'/> </UserMembersRule> <MemberObjectGroups> <ObjectRef type='ObjectGroup' name='Top' id='#ID#Top'/> </MemberObjectGroups> </ObjectGroup> <ObjectGroup id='#ID#South Region' name='South Region' displayName='South Region'> <UserMembersRule cacheTimeout='3600000'> <ObjectRef type='Rule' name='Region User Member Rule'/> </UserMembersRule> <MemberObjectGroups> <ObjectRef type='ObjectGroup' name='Top' id='#ID#Top'/> </MemberObjectGroups> </ObjectGroup> <!-- Organization containing all employees --> <ObjectGroup id='#ID#Employees' name='Employees' displayName='Employees'> <MemberObjectGroups> <ObjectRef type='ObjectGroup' name='Top' id='#ID#Top'/> </MemberObjectGroups> </ObjectGroup> <!-- End user controlled organization rule that give each user control of the regional organization they are a member of --> <Rule protectedFromDelete='true' authType='EndUserControlledOrganizationsRule' id='#ID#End User Controlled Organizations' name='End User Controlled Organizations' primaryObjectClass='Rule'> <switch> <ref>waveset.attributes.region</ref> <case> <s>North Region</s> <s>North Region</s> </case> <case> <s>South Region</s> <s>South Region</s> </case> <case> <s>East Region</s> <s>East Region</s> </case> <case> <s>West Region</s> <s>West Region</s> </case> </switch> <MemberObjectGroups> <ObjectRef type='ObjectGroup' id='#ID#Top' name='Top'/> </MemberObjectGroups> </Rule> <!-- 4 employees (2 in North and 2 in South region) --> <User name='emp1' primaryObjectClass='User' asciipassword='1111'> <Attribute name='firstname' type='string' value='Employee'/> <Attribute name='fullname' type='string' value='Employee One'/> <Attribute name='lastname' type='string' value='One'/> <Attribute name='region' type='string' value='North Region'/> <MemberObjectGroups> <ObjectRef type='ObjectGroup' id='#ID#Employees' name='Employees' displayName='Employees'/> </MemberObjectGroups> </User> <User name='emp2' primaryObjectClass='User' asciipassword='1111'> <Attribute name='firstname' type='string' value='Employee'/> <Attribute name='fullname' type='string' value='Employee Two'/> <Attribute name='lastname' type='string' value='Two'/> <Attribute name='region' type='string' value='North Region'/> <MemberObjectGroups> <ObjectRef type='ObjectGroup' id='#ID#Employees' name='Employees' displayName='Employees'/> </MemberObjectGroups> </User> <User name='emp4' primaryObjectClass='User' asciipassword='1111'> <Attribute name='firstname' type='string' value='Employee'/> <Attribute name='fullname' type='string' value='Employee Four'/> <Attribute name='lastname' type='string' value='Four'/> <Attribute name='region' type='string' value='South Region'/> <MemberObjectGroups> <ObjectRef type='ObjectGroup' id='#ID#Employees' name='Employees' displayName='Employees'/> </MemberObjectGroups> </User> <User name='emp5' primaryObjectClass='User' asciipassword='1111'> <Attribute name='firstname' type='string' value='Employee'/> <Attribute name='fullname' type='string' value='Employee Five'/> <Attribute name='lastname' type='string' value='Five'/> <Attribute name='region' type='string' value='South Region'/> <MemberObjectGroups> <ObjectRef type='ObjectGroup' id='#ID#Employees' name='Employees' displayName='Employees'/> </MemberObjectGroups> </User> |
続いて、Identity Manager エンドユーザーインタフェースを使用して、North 地域のユーザー emp1 としてログインします。「委任」、「新規」の順に選択します。検索を変更します。条件として「が次の文字で始まる」を選択し、値を emp に変更して「検索」を選択します。これにより、利用可能なユーザーのリストに emp2 が返されます。
「管理する組織のユーザーフォーム」。この管理者ロールが割り当てられたユーザーが、この管理者ロールの管理する組織のメンバーであるユーザーを作成または編集する場合に使用するユーザーフォームを選択します。デフォルトで、「管理する組織のユーザーフォーム」は選択されていません。
管理者ロールを介して割り当てられたユーザーフォームは、管理者がメンバーになっている組織から継承したすべてのユーザーフォームよりも優先されます。ただし、管理者に直接割り当てられたユーザーフォームよりも優先されることはありません。
管理者ロールに割り当てられる機能によって、この管理者ロールが割り当てられたユーザーの管理権限が決まります。たとえば、この管理者ロールが管理者ロールの管理する組織のユーザーの作成のみに制限される場合があります。この場合、「ユーザーの作成」機能を割り当てます。
「機能」タブで次のオプションを選択します。
「機能」。これらは、管理者ロールのユーザーが管理する組織に対して持つ特定の機能 (管理権限) です。利用可能な機能のリストから 1 つ以上の機能を選択して、「割り当てられた機能」リストに移動します。
「機能規則」。ユーザーログインの評価時に、管理者ロールが割り当てられたユーザーに与えられる機能のリストを決定する規則を選択します。選択する規則は、CapabilitiesRule authType を持つ必要があります。
管理者ロールのメンバーにユーザーフォームを指定することができます。「管理者ロールの作成」または「管理者ロールの編集」画面の「ユーザーに割り当てる」タブを使用して、割り当てを指定します。
管理者ロールを割り当てられた管理者は、その管理者ロールによって管理されている組織内のユーザーを作成または編集するときにこのユーザーフォームを使用します。管理者ロールを介して割り当てられたユーザーフォームは、管理者がメンバーになっている組織から継承したすべてのユーザーフォームよりも優先されます。このユーザーフォームが、管理者に直接割り当てられたユーザーフォームよりも優先されることはありません。
ユーザーを編集するときに使用されるユーザーフォームは、次の優先順位で決定されます。
ユーザーフォームが管理者に直接割り当てられている場合は、そのユーザーフォームが使用されます。
管理者にはユーザーフォームが直接割り当てられていないが、作成または編集しているユーザーがメンバーとなる組織を制御してユーザーフォームを指定する管理者ロールが割り当てられている場合は、そのユーザーフォームが使用されます。
管理者に直接割り当てられているユーザーフォームがない、または管理者ロールを介して間接的に割り当てられているユーザーフォームがない場合は、管理者のメンバー組織 (管理者のメンバー組織から Top 組織のすぐ下の組織まで) に割り当てられているユーザーフォームが使用されます。
ユーザーフォームが管理者のメンバー組織に割り当てられていない場合は、デフォルトのユーザーフォームが使用されます。
管理者に、同じ組織を管理しながら異なるユーザーフォームを指定している複数の管理者ロールが割り当てられている場合、その組織内のユーザーを作成または編集しようとするとエラーが表示されます。管理者が、同じ組織を管理しながら異なるユーザーフォームを指定している複数の管理者ロールを割り当てようとすると、エラーが表示されます。この相反する状況を解決するまで変更は保存できません。