Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

10.4. ロールベースのアクセス制御の定義

ロールベースのアクセス制御では、セルフサービスおよび委任アクセス制御の場合とは非常に異なる種類の権限をユーザーに付与します。ロールベースのアクセス制御は基本的に管理されており、エントリーを変更する機能を提供します。
ロールベースのアクセス制御には、パーミッション特権、および ロール の 3 つの部分があります。権限は 1 つ以上のパーミッションで設定され、ロールは 1 つ以上の権限で設定されます。
  • パーミッション は、(読み取り、書き込み、追加、または削除) 特定の操作と、これらの操作が適用される ldM LDAP ディレクトリー内のターゲットエントリーを定義します。パーミッションはビルディングブロックで、必要に応じて複数の特権に割り当てることができます。
    IdM パーミッションを使用すると、どのユーザーがどのオブジェクトにアクセスできるか、さらにこのようなオブジェクトの属性にアクセスできるかどうかを制御できます。IdM を使用すると、個々の属性をホワイトリストまたはブラックリストに登録したり、特定の IdM 機能 (ユーザー、グループ、sudo など) の全体の可視性を、すべての匿名ユーザー、すべての認証済みユーザー、または特権ユーザーの特定のグループに変更したりできます。パーミッションに対するこの柔軟なアプローチは、管理者がアクセスが必要な特定のセクションにのみユーザーまたはグループのアクセスを制限し、他のセクションをこれらのユーザーまたはグループに対して完全に非表示にする場合に便利です。
  • 特権 は、ロールに適用できるパーミッションのグループです。例えば、パーミッションは自動マウントの場所の追加、編集、削除を行うために作成できます。そして、そのパーミッションは FTP サーバーの管理に関連する別のパーミッションと組み合わせることができます。これらは、ファイルシステムの管理に関連する単一の特権を作成するために作成できます。
    注記
    Red Hat Identity Management のコンテキストでは、権限とは、パーミッションおよびそれに続いてロールが作成されるアクセス制御の Atomic 単位の非常に特殊な意味を持ちます。通常のユーザーが一時的に追加の特権を取得するという概念としての特権昇格は、Red Hat Identity Management には存在しません。ロールベースアクセス制御 (RBAC) を使用して、権限がユーザーに割り当てられます。アクセス権を付与するロールを持つユーザーと、持たないユーザーがいます。
    ユーザーのほかに、権限はユーザーグループ、ホスト、ホストグループ、およびネットワークサービスにも割り当てられます。これにより、特定のネットワークサービスを使用するホストセットのユーザーセットによって、操作をきめ細かく制御できます。
  • ロールは、ロールに指定したユーザーの権限のリストです。
    重要
    ロールは、許可されたアクションを分類するために使用されます。ロールは、特権昇格されないようにしたり、特権の分離を実装するツールとしては使用しません。
完全に新しいパーミッションを作成したり、既存または新規のパーミッションをベースにして新たな権限を作成したりすることができます。Red Hat Identity Management は、以下の事前定義済みのロールを提供します。

表10.1 Red Hat Identity Management の定義済みロール

ロール 特権 説明
Helpdesk
Modify Users、Reset passwords、Modify Group membership 簡単なユーザー管理タスクを実行します。
IT Security Specialist
Netgroups Administrators、HBAC Administrator、Sudo Administrator ホストベースのアクセス制御、sudo ルールなどのセキュリティーポリシーを管理します。
IT Specialist
Host Administrators、Host Group Administrators、Service Administrators、Automount Administrators ホストの管理を行います
Security Architect
Delegation Administrator、Replication Administrators、Write IPA Configuration、Password Policy Administrator Identity Management 環境の管理、信頼の作成、レプリカ合意を作成します。
User Administrator
User Administrators、Group Administrators、Stage User Administrators ユーザーおよびグループの作成を行います

10.4.1. ロール

10.4.1.1. Web UI でのロールの作成

  1. トップメニューで IPA Server タブを開き、Role Based Access Control サブタブを選択します。
  2. ロールベースのアクセス制御手順のリストの上部にある Add リンクをクリックします。

    図10.6 新規ロールの追加

    新規ロールの追加
  3. ロール名と説明を入力します。

    図10.7 ロールを追加するためのフォーム

    ロールを追加するためのフォーム
  4. Add and Edit ボタンをクリックして新規ロールを保存し、設定ページに移動します。
  5. Users タブの上部で、グループ追加の場合は Users Groups タブで、Add をクリックします。

    図10.8 ユーザーの追加

    ユーザーの追加
  6. 左側のユーザーを選択し、> ボタンを使用して、Prospective 列に移動します。

    図10.9 ユーザーの選択

    ユーザーの選択
  7. Privileges タブの上部にある Add をクリックします。

    図10.10 権限の追加

    権限の追加
  8. 左側の権限を選択し、> ボタンを使用してそれらを Prospective 列に移動します。

    図10.11 権限の選択

    権限の選択
  9. Add ボタンをクリックして保存します。

10.4.1.2. コマンドライン でのロールの作成

  1. 新規ロールを追加します。
    [root@server ~]# kinit admin
    [root@server ~]# ipa role-add --desc="User Administrator" useradmin
      ------------------------
      Added role "useradmin"
      ------------------------
      Role name: useradmin
      Description: User Administrator
  2. 必要な権限をロールに追加します。
    [root@server ~]# ipa role-add-privilege --privileges="User Administrators" useradmin
      Role name: useradmin
      Description: User Administrator
      Privileges: user administrators
      ----------------------------
      Number of privileges added 1
    ----------------------------
    
  3. 必要なグループをロールに追加します。この場合、すでに存在する 1 つのグループ useradmin のみを追加することになります。
    [root@server ~]# ipa role-add-member --groups=useradmins useradmin
      Role name: useradmin
      Description: User Administrator
      Member groups: useradmins
      Privileges: user administrators
      -------------------------
      Number of members added 1
    -------------------------
    

10.4.2. パーミッション

10.4.2.1. Web UI での新規パーミッションの作成

  1. トップメニューで IPA Server タブを開き、Role Based Access Control サブタブを選択します。
  2. Permissions タスクリンクを選択します。

    図10.12 パーミッションタスク

    パーミッションタスク
  3. パーミッションのリストの上部にある Add ボタンをクリックします。

    図10.13 新規パーミッションの追加

    新規パーミッションの追加
  4. 表示される形式で、新しいパーミッションのプロパティーを定義します。

    図10.14 パーミッションを追加するためのフォーム

    パーミッションを追加するためのフォーム
  5. フォームの下にある Add ボタンをクリックして、パーミッションを保存します。
以下のパーミッションプロパティーを指定できます。
  1. 新規パーミッションの名前を入力します。
  2. 適切なバインドルールタイプを選択します。
    • permission はデフォルトのパーミッションタイプで、権限およびロール経由でアクセスを付与します。
    • all は、パーミッションをすべての認証ユーザーに適用することを指定します。
    • anonymous は、認証されていないユーザーを含む、パーミッションがすべてのユーザーに適用されることを指定します。
    注記
    特権には、デフォルト以外のバインドルールタイプが指定されたパーミッションを追加できません。特権に既存のパーミッションは、デフォルト以外のバインドルールタイプには設定できません。
  3. Granted rightsで、パーミッションを付与する権利を選択してください。
  4. パーミッションのターゲットエントリーを識別する方法を定義します。
    • タイプ は、ユーザー、ホスト、またはサービスなどのエントリータイプを指定します。Type 設定の値を選択すると、そのエントリータイプのこの ACI からアクセス可能なすべての属性のリストが Effective 属性 に表示されます。
      Type を定義すると、Subtree および Target DN が事前定義された値のいずれかに設定されます。
    • Subtree はサブツリーエントリーを指定します。このサブツリーエントリーの下にあるすべてのエントリーがターゲットになります。Subtree はワイルドカードや存在しないドメイン名 (DN) を許可しないため、既存のサブツリーエントリーを指定します。以下に例を示します。
      cn=automount,dc=example,dc=com
    • 追加のターゲットフィルター は LDAP フィルターを使用して、パーミッションが適用されるエントリーを特定します。このフィルターには、有効な LDAP フィルターを使用できます。以下に例を示します。
      (!(objectclass=posixgroup))
      IdM は、指定のフィルターの有効性を自動的に確認します。無効なフィルターを入力すると、パーミッションを保存しようとすると、IdM はこれについて警告します。
    • ターゲット DN はドメイン名 (DN) を指定し、ワイルドカードを受け入れます。以下に例を示します。
      uid=*,cn=users,cn=accounts,dc=com
    • グループのメンバー は、指定したグループのメンバーにターゲットフィルターを設定します。
    フィルター設定を入力し、Add をクリックすると、IdM がフィルターを検証します。すべてのパーミッション設定が正しい場合は、IdM により検索が実行されます。パーミッション設定の一部が正しくない場合には、IdM により、どの設定が正しく設定されているかを示すメッセージが表示されます。
  5. Type を設定する場合は、利用可能な ACI 属性のリストから 有効な属性 を選択します。Type を使用しない場合は、有効な属性 フィールドに属性を手動で書き込みます。一度に 1 つの属性を追加します。複数の属性を追加するには、Add をクリックして別の入力フィールドを追加します。
    重要
    パーミッションの属性を設定しないと、デフォルトですべての属性が含まれます。

10.4.2.2. コマンドライン での新規パーミッションの作成

新しいパーミッションを追加するには、ipa permission-add コマンドを実行します。対応するオプションを指定して、パーミッションのプロパティーを指定します。
  • パーミッションの名前を指定します。以下に例を示します。
    [root@server ~]# ipa permission-add "dns admin permission"
  • --bindtype は、バインドルールの種別を指定します。このオプションは、all 引数、anonymous 引数、および permission 引数を受け入れます。以下に例を示します。
    --bindtype=all
    --bindtype を使用しない場合、タイプは自動的にデフォルトの permission 値に設定されます。
    注記
    特権には、デフォルト以外のバインドルールタイプが指定されたパーミッションを追加できません。特権に既存のパーミッションは、デフォルト以外のバインドルールタイプには設定できません。
  • --permissions は、パーミッションが付与する権限をリスト表示します。複数の属性を設定するには、複数の --permissions オプションを使用するか、オプションを中括弧内にコンマ区切りリストでリスト表示します。以下に例を示します。
    --permissions=read --permissions=write
    --permissions={read,write}
  • --attrs は、パーミッションが付与される属性のリストを提供します。複数の属性を設定するには、複数の --attrs オプションを使用するか、オプションを中括弧内にコンマ区切りリストでリスト表示します。以下に例を示します。
    --attrs=description --attrs=automountKey
    --attrs={description,automountKey}
    --attrs で提供される属性が存在し、指定のオブジェクトタイプに許可される属性である必要があります。指定しないと、コマンドがスキーマ構文エラーで失敗します。
  • --type は、ユーザー、ホスト、またはサービスなどのエントリーオブジェクトタイプを定義します。各タイプには、許可された属性の独自のセットがあります。以下に例を示します。
    [root@server ~]# ipa permission-add "manage service" --permissions=all --type=service --attrs=krbprincipalkey --attrs=krbprincipalname --attrs=managedby
  • --subtree はサブツリーエントリーを提供します。フィルターはこのサブツリーエントリーの下にあるすべてのエントリーをターゲットにします。既存のサブツリーエントリーを指定します。--subtree はワイルドカードや存在しないドメイン名 (DN) を受け入れません。ディレクトリーに DN を追加します。
    IdM は簡素化されたフラットディレクトリーツリー構造を使用しているため、--subtree を使用して自動マウントの場所 (他の設定のコンテナーまたは親エントリー) などの一部のエントリーをターゲットにすることができます。以下に例を示します。
    [root@server ~]# ipa permission-add "manage automount locations" --subtree="ldap://ldap.example.com:389/cn=automount,dc=example,dc=com" --permissions=write --attrs=automountmapname --attrs=automountkey --attrs=automountInformation
    --type オプションおよび --subtree オプションは相互に排他的です。
  • --filter は LDAP フィルターを使用して、パーミッションが適用されるエントリーを特定します。IdM は、指定のフィルターの有効性を自動的に確認します。このフィルターには、有効な LDAP フィルターを使用できます。以下に例を示します。
    [root@server ~]# ipa permission-add "manage Windows groups" --filter="(!(objectclass=posixgroup))" --permissions=write --attrs=description
  • --memberof は、グループが存在することを確認した後に、指定したグループのメンバーにターゲットフィルターを設定します。以下に例を示します。
    [root@server ~]# ipa permission-add ManageHost --permissions="write" --subtree=cn=computers,cn=accounts,dc=testrelm,dc=com --attr=nshostlocation --memberof=admins
  • --targetgroup は、グループが存在することを確認した後に、ターゲットを指定されたユーザーグループに設定します。
Web UI で利用可能な Target DN 設定はコマンドラインで利用できません。
注記
パーミッションの変更および削除の詳細は、ipa permission-mod --help コマンドおよび ipa permission-del --help コマンドを実行します。

10.4.2.3. デフォルトの管理パーミッション

管理 パーミッションは、Identity Management で事前にインストールしたパーミッションです。このパーミッションはユーザーが作成した他のパーミッションと同様に機能しますが、以下の相違点があります。
  • 名前、場所、およびターゲット属性を変更することはできません。
  • これらは削除できません。
  • このパーミッションには 3 つの属性セットがあります。
    • デフォルト 属性 (IdM により管理され、ユーザーが変更できない)
    • 含まれる 属性 (ユーザーが追加する属性): 管理パーミッションに含まれる属性を追加するには、ipa permission-mod コマンドで --includedattrs オプションを指定して属性を指定します。
    • 除外する 属性 (ユーザーが削除する属性): 管理パーミッションに除外する属性を追加するには、ipa permission-mod コマンドで --excludedattrs オプションを指定して属性を指定します。
管理パーミッションは、デフォルトおよび包含属性セットに表示されている属性すべてに適用されますが、除外セットに表示されている属性には適用されません。
管理パーミッションの変更時に --attrs オプションを使用する場合は、含まれる属性および除外する属性セットが自動的に調整され、--attrs で指定された属性のみが有効になります。
注記
管理されているパーミッションを削除することはできませんが、そのバインドタイプを permission に設定し、すべての権限から管理パーミッションを削除すると、そのパーミッションを効果的に無効にできます。
管理されたすべてのパーミッションの名前は System: から始まります (例: System: Add Sudo rule または System: Modify Services)。
以前のバージョンの IdM では、デフォルトのパーミッションに異なるスキームを使用していました。たとえば、ユーザーがデフォルトのパーミッションを変更するのを禁止し、ユーザーはパーミションを権限に割り当てることしかできませんでした。これらのデフォルトパーミッションのほとんどは、管理パーミッションに切り替わっていますが、以下のパーミッションは引き続き以前のスキームを使用します。
  • Automember Rebuild メンバーシップタスクの追加
  • レプリカ合意の追加
  • 証明書削除保留
  • CA から証明書のステータス取得
  • DNA 範囲の変更
  • レプリカ合意の修正
  • レプリカ合意の削除
  • 証明書の要求
  • 別のホストからの証明書の要求
  • CA からの証明書の取得
  • 証明書の取り消し
  • IPA 設定の書き込み
Web UI から管理パーミッションを変更しようとすると、変更できない属性が無効になります。

図10.15 無効にされた属性

無効にされた属性
コマンドラインから管理パーミッションを変更しようとした場合、システムは変更できない属性を変更するのを許可しません。たとえば、デフォルトのSystem: Modify Usersパーミッションを変更してグループに適用しようとしても失敗します。
$ ipa permission-mod 'System: Modify Users' --type=group
ipa: ERROR: invalid 'ipapermlocation': not modifiable on managed permissions
ただし、System: Modify Users パーミッションが GECOS 属性に適用されないようにすることはできます。
$ ipa permission-mod 'System: Modify Users' --excludedattrs=gecos
------------------------------------------
Modified permission "System: Modify Users"

10.4.2.4. 以前のバージョンの Identity Management におけるパーミッション

Identity Management の以前のバージョンでは、パーミッションの処理方法が異なりました。以下に例を示します。
  • グローバル IdM ACI は、匿名のユーザー (つまり認証されないユーザー) であっても、サーバーのすべてのユーザーに読み取りアクセスを付与しました。
  • 書き込み、追加、および削除のパーミッションタイプのみが利用可能でした。読み取りパーミッションも利用できましたが、認証されていないユーザーを含むすべてのユーザーにはデフォルトで読み取りアクセスがあるため、実用的値はほとんどありませんでした。
Identity Management の現在のバージョンには、パーミッションを設定するオプションが含まれており、これはより粒度の細かいものになります。
  • グローバル IdM ACI は、認証されていないユーザーに読み取りアクセスを付与しません。
  • たとえば、フィルターとサブツリーの両方を同じパーミッションに追加できるようになりました。
  • 検索および比較権限を追加できます。
パーミッションを処理する新しい方法では、以前のバージョンとの後方互換性を維持しながら、ユーザーまたはグループのアクセス制御に関して IdM 機能が大幅に改善されました。以前のバージョンの IdM からアップグレードすると、すべてのサーバー上のグローバル IdM ACI が削除され、管理パーミッション に置き換えられます。
以前の方法で作成されたパーミッションは、変更する際に、現在のスタイルに自動的に変換されます。それらを変更しようとしないと、以前のタイプのパーミッションは変換されません。パーミッションが現在のスタイルを使用したら、以前のスタイルにダウングレードすることはできません。
注記
以前のバージョンの IdM を実行しているサーバーで、引き続きパーミッションを権限に割り当てることはできます。
ipa permission-show コマンドおよび ipa permission-find コマンドは、現在のパーミッションと以前のスタイルのパーミッションの両方を認識します。これらの両方のコマンドからの出力は、パーミッションを現在のスタイルで表示しますが、パーミッション自体は変更されません。LDAP に変更をコミットせずに、コマンドはメモリー内にのみデータを出力する前にパーミッションエントリーをアップグレードします。
以前の特性を持つパーミッションと現在の特性を持つパーミッションは、どちらもすべてのサーバー (以前のバージョンの IdM を実行するものと、現在の IdM バージョンを実行するもの) に影響します。ただし、以前のバージョンの IdM を実行しているサーバーで、現在のパーミッションでパーミッションを作成または変更することはできません。

10.4.3. 権限

10.4.3.1. Web UI での新規権限の作成

  1. トップメニューで IPA Server タブを開き、Role Based Access Control サブタブを選択します。
  2. Privileges タスクリンクを選択します。
  3. 特権リストの上部にある Add リンクをクリックします。

    図10.17 新しい権限の追加

    新しい権限の追加
  4. 権限の名前と説明を入力します。

    図10.18 権限を追加するためのフォーム

    権限を追加するためのフォーム
  5. Add and Edit をクリックして、権限設定ページに移動し、パーミッションを追加します。
  6. Permissions タブを選択します。
  7. パーミッションリストの上部にある Add をクリックして、パーミッションを権限に追加します。

    図10.19 パーミッションの追加

    パーミッションの追加
  8. 追加するパーミッションの名前の横にあるチェックボックスをクリックし、> ボタンを使用してパーミッションを Prospective 列に移動します。

    図10.20 パーミッションの選択

    パーミッションの選択
  9. Add ボタンをクリックして保存します。

10.4.3.2. コマンドライン での新規権限の作成

権限エントリーは、privilege-add コマンドを使用して作成され、privilege-add-permission コマンドを使用して権限グループに追加されます。
  1. 権限エントリーを作成します。
    [jsmith@server ~]$ ipa privilege-add "managing filesystems" --desc="for filesystems"
  2. 必要なパーミッションを割り当てます。以下に例を示します。
    [jsmith@server ~]$ ipa privilege-add-permission "managing filesystems" --permissions="managing automount" --permissions="managing ftp services"