(57)【要約】【課題】ロールベースアクセス制御（ＲＢＡＣ）を構成するために、多くの時間および費用が必要とされないようにする。【解決手段】本発明の一実施形態は、ロールベースアクセス制御を構成する方法であって、（ｉ）権限を示す第１のリストと、（ｉｉ）ロールおよびそれらロールの記述を示す第２のリストと、（ｉｉｉ）記述をロールにマッピングする鍵データベースとを使用して、ロールを権限に関連付けること、並びにロールおよびそれらロールに関連付けられる権限を示すロール／権限構成データ構造を作成することを含む。【選択図】図２
2008287713.tif 000002
【特許請求の範囲】
【請求項１】
ロールベースアクセス制御を構成する方法であって、
（ｉ）権限(authorization)を示す第１のリストと、
（ｉｉ）ロール(role)およびこのロールの記述(description)を示す第２のリストと、
（ｉｉｉ）前記記述を前記ロールにマッピングする鍵データ構造と
を使用して、前記ロールを前記権限に関連付けることと、
前記ロールおよびこのロールに関連付けられる権限を示すロール／権限構成データ構造を作成することと
を含む方法。
【請求項２】
前記第１のリストは、
前記権限およびこの権限に関連付けられるコマンドを示すデータベース
を含む
請求項１に記載の方法。
【請求項３】
ソフトウェアパッケージのリストから前記権限を作成することによって、前記第１のリストを作成することと、
前記ソフトウェアパッケージに関連付けられるコマンドを得ることと
を含む請求項２に記載の方法。
【請求項４】
前記第１のリストは、
権限／コマンド構成データ構造
を含む
請求項２に記載の方法。
【請求項５】
前記第１のリストに示された前記権限を含む権限構成データ構造を作成すること
を含む請求項１に記載の方法。
【請求項６】
デフォルトロールと記述、ロールと記述を示す少なくとも１つのデータベース、および、手動で作成されたロールと記述の少なくとも１つから、前記第２のリストを作成すること
を含む請求項１に記載の方法。
【請求項７】
前記第２のリストは、
ロール／記述構成データ構造
を含む
請求項２に記載の方法。
【請求項８】
前記第２のリストおよびユーザを示す第３のリストから、ロール／ユーザ構成データベースを作成すること
を含む請求項１に記載の方法。
【請求項９】
ロールを示すロールリスト、および、手動で作成されたロールの少なくとも一方からロール構成データ構造を作成すること
を含む請求項１に記載の方法。
【請求項１０】
前記ロール構成データ構造における循環依存関係を検出すること
を含む請求項９に記載の方法。
【請求項１１】
請求項１に記載の方法を使用して構成される
データ処理システム。
【請求項１２】
ロールベースアクセス制御を構成するためのコンピュータプログラムであって、
（ｉ）権限を示す第１のリストと、
（ｉｉ）ロールおよびこのロールの記述を示す第２のリストと、
（ｉｉｉ）前記記述を前記ロールにマッピングする鍵データベースとを使用して、前記ロールを前記権限に関連付けるためのコードと、
前記ロールおよびそれらロールに関連付けられる権限を示すロール／権限構成データ構造を作成するためのコードと
を含むコンピュータプログラム。
【請求項１３】
前記第１のリストは、
前記権限およびこの権限に関連付けられるコマンドを示すデータベース
を含み、
前記コンピュータプログラムは、
ソフトウェアパッケージのリストから前記権限を作成することによって前記第１のリストを作成するためのコード、および前記ソフトウェアパッケージに関連付けられるコマンドを得ること
を含む請求項１２に記載のコンピュータプログラム。
【請求項１４】
前記第１のリストに示された前記権限を含む権限構成データ構造を作成するためのコード
を含む請求項１２に記載のコンピュータプログラム。
【請求項１５】
デフォルトロールおよび記述、ロールおよび記述を示す少なくとも１つのデータベース、並びに手動で作成されたロールおよび記述の少なくとも１つから前記第２のリストを作成するためのコード
を含む請求項１２に記載のコンピュータプログラム。
【請求項１６】
前記第２のリストおよびユーザを示す第３のリストからロール／ユーザ構成データベースを作成するためのコード
を含む請求項１２に記載のコンピュータプログラム。
【請求項１７】
ロールを示すロールリストおよび手動で作成されたロールの少なくとも一方からロール構成データ構造を作成するためのコード
を含む請求項１２に記載のコンピュータプログラム。
【請求項１８】
ロール構成データ構造における循環依存関係を検出するためのコード
を含む請求項１７に記載のコンピュータプログラム。
【請求項１９】
請求項１２に記載のコンピュータプログラムを記憶するコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムおよびデータ処理方法に関する。
【背景技術】
【０００２】
データ処理システム内では、ユーザに、たとえば一定のコマンドのみを実行することを許可するために、ロールベースアクセス制御（ＲＢＡＣ）が使用される場合がある。
組織は、その組織のデータ処理システム内でＲＢＡＣを使用して、一定の業界標準を満たす場合がある。
たとえば、米国内では、２００２年のサーベンス・オクスリー（ＳＯＸ）法または医療保険の携行性と責任に関する法律（ＨＩＰＡＡ）の法令遵守の一環としてＲＢＡＣを使用する場合がある。
米国標準技術局（ＮＩＳＴ）は、ＲＢＡＣ標準規格を提供している。
【０００３】
ＲＢＡＣを実施するために、組織は、既存のセキュリティ製品の使用を停止することが必要な場合がある。
さらに、管理する多くのユーザおよび／またはロールが存在する場合がある。
たとえば、或るヨーロッパの銀行に関するケーススタディでは、１３００を超えるロールが作成および管理に必要とされることが明らかにされ、かなりの人的資源が必要となる。
したがって、ＲＢＡＣを構成することは、多くの時間および費用を要するプロセスとなり得る。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来技術の問題の１つまたは２つ以上を少なくとも緩和することが、本発明の実施の形態の目的である。
【課題を解決するための手段】
【０００５】
次に、単なる例として、添付図面に関して本発明の実施形態を説明する。
【発明を実施するための最良の形態】
【０００６】
本発明の実施形態は、既存のセキュリティ製品を利用して、１つ若しくは２つ以上のデータ処理システム上でＲＢＡＣを少なくとも部分的に構成するか、または、ＲＢＡＣの構成に寄与する。
たとえば、本発明の実施形態は、既存のセキュリティ製品を構成し、且つ／または、実施するセキュリティポリシーをそれら製品に提供するデータベースまたはデータ構造を利用する。
既存のセキュリティ製品には、たとえば、Sun Microsystemsが提供しているネットワーク情報サービス（ＮＩＳ／ＮＩＳ＋）、ライトウェイトディレクトリアクセス制御（ＬＤＡＰ）、または、たとえばＵｎｉｘ（登録商標）オペレーティングシステムおよびＵｎｉｘ（登録商標）ベースオペレーティングシステム等のオペレーティングシステムによって実施されるパスワードセキュリティが含まれる。
Ｕｎｉｘ（登録商標）ベースオペレーティングシステムは、たとえば、ＨＰ−ＵＸ等である。
【０００７】
図１は、この一例のオペレーティングシステムＨＰ−ＵＸ上でＲＢＡＣ１００を構成するのに使用される構成データ構造（データベース）の一例を示している。
これらのデータ構造は、ＲＢＡＣ環境で利用可能であり且つ１人または２人以上のユーザに割り当てることができるロールをリストしたロールデータベースを含む。
たとえば、ユーザがネットワーク管理者のロールを有するように、ロールがユーザに割り当てられる場合がある。
また、これらのデータ構造は、権限データベース１０４も含む。
この権限データベース１０４は、権限のリストを含む。
権限は、ロールに割り当てられて、その権限に関連付けられる一定の動作を行う権限がロールに付与されていることを示す。
【０００８】
これらのデータ構造は、ロール／権限データベース１０６も含む。
このロール／権限データベース１０６は、ロールおよびそれらロールに関連付けられる権限のリストを含む。
ロールは、１つまたは２つ以上の権限に関連付けることができる。
【０００９】
これらのデータ構造は、ロール／ユーザデータベース１０８も含む。
このロール／ユーザデータベースは、ユーザおよびそれらユーザに関連付けられるロールのリストを含む。
ユーザは、１つまたは２つ以上のロールに関連付けることができる。
【００１０】
これらのデータ構造は、ｃｍｄ＿ｐｒｉｖデータベース１１０も含む。
ｃｍｄ＿ｐｒｉｖデータベースは、権限およびそれら権限に関連付けられるコマンドのリストを含む。
【００１１】
したがって、コマンドは、権限に関連付けることができ、権限は、ロールに関連付けることができ、ロールは、ユーザに関連付けることができる。
このように、コマンドは、ユーザに関連付けることができ、ＲＢＡＣが実施されるデータ処理システムを使用するユーザは、関連付けられるコマンドのみを実行することができる。
ユーザは、他のコマンドを実行できない場合がある。
これらの制限は、たとえば、ＨＰ−ＵＸオペレーティングシステム若しくは他のオペレーティングシステムと共にまたはそれらオペレーティングシステム用に供給されたセキュリティソフトウェア等、ＲＢＡＣを実施するソフトウェアによってデータ処理システムに課される。
【００１２】
図２は、上記構成データ構造の作成の概観の一例２００を示している。
権限／コマンドデータベース（ｃｍｄ＿ｐｒｉｖ）２００は、次のように作成される。
データ処理システム上にインストールされているかまたはデータ処理システム上で利用可能なソフトウェアパッケージのリストが得られる。
これは、たとえば、システム管理者またはシステムコマンドが提供することができる。
ＨＰ−ＵＸオペレーティングシステムによって提供されたシステムコマンドの一例は、ｓｗｌｉｓｔである。
ただし、他のオペレーティングシステムは、同様の機能を有するコマンドを提供することができる。
このソフトウェアパッケージのリストは、製品に関連付けられるコマンドのリストを得るのに使用される（或いは、他のコマンドも使用することができる）。
たとえば、ｓｗｌｉｓｔは、この目的で使用することができる。
たとえば、ソフトウェアパッケージ「ＬＶＭ」が、データ処理システム上にインストールされているかまたはデータ処理システム上で利用可能である場合に、以下のコマンドを使用することができる。
swlist -l file LVM | grep "/usr/sbin" | awk '{print $0}'
これは、たとえば、以下の出力を生成することができる。
LVM.LVM_RUN:   /usr/sbin
LVM.LVM_RUN:   /usr/sbin/lvchange
LVM.LVM_RUN:   /usr/sbin/lvmchk
LVM.LVM_RUN:   /usr/sbin/lvmmigrate
LVM.LVM_RUN:   /usr/sbin/lvcreate
LVM.LVM_RUN:   /usr/sbin/lvdisplay
【００１３】
コマンドlvchange、lvmchk、lvmmigrate、lvcreate、およびlvdisplayは、「ＬＶＭ」ソフトウェアパッケージに関連付けられるコマンドである。
【００１４】
権限２０６も、ソフトウェアパッケージ用に作成される。
これらは、org.xxx.adminとして作成される。
ここで、XXXは、ソフトウェアパッケージの名称またはソフトウェアパッケージに関連付けられる識別子である。
たとえば、権限org.lvm.adminは、ＬＶＭソフトウェアパッケージ用に作成される。
他の形態の権限も可能な場合がある。
【００１５】
権限／コマンドデータベース２０２は、権限２０６およびそれら権限に関連付けられるコマンド２０４のリストを含むかまたは示すように作成される。
たとえば、ＬＶＭソフトウェアパッケージの場合、データベース２０２の一部は、以下に示すように作成することができる。
【００１６】
【表１】
2008287713.tif 000003
【００１７】
データベース２０２は、必要に応じて、「権限」および「コマンド」の列の見出しを伴って作成することもできるし、伴わないで作成することもできる。
これら列の見出しは、たとえば、データベースの人間の可読性を改善するためにコメントを補うことができる。
【００１８】
再び図２を参照して、権限／コマンドデータベース２０２からの権限のリストを含む権限データベース２１０も作成される。
【００１９】
ロール／記述データベース２１２も、ロールおよびそれらロールの記述のリストを含むように作成される。
ロール／記述データベース２１２は、デフォルトロール２１４を含むことができる。
たとえば、オペレーティングシステムは、デフォルトロールを提供することができるかまたは示すことができる。
たとえば、ＨＰ−ＵＸオペレーティングシステム上では、デフォルトロールは、記述「ネットワーク管理者」、「ファイルシステム管理者」、および「バックアップ管理者」をそれぞれ有するnetwork_admin、fs_admin、およびbackup_adminを含むことができる。
これらのロールおよび記述をロール／記述データベース２１２に追加することができる。
データベース２１２は、たとえば、システム管理者またはデータ処理システムセキュリティ管理者によって追加される手動追加ロール２１６も含むことができる。
【００２０】
ロール／記述データベースは、たとえば、既存のデータベース２１８から得られたロールも含むことができる。
たとえば、データ処理システムが、ＮＩＳ／ＮＩＳ＋、ＬＤＡＰ、またはパスワードセキュリティソフトウェアを使用して実装されたセキュリティポリシーを含む場合、このセキュリティポリシーは、それらセキュリティソフトウェアに関連付けられる１つまたは２つ以上のデータベースに示されるように実装することができる。
たとえば、パスワードがＨＰ−ＵＸオペレーティングシステム上で使用される場合、/etc/groupファイルは、データ処理システム上に存在するグループを求めるために処理することができる。
すなわち、各ユーザは、１つまたは２つ以上のグループのメンバーとすることができ、/etc/groupファイルは、それらグループのＩＤを提供する。
グループは、グループＩＤ（ＧＩＤ）によって識別することができる。
グループＩＤは、たとえば、整数値とすることができる。
この整数値は、本発明の実施形態ではロール名として使用することもできるし、代替的な形態（たとえば、テキスト）に変更することもできる。
【００２１】
ＬＤＡＰがデータ処理システム上で使用される場合、ＬＤＡＰデータベース（またはＬＤＡＰスキーマ）は、どのようなセキュリティポリシーが実施されるべきかをＬＤＡＰソフトウェアに示す。
たとえば、ＬＤＡＰデータベースは、複数のユーザおよびそれらユーザが属するグループを示すことができる。
グループのグループＩＤは、ＬＤＡＰデータベースから抽出することができ、たとえば、データベースのＣＮフィールドから抽出することができ、ロール／記述データベース２１２に追加することができる。
グループの記述は、たとえば、管理者によって追加されるか、または、ＬＤＡＰデータベースからも抽出される。
【００２２】
また、組織は、従業員データベースも所有することができる。
この従業員データベースは、ユーザが有することができるロールを示し、それらロールの記述も含むことができる。
この従業員データベースは、既存のデータベース２１８を含むことができる。
この既存のデータベース２１８は、そこからロールおよび／または記述を得ることができ、且つ、それらのロールおよび／または記述をロール／記述データベース２１２に追加することができる。
【００２３】
本発明の実施形態に従って作成されたロール／記述データベース２１２の一例を以下に提供する。
ここで、ロール「lvm_admin」は、記述「ＬＶＭ管理者」と共に手動で追加される。
【００２４】
【表２】
2008287713.tif 000004
【００２５】
図２を再び参照して、ロールデータベース２２０は、ロール／記述データベース２１２からのロールのリストを含めて作成される。
【００２６】
ロール／権限データベース２３０は権限／コマンドデータベース２０２およびロール／記述データベース２１２から作成され、それによって、ロールおよびそれらロールに関連付けられる権限を示す。
ロールと権限との間のこの関連付けは、データベース２０２および２１２から得ることができない場合がある。
したがって、鍵データベース２３２が、関連付けを導出できるように提供される。
たとえば、鍵データベースは、以下の情報を含むように提供することができる。
【００２７】
【表３】
2008287713.tif 000005
【００２８】
鍵データベース２３２は、権限／コマンドデータベース２０２（或いは、権限データベース２１０）の「権限」の列にテキストを含む権限を見つけるのに使用される。
次に、この権限と、記述の「ロール鍵」列にテキストを含むロール／記述データベース２１２のロールとの間に関連付けが行われる。
たとえば、権限／コマンドデータベース２０２の「org.lvm.admin」権限は、テキスト「lvm」を有する。
したがって、ロール／記述データベース２１２の記述の検索は、テキスト「LVM Admin」を含む記述について行われる。
記述「ＬＶＭ管理者」が見つけられる。
これは、ロール「lvm_admin」の記述である。
したがって、ロール「lvm_admin」と権限「org.lvm.admin」との間の関連付けが行われる。
【００２９】
鍵データベースは、事前に作成される。
すなわち、たとえばセキュリティ管理者である管理者によって取得または作成される。
鍵データベースは、権限とロールとの間の関連付けをマッピングするさらなる権限鍵および関連付けられるロール鍵を含むように更新することができる。
【００３０】
ロール／権限データベース２３０は、ロールおよびそれらロールに関連付けられる権限のリストを含むように更新される。
１つの権限が、１つまたは２つ以上のロールについて現れる場合があり、且つ／または、１つのロールが、１つまたは２つ以上の権限に関連付けられる場合がある。
たとえば、ロール／権限データベースは、以下の情報を含むことができる。
【００３１】
【表４】
2008287713.tif 000006
【００３２】
したがって、ロール「lvm_admin」を有するユーザは、「org.lvm.admin」権限に関連付けられるコマンドを実行することができる。
【００３３】
図２を再び参照して、ロール／ユーザデータベース２４０も、ロールおよびそれらロールに関連付けられるユーザのリストを含むように作成される。
ロール／ユーザデータベース２４０は、たとえば、１つまたは２つ以上の既存のデータベースから作成することができる。
たとえば、/etc/passwd、ＬＤＡＰデータベース、ＮＩＳ／ＮＩＳ＋データベース、従業員データベース、および／または、たとえば、このデータ処理システムを使用できるユーザを示すオペレーティングシステムによって保持されるデータベース等の他の任意の適したデータベースからユーザのリストを得ることができる。
【００３４】
たとえば、ＨＰ−ＵＸオペレーティングシステムを含むデータ処理システム上のたとえば/etc/passwordファイルは、以下の情報を含むことができる。
kiran:*:104:1::/home/vusr1:/sbin/sh
chandra:*:105:1::/home/vusr2:/sbin/sh
【００３５】
ユーザ「kiran」およびユーザ「chandra」は、この/etc/passwdファイルから求めることができる。
【００３６】
ＬＤＡＰデータベースが存在する場合、ユーザは、ＬＤＡＰデータベースから、たとえばＬＤＡＰデータベースのMemberUidフィールドおよび／またはMemberNameフィールド内から取り出し可能な場合がある。
【００３７】
ロールのリストは、ロール／記述データベース２１２（或いは、ロールデータベース２２０）から得ることができる。
ユーザには、既存のデータベース内のデータおよび／または管理者入力２４４に従ってロールを与えることができる（たとえば、管理者は、ロールをユーザに手動で割り当てることができる）。
１人のユーザを１つまたは２つ以上のロールに関連付けることができ、且つ／または、１つのロールを１人または２人以上のユーザに関連付けることができる。
ユーザに関連付けられるロールは、ロール／ユーザデータベース２４０に詳述される。たとえば、データベース２４０は、以下の情報を含むことができる。
【００３８】
【表５】
2008287713.tif 000007
【００３９】
したがって、ユーザ「kiran」およびユーザ「chandra」は、「lvm_admin」のロールを有し、ユーザが、関連付けられるコマンドを実行できることを意味する。
上記に示したデータベースによれば、これらのコマンドは、権限org.lvm.adminによって提供されるような/usr/sbin/lvchange、/usr/sbin/lvmchk、usr/sbin/lvmmigrate、/usr/sbin/lvcreate、および/usr/sbin/lvdisplayである。
【００４０】
ロールデータベース２２０に示されたロールは、階層的なロールとすることができる。
したがって、いくつかのロールは、他のロールおよびそれらロールに関連付けられる権限を組み入れることができる。
たとえば、ＬＤＡＰデータベースは、ツリー構造でユーザおよび／またはロールを含み、したがって、ロールの階層構造が、ＬＤＡＰデータベースから取得可能な場合がある。
循環依存関係の有無についてロールデータベース２２０をチェックすることができる。
ロールデータベース２２０は、同じロールから開始して同じロールで終了する依存関係の経路が存在する場合に循環依存関係を含む場合がある。
既知の方法に従い非循環有向グラフ（ＤＡＧ）としてデータベース２２０をモデル化することにより、循環依存関係を検出して解決することができる。
【００４１】
本発明の実施形態は、ＲＢＡＣ実施態様が準拠しなければならないセキュリティポリシールールを指定することをユーザ（たとえば、管理者または組織）に許可することができる。
たとえば、セキュリティポリシーは、２つの特定の権限またはロールにユーザを関連付けることができないことを要求する場合がある。
本発明の実施形態は、構成データベースが作成される時にルールが準拠されるようにチェックを行うことができる。
【００４２】
本発明のさらなる実施形態は、ロールをアクティブまたは非アクティブにするための能力も含むことができる。
たとえば、本発明の実施形態は、どのロールがアクティブであるのか、および／または、どのロールが非アクティブであるのかを示すアクティブロールデータベースを含むことができる。
或いは、データベースが、各ロールについて、そのロールがアクティブであるのか、それとも非アクティブであるのかを示すアクティブ／非アクティブフラグを含むように、データベース（たとえば、ロール／ユーザデータベース２４０等）を変更することもできる。
非アクティブロールは、その非アクティブロールに関連付けられるユーザに、関連付けられる権限を与えない。
ロールは、管理者の手動入力に従ってアクティブまたは非アクティブにすることができる。
これに加えてまたはこれに代えて、ロールは、セキュリティポリシーに従ってアクティブまたは非アクティブにすることもできる。
たとえば、一定の期間のみロールがアクティブになるように要求することができる。
たとえば、セキュリティ管理者が、毎月１回、セキュリティ報告を生成および／または収集する必要がある場合、セキュリティ管理者にそうすることを許可するロールは、毎月１回、必要とされる期間の間のみアクティブになり、それ以外の時間は非アクティブになる必要がある。
適切なロールが適宜アクティブおよび／または非アクティブにされるように、このようなセキュリティポリシーを本発明の実施形態内に含めることができる。
したがって、セキュリティポリシーが一旦機能すると、管理者による管理は必要とされない。
【００４３】
本発明の一定の実施形態では、ロールを他のロールに一時的または永続的に委任する（delegate）ことができる。
たとえば、第２のロールに関連付けられるユーザが、第１のロールに関連付けられるコマンドを一時的または永続的に実行できるように、第１のロールを第２のロールに委任することができる。
本発明の実施形態は、たとえば、どのロールが委任されているのかを示す委任データベースを含むことができる。
たとえば、一定のロールは委任することができない、一定のロールはそれらロールに委任される他のロールを有することができない、および／または、一定のロールを一定の他のロールに委任することができない等の一連のルールに従ってロールを委任することができる。
【００４４】
図３は、本発明の実施形態に適したデータ処理システム３００の一例を示している。
データ処理システム３００は、データプロセッサ３０２およびメインメモリ（ＲＡＭ等）３０４を含む。
また、データ処理システムは、ハードディスク等の永続ストレージデバイス３０６、並びに／または、ＬＡＮ、ＷＡＮ、および／若しくはインターネット等の外部有線ネットワークおよび／若しくは外部ワイヤレスネットワークと通信するための通信デバイス３０８も含むことができる。
データ処理システム３００は、ディスプレイデバイス３１０、並びに／または、キーボードおよび／若しくはマウス等の入力デバイス３１２も含むことができる。
【００４５】
本発明の実施形態は、ハードウェア、ソフトウェア、またはハードウェアおよびソフトウェアの組み合わせの形態で実現できることが十分理解されよう。
このようないかなるソフトウェアも、揮発性ストレージ若しくは不揮発性ストレージの形態で、または、メモリの形態で、または、光学的若しくは磁気的な可読媒体上に記憶することができる。
不揮発性ストレージは、消去可能であろうとなかろうと、再書き込み可能であろうとなかろうと、たとえばＲＯＭのようなストレージデバイス等である。
メモリは、たとえば、ＲＡＭ、メモリチップ、メモリデバイス、メモリ集積回路等である。
光学的または磁気的な可読媒体は、たとえば、ＣＤ、ＤＶＤ、磁気ディスク、磁気テープ等である。
ストレージデバイスおよびストレージ媒体は、実行されると本発明の実施形態を実施する１つまたは複数のプログラムを記憶するのに適したマシン可読ストレージの実施形態であることが十分理解されよう。
したがって、実施形態は、説明したようなシステムまたは方法を実施するためのコードを含むプログラム、および、このようなプログラムを記憶するマシン可読ストレージを提供する。
またさらに、本発明の実施形態は、有線接続またはワイヤレス接続上を搬送される通信信号等の任意の媒体を介して電子的に伝えることができ、実施形態は、これを適切に包含する。
【００４６】
この明細書（添付するあらゆる特許請求の範囲、要約書、および図面を含む）に開示される機能のすべて、および／または、そのように開示されたあらゆる方法若しくはプロセスのステップのすべては、このような機能および／またはステップの少なくともいくつかが相互に排他的である組み合わせを除いて、任意の組み合わせで組み合わせることができる。
【００４７】
この明細書（添付するあらゆる特許請求の範囲、要約書、および図面を含む）に開示される各機能は、明示的に別段の定めをした場合を除き、同じ目的、等価な目的、または類似の目的を果たす代替的な機能に置き換えることができる。
したがって、明示的に別段の定めをした場合を除き、開示された各機能は、一般的な一連の等価な機能または類似の機能の単なる一例にすぎない。
【００４８】
本発明は、上記のいかなる実施形態の詳細にも制限されるものではない。
本発明は、この明細書（添付するあらゆる特許請求の範囲、要約書、および図面を含む）に開示される機能の新規ないずれのものにも若しくは新規ないずれの組み合わせにもおよび、或いは、そのように開示されるあらゆる方法またはプロセスのステップの新規ないずれのものにも若しくは新規ないずれの組み合わせにも及ぶ。
特許請求の範囲は、上記実施形態のみをカバーするように解釈されるべきではなく、特許請求の範囲の範囲内に含まれるあらゆる実施形態も含むように解釈されるべきである。
【図面の簡単な説明】
【００４９】
【図１】ＲＢＡＣ構成データ構造の一例を示す図である。
【図２】本発明の実施形態による構成データ構造の作成の一例を示す図である。
【図３】本発明の実施形態と共に使用するのに適したデータ処理システムの一例を示す図である。
【符号の説明】
【００５０】
１０２・・・ロールデータベース，
１０４・・・権限データベース，
１０６・・・ロール／権限データベース，
１０８・・・ロール／ユーザデータベース，
２０２・・・権限／コマンドデータベース，
２０４・・・コマンドリスト，
２０６・・・権限，
２１０・・・権限データベース，
２１２・・・ロール／記述データベース，
２１４・・・デフォルトロール，
２１６・・・手動追加ロール，
２１８，２４２・・・既存のデータベース，
２２０・・・ロールデータベース，
２３０・・・ロール／権限データベース，
２３２・・・鍵データベース，
２４０・・・ロール／ユーザデータベース，
２４４・・・管理者入力，
【図１】
2008287713.tif 000008
【図２】
2008287713.tif 000009
【図３】
2008287713.tif 000010
【外国語明細書】
DATA PROCESSING SYSTEM AND METHOD
Background to the Invention
Role-based access control (RBAC) may be used within data processing systems to allow users to, for example, execute only certain commands.  An organization may use RBAC within its data processing systems to meet certain industry standards.  For example, within the US, an organization may use RBAC as part of compliance with the Sarbanes-Oxley (SOX) Act of 2002, or the Health Insurance Portability and Accountability Act (HIPAA).  The National Institute of Standards and Technology (NIST) provides RBAC standards.
To implement RBAC, an organization may need to discontinue use of existing security products.  Furthermore, there may be a large number of users and/or roles to manage.  For example, a case study on a European bank revealed that more than 1300 roles were required for creation and management, requiring significant manpower.  Therefore, configuring RBAC may be a time-consuming and expensive process.
It is an object of embodiments of the invention to at least mitigate one or more of the problems of the prior art.
Brief Description of the Drawings
Embodiments of the invention will now be described by way of example only, with reference to the accompanying drawings, in which:
Figure 1 shows an example of RBAC configuration data structures;
Figure 2 shows an example of creating configuration data structures according to embodiments of the invention; and
Figure 3 shows an example of a data processing system suitable for use with embodiments of the invention.
Detailed Description of Embodiments of the Invention
Embodiments of the invention make use of existing security products to at least partially configure RBAC on one or more data processing systems, or to contribute towards the configuration of RBAC.  For example, embodiments of the invention make use of databases or data structures that configure existing security products and/or provide the products with a security policy to implement.  Existing security products include, for example, Network Information Service (NIS/NIS+) from Sun Microsystems, Lightweight Directory Access Control (LDAP) or password security implemented by operating systems such as, for example, Unix and Unix-based operating systems such as, for example, HP-UX.
Figure 1 shows an example of configuration data structures (databases) that are used to configure RBAC 100 on the example operating system HP-UX.  The data structures include a roles database that lists the roles that are available in the RBAC environment and that can be assigned to one or more users.  For example, a role may be assigned to a user such that the user has the role of a network administrator.  The data structures also include an authorizations database 104.  The authorizations database 104 comprises a list of authorizations.  An authorization may be assigned to a role to indicate that a role is authorized to perform certain actions associated with that authorization.
The data structures also include a role/authorizations database 106.  The role/authorizations database 106 contains a list of roles and the authorizations associated with them.  A role may be associated with one or more authorizations.
The data structures also include a role/user database 108.  The role/user database contains a list of users and their associated roles.  A user may be associated with one or more roles.
The data structures also include a cmd_priv database 110.  The cmd_priv database contains a list of authorizations and the commands associated with the authorizations.
Thus, commands may be associated with authorizations, authorizations may be associated with roles, and roles may be associated with users.  In this way, commands may be associated with users, and a user using a data processing system on which RBAC is implemented may only be able to execute associated commands.  The user may not be able to execute other commands.  These restrictions are imposed on the data processing system by software that implements RBAC such as, for example, security software supplied with or for the HP-UX operating system or other operating systems.
Figure 2 shows an example of an overview 200 of the creation of the above configuration data structures.  The authorization/commands database (cmd_priv) 200 is created as follows.  A list of software packages installed or available on the data processing system is obtained.  This may be provided, for example, by a system administrator or by a system command.  An example of a system command provided by the HP-UX operating system is swlist, although other operating systems may provide commands with similar functionality.  The software packages list is used (or, alternatively, other commands may be used) to obtain a list of the commands associated with the products.  For example, swlist can be used for this purpose.  Where, for example, a software package "LVM" is installed or available on a data processing system, the following command may be used:
swlist -l file LVM | grep "/usr/sbin" | awk '{print $0}'
This may produce, for example, the following output:
LVM.LVM_RUN:    /usr/sbin
LVM.LVM_RUN:    /usr/sbin/lvchange
LVM.LVM_RUN:    /usr/sbin/lvmchk
LVM.LVM_RUN:    /usr/sbin/lvmmigrate
LVM.LVM_RUN:    /usr/sbin/lvcreate
LVM.LVM_RUN:    /usr/sbin/lvdisplay
The commands lvchange, lvmchk, lvmmigrate, lvcreate and lvdisplay are the commands associated with the "LVM" software package.
Authorizations 206 are also created for the software package.  These are created as org.XXX.admin, where XXX is the name of a software package or an identifier associated therewith.  For example, the authorization org.lvm.admin is created for the LVM software package.  Other forms of authorizations may also be possible.
The authorization/commands database 202 is created such that it contains or indicates a list of authorizations 206 and their associated commands 204.  For example, for the LVM software package, a portion of the database 202 may be created as indicated below:
Authorization
Commands
org.lvm.admin
/usr/sbin/lvchange, /usr/sbin/lvmchk, usr/sbin/lvmmigrate, /usr/sbin/lvcreate, /usr/sbin/lvdisplay
The database 202 may be created with or without the "Authorization" and "Commands" column headers as necessary.  The column headers may, for example, be implemented in comments to improve human readability of the database.
Referring back to figure 2, an authorizations database 210 is also created containing a list of the authorizations from the authorization/commands database 202.
A role/description database 212 is also created such that it contains a list of roles and their descriptions.  The role/description database 212 may include default roles 214.  For example, an operating system may provide or indicate default roles.  For example, on the HP-UX operating system, the default roles may include network_admin, fs_admin and backup_admin, with the descriptions "Network Administrator", "File System Administrator" and "Backup Administrator" respectively.  These roles and descriptions may be added to the role/description database 212.  The database 212 may also include manually added roles 216 that are added, for example, by a system administrator or data processing system security administrator.
The role/description database may also include, for example, roles obtained from existing databases 218.  For example, where a data processing system includes security policies implemented using NIS/NIS+, LDAP or password security software, then this may be implemented as indicated in one or more databases associated with the security software.  For example, where password security is used on the HP-UX operating system, the /etc/group file may be processed to determine the groups that are present on the data processing system.  That is, each user may be a member of one or more groups, and the /etc/group file provides an ID of the groups.  The groups may be identified by a group ID (GID) that may be, for example, an integer value.  The integer value may be used as a role name in embodiments of the invention or may be changed to an alternative form (for example text).
Where LDAP is used on a data processing system, a LDAP database (or LDAP schema) indicates to the LDAP software what security policies should be implemented.  For example, a LDAP database may indicate a plurality of users and the groups that they belong to.  The group IDs of the groups can be extracted from the LDAP database, for example from the CN fields in the database, and added to the role/description database 212.  The description of the groups is added by, for example, an administrator or is also extracted from the LDAP database.
An organization may also possess an employee database that indicates the roles that a user may have and may also include the roles' descriptions.  This employee database may comprise an existing database 218 from which roles and/or descriptions can be obtained and added to the role/description database 212.
An example of a role/description database 212 created according to embodiments of the invention is provided below, where the role "lvm_admin" is manually added with the description "LVM Administrator".
Role
Description
network_admin
Network Administrator
fs_admin
File System Administrator
backup_admin
Backup Administrator
lvm_admin
LVM Adminsitrator
Referring back to figure 2, a roles database 220 is created containing a list of the roles from the role/description database 212.
A role/authorizations database 230 is created from the authorization/commands database 202 and the role/description database 212, such that it indicates roles and the authorizations associated with the roles.  This association between roles and authorizations may not be obtainable from the databases 202 and 212.  Thus, a key database 232 is provided such that the association can be derived.  For example, a key database may be provided such that it contains the following information:
Authorization key
Role key
lvm
LVM Admin
The key database 232 is used to find an authorization that contains text in the "authorization" column of the authorization/commands database 202 (or, alternatively, the authorizations database 210).  An association is then made between this authorization and a role in the role/description database 212 that contains text in the "role key" column in the description.  For example, the "org.lvm.admin" authorization in the authorization/commands database 202 has contains the text "lvm".  Therefore, a search of the descriptions in the role/description database 212 is made for a description containing the text "LVM Admin".  The description "LVM Administrator" is found.  This is the description of the role "lvm_admin".  Therefore, an association is made between the role "lvm_admin" and the authorization "org.lvm.admin".
The key database is pre-created, that is, obtained or created by an administrator who is, for example, a security administrator.  The key database can be updated to include further authorization keys and associated role keys that map associations between authorizations and roles.
The role/authorizations database 230 is updated such that it contains a list of roles and their associated authorizations.  An authorization may appear for one or more roles, and/or a role may be associated with one or more authorizations.  For example, the role/authorizations database may contain the following information:
Role
Authorizations
lvm_admin
org.lvm.admin
Therefore, a user that has the role "lvm_admin" may execute commands associated with the "org.lvm.admin" authorization.
Referring back to figure 2, a role/user database 240 is also created such that it contains a list of roles and the users associated with the roles.  The role/user database 240 may be created, for example, from one or more existing databases.  For example, a list of users may be obtained from /etc/passwd, a LDAP database, a NIS/NIS+ database, an employee database and/or any other suitable database such as, for example, a database maintained by an operating system that indicates users that may use the data processing system.
For example, the /etc/password file on a data processing system that includes, for example, the HP-UX operating system may contain the following information:
kiran:*:104:1::/home/vusr1:/sbin/sh
chandra:*:105:1::/home/vusr2:/sbin/sh
The users "kiran" and "chandra" can be determined from this /etc/passwd file.
Where a LDAP database exists, the users may be retrievable from the LDAP databases within, for example, the MemberUid and/or MemberName fields of the LDAP database.
A list of roles may be obtained from the role/description database 212 (or, alternatively, from the roles database 220).  Users may be given roles according to data within existing databases and/or administrator input 244 (for example, an administrator may manually assign roles to users).  A user may be associated with one or more roles, and/or a role may be associated with one or more users.  The roles associated with the users are detailed in the role/user database 240.  For example, the database 240 may contain the following information:
Role
Users
lvm_admin
kiran, chandra
Thus, the users "kiran" and "chandra" have the role of "lvm_admin", meaning that the users can execute the associated commands.  According to the databases indicated above, these commands are /usr/sbin/lvchange, /usr/sbin/lvmchk, usr/sbin/lvmmigrate, /usr/sbin/lvcreate and /usr/sbin/lvdisplay as provided by the authorization org.lvm.admin.
The roles indicated in the roles database 220 may be hierarchical roles.  Therefore, some roles may incorporate other roles, and the authorizations associated therewith.  A LDAP database, for example, contains users and/or roles in a tree structure and therefore a hierarchical structure of roles may be obtainable from the LDAP database.  The roles database 220 may be checked for cyclic dependencies.  The roles database 220 may contain a cyclic dependency if there is a dependency path that starts and ends at the same role.  Cyclic dependencies may be detected and may be resolved by modelling the database 220 as a directed acyclic graph (DAG) according to known methods.
Embodiments of the invention may allow a user (for example an administrator or an organization) to specify security policy rules that the RBAC implementation must adhere to.  For example, the security policy may require that a user cannot be associated with two specific authorizations or roles.  Embodiments of the invention may perform checks when the configuration databases are being created such that the rules are adhered to.
Further embodiments of the invention may also include the capability for making roles active and inactive.  For example, embodiments of the invention may include an active roles database which indicates which roles are active and/or which roles are inactive.  Alternatively, a database (such as, for example, the role/user database 240) may be modified such that it includes an active/inactive flag for each role that indicates whether that role is active or inactive.  An inactive role does not confer the associated authorizations onto the users associated with the inactive role.  Roles can be made active or inactive according to the manual input of an administrator.  Additionally or alternatively, roles may be made active or inactive according to a security policy.  For example, a role may only be required to be active for a certain period of time.  For example, where a security administrator needs to generate and/or collect security reports once every month, the role that allows the security administrator to do so need only be active once every month for the period of time that is required, and inactive at other times.  Such security policies may be included within embodiments of the invention such that the appropriate roles are made active and/or inactive as appropriate.  Therefore, there is no management required by administrators once the security policies are in place.
In certain embodiments of the invention, roles may be temporarily or permanently delegated to other roles.  For example, a first role may be delegated to a second role such that users associated with the second role may temporarily or permanently be able to execute commands associated with the first role.  Embodiments of the invention may comprise, for example, a delegation database that indicates which roles have been delegated.  Roles may be delegated according to a set of rules such as, for example, certain roles may not be delegated, certain roles cannot have other roles delegated to them and/or certain roles cannot be delegated to certain other roles.
Figure 3 shows an example of a data processing system 300 suitable for embodiments of the invention.  The data processing system 300 includes a data processor 302 and main memory (such as RAM) 304.  The data processing system may also include a permanent storage device 306, such as a hard disk, and/or a communications device 308 for communicating with an external wired and/or wireless network such as a LAN, WAN and/or internet.  The data processing system 300 may also include a display device 310 and/or an input device 312 such as a keyboard and/or mouse.
It will be appreciated that embodiments of the present invention can be realised in the form of hardware, software or a combination of hardware and software.  Any such software may be stored in the form of volatile or non-volatile storage such as, for example, a storage device like a ROM, whether erasable or rewritable or not, or in the form of memory such as, for example, RAM, memory chips, device or integrated circuits or on an optically or magnetically readable medium such as, for example, a CD, DVD, magnetic disk or magnetic tape.  It will be appreciated that the storage devices and storage media are embodiments of machine-readable storage that are suitable for storing a program or programs that, when executed, implement embodiments of the present invention.  Accordingly, embodiments provide a program comprising code for implementing a system or method as describedand a machine readable storage storing such a program.  Still further, embodiments of the present invention may be conveyed electronically via any medium such as a communication signal carried over a wired or wireless connection and embodiments suitably encompass the same.
All of the features disclosed in this specification (including any accompanying claims, abstract and drawings), and/or all of the steps of any method or process so disclosed, may be combined in any combination, except combinations where at least some of such features and/or steps are mutually exclusive.
Each feature disclosed in this specification (including any accompanying claims, abstract and drawings), may be replaced by alternative features serving the same, equivalent or similar purpose, unless expressly stated otherwise.  Thus, unless expressly stated otherwise, each feature disclosed is one example only of a generic series of equivalent or similar features.
The invention is not restricted to the details of any foregoing embodiments.  The invention extends to any novel one, or any novel combination, of the features disclosed in this specification (including any accompanying claims, abstract and drawings), or to any novel one, or any novel combination, of the steps of any method or process so disclosed.  The claims should not be construed to cover merely the foregoing embodiments, but also any embodiments which fall within the scope of the claims.
CLAIMS
1.    A method of configuring role based access control, comprising:
associating roles with authorizations using (i) a first list that indicates the authorizations; (ii) a second list that indicates roles and their descriptions; and (iii) a key data structure that maps the descriptions to the roles; and
creating a role/authorizations configuration data structure that indicates the roles and their associated authorizations.
2.    A method as claimed in claim 1, wherein the first list comprises a database that indicates the authorizations and their associated commands.
3.    A method as claimed in claim 2, comprising creating the first list by creating the authorizations from a list of software packages; and obtaining commands associated with the software packages.
4.    A method as claimed in claim 2, wherein the first list comprises an authorization/commands configuration data structure.
5.    A method as claimed in claim 1, comprising creating an authorizations configuration data structure containing the authorizations indicated in the first list.
6.    A method as claimed in claim 1, comprising creating the second list from at least one of default roles and descriptions, at least one database indicating roles and descriptions, and manually created roles and descriptions.
7.    A method as claimed in claim 1, wherein the second list comprises a role/description configuration data structure.
8.    A method as claimed in claim 1, comprising creating a role/user configuration database from the second list and a third list that indicates users.
9.    A method as claimed in claim 1, comprising creating a roles configuration data structure from at least one of a role list that indicates roles and manually created roles.
10.    A method as claimed in claim 9, comprising detecting cyclic dependencies in the roles configuration data structure.
11.    A data processing system configured using a method as claimed in claim 1.
12.    A computer program for configuring role based access control, comprising:
code for associating roles with authorizations using (i) a first list that indicates the authorizations; (ii) a second list that indicates roles and their descriptions; and (iii) a key database that maps the descriptions to the roles; and
code for creating a role/authorizations configuration data structure that indicates the roles and their associated authorizations.
14.    A computer program as claimed in claim 12, wherein the first list comprises a database that indicates the authorizations and their associated commands, and the computer program comprises code for creating the first list by creating the authorizations from a list of software packages; and obtaining commands associated with the software packages.
15.    A computer program as claimed in claim 12, comprising code for creating an authorizations configuration data structure containing the authorizations indicated in the first list.
16.    A computer program as claimed in claim 12, comprising code for creating the second list from at least one of default roles and descriptions, at least one database indicating roles and descriptions, and manually created roles and descriptions.
17.    A computer program as claimed in claim 12, comprising code for creating a role/user configuration database from the second list and a third list that indicates users.
18.    A computer program as claimed in claim 12, comprising code for creating a roles configuration data structure from at least one of a role list that indicates roles and manually created roles.
19.    A computer program as claimed in claim 18, comprising code for detecting cyclic dependencies in the roles configuration data structure.
20.    Computer  readable  storage  storing  a  computer  program as claimed in claim 12.
Data Processing System and Method
A method of configuring role based access control, comprising associating roles with authorizations using (i) a first list that indicates the authorizations, (ii) a second list that indicates roles and their descriptions, and (iii) a key database that maps the descriptions to the roles; and creating a role/authorizations configuration data structure that indicates the roles and their associated authorizations.
(Figure 2)
2008287713.tif 000011
2008287713.tif 000012
2008287713.tif 000013