![]() | |
Sun™ Identity Manager 8.0 配備に関する技術概要 |
第 2 章
認可タイプでの処理この章では、Identity Manager 配備で使用される認可タイプ (AuthTypes) の概念的な概要について説明します。この章で説明するトピックは次のとおりです。
認可タイプとはIdentity Manager では、コード変更を必要とせずにオブジェクトに承認を行う権利を割り当てるメカニズムとして、認可タイプが提供されています。この拡張性のあるメカニズムはリポジトリ記憶領域タイプから独立しており、特に TaskDefinition および Configuration オブジェクトで役立ちます。これらのオブジェクトは、同じリポジトリタイプを共有していますが、それぞれ別個の認証を必要とするさまざまな機能を実行します。たとえば、「ユーザーメンバー規則」ドロップダウンリストに表示するには、規則に UserMembersRule の認可タイプが必要です。Configuration:AuthorizationTypes オブジェクトには、デフォルトとカスタムの両方の認可タイプが存在します。
認可タイプはリポジトリタイプに依存しません。つまり、1 つの認可タイプを定義して、たとえば、Configuration と Rule の両方のオブジェクトに割り当てることができます。これにより、単一タイプのオブジェクトのリストをフィルタリングするため、または関連するオブジェクトセットへのアクセス権を特定の機能を持つ Identity Manager 管理者のサブセットに付与する手段として、認可タイプを使用できます。
Identity Manager での認可タイプの使用方法Identity Manager では、呼び出し元の機能をオブジェクトの認可タイプと比較するときのアクセスチェック中に、認可タイプが使用されます。認可タイプによって既存のリポジトリタイプが拡張された場合、アクセス制御は暗黙的な「継承」の変更に従います。特に、管理者が親タイプに権限を持っている場合は、子タイプにも同じ権限を持っています。ただし、管理者が子タイプに権限を持っているが、親タイプには権限がない場合は、子タイプのオブジェクトにしかアクセスできません。
たとえば、次のような認可タイプ、管理者、およびオブジェクトを考えてみます。
認証の設定:
Configuration (repository type)
<AuthType name='Fruit' extends='Configuration'/>
<AuthType name='Vegetable' extends='Configuration'/>
次のように権限が割り当てられているとします。
AdminA (Configuration に対する Right.VIEW を持つ)
AdminB (Fruit に対する Right.VIEW を持つ)
AdminC (Vegetable に対する Right.VIEW を持つ)
Configuration タイプの ObjectA、authtype なし
Configuration タイプの ObjectB、authtype == Fruit
Configuration タイプの ObjectC、authtype == Vegetable
前述の認証設定によって、特定のオブジェクトに対して次のようにアクセス権限が決まります。
認可タイプを使用する理由配備内で認可タイプを使用して、次の処理を実行できます。
親タイプ (red、green、blue) に対する権限を持つ管理者は「foo」タイプへのアクセス権も持つことになるため、この 2 番目のアプローチの方がより高度な設定が必要です。
アーキテクチャー機能認可タイプの主要なアーキテクチャー機能は、Configuration:AuthorizationTypes オブジェクトです。このオブジェクトを変更すると、認可タイプを追加したり、削除したりできます。
Configuration:AuthorizationTypes オブジェクト
Configuration:AuthorizationTypes オブジェクトでは、有効な認可タイプが定義されます。各認可タイプは、<AuthType> 要素で宣言されます。
<AuthType name='SPML' extends='Configuration'/>
AuthTypes 要素には、AuthType 要素のリストが含まれています。各 AuthType には、最低でも name 属性および一般に extends 属性があります。extends 属性の値は、別の認可タイプまたはリポジトリタイプの名前にする必要があります。
AuthType 要素
この要素には name プロパティーが必要です。次の例は、<AuthType> 要素の正しい構文を示します。次の例は、複数のユーザーを新しい組織に移動するカスタムタスクの追加方法を示します。
<Configuration name='AuthorizationTypes'>
<Extension>
<AuthTypes>
<AuthType name='Move User' extends='TaskDefinition,TaskInstance,TaskTemplate'/>
</AuthTypes>
</Extension>
</Configuration>
AuthType 要素では、次の属性がサポートされています。
認証サブタイプアクセス権
Identity Manager では、認可タイプのスーパータイプを定義するために、extends 属性が使用されます。スーパータイプアクセス権はサブタイプによって継承されます。たとえば、ユーザーが TaskDefinition に対する参照権限を持っている場合は、UsageReportTask およびその他すべての TaskDefinition のサブタイプに対する参照権限も持っています。
AuthorizationTypes オブジェクトは XML でのみ編集できますが、認可タイプを参照するアクセス権は「機能」ページから定義できます (「セキュリティ」タブの「機能」サブタブで、このページにアクセスできる)。
認可タイプと機能認可タイプは、エンドユーザー権限モデルの主要なコンポーネントです。認可タイプを使用すると、機能 (AdminGroups) を定義してから、その機能をユーザーに割り当てることができます。
AdminGroups
認可タイプを定義したあとは、AdminGroup オブジェクト内に格納された Permission オブジェクトで参照できます。次の XML の例では、ユーザーに割り当てることができる AdminGroup (機能 と呼ばれる) を定義します。
この例では、2 つの Permission 要素の両方で、リポジトリタイプではなく認可タイプのタイプ名が使用されます。EndUserTask 認可タイプが割り当てられた TaskDefinition オブジェクトのみが、この機能を持つユーザーにアクセスできます 。権限のセットは、機能によって 1 つ以上の認可タイプまたはリポジトリタイプに伝達されます。基本的に、認可タイプはその他の認可タイプおよびリポジトリタイプとの階層構造であるため、「タイプ階層」の親に権限が存在すると、すべての子にも同じ権限が付与されます。
EndUser 機能
AdminGroup EndUser 機能を使用すると、通常は割り当てられた機能がなく、いずれの組織も制御しない管理側以外のユーザーにアクセス権を割り当てることができます。この機能のデフォルト定義については、「アクセス権の拡張」セクションの例で示されています。
Identity Manager では、暗黙的にすべてのユーザーに EndUser 機能が割り当てられます。この機能では、ユーザーがタスク、規則、ロール、リソースなどの複数タイプのオブジェクトを参照することが許可されます。エンドユーザーに機能を割り当てられますが、割り当てないようにも選択できます。Identity Manager では、明示的に機能が割り当てられたユーザーが管理者として定義され、管理者に関する情報がキャッシュされます。その結果、インストール環境で所有できる管理者数に効果的な上限が設定されます。
EndUserLibrary 認可タイプを使用できます。EndUser 機能 (または AdminGroup) には、authType が EndUserLibrary のライブラリへのリストアクセス権および参照アクセス権があります。
ライブラリの内容へのアクセス権をユーザーに付与するには、authType=髭ndUserLibrary/span> を設定し、ライブラリの MemberObjectGroup が All に設定されていることを確認します。
認可タイプを作成する既存の TaskDefinition、TaskInstance、および TaskTemplate 認可タイプを拡張すると、新しい認可タイプを作成できます。次の方法のいずれかを使用すると、認可タイプを追加できます。
認可タイプをリポジトリに割り当てる
リポジトリで認可タイプを設定すると、特定のオブジェクトタイプを参照、変更、または削除できるユーザーを制限できます。リポジトリタイプに対して認可タイプを定義するには、認可タイプ名をリポジトリタイプの名前に設定し、extends 属性を省略します。
例: エンドユーザー認可タイプを設定する
Identity Manager では、「User」管理者ロールが実装され、デフォルトですべてのユーザーに割り当てられます。このロールは、さまざまなオブジェクトタイプに対して 2 つのエンドユーザー認可タイプ (AuthType) と複数のリストアクセス権を提供する EndUser AdminGroup をカプセル化します。
これらのエンドユーザー認可タイプは次のとおりです。
例: 認可タイプを使用してリソースの表示を制限する
認可タイプを使用すると、リソースレベルでリソース表示を制限できます。リソースを特別な組織に移動する代わりに、次の処理を実行できます。
ユーザーに機能を割り当てるときは、汎用のリソースタイプへの権限が含まれる機能を割り当てないでください。その代わりに、特定のリソースタイプに対する権限を持つ機能を割り当てます。
リソース固有の認可タイプを定義するには、次の処理を実行します。
- Configuration:AuthorizationTypes オブジェクトにエントリを追加します。
<AuthType name='Resource-Corporate-LDAP' extends='Resource'/>
- 標準機能 (Resource Administrator など) のいずれかからバリアントを抽出します。この機能と標準 AdminGroup との唯一の相違点は、Permission のタイプ名であり、Resource ではなく Resource-Corporate-LDAP であることに注意してください。
コード例 2-2 リソース固有の認可タイプを定義する
<AdminGroup name='Corporate LDAP Resource Administrator'
protected='true'
displayName='UI_ADMINGROUP_RESOURCE_ADMIN'
description='UI_ADMINGROUP_RESOURCE_ADMIN_DESCRIPTION'>
<AdminGroups>
<ObjectRef type='AdminGroup' id='#ID#Resource Group Administrator'/>
<ObjectRef type='AdminGroup' id='#ID#Resource Report Administrator'/>
<ObjectRef type='AdminGroup' id='#ID#Connect Organizations'/>
<ObjectRef type='AdminGroup' id='#ID#Connect Policies'/>
</AdminGroup>
<Permissions>
<Permission type='AttributeDefinition' rights='View'/>
<Permission type='Resource-Corporate-LDAP' rights='View,List,Create,Modify,Delete,Execute'/>
<Permission type='ResourceUIConfig' rights='Create,Modify'/>
<Permission type='Rule' rights='View'/>
<Permission type='User' rights='View,List'/>
</Permissions>
<MemberObjectGroups>
<ObjectRef type='ObjectGroup' id='#ID#All' name='All'/>
</MemberObjectGroups>
</AdminGroup>
<ObjectRef type='AdminGroup' id='#ID#Connect Resource Groups'/>
例: アクセス権を Identity Manager の特定部分に付与します
認可タイプを使用すると、Identity Manager の特定部分の詳細な管理制御をユーザーセットに付与することもできます。
AuthType を作成し、その AuthType にオブジェクトを割り当ててから、その AuthType を付与する機能を作成します。この機能をユーザーセットに割り当てた場合、認可タイプおよび機能で参照が許可された、システムの領域のみを参照できます。
次の例では、LimitedReportType 認可タイプを TaskDefinition に割り当て、Run Limited Report 機能をユーザーに割り当てます。最終的に、ユーザーは TaskDefinition が LimitedReportType 認可タイプであるレポートのみを実行できます。
<AuthType name='LimitedReportType' extends='TaskDefinition'/>
<AuthType name='LimitedReportType' extends='TaskInstance'/>
<AdminGroup name='Run Limited Report' ...>
...
<Permissions type='LimitedReportType' rights='View,Execute'/>
...
</AdminGroup>