![]() ![]() ![]() ![]() |
以下の節では、WLST を使用した既存ドメインの更新について説明します。
WLST オンラインではアクティブなドメインと対話が行なわれるため、ドメインへのオンラインの変更はすべて、変更管理プロセスによって制御されます。このプロセスは、データベース トランザクションと少し似ています。コンフィグレーションの変更や変更の管理の詳細については、『ドメインのコンフィグレーションについて』の「コンフィグレーションの変更管理のプロセス」を参照してください。
表 6-1 に、WLST オンラインを使用した既存ドメインの更新手順を示します。
コード リスト 6-1 の WLST オンライン スクリプトは、WLST を管理サーバに接続し、管理対象サーバを作成する編集セッションを開始してから変更を保存してアクティブ化します。さらに、別の編集セッションを開始してから起動クラスを作成し、新しく作成されたサーバにそれを対象指定します。
このスクリプトを実行する前に、WebLogic Server を起動します。「WLST の呼び出し」を参照してください。
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 の呼び出し」を参照してください。
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 の呼び出し」を参照してください。
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 には、変更の取り消し、およびキャンセル用に、それぞれ次のコマンドが用意されています。
undo
コマンド。保存されていない編集、またはアクティブ化されていない編集を元に戻します。
(ディスクに保存されたものも含めて) アクティブ化されていないすべての編集を元に戻すか、または、最後の save
オペレーション以降に行われたすべての編集を元に戻すかを指定します。「undo」を参照してください。
cancelEdit
コマンド。編集ロックを解放し、未保存の変更をすべて破棄します。「cancelEdit」を参照してください。
前の節で説明した標準の変更管理コマンドは、ConfigurationManagerMBean
のオペレーションを呼び出す上で便利なコマンドです。ConfigurationManagerMBean
には、そうしたオペレーションに加え、編集セッションを記述する属性およびオペレーションがあります。詳細については、『WebLogic Server MBean リファレンス』の「ConfigurationManagerMBean」を参照してください。
この MBean にアクセスするには、WLST の getConfigManager
コマンドを使用します。「getConfigManager」を参照してください。
コード リスト 6-4 の WLST オンライン スクリプトは、管理者として WLST をサーバ インスタンスに接続し、現在変更を行っているのが特定のオペレータであるかどうかを確認してから、コンフィグレーションの編集をキャンセルします。このスクリプトはまた、完了したアクティブ化タスクをすべて削除します。
このスクリプトを実行する前に、WebLogic Server を起動します。「WLST の呼び出し」を参照してください。
connect("theAdministrator","weblogic")
cmgr = getConfigManager()
user = cmgr.getCurrentEditor()
if user == "operatorSam":
cmgr.undo()
cmgr.cancelEdit()
cmgr.purgeCompletedActivationTasks()
WLST オフラインを使用して既存のドメインを更新するには、表 6-2 に示す手順を実行します。
警告 : | アクティブなドメインのコンフィグレーションを管理する際には WLST オフラインを使用しないことが推奨されます。オフラインによる編集は、実行中のサーバによって無視されるので、WLST オンラインや WebLogic Server Administration Console などの JMX クライアントによって上書きされる場合があります。 |
WebLogic Security サービスでは、認証プロバイダはユーザまたはシステム プロセスの身元を証明するソフトウェア コンポーネントです。認証プロバイダでは、ID 情報を記憶したり、転送したり、その情報が必要な場合にシステムのさまざまなコンポーネントで利用できるようにしたりします。
セキュリティ レルムは、さまざまな種類の認証プロパティを使用して異なるユーザおよびグループのセットを管理できます。『WebLogic セキュリティ プロバイダの開発』の「認証プロバイダ」を参照してください。WLST を使用すると、次のタイプの認証プロバイダのオペレーションを呼び出すことができます。
AuthenticatorMBean
。デフォルトでは、セキュリティ レルムはこの認証プロバイダを使用してユーザとグループを管理する。weblogic.security.spi.AuthenticationProvider
と任意 Authentication SSPI MBean を拡張したカスタム認証プロバイダ。
以下の節では、WLST を使用してユーザおよびグループを管理するための基本的なタスクについて説明します。
AuthenticationProvider
MBean でサポートされるその他のタスクについては、『WebLogic Server MBean リファレンス』の「AuthenticationProviderMBean
」を参照してください。
セキュリティ MBean のコンフィグレーションの変更に WLST を使用している場合、編集階層にアクセスして編集セッションを開始する必要があります。たとえば、UserLockoutManagerMBean
の LockoutThreshold
属性の値の変更は、編集階層内から行なう必要があります。
セキュリティ プロバイダのオペレーションを呼び出してセキュリティ プロバイダのデータ ストア内のデータを追加、変更、または削除する場合、これらの操作を編集階層内から行なうことはできません。代わりに、これらのコマンドは、serverConfig
または domainConfig
階層から呼び出します。たとえば、AuthenticatorMBean
MBean の createUser オペレーションは、編集階層から呼び出すことはできません。WLST でこの制限を設けているのは、両立不能な変更が生じないようにするためです。たとえば、編集セッションにはアクティブ化されていない変更が含まれる可能性があり、このアクティブ化されていない変更ではセキュリティ機能が取り除かれ、これによってプロバイダのデータへの変更が無効になります。
ユーザを作成するには、UserEditorMBean.createUser
メソッドを呼び出します。このメソッドは、セキュリティ レルムの AuthenticationProvider
MBean によって拡張されます。詳細については、『WebLogic Server MBean リファレンス』の「createUser
」メソッドを参照してください。
username password user-description
このコマンドは、編集階層から呼び出すことはできませんが、serverConfig
または domainConfig
階層からは呼び出すことができます。
次の WLST オンライン スクリプトは、デフォルト認証プロバイダに対して createUser
を呼び出します。このスクリプトを実行する方法については、「WLST の呼び出し」を参照してください。
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
」メソッドを参照してください。
このコマンドは、編集階層から呼び出すことはできませんが、serverConfig
または domainConfig
階層からは呼び出すことができます。
次の WLST オンライン スクリプトは、デフォルトの認証プロバイダに対して addMemberToGroup
を呼び出します。このスクリプトを実行する方法については、「WLST の呼び出し」を参照してください。
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
」メソッドを参照してください。
boolean
は、子グループ内を検索するかどうかを指定します。true
を指定した場合、指定したグループまたはその子グループにメンバーが属していれば true
が返されます。
このコマンドは、編集階層から呼び出すことはできませんが、serverConfig
または domainConfig
階層からは呼び出すことができます。
次の WLST オンライン スクリプトは、デフォルトの認証プロバイダに対して isMember
を呼び出します。このスクリプトを実行する方法については、「WLST の呼び出し」を参照してください。
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
は既存のユーザまたはグループの名前を指定します。
このコマンドは、編集階層から呼び出すことはできませんが、serverConfig
または domainConfig
階層からは呼び出すことができます。
次の WLST オンライン スクリプトは、デフォルトの認証プロバイダに対して listMemberGroups
を呼び出します。このスクリプトを実行する方法については、「WLST の呼び出し」を参照してください。
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.haveCurrent
、getCurrentName
、および advance
の各オペレーションは、返されたリスト内で繰り返し実行され、現在のカーソル位置が指し示す名前を取得します。『WebLogic Server MBean リファレンス』の「NameListerMBean
」を参照してください。
ユーザ名またはグループ名のリストを確認するには、AuthenticationProvider
インタフェースを介して使用できる一連のメソッドを呼び出します。
GroupReaderMBean.listGroups
メソッドおよび UserReaderMBean.listUsers
メソッドは 2 つの入力パラメータを取る。1 つは検索するユーザまたはグループ名のパターンで、もう 1 つは取得する名前の最大数。
セキュリティ レルムにはパターンに一致するユーザ名またはグループ名が数千 (またはそれ以上) 存在する場合があるので、このメソッドでは名前のリストを指し示すカーソルが返されます。
詳細については、『WebLogic Server MBean リファレンス』の「listGroups
」および「listUsers
」オペレーションを参照してください。
NameLister
.haveCurrent
、getCurrentName
、および advance
の各オペレーションは、返されたリスト内で繰り返し実行され、現在のカーソル位置が指し示す名前を取得する。詳細については、『WebLogic Server MBean リファレンス』の「NameListerMBean
」を参照してください。NameLister
.close
オペレーションは、リストの代わりに保持されていたサーバ側リソースをすべて解放する。
これらのコマンドは、編集階層から呼び出すことはできませんが、serverConfig
または domainConfig
階層からは呼び出すことができます。
コード リスト 6-9 の WLST オンライン スクリプトは、レルム内のすべてのユーザと、それらのユーザが属するグループをリスト表示します。このスクリプトを実行する方法については、「WLST の呼び出し」を参照してください。
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 の呼び出し」を参照してください。
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 の呼び出し」を参照してください。
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 の呼び出し」を参照してください。
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 がドメインの管理サーバに接続される際は、deploy
コマンドを使用してアプリケーションをデプロイします。「deploy」を参照してください。
コード リスト 6-13 のコマンドは、WebLogic Server ExamplesServer ドメインのサンプル アプリケーションをデプロイします。
# アプリケーションのデプロイ
deploy("mainWebApp","C:/bea/wlserver_10.3/samples/server/examples/build/mainWebApp")
WLST を使用してのアプリケーションのデプロイの詳細については、『WebLogic Server アプリケーションのデプロイメント』の「デプロイメント ツール」を参照してください。
表 6-3 に、WLST オフラインを使用した既存ドメインのアプリケーションのデプロイ手順を示します。
addTemplate
コマンドの使用例については、次のサンプル WLST スクリプトを参照してください。
WL_HOME
\common\templates\scripts\wlst\clusterMedRecDomain.py
。ここで、WL_HOME
は、WebLogic Server の最上位のインストール ディレクトリです。
![]() ![]() ![]() |