以下の節では、WLST を使用した既存ドメインの更新について説明します。
WLST オンラインではアクティブなドメインと対話が行なわれるため、ドメインへのオンラインの変更はすべて、変更管理プロセスによって制御されます。このプロセスは、データベース トランザクションと少し似ています。コンフィグレーションの変更や変更の管理の詳細については、『Oracle Fusion Middleware Oracle WebLogic Server ドメインのコンフィグレーションについて』の「コンフィグレーションの変更管理のプロセス」を参照してください。
表 6-1 に、WLST オンラインを使用した既存ドメインの更新手順を示します。
表 6-1 既存ドメインの更新手順 (オンライン)
手順 | 使用するコマンド | 詳細については、『Oracle Fusion Middleware WebLogic Scripting Tool コマンド リファレンス』の以下の節を参照 |
---|---|---|
編集 MBean 階層にアクセスする |
edit() このコマンドによって、編集可能な |
「edit」 |
現在のコンフィグレーションでロックを取得する コンフィグレーションの変更が進行中であることを示すため、WLST コマンド プロンプトの最後に感嘆符 (!) が表示される。 |
startEdit([waitTimeInMillis], [timeoutInMillis], [exclusive]) |
|
ドメインを修正する |
参照コマンドおよびオンライン編集コマンド |
「参照コマンド」 「編集コマンド」 |
編集を検証する (省略可能) |
validate() |
「validate」 |
変更を保存する |
save() |
「save」 |
ドメイン内のすべてのサーバ上で実行中のコンフィグレーション MBean に変更を配布する |
activate([timeout], [block]) |
「activate」 |
コンフィグレーションでのロックを解放する |
stopEdit([defaultAnswer]) |
「stopEdit」 |
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
を返します。このインタフェースが提供するメソッドを呼び出すことで、進行中または完了したばかりの最新のアクティブ化タスクに関する情報が取得されます。詳細については、『Oracle Fusion Middleware Oracle WebLogic Server MBean Reference』の「ActivationTaskMBean」を参照してください。
コード リスト 6-3 の WLST オンライン スクリプトは、管理者として WLST をサーバ インスタンスに接続し、アクティブ化タスクを取得し、そのタスクのユーザとステータスを出力します。また、行われたすべての変更も出力します。
このスクリプトを実行する前に、WebLogic Server を起動します。「WLST の呼び出し」を参照してください。
WLST には、変更の取り消し、およびキャンセル用に、それぞれ次のコマンドが用意されています。
undo
コマンド。保存されていない編集、またはアクティブ化されていない編集を元に戻します。
(ディスクに保存されたものも含めて) アクティブ化されていないすべての編集を元に戻すか、または、最後の save
オペレーション以降に行われたすべての編集を元に戻すかを指定します。『Oracle Fusion Middleware WebLogic Scripting Tool コマンド リファレンス』の「undo」を参照してください。
cancelEdit
コマンド。編集ロックを解放し、未保存の変更をすべて破棄します。『Oracle Fusion Middleware WebLogic Scripting Tool コマンド リファレンス』の「cancelEdit」を参照してください。
前の節で説明した標準の変更管理コマンドは、ConfigurationManagerMBean
のオペレーションを呼び出す上で便利なコマンドです。ConfigurationManagerMBean
には、そうしたオペレーションに加え、編集セッションを記述する属性およびオペレーションがあります。詳細については、『Oracle Fusion Middleware Oracle WebLogic Server MBean Reference』の「ConfigurationManagerMBean」を参照してください。
この MBean にアクセスするには、WLST の getConfigManager
コマンドを使用します。『Oracle Fusion Middleware WebLogic Scripting Tool コマンド リファレンス』の「getConfigManager」を参照してください。
コード リスト 6-4 の WLST オンライン スクリプトは、管理者として WLST をサーバ インスタンスに接続し、現在変更を行っているのが特定のオペレータであるかどうかを確認してから、コンフィグレーションの編集をキャンセルします。このスクリプトはまた、完了したアクティブ化タスクをすべて削除します。
このスクリプトを実行する前に、WebLogic Server を起動します。「WLST の呼び出し」を参照してください。
WLST オフラインを使用して既存のドメインを更新するには、表 6-2 に示す手順を実行します。
注意 : アクティブなドメインのコンフィグレーションを管理する際には WLST オフラインを使用しないことが推奨されます。オフラインによる編集は、実行中のサーバによって無視されるので、WLST オンラインや WebLogic Server Administration Console などの JMX クライアントによって上書きされる場合があります。 |
表 6-2 既存ドメインを更新する手順 (オフライン)
手順 | 使用するコマンド | 詳細については、以下を参照 |
---|---|---|
更新する既存のドメインを開く |
readDomain(domainDirName) |
『Oracle Fusion Middleware WebLogic Scripting Tool コマンド リファレンス』の「readDomain」 |
現在のドメインを拡張する (省略可能) |
addTemplate(templateFileName) |
『Oracle Fusion Middleware WebLogic Scripting Tool コマンド リファレンス』の「addTemplate」 |
ドメインを修正する (省略可能) |
参照コマンドおよび編集コマンド |
|
ドメインを保存する |
updateDomain() |
『Oracle Fusion Middleware WebLogic Scripting Tool コマンド リファレンス』の「updateDomain」 |
ドメインを閉じる |
closeDomain() |
『Oracle Fusion Middleware WebLogic Scripting Tool コマンド リファレンス』の「closeDomain」 |
WebLogic Security サービスでは、認証プロバイダはユーザまたはシステム プロセスの身元を証明するソフトウェア コンポーネントです。認証プロバイダでは、ID 情報を記憶したり、転送したり、その情報が必要な場合にシステムのさまざまなコンポーネントで利用できるようにしたりします。
セキュリティ レルムは、さまざまな種類の認証プロパティを使用して異なるユーザおよびグループのセットを管理できます。『Oracle Fusion Middleware Oracle WebLogic Server セキュリティ プロバイダの開発』の「認証プロバイダ」を参照してください。WLST を使用すると、次のタイプの認証プロバイダのオペレーションを呼び出すことができます。
WebLogic Server のデフォルト認証プロバイダ AuthenticatorMBean
。デフォルトでは、セキュリティ レルムはこの認証プロバイダを使用してユーザとグループを管理する。
weblogic.security.spi.AuthenticationProvider
と任意
Authentication SSPI MBean を拡張したカスタム認証プロバイダ。『Oracle Fusion Middleware Oracle WebLogic Server セキュリティ プロバイダの開発』の「SSPI MBean クイック リファレンス」を参照。
以下の節では、WLST を使用してユーザおよびグループを管理するための基本的なタスクについて説明します。
AuthenticationProvider
MBean でサポートされるその他のタスクについては、『Oracle Fusion Middleware Oracle WebLogic Server MBean Reference』の「AuthenticationProviderMBean」を参照してください。
セキュリティ MBean のコンフィグレーションの変更に WLST を使用している場合、編集階層にアクセスして編集セッションを開始する必要があります。たとえば、UserLockoutManagerMBean
の LockoutThreshold
属性の値の変更は、編集階層内から行なう必要があります。
セキュリティ プロバイダのオペレーションを呼び出してセキュリティ プロバイダのデータ ストア内のデータを追加、変更、または削除する場合、これらの操作を編集階層内から行なうことはできません。代わりに、これらのコマンドは、serverConfig
または domainConfig
階層から呼び出します。たとえば、AuthenticatorMBean
MBean の createUser
オペレーションは、編集階層から呼び出すことはできません。WLST でこの制限を設けているのは、両立不能な変更が生じないようにするためです。たとえば、編集セッションにはアクティブ化されていない変更が含まれる可能性があり、このアクティブ化されていない変更ではセキュリティ機能が取り除かれ、これによってプロバイダのデータへの変更が無効になります。
ユーザを作成するには、UserEditorMBean.createUser
メソッドを呼び出します。このメソッドは、セキュリティ レルムの AuthenticationProvider
MBean によって拡張されます。詳細については、『Oracle Fusion Middleware Oracle WebLogic Server MBean Reference』の「UserEditorMBean
」の「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().lookupAuthentication Provider("DefaultAuthenticator") atnr.createUser('my_user','my_password','new_admin') print "Created user successfully"
ユーザをグループに追加するには、GroupEditorMBean.addMemberToGroup
メソッドを呼び出します。このメソッドは、セキュリティ レルムの AuthenticationProvider
MBean によって拡張されます。詳細については、『Oracle Fusion Middleware Oracle WebLogic Server MBean Reference』の「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 によって拡張されます。詳細については、『Oracle Fusion Middleware Oracle WebLogic Server MBean Reference』の「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 によって拡張されます。詳細については、『Oracle Fusion Middleware Oracle WebLogic Server MBean Reference』の「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.haveCurrent
、getCurrentName
、および advance
の各オペレーションは、返されたリスト内で繰り返し実行され、現在のカーソル位置が指し示す名前を取得します。『Oracle Fusion Middleware Oracle WebLogic Server MBean Reference』の「NameListerMBean」を参照してください。
ユーザ名またはグループ名のリストを確認するには、AuthenticationProvider
インタフェースを介して使用できる一連のメソッドを呼び出します。
GroupReaderMBean.listGroups
メソッドおよび UserReaderMBean.listUsers
メソッドは 2 つの入力パラメータを取る。1 つは検索するユーザまたはグループ名のパターンで、もう 1 つは取得する名前の最大数。
セキュリティ レルムにはパターンに一致するユーザ名またはグループ名が数千 (またはそれ以上) 存在する場合があるので、このメソッドでは名前のリストを指し示すカーソルが返されます。
詳細については、『Oracle Fusion Middleware Oracle WebLogic Server MBean Reference』の「listGroups」および「listUsers」オペレーションを参照してください。
NameLister
.haveCurrent
、getCurrentName
、および advance
の各オペレーションは、返されたリスト内で繰り返し実行され、現在のカーソル位置が指し示す名前を取得する。詳細については、『Oracle Fusion Middleware Oracle WebLogic Server MBean Reference』の「NameListerMBean」を参照してください。
NameLister
.close
オペレーションは、リストの代わりに保持されていたサーバ側リソースをすべて解放する。
これらのコマンドは、編集階層から呼び出すことはできませんが、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 によって拡張されます。詳細については、『Oracle Fusion Middleware Oracle WebLogic Server MBean Reference』の「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
には、侵入者からユーザ アカウントを保護する一連の属性が用意されています。デフォルトでは、これらの属性は最高の保護レベルに設定されています。このユーザ アカウントの保護レベルを下げることもできます。たとえば、アカウントがロックされるまでの無効なログイン試行回数を増やしたり、ユーザ アカウントがロックされるまでの無効なログイン試行期間を延ばしたり、ユーザ アカウントのロック時間を変更したりできます。詳細については、『Oracle Fusion Middleware Oracle WebLogic Server MBean Reference』の「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 がドメインの管理サーバに接続される際は、deploy
コマンドを使用してアプリケーションをデプロイします。『Oracle Fusion Middleware WebLogic Scripting Tool コマンド リファレンス』の「deploy」を参照してください。
コード リスト 6-13 のコマンドは、WebLogic Server ExamplesServer ドメインのサンプル アプリケーションをデプロイします。
コード リスト 6-13 アプリケーションのデプロイ
# アプリケーションのデプロイ deploy("mainWebApp","C:/bea/wlserver_10.3/samples/server/examples/build/mainWebApp")
注意 : WLST オンラインを使用してアプリケーションをデプロイする場合は、以下の点に注意してください。
WLST を使用してのアプリケーションのデプロイの詳細については、『Oracle Fusion Middleware Oracle WebLogic Server アプリケーションのデプロイメント』の「デプロイメント ツール」を参照してください。 |
表 6-3 に、WLST オフラインを使用した既存ドメインのアプリケーションのデプロイ手順を示します。
表 6-3 アプリケーションのデプロイ手順 (オフライン)
手順 | 使用するコマンド | 詳細については、以下を参照 |
---|---|---|
Template Builder を使用してアプリケーション テンプレートを作成する |
非適用 |
『Oracle Fusion Middleware Domain Template Builder を使用したドメイン テンプレートの作成』 |
既存のドメインまたはテンプレートを開く |
readDomain(domainDirName)
|
『Oracle Fusion Middleware WebLogic Scripting Tool コマンド リファレンス』の「readDomain」および「readTemplate」 |
アプリケーション テンプレートをドメインに追加する |
addTemplate(templateFileName)
|
『Oracle Fusion Middleware WebLogic Scripting Tool コマンド リファレンス』の「addTemplate」 |
ドメインを保存する |
updateDomain() |
『Oracle Fusion Middleware WebLogic Scripting Tool コマンド リファレンス』の「updateDomain」 |
ドメインを閉じる |
closeDomain() |
『Oracle Fusion Middleware WebLogic Scripting Tool コマンド リファレンス』の「closeDomain」 |
addTemplate
コマンドの使用例については、次のサンプル WLST スクリプトを参照してください。
WL_HOME
\common\templates\scripts\wlst\clusterMedRecDomain.py
。ここで、WL_HOME
は、WebLogic Server の最上位のインストール ディレクトリです。