WebLogic Scripting Tool ガイド

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

既存ドメインのコンフィグレーション

以下の節では、WLST を使用した既存ドメインの更新について説明します。

 


WLST オンラインを使用した既存ドメインの更新

WLST オンラインではアクティブなドメインと対話が行なわれるため、ドメインへのオンラインの変更はすべて、変更管理プロセスによって制御されます。このプロセスは、データベース トランザクションと少し似ています。コンフィグレーションの変更や変更の管理の詳細については、『ドメインのコンフィグレーションについて』の「コンフィグレーションの変更管理のプロセス」を参照してください。

表 6-1 に、WLST オンラインを使用した既存ドメインの更新手順を示します。

表 6-1 既存ドメインの更新手順 (オンライン) 
手順
使用するコマンド
詳細については、以下を参照
  1. 編集 MBean 階層にアクセスする
edit()
このコマンドによって、編集可能な DomainMBean である編集 MBean 階層のルートに WLST が配置される。
  1. 現在のコンフィグレーションでロックを取得する
  2. コンフィグレーションの変更が進行中であることを示すため、WLST コマンド プロンプトの最後に感嘆符 (!) が表示される。

startEdit([waitTimeInMillis], [timeoutInMillis], [exclusive])
  1. ドメインを修正する
参照コマンドおよびオンライン編集コマンド
  1. 編集を検証する (省略可能)
validate()
  1. 変更を保存する
save()
  1. ドメイン内のすべてのサーバ上で実行中のコンフィグレーション MBean に変更を配布する
activate([timeout], [block])
  1. コンフィグレーションでのロックを解放する
stopEdit([defaultAnswer])
  1. MBean 属性に加えた変更がサーバの再起動を必要とするかどうかを判断する (省略可能)
isRestartRequired([attributeName])

コード リスト 6-1 の WLST オンライン スクリプトは、WLST を管理サーバに接続し、管理対象サーバを作成する編集セッションを開始してから変更を保存してアクティブ化します。さらに、別の編集セッションを開始してから起動クラスを作成し、新しく作成されたサーバにそれを対象指定します。

このスクリプトを実行する前に、WebLogic Server を起動します。「WLST の呼び出し」を参照してください。

コード リスト 6-1 管理対象サーバの作成
connect("username","password")
edit()
startEdit()
svr = cmo.createServer("managedServer")
svr.setListenPort(8001)
svr.setListenAddress("my-address")
save()
activate(block="true")
startEdit()
sc = cmo.createStartupClass("my-startupClass")
sc.setClassName("com.bea.foo.bar")
sc.setArguments("foo bar")
# サーバ MBean を取得して対象指定する
tBean = getMBean("Servers/managedServer")
if tBean != None:
    print "Found our target"
    sc.addTarget(tBean)
save()
activate(block="true")
disconnect()
exit()

コンフィグレーションの変更の追跡

WLST によって開始されたすべての変更について、showChanges コマンドを使用すると、編集セッションの開始以降、現在のコンフィグレーショに対して行ったすべての変更 (サーバによって暗黙的に実行されたすべての MBean オペレーションを含む) を表示できます。コード リスト 6-2 を参照してください。

このスクリプトを実行する前に、WebLogic Server を起動します。「WLST の呼び出し」を参照してください。

コード リスト 6-2 変更の表示
wls:/offline> connect('username','password')
wls:/mydomain/serverConfig> edit()
wls:/mydomain/edit> startEdit()
Starting an edit session ...
wls:/mydomain/edit !> cmo.createServer('managed2')
[MBeanServerInvocationHandler]mydomain:Name=managed2,Type=Server
wls:/mydomain/edit !> cd('Servers/managed2')
wls:/mydomain/edit/Servers/managed2 !> cmo.setListenPort(7702)
wls:/mydomain/edit/Servers/managed2 !> showChanges()
Changes that are in memory and saved to disc but not yet activated are:
MBean Changed           : mydomain:Name=mydomain,Type=Domain
Operation Invoked : add
Attribute Modified : Servers
Attributes Old Value : null
Attributes New Value : managed2
Server Restart Required : false
MBean Changed           : mydomain:Name=managed2,Type=Server
Operation Invoked : modify
Attribute Modified : StagingDirectoryName
Attributes Old Value : null
Attributes New Value : .\managed2\stage
Server Restart Required : true
MBean Changed           : mydomain:Name=managed2,Type=Server
Operation Invoked : modify
Attribute Modified : Name
Attributes Old Value : null
Attributes New Value : managed2
Server Restart Required : true
MBean Changed           : mydomain:Name=managed2,Type=Server
Operation Invoked : modify
Attribute Modified : ListenPort
Attributes Old Value : null
Attributes New Value : 7702
Server Restart Required : false
wls:/mydomain/edit/Servers/managed2 !> save()
wls:/mydomain/edit !> activate()
Started the activation of all your changes.
The edit lock associated with this edit session is released once the activation is successful.
The Activation task for your changes is assigned to the variable 'activationTask'
You can call the getUser() or getStatusByServer() methods on this variable to determine the status of your activation
[MBeanServerInvocationHandler]mydomain:Type=ActivationTask
wls:/mydomain/edit/Servers/managed2>

getActivationTask 関数は、アクティブ化のリクエストに関する情報を提供し、ユーザが現在行っている、または最近行った変更の状態が反映された、最新の ActivationTaskMBean を返します。このインタフェースが提供するメソッドを呼び出すことで、進行中または完了したばかりの最新のアクティブ化タスクに関する情報が取得されます。詳細については、『WebLogic Server MBean リファレンス』の「ActivationTaskMBean」を参照してください。

コード リスト 6-3 の WLST オンライン スクリプトは、管理者として WLST をサーバ インスタンスに接続し、アクティブ化タスクを取得し、そのタスクのユーザとステータスを出力します。また、行われたすべての変更も出力します。

このスクリプトを実行する前に、WebLogic Server を起動します。「WLST の呼び出し」を参照してください。

コード リスト 6-3 アクティブ化タスクのチェック
connect("theAdministrator","weblogic")
at = getActivationTask()
print "The user for this Task "+at.getUser()+" and the state is "+at.getState()
changes = at.getChanges()
for i in changes:
    i.toString()

変更の取り消しまたはキャンセル

WLST には、変更の取り消し、およびキャンセル用に、それぞれ次のコマンドが用意されています。

変更管理用の追加のオペレーションと属性

前の節で説明した標準の変更管理コマンドは、ConfigurationManagerMBean のオペレーションを呼び出す上で便利なコマンドです。ConfigurationManagerMBean には、そうしたオペレーションに加え、編集セッションを記述する属性およびオペレーションがあります。詳細については、『WebLogic Server MBean リファレンス』の「ConfigurationManagerMBean」を参照してください。

この MBean にアクセスするには、WLST の getConfigManager コマンドを使用します。「getConfigManager」を参照してください。

コード リスト 6-4 の WLST オンライン スクリプトは、管理者として WLST をサーバ インスタンスに接続し、現在変更を行っているのが特定のオペレータであるかどうかを確認してから、コンフィグレーションの編集をキャンセルします。このスクリプトはまた、完了したアクティブ化タスクをすべて削除します。

このスクリプトを実行する前に、WebLogic Server を起動します。「WLST の呼び出し」を参照してください。

コード リスト 6-4 コンフィグレーション マネージャの使用
connect("theAdministrator","weblogic")
cmgr = getConfigManager()
user = cmgr.getCurrentEditor()
if user == "operatorSam":
    cmgr.undo()
    cmgr.cancelEdit()
cmgr.purgeCompletedActivationTasks()

 


WLST オフラインを使用した既存ドメインの更新

WLST オフラインを使用して既存のドメインを更新するには、表 6-2 に示す手順を実行します。

警告 : アクティブなドメインのコンフィグレーションを管理する際には WLST オフラインを使用しないことが推奨されます。オフラインによる編集は、実行中のサーバによって無視されるので、WLST オンラインや WebLogic Server Administration Console などの JMX クライアントによって上書きされる場合があります。
表 6-2 既存のドメインを更新する手順 (オフライン)
手順
使用するコマンド
詳細については、以下を参照
  1. 更新する既存のドメインを開く
readDomain(domainDirName)
  1. 現在のドメインを拡張する (省略可能)
addTemplate(templateFileName)
  1. ドメインを修正する (省略可能)
参照コマンドおよび編集コマンド
  1. ドメインを保存する
updateDomain()
  1. ドメインを閉じる
closeDomain()

 


セキュリティ データの管理 (WLST オンライン)

WebLogic Security サービスでは、認証プロバイダはユーザまたはシステム プロセスの身元を証明するソフトウェア コンポーネントです。認証プロバイダでは、ID 情報を記憶したり、転送したり、その情報が必要な場合にシステムのさまざまなコンポーネントで利用できるようにしたりします。

セキュリティ レルムは、さまざまな種類の認証プロパティを使用して異なるユーザおよびグループのセットを管理できます。『WebLogic セキュリティ プロバイダの開発』の「認証プロバイダ」を参照してください。WLST を使用すると、次のタイプの認証プロバイダのオペレーションを呼び出すことができます。

以下の節では、WLST を使用してユーザおよびグループを管理するための基本的なタスクについて説明します。

AuthenticationProvider MBean でサポートされるその他のタスクについては、『WebLogic Server MBean リファレンス』の「AuthenticationProviderMBean」を参照してください。

編集階層にアクセスすべきかどうかの判断

セキュリティ MBean のコンフィグレーションの変更に WLST を使用している場合、編集階層にアクセスして編集セッションを開始する必要があります。たとえば、UserLockoutManagerMBeanLockoutThreshold 属性の値の変更は、編集階層内から行なう必要があります。

セキュリティ プロバイダのオペレーションを呼び出してセキュリティ プロバイダのデータ ストア内のデータを追加、変更、または削除する場合、これらの操作を編集階層内から行なうことはできません。代わりに、これらのコマンドは、serverConfig または domainConfig 階層から呼び出します。たとえば、AuthenticatorMBean MBean の createUser オペレーションは、編集階層から呼び出すことはできません。WLST でこの制限を設けているのは、両立不能な変更が生じないようにするためです。たとえば、編集セッションにはアクティブ化されていない変更が含まれる可能性があり、このアクティブ化されていない変更ではセキュリティ機能が取り除かれ、これによってプロバイダのデータへの変更が無効になります。

ユーザの作成

ユーザを作成するには、UserEditorMBean.createUser メソッドを呼び出します。このメソッドは、セキュリティ レルムの AuthenticationProvider MBean によって拡張されます。詳細については、『WebLogic Server MBean リファレンス』の「createUser」メソッドを参照してください。

このメソッドでは、次の 3 つの入力パラメータが必要です。

username password user-description

このコマンドは、編集階層から呼び出すことはできませんが、serverConfig または domainConfig 階層からは呼び出すことができます。

次の WLST オンライン スクリプトは、デフォルト認証プロバイダに対して createUser を呼び出します。このスクリプトを実行する方法については、「WLST の呼び出し」を参照してください。

コード リスト 6-5 ユーザの作成
from weblogic.management.security.authentication import UserEditorMBean
print "Creating a user ..."
atnr=cmo.getSecurityConfiguration().getDefaultRealm().lookupAuthenticationProvider("DefaultAuthenticator")
atnr.createUser('my_user','my_password','new_admin')
print "Created user successfully"

グループへのユーザの追加

ユーザをグループに追加するには、GroupEditorMBean.addMemberToGroup メソッドを呼び出します。このメソッドは、セキュリティ レルムの AuthenticationProvider MBean によって拡張されます。詳細については、『WebLogic Server MBean リファレンス』の「addMemberToGroup」メソッドを参照してください。

このメソッドでは、次の 2 つの入力パラメータが必要です。

groupname username

このコマンドは、編集階層から呼び出すことはできませんが、serverConfig または domainConfig 階層からは呼び出すことができます。

次の WLST オンライン スクリプトは、デフォルトの認証プロバイダに対して addMemberToGroup を呼び出します。このスクリプトを実行する方法については、「WLST の呼び出し」を参照してください。

コード リスト 6-6 グループへのユーザの追加
from weblogic.management.security.authentication import GroupEditorMBean
print "Adding a user ..."
atnr=cmo.getSecurityConfiguration().getDefaultRealm().lookupAuthenticationProvider("DefaultAuthenticator")
atnr.addMemberToGroup('Administrators','my_user')
print "Done adding a user"

ユーザがグループのメンバーであるかどうかの検証

ユーザがグループのメンバーであるかどうかを検証するには、GroupEditorMBean.isMember メソッドを呼び出します。このメソッドは、セキュリティ レルムの AuthenticationProvider MBean によって拡張されます。詳細については、『WebLogic Server MBean リファレンス』の「isMember」メソッドを参照してください。

このメソッドでは、次の 3 つの入力パラメータが必要です。

groupname username boolean

boolean は、子グループ内を検索するかどうかを指定します。true を指定した場合、指定したグループまたはその子グループにメンバーが属していれば true が返されます。

このコマンドは、編集階層から呼び出すことはできませんが、serverConfig または domainConfig 階層からは呼び出すことができます。

次の WLST オンライン スクリプトは、デフォルトの認証プロバイダに対して isMember を呼び出します。このスクリプトを実行する方法については、「WLST の呼び出し」を参照してください。

コード リスト 6-7 ユーザがグループのメンバーであるかどうかの検証
from weblogic.management.security.authentication import GroupEditorMBean
print "Checking if isMember of a group ... "
atnr=cmo.getSecurityConfiguration().getDefaultRealm().lookupAuthenticationProvider("DefaultAuthenticator")
if atnr.isMember('Administrators','my_user',true) == 0:
  print "my_user is not member of Administrators"
else:
  print "my_user is a member of Administrators"

ユーザが所属するグループのリスト表示

ユーザまたはグループが含まれるグループのリストを表示するには、MemberGroupListerMBean.listMemberGroups メソッドを呼び出します。このメソッドは、セキュリティ レルムの AuthenticationProvider MBean によって拡張されます。詳細については、『WebLogic Server MBean リファレンス』の「listMemberGroups」メソッドを参照してください。

このメソッドでは、次の入力パラメータが必要です。

memberUserOrGroupName

memberUserOrGroupName は既存のユーザまたはグループの名前を指定します。

このコマンドは、編集階層から呼び出すことはできませんが、serverConfig または domainConfig 階層からは呼び出すことができます。

次の WLST オンライン スクリプトは、デフォルトの認証プロバイダに対して listMemberGroups を呼び出します。このスクリプトを実行する方法については、「WLST の呼び出し」を参照してください。

コード リスト 6-8 ユーザが所属するグループのリスト表示
from weblogic.management.security.authentication import MemberGroupListerMBean
print "Listing the member groups ..."
atnr=cmo.getSecurityConfiguration().getDefaultRealm().lookupAuthenticationProvider("DefaultAuthenticator")
x = atnr.listMemberGroups('my_user')
print x

このメソッドは、名前のリストを参照するカーソルを返します。NameLister.haveCurrentgetCurrentName、および advance の各オペレーションは、返されたリスト内で繰り返し実行され、現在のカーソル位置が指し示す名前を取得します。『WebLogic Server MBean リファレンス』の「NameListerMBean」を参照してください。

セキュリティ レルムのユーザとグループのリスト表示

ユーザ名またはグループ名のリストを確認するには、AuthenticationProvider インタフェースを介して使用できる一連のメソッドを呼び出します。

これらのコマンドは、編集階層から呼び出すことはできませんが、serverConfig または domainConfig 階層からは呼び出すことができます。

コード リスト 6-9 の WLST オンライン スクリプトは、レルム内のすべてのユーザと、それらのユーザが属するグループをリスト表示します。このスクリプトを実行する方法については、「WLST の呼び出し」を参照してください。

コード リスト 6-9 ユーザおよびグループのリスト表示
from weblogic.management.security.authentication import UserReaderMBean
from weblogic.management.security.authentication import GroupReaderMBean
realm=cmo.getSecurityConfiguration().getDefaultRealm()
atns = realm.getAuthenticationProviders()
for i in atns:
  if isinstance(i,UserReaderMBean):
    userReader = i
    cursor = i.listUsers("*",0)
    print 'Users in realm '+realm.getName()+' are: '
    while userReader.haveCurrent(cursor):
      print userReader.getCurrentName(cursor)
      userReader.advance(cursor)
    userReader.close(cursor)
for i in atns:
  if isinstance(i,GroupReaderMBean):
    groupReader = i
    cursor = i.listGroups("*",0)
    print 'Groups in realm are: '
    while groupReader.haveCurrent(cursor):
      print groupReader.getCurrentName(cursor)
      groupReader.advance(cursor)
    groupReader.close(cursor)

パスワードの変更

ユーザのパスワードを変更するには、UserPasswordEditorMBean.changeUserPassword メソッドを呼び出します。このメソッドは、セキュリティ レルムの AuthenticationProvider MBean によって拡張されます。詳細については、『WebLogic Server MBean リファレンス』の「changeUserPassword」メソッドを参照してください。

このコマンドは、編集階層から呼び出すことはできませんが、serverConfig または domainConfig 階層からは呼び出すことができます。

次の WLST オンライン スクリプトは、デフォルトの認証プロバイダに対して changeUserPassword を呼び出します。このスクリプトを実行する方法については、「WLST の呼び出し」を参照してください。

コード リスト 6-10 パスワードの変更
from weblogic.management.security.authentication import UserPasswordEditorMBean
print "Changing password ..."
atnr=cmo.getSecurityConfiguration().getDefaultRealm().lookupAuthenticationProvider("DefaultAuthenticator")
  atnr.changeUserPassword('my_user','my_password','new_password')
print "Changed password successfully"

セキュリティ レルムでのユーザ アカウントの保護

UserLockoutManagerMBean には、侵入者からユーザ アカウントを保護する一連の属性が用意されています。デフォルトでは、これらの属性は最高の保護レベルに設定されています。このユーザ アカウントの保護レベルを下げることもできます。たとえば、アカウントがロックされるまでの無効なログイン試行回数を増やしたり、ユーザ アカウントがロックされるまでの無効なログイン試行期間を延ばしたり、ユーザ アカウントのロック時間を変更したりできます。詳細については、『WebLogic Server MBean リファレンス』の「UserLockoutManagerMBean」インタフェースを参照してください。

以下のタスクでは、UserLockoutManagerMBean メソッドを呼び出す例を示します。

これらのタスクでは MBean 属性を編集するため、WLST では管理サーバに接続し、編集階層に移動して、編集セッションを開始する必要がある点に注意してください。

連続する無効なログイン試行回数の設定

次の WLST オンライン スクリプトでは、ユーザ アカウントがロックされるまでの連続する無効なログイン試行回数が設定されます。このスクリプトを実行する方法については、「WLST の呼び出し」を参照してください。

コード リスト 6-11 連続する無効なログイン試行回数の設定
from weblogic.management.security.authentication import UserLockoutManagerMBean
edit()
startEdit()
# コンフィグレーションするユーザ ロックアウト マネージャを取得する際、2 つの選択肢がある
# 1 - デフォルトのレルムの UserLockoutManager をコンフィグレーションする :
ulm=cmo.getSecurityConfiguration().getDefaultRealm().getUserLockoutManager()
# 2 - 別のレルムの UserLockoutManager をコンフィグレーションする :
#ulm=cmo.getSecurityConfiguration().lookupRealm("anotherRealm").getUserLockoutManager()
ulm.setLockoutThreshold(3)
save()
activate()
ユーザ アカウントのロック解除

次の WLST オンライン スクリプトは、ユーザ アカウントのロックを解除します。このスクリプトを実行する方法については、「WLST の呼び出し」を参照してください。

コード リスト 6-12 ユーザ アカウントのロックの解除
from weblogic.management.security.authentication import UserLockoutManagerMBean
serverRuntime()
ulm=cmo.getServerSecurityRuntime().getDefaultRealmRuntime().getUserLockoutManagerRuntime()
# 注意 1 : サーバ起動時に起動したデフォルトのレルム (他の非アクティブなレルムではなく) のユーザ ロックアウトのみ管理できる。
# 注意 2 : デフォルトのレルムのユーザ ロックアウト マネージャの LockoutEnabled が false であれば、ユーザ ロックアウト マネージャの実行時 MBean は null となる。
# つまり、ユーザ ロックアウト マネージャが有効である場合のみ、デフォルト レルム内のユーザ ロックアウトを管理できる。
if ulm != None:
  ulm.clearLockout("myuser")

 


アプリケーションのデプロイ

アプリケーションをデプロイするプロセスは、WLST オフラインを使用するか WLST オンラインを使用するかによって異なります。

WLST オンラインを使用したアプリケーションのデプロイ

WLST がドメインの管理サーバに接続される際は、deploy コマンドを使用してアプリケーションをデプロイします。「deploy」を参照してください。

コード リスト 6-13 のコマンドは、WebLogic Server ExamplesServer ドメインのサンプル アプリケーションをデプロイします。

コード リスト 6-13 アプリケーションのデプロイ
# アプリケーションのデプロイ
deploy("mainWebApp","C:/bea/wlserver_10.3/samples/server/examples/build/mainWebApp")

注意 :

WLST を使用してのアプリケーションのデプロイの詳細については、『WebLogic Server アプリケーションのデプロイメント』の「デプロイメント ツール」を参照してください。

WLST オフラインを使用したアプリケーションのデプロイ

表 6-3 に、WLST オフラインを使用した既存ドメインのアプリケーションのデプロイ手順を示します。

表 6-3 アプリケーションのデプロイ手順 (オフライン) 
手順
使用するコマンド
詳細については、以下を参照
  1. Template Builder を使用してアプリケーション テンプレートを作成する
 
  1. 既存のドメインまたはテンプレートを開く
readDomain(domainDirName)
  1. アプリケーション テンプレートをドメインに追加する
addTemplate(templateFileName)
  1. ドメインを保存する
updateDomain()
  1. ドメインを閉じる
closeDomain()

addTemplate コマンドの使用例については、次のサンプル WLST スクリプトを参照してください。

WL_HOME\common\templates\scripts\wlst\clusterMedRecDomain.py。ここで、WL_HOME は、WebLogic Server の最上位のインストール ディレクトリです。


  ページの先頭       前  次