...

HP-UX における役割ベースのアクセス制御

by user

on
Category: Documents
33

views

Report

Comments

Transcript

HP-UX における役割ベースのアクセス制御
HP-UX における役割ベースのアクセス制御
目次
本書について....................................................................................................................................... 3
対象読者......................................................................................................................................... 3
用語と定義 ...................................................................................................................................... 3
はじめに ............................................................................................................................................. 4
共有アカウントを使用したシステム管理の問題点 ................................................................................... 4
HP-UX RBAC ソリューション ................................................................................................................ 4
HP-UX RBAC の概要............................................................................................................................. 5
アクセス制御の基礎.......................................................................................................................... 5
役割によるアクセス制御の簡素化 ....................................................................................................... 6
使用と操作の例................................................................................................................................ 8
HP-UX RBAC の入手およびインストール................................................................................................... 9
HP-UX RBAC の入手 ......................................................................................................................... 9
HP-UX RBAC のインストール............................................................................................................... 9
HP-UX RBAC の導入計画 .................................................................................................................... 10
手順 1: ユーザーの役割の計画 ....................................................................................................... 10
手順 2: 権限付与の計画................................................................................................................. 10
手順 3: コマンド マッピングの計画 ................................................................................................... 10
HP-UX RBAC の構成........................................................................................................................... 11
手順 1: ユーザーの役割の構成 ....................................................................................................... 11
役割の作成................................................................................................................................ 11
ユーザーに対する役割の割り当て ................................................................................................. 12
手順 2: 権限の構成 ....................................................................................................................... 12
手順 3: 追加コマンドの構成............................................................................................................. 13
HP-UX RBAC の使用........................................................................................................................... 15
privrun コマンドの実行.................................................................................................................... 15
HP-UX RBAC のトラブルシューティング................................................................................................... 16
rbacdbchk ツール(データベースの構文チェック).................................................................................. 16
privrun –v 情報 ........................................................................................................................ 16
まとめ............................................................................................................................................... 17
付録 A: FAQ ..................................................................................................................................... 18
追加情報 .......................................................................................................................................... 21
ダウンロード ...................................................................................................................................... 21
本書について
本書では、HP-UX Role-based Access Control (RBAC) 製品を紹介し、アクセス制御の基礎と、HP-UX におけるアクセス制御
方法について説明します。また、HP-UX RBAC の構成方法と使用方法も併せて説明します。
対象読者
本書は IT のエキスパート、特にセキュリティ関連の管理業務を行うネットワーク担当者/設計者/管理者を対象としていま
す。
用語と定義
あらゆる技術分野において、それぞれ独自の用語が使用されています。次の表は、HP-UX RBAC と本書で使用されている
基本的な用語について、それらの定義を簡潔にまとめたものです。
用語
定義
認証
コンピュータ システムのユーザー、デバイス、またはその他の要素の身元を確認すること。多くの
場合は、システム内のリソースに対してアクセスを許可する前提条件となる。
権限付与
サブジェクトが特定のリソースに対して操作を許されているかどうかを、該当するアクセス制御情報
を評価して判定する処理。通常、権限付与は認証に続いて行なわれる。一旦、サブジェクトが認証
された後、そのサブジェクトに、さまざまなアクセスを実行するための権限付与を行なう。権限はパ
ーミッションの意味で一般的に使われているが、本書では、厳密には操作とオブジェクトの組み合
わせを表す。
オブジェクト
アクセス制御の対象となるシステムリソース。たとえば、ファイル、プリンタ、端末、データベース レ
コードなど。
操作
1 つ以上の保護されたオブジェクトへのアクセスを実行する特有のモード。本書において操作とは、
hpux.backup といった文字列で表記される、バックアップや復元などの一般的なアクションを指
す。操作は、オブジェクトと組み合わせて権限を形成する。
PAM
Pluggable Authentication Module の略称。PAM により、システム管理者は、認証を実施するうえ
でシステム上の使用可能な認証サービスを自由に選択できるようになる。このフレームワークによ
り、既存の PAM アプリケーションを変更することなく新しい認証サービス モジュールをプラグイン
することも可能となる。
特権
特定のタスク (通常は、特定のオブジェクトではなくコンピュータ システム全体に影響するタスク)
を実行できるー権限。特権は、その対象となるコンピュータのセキュリティ設定の一環として、管理
者により個々のユーザーまたはユーザー グループに割り当てられる。本書において特権は、実効
ユーザーID または実ユーザーID と、実効グループ ID または実グループ ID の組み合わせを指す。
最小限の特権原則
タスクを遂行するうえで必要最小限の特権をユーザーに付与するという考え方。
RBAC
役割ベースのアクセス制御 (Role-based Access Control) の略称。ユーザーに権限付与 (操作、
オブジェクト) を実施する機構。基本的には、役割および権限付与の定義を包含する用語。
役割
組織における職務権限。役割が割り当てられたユーザーには、権限が与えられるとともに責任が
課せられるという関連した意味も含まれる。
サブジェクト
権限付与の判断を必要とするアクションを起こす人。本書では、ユーザーと同じ意味で使用する。
3
はじめに
セキュリティ、とりわけプラットフォーム セキュリティは、エンタープライズ インフラストラクチャにおいて常に重要な課題です。
とはいえ、「個人別のアカウント管理」や「最小限の特権」といった概念が通常の会話で話題の中心になるということはなく、
多くの組織では軽視されるか、見過ごされることがほとんどです。しかし、最近 HIPAA (Health Insurance Portability and
Accountability Act) 法や米国企業改革法 (Sarbanes-Oxley) などの法律が施行されたことで、これらのセキュリティの概
念の重要性への関心が高まっています。このように高まりつつある要望に応えるべく HP では、HP-UX オペレーティング環境
のセキュリティをさらに強化する一連の製品をリリースしています。本書では、その第一弾となる製品 HP-UX RBAC を紹介し
ます。
共有アカウントを使用したシステム管理の問題点
ほぼすべてのエンタープライズ環境では、複数のユーザーによりシステムが管理されています。UNIX®が稼動するほとんど
のシステムでは、このように管理する場合、通常、共有アカウント (つまり、root) に対するパスワードが複数の管理者に与
えられます。
root アカウントは、root パスワードを持っている管理者にすべての操作を許可するため、アクセス制御管理を単純化します。
しかしその反面、root アカウントは、アクセス制御管理に次のような障害をもたらします。
• 管理者権限を持つユーザーに root パスワードを与えると、そのユーザーを容易に管理できなくなる。
• うまくいった場合でも、管理者 1 名からのアクセスを遮断するには、共通パスワードを変更し、それ以外の管理者に変更
を通知する必要がある。しかし実際には、パスワードを変更するだけではアクセスを遮断しきれない場合が多い。これは、
パスワードを変更する前に代替のアクセス機構がすでに実装されている可能性があるためである。
• 共有アカウントを使用する限り、個人別のアカウント管理はまず実現不可能である。このため、セキュリティ上重要なイベ
ントが発生した後で適切な分析を行うことが困難 (場合によっては不可能) となる。
HP-UX RBACソリューション
理想的なソリューションは、ユーザーごとに実行を許可するタスク一式を割り当てることです。管理作業のタスクは、通常の
(ただし、正しく構成された) ユーザー アカウントで実行します。この方法により、「最小限の特権原則」を損なわずに個人別
のアカウント管理を維持できます。
HP-UX RBAC 製品は、これを実現するとともに、権限を個別に割り当て/取り消しといった余計な管理業務の軽減にも役立ち
ます。また、HP-UX RBAC 製品には、現在提供されている他社製の役割ベース アクセス制御ソリューションを上回る、次の
ような利点があります。
• 迅速かつ簡単に導入できるように、HP-UX 固有に事前定義された構成ファイルを用意。
• PAM を介した柔軟な再認証機構により、コマンド単位での制限の設定が可能。
• HP-UX (C2) 監査システムとの統合により、統合された単独の監査ログを生成可能。
• HP 製品を完全にサポート。
• プラグ可能なアーキテクチャにより、アクセス制御の決定をカスタマイズ可能。
4
HP-UX RBAC の概要
本節では、アクセス制御の基礎について概説し、HP-UX RBAC が役割を使用することでいかにアクセス制御管理を簡素化し
ているかについて説明します。また、HP-UX RBAC 製品のアーキテクチャ、コンポーネント、操作についても説明します。
アクセス制御の基礎
アクセス制御システムの目的は、いくつかの制約に基づきリソースへのアクセスを制限することです。通常、これらの制約と
その特性は、次の 3 つの分類に分けられます。
• サブジェクト: リソースにアクセスしようとする存在。オペレーティング システムでは、サブジェクトは通常、ユーザーまた
はユーザーに関連付けられたプロセスのことを指す。
• 操作: リソースに対して実行されるアクション。操作がアプリケーションまたはコマンドに相当する場合もある。HP-UX
RBAC の場合、操作は、ピリオドで区切られた階層文字列 (hpux.user.add など) となる。
• オブジェクト: 操作の対象。エンド リソースと同じこともあれば、異なる場合もある。
アクセス制御要求は、上記の要素を組み合わせた問い合わせと考えることができます。この問い合わせに対する応答 (通
常、許可または拒否) で、リソースに対してアクセスが認められているかを判断します。たとえば、次のような問い合わせが
考えられます。
ユーザーRon は、オブジェクト/dev/c0t1d0 に対する操作 hpux.fs.mount を許可されていますか?
しばしば、権限付与という用語はアクセス制御と同じような意味で用いられます。しかし HP-UX RBAC 製品では、権限はオブ
ジェクトに対して操作が可能なことを意味します。ここで、各ユーザーには、次の表に示す権限一式が割り当てられているも
のとします。またそれぞれの権限によりリソースへのアクセスが許可されています。
注記: 上の図は、権限の操作要素のみを示しています。権限のオブジェクト要素は省略されています。
5
役割によるアクセス制御の簡素化
前節のアクセス制御の概要では、ポリシーがどのように表され、判定がどのように行なわれるかは取り上げませんでした。
ユーザーのリストと、各ユーザーに割り当てた権限 (操作とオブジェクトのペア) のリストを保持する方法には、各ユーザー
の権限一式を、別のユーザーのものとはまったく異なるものにできるため、非常に柔軟性が高いという利点があります。
しかし残念なことに、この方法では管理が困難になります。というのは、新しくユーザーを追加するたびに、各ユーザーに必
要とされる権限を、正確に判断する必要性が生じるからです。また、監査を実行する際に、各ユーザーの権限付与状況を判
断するには、それぞれのユーザーを個別に調査する必要もあります。
RBAC では、共通の権限を必要とするユーザーを役割ごとにグループ分けすることにより、これらの問題を解消します。役割
がグループ分け機構となるため、権限付与と監査が容易になります。権限は、直接ユーザーに割り当てるのではなく、役割
に割り当てます。システムにユーザーを追加する際に、そのユーザーに、実行可能なアクションとアクセスできるリソースを
決定する役割一式を割り当てます。
次の表を、各ユーザーの権限付与状況を示した前ページの表と比較してください。2 つの表を比較すると、役割により権限
の割付けがいかに簡素化されたかがわかります。
注記: 上の図では、権限の操作要素のみを示しています。権限のオブジェクト要素は省略されています。
6
製品のアーキテクチャとコンポーネント
HP-UX RBAC は、HP-UX オペレーティング環境に役割ベースのアクセス制御の利点をもたらします。HP-UX RBAC の主要コ
ンポーネントは、次のとおりです。
• privrun ラッパー コマンド: 既存のレガシー アプリケーションを変更なしに、ユーザーの権限に基づくさまざまな特権で
実行するコマンド。
• アクセス制御ポリシー スイッチ (Access Control Policy Switch): サブジェクトがオブジェクトに対して操作を実行する権
限があるかを判断する。
• アクセス制御ポリシー モジュール (Access Control Policy Module): RBAC データベースを評価し、マッピング ポリシー
を適用して、アクセス制御要求にサービスを提供する。
• 管理コマンド: RBAC データベースのファイルを編集/検証する。
o
roleadm: RBAC データベース ファイルの役割情報を編集する。
o
authadm: RBAC データベース ファイルの権限情報を編集する。
o
cmdprivadm: privrun データベースのコマンド実行の権限および特権を編集する。
o
rbacdbchk: RBAC および privrun のデータベース ファイルの構文チェックを行う。
HP-UX RBAC の主なコンポーネントは、既存の管理コマンド、アプリケーション、スクリプトを呼び出す privrun コマンドです。
privrun コマンドは、アクセス制御ポリシー スイッチ (Access Control Policy Switch) と呼ばれる新たなサブシステムを使用
して、構成ファイルに基づくアクセス制御要求を発行します。アクセス要求は、ユーザー → 役割、役割 → 権限、といった
対応付けを定義する構成ファイルのセットに基づき許可または拒否されます。
アクセス要求が許可されると、privrun は追加された特権を使用して該当するコマンドを呼び出します。これらの特権 (具
体的には、新規 uid および gid) は、コマンドが正しく実行されるように構成されています。
次の図は、HP-UX RBAC 製品のアーキテクチャを表しています。
/usr/sbin/
cmdprivdm
コマンド、権限付与
→特権データベース
/usr/sbin/
rbacdbck
アクセス制御
対応
アプリケーション
privrun
アクセス制御
対応
アプリケーション
ネーム サービス
スイッチ
PAM
PAM
サービス
モジュール
アクセス制御ポリシー スイッチ (ACPS)
ユーザー情報
(etc/passwd など)
その他のポリシー
ACPM
ローカル RBAC
ACPM
キー
特権ラッパー コマンド
アクセス制御スイッチ
RBAC
将来 (未定)
既存コンポーネント
有効な
システム上の
役割
ユーザー →
役割
データベース
/usr/sbin/
roleadm
役割 →
権限付与された
データベース
有効な
システム
権限付与
/usr/sbin/
suthadm
7
使用と操作の例
次の図およびその脚注は、privrun の呼び出し例と、ユーザーがコマンドの実行を許可されているかどうかを判断するうえで
privrun が使用する構成ファイルを示しています。HP-UX RBAC ファイルの作成およびアップデートの詳細と手順、加えて
privrun の呼び出し法について、本書で後ほど詳しく説明します。
ユーザー
複数 : 複数
操作
/etc/rbac/user_role
コマンド、引数、
ユーザーID
複数 : 複数
オブジェクト
コマンド、
特権
/etc/rbac/cmd_priv
/etc/rbac/role_auth
ACPS 経由
プロセス
(シェル)
権限付与
複数 : 複数
役割
ACPS 経由
Privrun
定義済みの特権
以外すべて破棄
特権設定
された
コマンド
privrun コマンドを使用したアクセス制御
1) ユーザーの特権よりも上位の特権で対象となるコマンドを実行するために、ユーザーに関連付けられた
プロセス (具体的にはシェル) が privrun を実行する。
2) 該当するコマンド ライン (コマンド、引数) が明示的に privrun に渡され、呼び出し側ユーザーのユーザ
ーID がプロセス コンテキストを通じて暗黙的に渡される。
3) privrun は、指定されたコマンド ラインに対して、cmd_priv データベース内で一致するエントリ (またはそ
のセット) の検出を試みる。一致した各エントリでは、必要な権限 (操作とオブジェクトのペア) も特定され
る。加えて、ユーザーが必要な特権を持っている場合は、コマンド実行に使用する特権も特定される。
4) privrun は、(一致する cmd_priv エントリについてそれぞれ) アクセス制御ポリシー スイッチを呼び出す。
ACPS の RBAC バックエンドは、ユーザーが指定された権限を持っているかどうかを判断するために、
user_role データベースおよび role_auth データベースを照会し、その照会結果を privrun に返す。
5) プロセスに関連付けられているユーザーが、要求されたコマンドに対して cmd_priv データベースで指定
された、必要な権限を持っていることを想定して、privrun は、cmd_priv エントリで指定された特権を除くすべ
ての特権を破棄し、要求されたコマンドを実行する (privrun にスーパーユーザーの実効ユーザーID が付与
されており、必要なすべての特権を持って起動する)。
8
HP-UX RBAC の入手およびインストール
本節では、HP-UX RBAC の入手方法とインストール方法について説明します。
HP-UX RBACの入手
HP-UX RBAC は、HP のソフトウェア デポ (http://www.software.hp.com) から無償で入手できます。HP-UX RBAC を入手
する手順は、次のとおりです。
1.
2.
3.
4.
5.
6.
7.
HP のソフトウェア デポ http://www.software.hp.com (英語) に移動します。
HP-UX RBAC を検索します (キーワードは RBAC)。
RBAC リリース ページの情報を確認します。
その情報ページにある [ Receive for Free >>] を選択します。
登録情報を入力し、契約条件に同意します。
ページ下部の Download を選択します。
たとえば次に示すように入力し、RBAC デポをローカル ファイルとしてシステムに保存します。
/tmp/<RBAC-depotname>.depot
8. 次のコマンドを実行して、システム上にデポ ファイルが存在することを確認します。
# swlist -d @ /tmp/<RBAC-depotname>.depot
HP-UX RBACのインストール
HP-UX RBAC をインストールする手順は、次のとおりです。
1. HP-UX RBAC リリースノートを調べて、互換性とインストールの要件を確認します。
2. root ユーザーでシステムにログオンします。
3. 次のコマンドを実行して、HP-UX RBAC をインストールします。
# swinstall -s /tmp/<RBAC-depotname>.depot AccessControl
注記: HP-UX RBAC をインストールする際は、システムのリブートを必要としません。
4. swlist コマンドを実行して、インストールされたことを確認します。HP-UX RBAC がシステムにインストールされていると、
以下のような内容が出力されます。
AccessControl B.11.23.01
HP-UX Role-based Access Control Infrastructure
HP-UX RBAC は、/usr/bin/ と /usr/sbin/ にインストールされます。インストールが失敗した場合は、swinstall ツー
ルはエラー メッセージを表示します。エラー メッセージが表示されるか、またはインストールが成功しなかった場合は、
/var/opt/adm/sw/swagent.log のログ情報を確認してください。
9
HP-UX RBAC の導入計画
本節では、HP-UX RBAC を導入する前に実施すべき計画の手順について説明します。
手順1: ユーザーの役割の計画
HP-UX RBAC 製品を展開するうえでの最初の (おそらく最も重要な) 手順は、対象のシステムに登録されているユーザーに
対して、役割一式を正しく定義することです。業務によっては、このような役割が既に存在していることがあります。そのよう
な場合は、HP-UX RBAC 製品の構成時にその役割を再使用できます。しかし、役割は、ほぼそのシステムの管理ユーザー
に関連付けられた既存のタスクに基づいて設計する必要があります。
役割を設計する際は、次の指針に従ってください。
• 役割の数は、システムのユーザー総数よりも大幅に少なくしてください。それぞれのユーザーに特殊な役割を割り当てる
と、役割の管理が簡素化できなくなります。
• 役割は、ユーザーの実際の業務における役割にある程度関連性を持たせる必要があります。
• ユーザーには複数の役割を持たせることができます。このため、複数の業務に共通する権限をグループ化して設計でき
ます。
手順2: 権限付与の計画
役割の定義に続き、次は、役割に関連付ける権限の付与について計画します。役割が、既存の操作階層と協調関係にある
場合、権限付与はきわめて簡単です。次のコマンドを実行すると、システムで定義した権限が一覧で表示されます。
# roleadm list sys
既存の権限階層が役割と協調関係にない場合、各役割に関連付けられている権限の定義は少々面倒です。そのため、各
役割で一般的によく使用されるシステム コマンドのリストを作成しておくとよいでしょう。次に、該当するコマンドを
/etc/rbac/cmd_priv のサンプル データベース cmd_priv と対比させることができます。該当するエントリが見つかっ
た場合、そのエントリから得られる権限を、これから割り当てる権限の見本として使用できます。たとえば、目的の役割のい
ずれかが UserOperator であると想定します。この役割では、useradd、usermod、userdel などのコマンドが一般的によ
く実行されます。次のコマンドを実行すると、この役割に適した権限を割り出せます。
# grep useradd /etc/rbac/cmd_priv
/usr/sbin/useradd:dflt:(hpux.user.add,*):0/0//:dflt:dflt:dflt:
この場合、コマンド/usr/sbin/useradd には hpux.user.add 権限が必要とされることがわかります。この権限を直接
割り当てることもできますが、このケースでは、権限には hpux.user.* を割り当てた方がよいでしょう。
手順3: コマンド マッピングの計画
HP-UX RBAC の導入計画における最終ステップでは、定義した役割すべてについて、役割でよく使用されているにもかかわ
らず、事前定義の cmd_priv ファイルには存在しないコマンドをすべて定義します。cmd_priv ファイルは、権限とコマンド
間の対応付けを定義します。各コマンドについて、以下を定義する必要があります。
• コマンドの絶対パス
• コマンドを実行する前に確認が必要な権限
• コマンドで必要とされる特殊な特権 (たとえば、euid = 0)
cmd_priv ファイルの操作エントリとオブジェクト エントリを構成するテキスト文字列は自由に記述できますが、コマンドまた
はコマンド一式と論理上対応させる必要があります。cmd_priv における権限とコマンドの関連付けを計画するに当たって
は、以下の指針に従ってください。
• 操作を論理的にグループ化して定義すると、役割に対する操作の割り当てが容易になります。
• 操作のグループ化は、含まれる操作の数が多すぎ (10 以上)、もしくは、少なすぎ (1 以下) ないようにしてください。操作
グループの割り当てが困難となるため、ツリー全体の幅が広すぎないようにしてください。また、個々の操作に長くて使用
しにくい名前を付けてツリーを必要以上に深くしないでください。
• 操作名の最後は、アクション (動詞) で終わるようにします。
• 将来、コマンドを追加する時に、新しいコマンドの適切な位置が分りやすいように操作を定義してください。
10
HP-UX RBAC の構成
計画が完了すると、役割、権限付与、コマンドを物理的に構成するのは比較的簡単に行えます。HP-UX RBAC 管理コマンド
を具体的に説明するために、計画の結果、次の割り当て表が作成され、対象のシステムにはすでにこの表のユーザーが存
在しているものと想定します。
ユーザー
役割
権限
よく使用されるコマンド
(注記: オブジェクトが存在するものと
仮定する *)
chandrika、rwang
UserOperator
hpux.user.*
/usr/sbin/useradd
hpux.security.*
/usr/sbin/usermod
/sbin/init.d/inetd
bdurant、prajeesh
NetworkOperator
hpux.network.*
luman
Administrator
hpux.*
company.customauth
/opt/customcmd
手順1: ユーザーの役割の構成
役割は、次の 2 つの手順で構成されます。
1. 役割の作成
2. ユーザーに対する役割の割り当て
役割の作成
roleadm コマンドを使用して、役割の作成、および役割とユーザーの関連付けを行います。roleadm の構文は次のとおり
です。
構文
roleadm add role [comments]
|
|
|
|
|
delete role
modify oldrolename newrolename
assign user role
revoke user [role]
list [user=username][role=rolename][sys]
• add 引数や delete 引数を使用すると、/etc/rbac/roles にあるシステム定義の役割のリストに役割が追加/削除さ
れます。
• assign 引数や revoke 引数を使用すると、/etc/rbac/user_role においてユーザーに関連付けられた役割のリ
ストが変更されます。
• modify 引数を使用すると、役割に関連する 3 つすべてのデータベース ファイル (roles、user_role、role_auth)
中の役割名が更新されます。
• list 引数を使用すると、有効なシステムの役割 (sys)、またはユーザーから役割への割り当て情報のいずれかがリスト
出力されます。
本書で定義した構成例では、最初に新規の役割を追加し、次にその役割にユーザーを割り当てる必要があります。HP-UX
RBAC 製品に付属するデフォルトの構成ファイルには、前もって構成された単一の役割(Administrator) が定義されています。
デフォルトでは、Administrator という役割は、HP-UX のすべてのシステム権限 (hpux.*, *) が割り当てられ、root ユーザー
に関連付けられています。
次のコマンドを実行して、新しい役割を追加します。
# roleadm add UserOperator
roleadm: added role UserOperator
# roleadm add NetworkOperator
roleadm: added role NetworkOperator
これで、この役割は有効なものとして定義され、1 人以上のユーザーに割り当てることができるようになります。この手順を
行わずに役割にユーザーを割り当てようとすると、役割が見つからないというエラー メッセージが表示されます。
11
ユーザーに対する役割の割り当て
役割の作成と役割の割り当てを分離すると、次の 2 つの利点があります。
• 役割を割り当てる前にその役割を追加する必要があるため、割り当ての際の役割指定時に入力ミスを見つけられる。
• さらに重要なこととして、分離することにより、役割の作成と役割の割り当てを別々のユーザーに許可することができる。
HP-UX RBAC 管理コマンドは、管理コマンドを実行するユーザーが必要な権限を持っているかどうかを確認します。たとえば、
roleadm add コマンドを実行するには、ユーザーは hpux.security.access.role.add の権限を持っている必要が
あります。このような権限チェックにより、SecurityOfficer という役割(役割および権限を定義する) と UserAdministrator とい
う役割(既存の役割の割り当てのみができる) をはっきりと区別できます。全般に、HP-UX RBAC 管理コマンドは直接権限チ
ェックを行うため、HP-UX RBAC 管理コマンドを privrun コマンドでラップする必要はありません1。
役割を作成後、次のコマンドを実行して役割を適切なユーザーに割り当てます。
# roleadm assign luman Administrator
roleadm assign done in /etc/rbac/user_role
# roleadm assign chandrika UserOperator
roleadm assign done in /etc/rbac/user_role
# roleadm assign rwang UserOperator
roleadm assign done in /etc/rbac/user_role
# roleadm assign prajeesh NetworkOperator
roleadm assign done in /etc/rbac/user_role
# roleadm assign bdurant NetworkOperator
roleadm assign done in /etc/rbac/user_role
list 引数を使用して、役割が正しく割り当てられたことを確認します。
# roleadm list
root: Administrator
luman: Administrator
chandrika: UserOperator
rwang: UserOperator
prajeesh: NetworkOperator
bdurant: NetworkOperator
手順2: 権限の構成
権限を構成する手順は、役割の作成と割り当てに非常によく似ています。ただし、権限の作成では、権限自体に 2 つの要素
(操作およびオブジェクト) が含まれるという点で大きく異なります。多くの場合、オブジェクトは指定しません。つまり、操作が
すべてのオブジェクトに適用されます。これは、ラップされたコマンドに適用する権限によく用いられます。というのも、コマン
ド名から実行の対象を判断するのが困難な場合があるためです。このようにオブジェクトが特定しにくいコマンドの例に、
/usr/sbin/passwd があります。passwd コマンドを実行すると、/etc/passwd ファイル、NIS テーブル、LDAP エントリなど
多くのリポジトリに作用することがあります。コマンド ライン2を見ても実際のオブジェクトは記述されていないため、通常は、
最も簡単な方法として、「ユーザーはすべてのオブジェクトを操作する必要がある」ものとして設定します。
例: (hpux.security.passwd.change, *)
1
HP-UX RBAC 管理コマンドを privrun コマンドでラップする必要がないのは、管理コマンドがスーパーユーザーの実効ユーザーID を付与されているためです。
HP-UX RBAC 管理コマンドは、管理コマンドを呼び出す人が誰であっても、root 特権で実行されます。アクセス制御チェックにより、HP-UX RBAC 管理コマンドを
実際に使用できる人が限定されます。
2
パスワードを変更する場合、実際の変更対象は、/etc/pam.conf ファイルと/etc/nsswitch.conf ファイルから判断します。
12
ワイルドカード (*) は、オブジェクトを指定しないで authadm コマンドを呼び出す際に使用される非明示的なオブジェクトと
して、非常によく使用されます。authadm の構文は、roleadm の構文と類似しています。次に示すのは authadm コマンド
の構文です。
構文
authadm add operation[object[comments]]
|
|
|
|
delete operation[object]
assign role operation[object]
revoke [role=name][operation=name[object=name]]
list [role=name][operation=name[object=name][sys]
アスタリスク (*) を含ませて権限を割り当てる場合は、シェルの実行を避けるためにワイルドカード文字を引用符で囲む必
要があります。たとえば、以下は、計画の節で説明した権限の作成および割り当てを示しています。
# authadm add company.customauth
authadm added auth:(company.customauth,*)
# authadm assign Administrator company.customauth
authadm added auth for role Administrator
# authadm assign NetworkOperator ‘hpux.network.*’
authadm added auth for role NetworkOperator
# authadm assign UserOperator ‘hpux.user.*’
authadm added auth for role UserOperator
# authadm assign UserOperator ‘hpux.security.*’
authadm added auth for role UserOperator
roleadm コマンドと同じく、次のように authadm コマンドで list 引数を指定すると、権限の割り当て状況を確認できます。
# authadm list
NetworkOperator (hpux.network.*, *)
UserOperator (hpux.user.*, *) (hpux.security.*, *)
Administrator:(hpux.*, *) (company.customauth, *)
手順3: 追加コマンドの構成
HP-UX RBAC を使用するためのシステムを構成する最終手順では、デフォルト構成では提供されていない追加コマンドの定
義を行います。ここでは、コマンドを実行するのに必要な権限が作成され、既に役割に割り当てられているものとして説明し
ます。権限が構成されていない場合、コマンドは構成されますが、ユーザーは適切な権限が与えられません。
cmdprivadm コマンドは roleadm と authadm に類似していますが、操作は追加と削除だけになります。既存のエントリを
変更するには、そのエントリを削除し、修正したエントリを追加する必要があります。cmdprivadm コマンドでは、エントリを
追加する際にいくつかのオプションを指定できます。cmdprivadm の構文は次のとおりです。
cmdprivadm add cmd = full path name of a command
|[op = operation]|[object = object]
|[ruid = ruid]|[euid = euid]
|[rgid = rgid]|[egid = egid]
|[re-auth = pam_service name]
cmdprivadm delete cmd = full path name of a command
|[op = operation]|[object = object]
|[ruid = ruid]|[euid = euid]
|[rgid = rgid]|[egid = egid]
|[re-auth = pam_service name]
各引数の詳細については、cmdprivadm(1M) マンページを参照してください。エントリを追加する際は、ほとんどの引数
の指定は任意になっており、指定しないと相応のデフォルト値が適用されます。よく使われる引数の指定例を次に示します。
# cmdprivadm add cmd=¥opt¥customcmd ¥
op=companyname.customcommand ¥
ruid=0 euid=0
/opt/customcmd::(companyname.customcommand,*):0/0/-1/-1::::
cmdprivadm added the entry to /etc/rbac/cmd_priv
cmdprivadm コマンドでエントリを削除する際、引数はフィルタとして機能します。たとえば、
13
# cmdprivadm delete op=foo
と指定した場合、操作が foo であるエントリのすべてが削除されます。このため、エントリを削除する場合は、削除すべきエ
ントリのみを特定するに足る引数を指定していることを念入りに確認してください。
14
HP-UX RBAC の使用
本節では、privrun コマンドの実行方法と HP-UX RBAC の操作方法について説明します。
privrun コマンドの実行
正しく構成すると、HP-UX RBAC は比較的簡単に使用できます。最も基本的な使用法は、次の例のようにコマンドを引数とし
て privrun を呼び出すことです。
# privrun ipfstat
ログインしたユーザーが、/etc/rbac/cmd_priv で定義された必要な権限を持っていれば、privrun は、cmd_priv エ
ントリで定義された権限 (ユーザーID やグループ ID など) でコマンドを実行します。場合によっては、同一コマンドに対して
複数のエントリが存在し、さまざまな必要権限に対して結果の特権がそれぞれ異なる可能性もあります。このような場合は、
privrun は cmd_priv データベースを順番に繰り返し検索し、ユーザーに権限が与えられている最初のコマンドを実行します。
しかし、必ずしも良い方法とはいえません。たとえば、すべてのユーザーが passwd コマンドを実行して各自のパスワード変
更が許可されることがありますが、ユーザー管理者がこのコマンドを実行する際は、別のユーザーのパスワードを変更する
特権が必要となります。初めに一般ユーザー用のエントリがあると、ユーザー管理者は、さらに上の特権を持つコマンドを実
行できなくなる可能性があります。このような場合に、ユーザーが希望する特権を指定するオプションが privrun にありま
す。使用されるエントリは、指定された特権 (ユーザーID など) に一致するエントリのみとなります。希望する特権に一致す
るエントリが存在しない場合は、privrun はエラー メッセージを発行します。次に示すのは、実効ユーザーID に 0 が設定され
ているエントリだけに一致する privrun の呼び出し例です。
# privrun –u 0 ipfstat
privrun には、標準機能に加え、2 つの追加オプションが用意されています。テスト モード用の-t とフォールスルー モー
ド用の-x です。テスト モードでは、構成ファイルに応じて通常の権限チェックと認証チェックがすべて実行されます。唯一異
なる点は、成功時に privrun ‐t はコマンドを実行せずに戻ります。この動作は、privrun 呼び出しの成功を前もって検証す
るのに利用できます。フォールスルー モードでは、権限チェックまたは認証チェックがうまくいかなかった場合だけ
privrun の動作が修正されます。この場合、エラーで終了せず、追加の特権がない状態でコマンドが実行されます。本質
的には、ユーザーが直接コマンドを実行するのと同じように機能します。
15
HP-UX RBAC のトラブルシューティング
HP-UX RBAC のトラブルシューティングおよびデバッグには、主に次の機能を使用します。
• rbacdbchk ユーティリティ: RBAC データベースの構文チェック
• privrun –v: 追加情報および関連情報の出力
rbacdbchk ツール(データベースの構文チェック)
一般によく発生するバグは、HP-UX RBAC データベースを手作業で編集したことによる構成の不具合によるものです。この
不具合とは、構成に無効な構文が含まれてしまうことや、データベース間の構成に矛盾が生じることを指します (たとえば、
user_role 内で定義された役割が roles 内で定義されていない等)。このような手動操作に伴う人為的なミスの診断を
実施してくれる rbacdbchk コマンドが、HP-UX RBAC 製品で用意されています。このコマンドを実行すると、RBAC 関連デー
タベースを一通り読み通し、誤った、もしくは矛盾した構成エントリが見つかった場合は警告を出力します。
# rbacdbchk
[/etc/rbac/user_role] chandrika:UserOperator
invalid user
The value 'chandrika' for the Username field is bad.
[/etc/rbac/cmd_priv] /opt/cmd:dflt:(newop,*):0/0//:dflt:dflt:dflt:
invalid command:Not found in the system
The value '/opt/cmd' for the Command field is bad.
[Role in role_auth DB with no assigned user in user_role DB]
Rebooter:(hpux.admin.*, *)
[Invalid Role in user_role DB.Role 'UserOperator' assigned to user
'chandrika' does not exist in the roles DB]
システムが正しく構成されていると、rbacdbchk コマンドを実行しても何も出力されません (エラーがないことを意味しま
す)。
privrun –v 情報
問題を見つける第 2 の方法として、-v オプション (詳細表示モード) を指定して privrun コマンドを実行する方法がありま
す。これにより privrun は、入力されたコマンドと一致するエントリに関連する追加情報、権限チェックのステータス、さらに
その他の関連情報を出力します。多くの場合、この出力で privrun が失敗した原因が明らかになります。-v オプションを複
数回指定して、さらに詳細な情報を出力することができます。次に示すのは、ipfstat コマンドを引数として privrun –v
を実行した場合の出力例です。
# privrun –v /sbin/ipfstat
privrun: user root intends to execute command /sbin/ipfstat
privrun: input entry:'/sbin/ipfstat:dflt:(,):///:dflt:dflt::'
privrun: found matching
entry:'/sbin/ipfstat:dflt:(hpux.network.filter.readstat,*):0/0//:
dflt:dflt::'
privrun: passed authorization check
privrun: attempting to set ruid/euid/rgid/egid to 0/0/-1/-1
privrun: current settings for ruid/euid/rgid/egid are 0/0/3/3
privrun: executing: /sbin/ipfstat
16
まとめ
エンタープライズ インフラストラクチャに対する攻撃の大部分は、企業ネットワークの内部から来るものなのか、はたまた外
部から来るものなのかという問題が、IT セキュリティ業界において議論の的になっています。いずれにせよ、システムに対す
る脅威の大きな出所が企業のファイアウォール内にあるという点では、概ね意見が一致しています。これには、問題が発生
した後からでも「誰が何をしたのか」を特定できることが重要です。目的が、健康関連情報のプライバシ保護であれ、企業財
務データの保全性確保であれ、適切なツールをアクセス制御やアカウント管理に使用する必要があります。HP-UX では、
HP-UX RBAC 製品が、このようなセキュリティ ソリューションの基盤部分を提供します。
17
付録 A: FAQ
ユーザーを特定するのに実効ユーザーID ではなく実ユーザーID が使用されるのはなぜですか?
privrun コマンドが他のコマンドに対する特権を引き上げることができるように、privrun 自体が setuid バイナリとして提供され
ています。そのため、privrun を呼び出すプロセスの実効ユーザーID を privrun コマンドで直接利用することができません。し
たがって、ユーザーの特定には実ユーザーID が使用されています。
privrun は自動的に起動するのですか、それとも、privrun を第 1 引数として指定した特定のコマンドを呼び出す必要がある
のですか? privrun を使用しないでコマンドを呼び出すと、privrun に関する警告やエラー メッセージが出力されますか?
追加特権を必要とするコマンドをラップする際には、明示的に privrun を呼び出す必要があります。特権が不足した状態のコ
マンドを呼び出した後に発行されるエラー メッセージは、呼び出したコマンドによって異なります。コマンドの多くは、「特権
不足」に関するメッセージを返します。
シングルユーザー モードで privrun を使用できますか?
使用できません。privrun コマンドでは、構成ファイルに基づきアクセス制御決定機能を動的にロードする必要があります。こ
のため、privrun コマンドはシングルユーザー モードでは機能しません。HP は、将来のリリースにおいてシングルユーザー
モード対応を検討しています。
HP-UX RBAC 製品は有償ですか無償ですか? また、コア HP-UX に含まれる製品でインストールの必要性がないものなので
すか?
HP-UX RBAC 製品は現在、HP サイトの http://software.hp.com (英語) から HP-UX 11i v2 (PA-RISC または Itanium) 用の
製品として無償で入手できます。HP-UX RBAC は、将来のメジャーなエンタープライズ リリースでコア HP-UX に統合される予
定です。
SD スクリプト内から privrun を実行できますか?
HP は、privrun を SD スクリプト内から実行した場合の問題について、いっさい認識していません。しかし、現在 SD は、SD に
関するコマンドが root で実行されることを想定して設計されているため、SD 制御スクリプト内に privrun を含める必要があり
ません。また含めること自体、予期せぬ障害の原因となりえます。HP は、将来のリリースにおいて HP-UX RBAC と SD の統
合を強化することを検討しています。
権限は常に、個々のユーザーではなく役割に割り当てられるのですか?
その通りです。現在、権限をユーザーに直接割り当てる方法は存在しません。
操作文字列とコマンド ラインの間にはどのような関係がありますか? 権限の名前は何に基づいて決められるのですか?
cmd_priv ファイルで、権限とコマンドの間の関連付けを定義します。cmd_priv ファイルの操作エントリとオブジェクト エ
ントリを構成するテキスト文字列は自由に記述できますが、コマンドまたはコマンド一式と論理的に対応している必要があり
ます。cmd_priv での権限付与とコマンド マッピングの計画の指針については、本書の「コマンド マッピングの計画」の節
を参照してください。
役割を管理する GUI または Web のインタフェースはありますか? 役割管理機能は SAM に組み込まれていますか?
組み込まれていません。役割の管理には roleadm コマンドのみをご使用ください。
privrun を使用しなくても root ユーザーはすべてのコマンドを実行できますか?
実行できます。近い将来、root ユーザーでも、グレードアップされた特権一式を使用して実行できるようになります。
HP-UX RBAC に、あらかじめ構成されている役割 (一般的な) はありますか?
HP-UX RBAC には、root の役割 (Administrator) のみ事前に構成されています。
スクリプトを通じてコマンドを実行する場合、そのスクリプト上で privrun を実行できますか?
実行できます。HP は、複雑なアクセス制御機構を持つコマンドを引数としてスクリプト内でラップし、そのスクリプトを privrun
で構成することをお勧めします。スクリプト内のすべての要素が追加特権で実行されることに注意してください。またこのた
18
めに、任意の要素がユーザーの制御下にあると、そのユーザーは、スクリプトを悪用して無制限の特権を取得できるように
なってしまいます。
システムの再インストール (または、別のシステムへのエクスポート) を必要とする場合、privrun データベースの復元が可
能となるように、privrun データベースを「エクスポート」し、その設定を「インポート」するコマンドはありますか?
ありません。privrun データベース設定をエクスポート/インポートすることはできません。ただし、HP-UX RBAC で使用される
データベース セットは十分に定義が施されているため、対象のシステムに直接コピーすることができます。
HP-UX RBAC は、トラステッド システム、非トラステッド システム、およびシャドウ パスワード システムにおいて同じように
機能しますか?
機能します。ただし、ユーザー自身が再認証を行う必要がある場合、初回ログイン時と同様に再認証の手順が異なります。
たとえば、トラステッド モードと標準モードでは、制限の違いがチェックされます。
root は、roleadm を実行できる唯一のユーザーですか?
違います。権限 (hpux.security.access.role.*, *) を持つユーザーであれば誰でも roleadm コマンドを実行できます。また、
このようなユーザーは、さらに、roleadm add を実行できるユーザーと roleadm assign を実行できるユーザーに区別
されます。詳細については、/etc/rbac/auths ファイルを参照してください。
新しい権限を作成できますか? たとえば、独自のコマンド "foo" があると仮定して、一部のユーザーに限定してこのコマ
ンドの実行権限を与えられますか?
できます。これを実現するには、authadm コマンドを使用して新しく権限を定義する必要があります (その権限がまだ存在し
ない場合)。次に、cmdprivadm コマンドを使用して “foo” コマンドを構成します。
cmdprivadm でコマンドの絶対パスを指定する必要はありますか? ユーザーが/usr/sbin/mount ではなく、独自にコピーし
た mount を実行する場合も指定が必要ですか?
cmd_priv データベースでコマンドを構成する場合は、絶対パスの指定が必要となります。実行時は、ユーザーが privrun に
対する引数として絶対パスを指定することも、シェルと同様に privrun がそのパスを解決できるようにすることも可能です。い
ずれの場合も、解決されたパスは、cmd_priv データベース内のエントリと照合されます。このため、ユーザー独自の制御下
でユーザー自身がコマンドのバージョンを選択できなくなります (管理者が明示的に許可していない場合)。
vi を実行する特権を与えられたユーザーが vi 内でシェル エスケープを行う場合、ユーザーは root もしくはそのユーザー自
身としてシェル エスケープを実行しますか? root 特権の vi またはその他のコマンドからシェル エスケープ実行を阻止す
る方法はありますか?
対象のコマンド (この場合は vi) は追加特権で実行されるため、このコマンドにより許可されるいかなる処理 (シェル エスケ
ープを含む) も追加特権で実行されます。このため、HP は、管理者に対し、ユーザーによる無制限特権の取得が直接的、
または間接的にでも可能となるコマンドを構成しないよう強くお勧めします。nvi や vi といった一般的なエディタには、シェル
エスケープを許可しないで、特定のファイルのみの編集が行えるように安全に構成を行う、「安全」バージョンが通常存在し
ます。
HP-UX RBAC は、アクセス制御情報を保存する LDAP をサポートしていますか?
HP-UX RBAC は現在、アクセス制御情報を保存する LDAP のサポートは行っておりません。HP は、将来のリリースにおいて
この種の LDAP をサポートすることを検討しています。
privrun –x コマンドの動作は、引数を指定しない privrun と同じものですか (ユーザーに必要な権限が与えられていない場
合) ?
ほぼ同じ動作ですが、次のような例外に注意してください。
• プロセスに関連付けられた実効ユーザーID が privrun コマンドでマスクされます。「フォールスルー」が必要とされる場合
は、実効ユーザーID の代わりに実ユーザーID が使用されます。
• privrun でエラーが発生した場合 (たとえば、対象のコマンドを開けない) は、privrun 自体がエラーを返します。呼び出し
側のスクリプトで、privrun エラーと、対象のコマンドにより返されたエラーを区別する必要があります。
19
HP-UX RBAC に下位互換性の問題は存在しますか (特にカスタム スクリプトに関して) ?
privrun はオプションとなっており、また特に使用する必要性もないため、下位互換性に直接影響するような問題はありませ
ん。privrun をスクリプトで明示的に使用する場合は、privrun で返されるエラー コードと対象のコマンドで返されるエラー コ
ードを区別する必要があります。区別する方法としては、文字列 privrun: で始まるエラーの有無を stdout においてチェッ
クします。
ユーザー、操作、ターゲットの 3 種類の情報が記録される監査ログを privrun で維持できますか?
できます。
監査ログはどこに存在しますか? (syslog?)
監査ログは、標準 HP-UX (C2) 監査システムに含まれています。監査ログを実際に生成する場所を設定できます。詳細に
ついては、audsys(1M) マンページを参照してください。
privrun を使用しないコマンドの実行を阻止する方法はありますか?
root 以外のユーザーによる管理コマンドの実行は、通常、次の 3 つの要因により失敗に終わることがあります。
• プロセスに関連付けられた uid/gid がファイルに対して適切な権限を持っていないのに、コマンドはそのファイルへのアク
セスを試みる。ファイル オープン呼び出しが失敗に終わる。
• 多くの場合、コマンドは、チェック (カーネル内の) を強要するシステム コールを利用する。このチェックは、プロセスに関
連付けられた uid が 0 (root) であることを確認する際によく実行される。
• 上述のケースで不要なエラー処理を回避するために、多くのコマンドがプロセスの uid をチェック (userspace 内) する。こ
の uid が 0 でない場合は、プロセスがエラーで終了することがある。ユーザーは通常、独自のコマンド バージョンをコンパ
イルするなどしてこのチェックを回避できるため、実際にこのチェックでセキュリティが確保されることはない。
引数はコマンドに対してどのように指定すべきですか?
ユーザーが特定の引数を指定したコマンドだけを実行できるようにするには、cmdprivadm でコマンド ライン全体を設定し
ます。指定された引数にかかわらずユーザーがコマンドを実行できるようにするには、コマンドのみを設定します。どの引数
も許可したくない場合は、# cmdprivadm cmd=‘/path/to/cmd9 と設定します。
注記: コマンドの後にスペースを 1 つ入れてください。
foo –a [anything]といった引数のクラスは指定可能ですか?
現在、これを実現する唯一の方法は、対象となるコマンドをスクリプトでラップし、cmdprivadm でそのスクリプトを構成するこ
とです。HP は、将来のリリースにおいてこの機能の対応を検討しています。
ユーザー グループで独自の役割を定義できますか? 可能な場合、その定義方法は?
現在、グループにこの役割を定義することはできません。ただし、同じユーザーに並行して役割を定義することはできます。
HP は、将来のリリースにおいてこの機能の対応を検討しています。
20
追加情報
HP-UX RBAC の詳細については、次のリソースを参照してください。
• HP-UX RBAC リリース ノート:
http://docs.hp.com/hpux/internet/index.html#HP-UX%20Role-based%20Access%20Control
• HP-UX RBAC マンページ:
o
rbac(5) — RBAC 製品の概要および導入
o
privrun(1m) — 呼び出し側のユーザーに関連付けられた権限に基づきさまざまな特権でレガシー アプ
リケーションを実行
o
rbacdbchk(1m) — RBAC データベース ファイルと privrun データベース ファイルの構文を確認
o
roleadm(1m) — RBAC データベース ファイルの役割情報を編集
o
authadm(1m) — RBAC データベース ファイルの権限情報を編集
o
cmdprivadm(1m) — privrun データベースのコマンドの権限および特権を編集
ダウンロード
次の HP ソフトウェア デポから HP-UX RBAC を無償でダウンロードできます。
http://www.software.hp.com
お問い合わせはカスタマー インフォメーションセンターへ
03-6416-6660
月∼金9:00∼19:00 土10:00∼18:00 (日、祝祭日、年末年始および5/1を除く)
HP-UX 製品に関する情報は
HP-UX に関する技術情報は
http://www.hp.com/jp/hpux
http://www.hp.com/jp/developer
記載されている会社名および商品名は、各社の商標または登録商標です。
記載事項は2005年1月現在のものです。
本書に記載された内容は、予告なく変更されることがあります。
本書中の技術的あるいは校正上の誤り、省略に対して、
いかなる責任も負いかねますのでご了承ください。
本書は、『Using HP-UX Role-Based Access Control (01/2005) 』 (英語) をもとに
日本語で提供するものです。
© Copyright 2005 Hewlett-Packard Development Company,L.P.
日本ヒューレット・パッカード株式会社
〒140-8641 東京都品川区東品川 2-2-24 天王洲セントラルタワー
PDFHS05010-01
Fly UP