ドメイン RBAC

AIX® 6.1 で導入された役割ベースのアクセス制御 (RBAC) は、 スーパーユーザー root のさまざまな機能を複数のロールに分割するメカニズムを提供します。ロールは、システム上の他のユーザーに 委任することができます。 RBAC は 任務を委任する機能を提供し、システムのセキュリティーを向上させます。 システム上のアクティビティーの監査とトラッキングがより容易になるからです。 RBAC は責務を別のユーザー (許可ユーザーと呼ばれます) に委任しますが、 システムの特定のリソースへの許可ユーザーの管理権限を制限するメカニズムは提供しません。 例えば、ネットワーク管理権限を持つユーザーは、システム上のすべてのネットワーク・インターフェースを管理できます。 いくつかのインターフェースについては、許可ユーザーが変更できないように制限することはできません。

RBAC のドメイン機能は、許可ユーザーへのアクセスを制限するのに使用されます。 システムのユーザーとリソースは、ドメインと呼ばれるタグを付けることによって分類され、ユーザーのリソースへのアクセスは個別のアクセス規則で決定されます。

定義
以下の定義はアクセス規則に関連しています。
サブジェクト: サブジェクトは、オブジェクトへのアクセスを要求するエンティティーです。 サブジェクトの一例はプロセスです。
オブジェクト: オブジェクトは有用な情報を保持するエンティティーです。 オブジェクトの例として、ファイル、デバイス、およびネットワーク・ポートがあります。
ドメイン: ドメインは、エンティティーが属するカテゴリーとして定義されます。 エンティティーがドメインに属していると、そのエンティティーへのアクセス制御は以下のように アクセス規則によって管理されます。
アクセス規則
  • 1 つのサブジェクトが、1 つのオブジェクトが属するドメインをすべて持っているとき、そのサブジェクトはそのオブジェクトにアクセスできます。 これは、そのサブジェクトが属するドメインのリストが、オブジェクトのドメインのスーパー・セットであることを示しています。 これはデフォルトの動作です。
  • 1 つのサブジェクトが 1 つのオブジェクトの少なくとも 1 つのドメインを持っているとき、そのサブジェクトはオブジェクトにアクセスできます。 つまり、そのサブジェクトとオブジェクトは共通のドメインを 1 つ持っています。 このときの挙動はオブジェクトのセキュリティー・フラグにより異なります。
  • オブジェクトは、特定のドメインへのアクセスを拒否できます。 conflict set と呼ばれる ドメインのセットをオブジェクトが定義しているときに、サブジェクトのドメインの 1 つが conflict set の 一部である場合、そのオブジェクトはそのサブジェクトへのアクセスを拒否できます。

ドメイン・データベース

システムがサポートするドメインは、/etc/security/domains の下の構成ファイルに 保管されている必要があります。 ファイル内のスタンザのフォーマットは、以下に示すとおりです。
domain-name:
id = <number>
dfltmsg = <Message>
msgcat = <Message catalog>
msgset = <Message set in catalog>
msgnum = <Message id in catalog>
このデータベースは、mkdom コマンドと chdom コマンドを 使用して操作することができます。 データベースを表示するには、lsdom コマンドを使用します。 エントリーを 削除するには、rmdom コマンドを使用します。

データベース内のエントリーは、データベースが setkst コマンドを使用してカーネルに ダウンロードされるまで、有効にはなりません。

最大で 1024 個のドメインがシステムでサポートされているため、 ドメイン ID (ID 属性) として指定できる最大値は 1024 となります。

ドメイン割り当てオブジェクト

ドメインをオブジェクトに割り当てるには、それをドメイン割り当てオブジェクト・データベースに定義する必要があります。 システム上のすべてのエンティティーのドメインは、/etc/security/domobjs の下の 構成ファイルに保管されています。 ファイル内のスタンザのフォーマットは以下に示すとおりです。これは、ドメインをオブジェクトに 割り当てる例です。
/dev/hrvg:
domains=HR,IT
conflictsets=payroll
objtype=device
secflags=FSF_DOM_ANY
domains: オブジェクトへのアクセスが許可されるドメインを指定します。 ドメインの例としては、IT、HR、および Payroll などが考えられます。
objtype: ドメインに割り当てられるオブジェクトのタイプを示します。 objtype の種類には、device、file、netint、および netport があります。
conflict sets: サブジェクトが、この属性にリストされているドメインのこのセットの中のいずれかに属している場合、オブジェクトへのアクセスが許可されないことを示しま。
secflags: このフラグはオブジェクトの特殊なプロパティーを指定します。 フラグは FSF_DOM_ANY または FSF_DOM_ALL に設定することができます。 フラグが FSF_DOM_ANY に設定されると、domains 属性リストに指定されたドメインのいずれか 1 つがサブジェクトに含まれるときに、 サブジェクトはオブジェクトにアクセスできます。 フラグが FSF_DOM_ALL に設定されると、オブジェクトにアクセスするには、サブジェクトがリスト内のすべてのドメインの条件を 満たしている必要があります。 値が指定されないと、デフォルト値の FSF_DOM_ALL が使用されます。 secflag は、オブジェクトの domains 属性の動作にのみ影響を与えます。
ドメインは、ファイルシステム内のファイルに割り当てることができます。 デフォルトでは、 オブジェクトのすべてのドメインをプロセスのドメインのサブセットにして、プロセスがオブジェクトにアクセスできるようにする必要があります。
  1. デバイス: すべてのデバイス (ファイルシステムを含む) をドメインに割り当てることができます。 デバイスの構成などの管理アクティビティー時にドメイン検査が行われます。
    /dev/hrvg:
    domains=HR,IT
    conflictsets=payroll
    objtype=device
    secflags=FSF_DOM_ANY
    
  2. ネットワーク・インターフェース: ネットワーク・インターフェース (例: en0) がドメインに割り当てられると、 インターフェースのシャットダウンなどの管理アクティビティーが、インターフェースにドメイン検査を受けるよう要求します。
    en0:
    domains=NETIF,ADMIN
    objtype=netint
    flags=FSF_DOM_ALL
  3. ネットワーク・ポート: TCP ポートと UDP ポートをドメインに割り当てることができます。 アプリケーションがポートにバインドしようとすると、ドメイン検査が実行されます。
    TCP_<port#>:
    domains=NETIF,ADMIN
    type=netport
    flags=FSF_DOM_ALL
  4. プロセス: プロセスは、そのプロセスが実行される元となったユーザーのドメインを継承します。 ユーザーがログインすると、ユーザー・シェル・プロセスはそのユーザーのドメインを持つようになります。 ドメインが設定されると、プロセスのこのようなドメインは存続期間中保持されます。 プロセスのドメインは、いかなるユーザー・インターフェースでもシステム・コールでも変更することができません。 ドメインを設定できるプロセスはログイン・プロセスだけです。 プロセスは conflict set 属性も secflags 属性も持ちません。

現在の制約

次の項目は、現在のドメイン RBAC 機能の制約です。
  • ドメイン構成は現在、ローカル・システムと Lightweight Directory Access Protocol (LDAP) サーバーでサポートされています。
  • RBAC ドメインは、AIX ワークロード区画 (WPAR) 内ではサポートされません。
  • RBAC ドメインを一時ファイルに適用することはできません。

拡張 RBAC の要件

ドメイン RBAC は 拡張 RBAC で作成されるため、拡張 RBAC がシステム上で使用可能にされ、有効になっている必要があります。

カーネルのセキュリティー・テーブル

ドメイン・データベースと ドメイン・オブジェクト・データベースで定義されたドメインとドメイン割り当てオブジェクトは、setkst コマンドを使用して カーネルにダウンロードされた後で、有効になります。 この 2 つのテーブルは、カーネル・ドメイン・テーブル (KDOMT) およびカーネル・ドメイン・オブジェクト・テーブル (KDOT) と呼ばれます。

カーネル・セキュリティー・テーブルと setkst について、 詳しくは「AIX セキュリティー・ガイド」の役割ベースのアクセス制御 (RBAC) のトピックを参照してください。

ドメイン・コマンド

以下の表では、ドメイン RBAC フレームワークを管理して 使用するために AIX オペレーティング・システムで提供されているドメイン RBAC 関連コマンドをリストします。
コマンド 説明
mkdom 新規ドメインを作成します。
lsdom ドメイン属性を表示します。
rmdom ドメインを削除します。
chdom ドメイン属性を変更します。
setsecattr ドメイン・オブジェクト・データベースのセキュリティー属性を設定します。
lssecattr ドメイン・オブジェクト・データベースのセキュリティー属性を表示します。
rmsecattr ドメイン・オブジェクト・データベースの定義を削除します。
setkst ドメイン RBAC ユーザー・レベル・データベース内のエントリーをカーネル・セキュリティー・テーブルへ送信します。

ドメイン RBAC 関連ファイル

以下の表では、 データベース情報を構成し、保管するために AIX オペレーティング・システムで 提供されている RBAC 関連ファイルをリストしています。
ファイル 説明
/etc/security/domains ドメイン・データベース
/etc/security/domobjs ドメイン・オブジェクト・データベース

ドメインの使用

ドメインの定義: ドメインは、mkdom コマンドを 使用してドメイン・データベースに定義されます。
mkdom id=24 HR
ドメインの 割り当て: ドメインは、ユーザー、ファイル、デバイス、ネットワーク・ポート、およびインターフェースなどのエンティティーに 割り当てることができます。 ユーザー以外のすべてのエンティティーは、conflict set とセキュリティー・フラグ (secflags) を サポートします。

ユーザー: ユーザーは、chuser コマンドと chsec コマンドを 使用してドメインに割り当てられます。

構文:

chuser domains = <comma-separated list of domains> username
例:
chuser domains=INET john

ユーザーに割り当てられたドメインは、ログイン時に活動状態にされます。 セッションが活動状態のときにドメインが変更された場合は、再度ログインして、 新しいドメインが有効になるようにする必要があります。

オブジェクト: ドメインを経由したオブジェクトへのアクセスを制限するには、setsecattr コマンドを使用して、 オブジェクトがドメイン・オブジェクト・データベースに定義される必要があります。

構文:
setsecattr -o domains=<comma-separated list of allowed domains>
conflictsets=<comma-separated list of restricted domains>
secflags=<FSF_DOM_ALL or FSF_DOM_ANY>
objtype=<file or device or netint or netport>
object-path
例:
setsecattr -o domains=INET,WEB conflictsets=DB secflags=FSF_DOM_ANY objtype=netint en0