Sun GlassFish Enterprise Server v3 管理ガイド

第 12 章 ユーザーセキュリティーの管理

この章では、asadmin コマンド行ユーティリティーを使用して、Sun GlassFishTM Enterprise Server 環境でユーザーセキュリティーを管理する手順について説明します。Enterprise Server は、レルム、ユーザー、およびグループに対して、認証と承認のポリシーを適用します。この章の説明では、認証、承認、証明書などのセキュリティー機能について理解していることを前提とします。これらのセキュリティー機能については、第 11 章システムセキュリティーの管理を参照してください。

ここでは、次のテーマを取り上げます。

これらのタスクを 管理コンソール を使用して実行する場合の手順は、管理コンソール のオンラインヘルプで説明します。

認証レルムの管理

「認証レルム」は、セキュリティーポリシードメインまたはセキュリティードメインとも呼ばれ、Enterprise Server によって共通のセキュリティーポリシーが定義および適用される範囲を表します。Enterprise Server は、ファイル、証明書、および管理のレルムで事前設定されます。これらに加え、LDAP、JDBC、ダイジェスト、Solaris、またはカスタムのレルムを設定できます。アプリケーションは使用するレルムを配備記述子で指定できます。アプリケーションでレルムが指定されていない場合、Enterprise Server はデフォルトのレルム (file) を使用します。

ファイルレルム

Enterprise Server は、ユーザー資格を keyfile という名前のファイルにローカルに格納します。ファイルレルムは、初期状態のデフォルトレルムです。

管理レルム

管理レルムはファイルレルムでもあり、管理者のユーザー資格を admin-keyfile という名前のファイルにローカルに格納します。

証明書レルム

Enterprise Server はユーザー資格を証明書データベースに格納します。証明書レルムを使用する場合、サーバーは HTTPS プロトコルで証明書を使用して Web クライアントを認証します。

LDAP レルム

Enterprise Server は、ユーザー資格を DirectoryServer などの LDAP (Lightweight Directory Access Protocol) サーバーから取得します。LDAP とは、一般のインターネットまたは会社のイントラネットのどちらであっても、ネットワークでの組織、個人、およびファイルやデバイスなどその他のリソースの検出をだれにでもできるようにするプロトコルです。LDAP レルムのユーザーとグループの管理については、LDAP サーバーのドキュメントを参照してください。

JDBC レルム

Enterprise Server はユーザー資格をデータベースから取得します。サーバーは、データベース情報と構成ファイル内の有効な JDBC レルムオプションを使用します。

ダイジェストレルム

ダイジェスト認証は、ユーザー名とパスワードに基づいてユーザーを認証します。ただし、認証はパスワードを暗号化された形式で送信することで実行されます。

Solaris レルム

Enterprise Server はユーザー資格を Solaris オペレーティングシステムから取得します。このレルムは、Solaris 9 および Solaris 10 オペレーティングシステムでサポートされます。Solaris レルムのユーザーおよびグループの管理については、Solaris のドキュメントを参照してください。

カスタムレルム

リレーショナルデータベースや他社のコンポーネントなど、その他のリポジトリを作成してユーザー資格に使用できます。カスタムレルムの詳細は、管理コンソール のオンラインヘルプを参照してください。カスタムレルムを作成する手順については、『Sun GlassFish Enterprise Server v3 Application Development Guide』「Creating a Custom Realm」を参照してください。

Enterprise Server の認証サービスは、複数のレルムでユーザーを管理できます。

次のタスクと情報を使用して、認証レルムを管理します。

Procedure認証レルムを作成する

認証レルムを作成するには、リモートモードで create-auth-realm サブコマンドを使用します。

  1. サーバーが実行されていることを確認します。

    リモートサブコマンドには、実行中のサーバーが必要です。

  2. create-auth-realm(1) サブコマンドを使用して、レルムを作成します。

    このサブコマンドのプロパティーについては、このマニュアルページに記載されています。


例 12–1 レルムの作成

この例では、db という名前のレルムを作成します。


asadmin> create-auth-realm --classname com.iplanet.ias.security.
auth.realm.DB.Database --property defaultuser=admin:Password=admin db
Command create-auth-realm executed successfully.

参照

コマンド行に asadmin help create-auth-realm と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。

カスタムレルムの作成については、『Sun GlassFish Enterprise Server v3 Application Development Guide』「Creating a Custom Realm」を参照してください。

Procedure認証レルムを一覧表示する

既存の認証レルムを一覧表示するには、リモートモードで list-auth-realms サブコマンドを使用します。

  1. サーバーが実行されていることを確認します。

    リモートサブコマンドには、実行中のサーバーが必要です。

  2. list-auth-realms(1) サブコマンドを使用して、レルムを一覧表示します。


例 12–2 レルムの一覧表示

この例では、localhost 上の認証レルムを一覧表示します。


asadmin> list-auth-realms
db
certificate
file
admin-realm
Command list-auth-realms executed successfully.

参照

コマンド行に asadmin help list-auth-realms と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。

Procedure認証レルムを更新する

set サブコマンドを使用して、既存の認証レルムを変更します。


注 –

カスタムレルムでは、サーバーの再起動は必要ありません。


  1. list-auth-realms(1) サブコマンドを使用して、レルムを一覧表示します。

  2. set(1) サブコマンドを使用して、指定したスレッドプールの値を変更します。

    スレッドプールはドット表記名で識別されます。

  3. 変更内容を適用するために、Enterprise Server を再起動します。

    「ドメインの再起動」を参照してください。

Procedure認証レルムを削除する

既存の認証レルムを削除するには、リモートモードで delete-auth-realm サブコマンドを使用します。

  1. サーバーが実行されていることを確認します。

    リモートサブコマンドには、実行中のサーバーが必要です。

  2. list-auth-realms(1) サブコマンドを使用して、レルムを一覧表示します。

  3. 必要に応じて、レルムを削除することをユーザーに通知します。

  4. delete-auth-realm(1) サブコマンドを使用して、レルムを削除します。

  5. 変更内容を適用するために、Enterprise Server を再起動します。「ドメインの再起動」を参照してください。


例 12–3 レルムの削除

この例では、db という名前の認証レルムを削除します。


asadmin> delete-auth-realm db
Command delete-auth-realm executed successfully.

参照

コマンド行に asadmin help delete-auth-realm と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。

ProcedureJDBC レルムまたはダイジェスト認証レルムを設定する

Enterprise Server では、接続プールの代わりに JDBC レルムにユーザー資格 (ユーザー名とパスワード) を指定できます。接続プールの代わりに jdbc タイプのレルムを使用すると、ほかのアプリケーションがユーザー資格のデータベース表を参照するのを防止できます。


注 –

JDBC レルムでは、デフォルトでは平文によるパスワードの保存はサポートされません。通常の状況では、パスワードを平文で保存しないでください。


  1. レルムのユーザー資格を格納するデータベース表を作成します。

    データベース表の作成方法は、使用しているデータベースによって異なります。

  2. 作成したデータベース表にユーザー資格を追加します。

    データベース表にユーザー資格を追加する方法は、使用しているデータベースによって異なります。

  3. データベースの JDBC 接続プールを作成します。

    「JDBC 接続プールを作成する」を参照してください。

  4. データベースの JDBC リソースを作成します。

    「JDBC リソースを作成する」

  5. レルムを作成します。

    手順については、「認証レルムを作成する」を参照してください。


    注 –

    JAAS コンテキストは、ダイジェスト認証では jdbcDigestRealm に、その他の認証タイプでは jdbcRealm になります。


  6. 配備記述子を変更して、jdbc レルムを指定します。

    アプリケーションに関連付けられている配備記述子を変更します。

    • Enterprise Archive (EAR) ファイルのエンタープライズアプリケーションの場合は、sun-application.xml ファイルを変更します。

    • Web Application Archive (WAR) ファイルの Web アプリケーションの場合は、web.xml ファイルを変更します。

    • EJB JAR ファイルのエンタープライズ Bean の場合は、sun-ejb-jar.xml ファイルを変更します。

    レルムの指定方法については、『Sun GlassFish Enterprise Server v3 Application Development Guide』「How to Configure a Realm」を参照してください。

  7. レルム内のユーザーにセキュリティーロールを割り当てます。

    ユーザーにセキュリティーロールを割り当てるには、変更した配備記述子に security-role-mapping 要素を追加します。

  8. データベースが動作していることを確認します。

    必要に応じて、「データベースを起動する」を参照してください。

  9. 認証を適用するには、サーバーを再起動します。

    「ドメインの再起動」を参照してください。


例 12–4 セキュリティーロールの割り当て

この例では、セキュリティーロール Employee をユーザー Calvin に割り当てる security-role-mapping 要素を示します。

<security-role-mapping>
    <role-name>Employee</role-name>
    <principal-name>Calvin</principal-name>
  </security-role-mapping>

ファイルユーザーの管理

「ユーザー」は、Enterprise Server で定義される個人またはアプリケーションプログラムの ID です。認証されたユーザーを「主体」と呼ぶ場合もあります。

管理者には、ユーザーを Enterprise Server 環境に統合し、これらのユーザーの資格を安全に確立して、ユーザーが使用権限を持つアプリケーションおよびサービスにアクセスできるようにする責任があります。

次のタスクを使用してユーザーを管理します。

Procedureファイルユーザーを作成する

keyfile に新しいエントリを追加し、新規ユーザーを作成するには、リモートモードで create-file-user サブコマンドを使用します。エントリにはユーザー名、パスワード、およびユーザーのグループが含まれます。グループ名をコロン (:) で区切ることで、複数のグループを指定できます。

新しい file レルムユーザーの作成は動的なイベントであり、サーバーの再起動は必要ありません。

  1. サーバーが実行されていることを確認します。

    リモートサブコマンドには、実行中のサーバーが必要です。

  2. ユーザーを特定のグループに所属させる場合は、list-file-groups(1) サブコマンドを使用して現在のグループを表示します。

  3. create-file-user(1) サブコマンドを使用して、ファイルユーザーを作成します。


例 12–5 ユーザーの作成

この例では、デフォルトレルムの fileJennifer というユーザーを作成します。グループは指定しません。


asadmin> create-file-user --user admin 
--passwordfile=c:\tmp\asadminpassword.txt Jennifer
Command create-file-user executed successfully.

参照

コマンド行に asadmin help create-file-user と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。

Procedureファイルユーザーを一覧表示する

keyfile 内のユーザーを一覧表示するには、リモートモードで list-file-users サブコマンドを使用します。

  1. サーバーが実行されていることを確認します。

    リモートサブコマンドには、実行中のサーバーが必要です。

  2. list-file-users(1) サブコマンドを使用して、ユーザーを一覧表示します。


例 12–6 ファイルユーザーの一覧表示

この例では、デフォルトの file レルムファイルのファイルユーザーを一覧表示します。


asadmin> list-file-users
Jennifer
Command list-file-users executed successfully.

参照

コマンド行に asadmin help list-file-users と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。

Procedureファイルグループを一覧表示する

「グループ」は、肩書きや顧客のプロファイルなどの共通の特性で分類されたユーザーのカテゴリです。たとえば、E コマースアプリケーションのユーザーは customer グループに属し、お得意様は preferred グループにも属します。ユーザーをグループに分類すると、大量のユーザーによるアクセスを容易に制御できます。グループはサーバーおよびレルム全体で定義されます。ユーザーは複数のユーザーグループに関連付けることができます。

ロールはアプリケーション内での役割を定義するのに対し、グループはある方法で関連付けられているユーザーの集まりに過ぎません。この点で、グループとロールは異なります。たとえば、人事アプリケーションで、full-timepart-time、および on-leave といったグループがあるとします。これらのグループのユーザーは、すべて社員 (employee ロール) です。これに加え、各ユーザーには追加の雇用レベルを定義する各自の役職が指定されます。

ファイルユーザーのグループを一覧表示するには、リモートモードで list-file-groups サブコマンドを使用します。--name オプションを指定しない場合は、ファイルグループがすべて表示されます。

  1. サーバーが実行されていることを確認します。

    リモートサブコマンドには、実行中のサーバーが必要です。

  2. list-file-groups(1) サブコマンドを使用して、ファイルグループを一覧表示します。


例 12–7 ユーザーのグループの一覧表示

この例では、ユーザー joesmith のグループを一覧表示します。


asadmin> list-file-groups --name joesmith
staff
manager
Command list-file-groups executed successfully

Procedureファイルユーザーを更新する

指定したユーザーの keyfile の情報を変更するには、リモートモードで update-file-user サブコマンドを使用します。

  1. サーバーが実行されていることを確認します。

    リモートサブコマンドには、実行中のサーバーが必要です。

  2. update-file-user(1) サブコマンドを使用して、ユーザー情報を更新します。

  3. 変更内容を適用するために、Enterprise Server を再起動します。

    「ドメインの再起動」を参照してください。


例 12–8 ユーザーの更新

次のサブコマンドは、ユーザー Jennifer のグループを更新します。


asadmin> update-file-user --passwordfile c:\tmp\asadminpassword.txt --groups 
staff:manager:engineer Jennifer
Command update-file-user executed successfully.

参照

コマンド行に asadmin help update-file-user と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。

Procedureファイルユーザーを削除する

指定したユーザーのエントリを keyfile から削除するには、リモートモードで delete-file-user サブコマンドを使用します。自分自身を削除することはできません。つまり、ログインしているユーザーを、そのセッション中に削除することはできません。

  1. サーバーが実行されていることを確認します。

    リモートサブコマンドには、実行中のサーバーが必要です。

  2. list-file-users(1) サブコマンドを使用して、ユーザーを一覧表示します。

  3. delete-file-user(1) サブコマンドを使用して、ユーザーを削除します。


例 12–9 ユーザーの削除

この例では、ユーザー Jennifer をデフォルトの file レルムから削除します。


asadmin> delete-file-user Jennifer
Command delete-file-user executed successfully.

参照

コマンド行に asadmin help delete-file-user と入力して、このサブコマンドの完全な構文とオプションを確認することもできます。