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

ロールベースのアクセス制御では、セルフサービスおよび委任アクセス制御の場合とは非常に異なる種類の権限をユーザーに付与します。ロールベースのアクセス制御は基本的には管理業務用で、エントリーの変更を行うことができます。
ロールベースのアクセスコントロールには、パーミッション特権ロールがあります。特権は1 つ以上のパーミッションから成り、ロールは 1 つ以上の特権から成ります。
  • パーミッションは、(読み取り、書き込み、追加、または削除などの) 特定の操作と、これらの操作が適用される IdM LDAP ディレクトリー内のターゲットエントリーを定義します。パーミッションはビルディングブロックで、必要に応じて複数の特権に割り当てることができます。
    IdM パーミッションを使用すると、どのユーザーがどのオブジェクトにアクセスできるかや、それらのオブジェクトのどの属性にアクセスできるかという制御すら可能になります。IdM を使うと、個別の属性をブラックリスト化したりホワイトリスト化したりすることができるほか、全匿名ユーザー、全認証ユーザー、または特権のあるユーザーの特定グループのみに対するユーザー、グループ、または sudo といった特定の IdM 機能の視認性全体を変更することもできます。パーミッションに対するアプローチがこのように柔軟なことで、たとえば、管理者がユーザーやグループのアクセスをこれらのユーザーやグループが必要とする特定のセクションのみに限定し、他のセクションを完全に見えないようにする場合などに便利になります。
  • 特権は、ロールに適用できるパーミッションのグループです。例えば、パーミッションは自動マウントの場所の追加、編集、削除を行うために作成できます。そして、そのパーミッションは FTP サーバーの管理に関連する別のパーミッションと組み合わせることができます。これらは、ファイルシステムの管理に関連する単一の特権を作成するために作成できます。

    注記

    Red Hat Identity Management では、特権は、パーミッションが作成されてからロールが作成されるというアトミックな単位のアクセスコントロールという固有の意味を持ちます。一時的に追加の特権を取得した通常のユーザーというコンセプトとして 特権のエスカレーションは、Red hat Identity Management に存在しません。特権は、ロールベースアクセス制御 (RBAC) を使用してユーザーに割り当てられます。ユーザーはアクセスを付与するロールを持つか、持たないかのいずれかになります。
    ユーザーは別として、特権はユーザーグループ、ホスト、ホストグループ、ネットワークサービスにも割り当てられます。この性質上、特定のネットワークサービスから一連のホスト上の一連のユーザーによる操作の詳細な制御が可能になります。
  • ロールは、ロールに指定されたユーザーが所有する特権のリストです。
完全に新しいパーミッションを作成したり、既存または新規のパーミッションをベースにして新たな権限を作成したりすることができます。Red Hat Identity Management は、以下の範囲の事前に定義したロールを提供します。

表10.1 Red Hat Identity Management で事前に定義されているロール

ロール特権説明
ヘルプデスク
ユーザーの変更とパスワードのリセット、グループメンバーの変更簡単なユーザー管理タスクを行う
IT セキュリティスペシャリスト
ネットグループ管理者、HBAC管理者、sudo 管理者ホストベースのアクセスコントロール、sudo ルールなどのセキュリティポリシーの管理を行う
IT スペシャリスト
ホスト管理者、ホストグループ管理者、サービス管理者、自動マウント管理者ホストの管理を行う
セキュリティアーキテクト
委任管理者、レプリカ管理者、書き込み IAP 設定、パスワードポリシー管理者Identity Management 環境の管理、信頼の作成、レプリカ合意の作成を行う
ユーザー管理
ユーザー管理者、グループ管理者、stage ユーザー管理者ユーザーとグループの作成を行う

10.4.1. ロール

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

  1. トップメニューで IPA Server タブを開き、Role Based Access Control サブタブを選択します。
  2. ロールベースのアクセスコントロール説明のトップリストにある追加リンクをクリックします。
    新規ロールの追加

    図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. 必要なグループをロールに追加します。この場合では、既存の単一グループ useradmins を追加しています。
    [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. パーミッション一覧の上部にある追加をクリックします。
    新規パーミッションの追加

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

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

    図10.14 パーミッション追加のフォーム

  5. フォームの下にある Add をクリックしてパーミッションを保存します。
以下のパーミッションのプロパティーを指定することができます。
  1. 新規パーミッションの名前を入力します。
  2. 適切な Bind rule type を選択します。
    • permission がデフォルトのパーミッションタイプになります。これでアクセスが権限とロールによって付与されます。
    • all を選択すると、パーミッションがすべての認証ユーザーに適用されます。
    • anonymous を選択すると、非認証ユーザーを含むすべてのユーザーにパーミッションが適用されます。

    注記

    デフォルト以外の bind rule type のパーミッションを権限に追加することはできません。また、権限に既にあるパーミッションをデフォルト以外の bind rule type に設定することもできません。
  3. パーミッションが付与する権限を Granted rights で選択します。
  4. パーミッションのターゲットエントリーを識別する方法を定義します。
    • Type では、ユーザー、ホスト、またはサービスなどのエントリータイプを指定します。Type で値を設定すると、そのエントリータイプの ACI でアクセス可能な全属性が Effective Attributes に表示されます。
      Type を定義すると、SubtreeTarget DN が定義済みのいずれかの値に設定されます。
    • Subtree は、サブツリーエントリーを指定します。このサブツリーエントリー以下のすべてのエントリーがターゲットになります。Subtree はワイルドカードや存在しないドメイン名 (DN) を受け付けないので、既存のサブツリーエントリーを提供してください。例を示します。
      cn=automount,dc=example,dc=com
    • Extra target filter では、LDAP フィルターを使ってパーミッションが適用されるエントリーを特定します。このフィルターは有効な LDAP フィルターであればどれでも構いません。例を示します。
      (!(objectclass=posixgroup))
      IdM は、提供されたフィルターの有効性を自動的にチェックします。無効なフィルターが入力された場合は、パーミッションを保存使用とすると IdM が警告します。
    • Target DN はドメイン名 (DN) を指定し、ワイルドカードを受け付けます。例を示します。
      uid=*,cn=users,cn=accounts,dc=com
    • Member of group は、特定のグループのメンバーにターゲットフィルターを設定します。
    フィルター設定を記入して Add をクリックすると、IdM がフィルターの有効性を確認します。すべてのパーミッション設定が適切であれば、IdM は検索を実行します。設定が適切でない場合、IdM は該当設定についてのメッセージを表示します。
  5. Type を設定する場合は、Effective attributes で利用可能な ACI 属性一覧から選択します。Type を使用しない場合は、Effective attributes フィールドに手動で属性を追加します。属性は 1 つずつ追加します。複数の属性を追加するには、Add をクリックして別の入力フィールドを追加します。

    重要

    パーミッションの属性を設定しない場合は、デフォルトで全属性が含まれることになります。

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

新規パーミッションを追加するには、ipa permission-add コマンドを発行します。対応するオプションを提供して、パーミッションのプロパティーを指定します。
  • プロパティー名を提供します。例を示します。
    [root@server ~]# ipa permission-add "dns admin permission"
  • --bindtype では、bind rule type を指定します。このオプションは allanonymous、および permission の引数を受け付けます。例を示します。
    --bindtype=all
    --bindtype を使用しない場合は、タイプは自動的にデフォルトの permission の値に設定されます。

    注記

    デフォルト以外の bind rule type のパーミッションを権限に追加することはできません。また、権限に既にあるパーミッションをデフォルト以外の bind rule type に設定することもできません。
  • --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 を使って、automount の場所のような、他の設定のコンテナーや親エントリーである、一定タイプのエントリーをターゲットにすることができます。例を示します。
    [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 では、特定のユーザーグループが存在することを確認した後、そのグループにターゲットを設定します。
Target DN 設定は Web UI では利用可能ですが、コマンドラインでは使用できません。

注記

パーミッションの修正および削除に関する情報については、ipa permission-mod --helpipa permission-del --help のコマンドを実行してください。

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

管理 (Managed) パーミッションは、Identity Management でインストール済みとして提供されるパーミッションです。これらはユーザーが作成したその他のパーミッションのように動作しますが、以下の点が異なります。
  • 名前、場所、およびターゲット属性が修正できません。
  • 削除することができません。
  • 以下の 3 つの属性セットがあります。
    • default 属性は IdM が管理し、ユーザーは修正することができません。
    • included 属性は、ユーザーが追加する属性です。included 属性を管理パーミッションに追加するには、ipa permission-mod コマンドで --includedattrs オプションを使用して属性を指定します。
    • excluded 属性は、ユーザーが削除する属性です。excluded 属性を管理パーミッションに追加するには、ipa permission-mod コマンドで --excludedattrs オプションを使用して属性を指定します。
管理パーミッションは、default および included 属性セットに表示される全属性に適用されますが、excluded セットの属性には適用されません。
管理パーミッション修正時に--attrs オプションを使用すると、included および excluded 属性セットは自動的に調整され、--attrs で提供された属性のみが有効になります。

注記

管理パーミッションは削除できませんが、その bind type を permission に設定し、該当管理パーミッションを全権限から削除すると、実質的に無効となります。
すべての管理パーミッションの名前は System: で始まります。たとえば、System: Add Sudo ruleSystem: Modify Services などです。
IdM の以前のバージョンでは、デフォルトのパーミッションに異なるスキームを使用しており、ユーザーはデフォルトのパーミッションを修正できず、パーミッションを権限に割り当てることのみが可能でした。これらデフォルトのパーミッションはほとんど管理パーミッションとなっていますが、以下のパーミッションはまだ以前のスキームを使用しています。
  • Add Automember Rebuild Membership Task
  • Add Replication Agreements
  • Certificate Remove Hold
  • Get Certificates status from the CA
  • Modify DNA Range
  • Modify Replication Agreements
  • Remove Replication Agreements
  • Request Certificate
  • Request Certificates from a different host
  • Retrieve Certificates from the CA
  • Revoke Certificate
  • Write IPA Configuration
管理パーミッションを 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-showipa 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. 権限一覧の上部にある追加をクリックします。
    新規権限の追加

    図10.17 新規権限の追加

  4. 権限の名前と説明を入力します。
    権限追加のフォーム

    図10.18 権限追加のフォーム

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

    図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"