ライセンスの制限と確保
制限スクリプトは,サイト規模でインストールしてあるWolframシステムの管理に大変便利である.これを使うと,ネットワーク上で許可されていないユーザがWolframシステムにアクセスするのを阻止したり,特定のユーザへのライセンスを確保したりすることができる.制限スクリプトはプラットフォーム間で互換であり,IPv4とIPv6のどちらもサポートし,曖昧さのない制御が可能である.これを書くためには,プログラミングの経験も必要ない.制限スクリプトの文法は,HTMLファイルへのアクセスを制御するためにWebサーバで使用される.htaccessファイルの文法と似ている.
確保されたライセンスは常に確保されている.それが使用中であるかどうかにかかわらず,他のユーザやマシンからはアクセスできない.指定されたユーザあるいはマシンのいずれもWolframシステムを実行していないとしても,他のユーザおよびマシン用のライセンスプールは確保されたライセンス数だけ減少する.
AuthName Sample
AuthGroupFile mathlmgroup.txt
# Precedence
order ( allow,deny | deny,allow )
# Machine restriction
allow from ( all | machines ... )
allow hostgroup machinegroups ...
deny from ( all | machines ... )
deny hostgroup machinegroups ...
# User restriction
allow user ( all | users ... )
allow group usergroups ...
deny user ( all | users ... )
deny group usergroups ...
# License reservation
reserve [count] from machines ...
reserve [count] hostgroup machinegroups ...
reserve [count] user users ...
reserve [count] group usergroups ...
reservesub [count] user users ...
reservesub [count] group usergroups ...
用語の定義
名前
|
説明
|
AuthName
Sample
| スクリプトの名前を定義する |
AuthGroupFile
mathlmgroup
.txt
| ユーザあるいはマシンのグループの定義を含むファイルを指定する.この行はキーワードgroupまたはhostgroupに関連するときのみ必要である |
order ( allow,deny deny,allow )
| これら2つの指示子の優先順位を定義する.後者が前者に優先する.また,デフォルトのアクセス状態を後者に設定する.デフォルトのアクセス状態は,明示的な規則にマッチしないリクエストに適用される.デフォルト値はorder deny,allowである |
allow from ( all machines … ) | リストされたホスト名,ドメイン,IPアドレス,IPアドレスの範囲からのライセンスリクエストを許可する |
allow hostgroup
machinegroups
…
| リストされたマシングループのメンバーからのライセンスリクエストを許可する |
deny from ( all
machines
…
)
| リストされたホスト名,ドメイン,IPアドレス,IPアドレスの範囲からのライセンスリクエストを却下する |
deny hostgroup
machinegroups
…
| リストされたマシングループのメンバーからのライセンスリクエストを却下する |
allow user ( all
users
…
)
| リストされたユーザからのライセンスリクエストを許可する |
allow group
usergroups
…
| リストされたユーザグループのメンバーからのライセンスリクエストを許可する |
deny user (all
users
…
)
| リストされたユーザからのライセンスリクエストを却下する |
deny group
usergroups
…
| リストされたユーザグループのメンバーからのライセンスリクエストを却下する |
reserve [
count
] from
machines
…
| リストされたホスト名,ドメイン,IPアドレス,IPアドレスの範囲のそれぞれに,フロントエンドライセンスとカーネルライセンスを count 個ずつ確保する |
reserve [
count
] hostgroup
machinegroups
…
| リストされたマシングループのメンバーそれぞれに,フロントエンドライセンスとカーネルライセンスを count 個ずつ確保する |
reserve [
count
] user
users
…
| リストの中の各ユーザに,フロントエンドライセンスとカーネルライセンスを count 個ずつ確保する |
reserve [
count
] group
usergroups
…
| リストされたユーザグループの各ユーザに,フロントエンドライセンスとカーネルライセンスを count 個ずつ確保する |
reservesub [
count
] from
machines
…
| リストされたホスト名,ドメイン,IPアドレス,IPアドレスのそれぞれに対して count 個のサブフロントエンドプロセスと count 個のサブカーネルプロセスを確保する |
reservesub [
count
] hostgroup
machinegroups
…
| リストされたマシングループのそれぞれに対して count 個のサブフロントエンドプロセスライセンスと count 個のサブカーネルプロセスライセンスを確保する |
reservesub [
count
] user
users
…
| リストの中の各ユーザに対して count 個のサブフロントエンドプロセスライセンスと count 個のサブカーネルプロセスライセンスを確保する |
reservesub [
count
] group
usergroups
…
| リストされたユーザグループの各ユーザに対して count 個のサブフロントエンドプロセスライセンスと count 個のサブカーネルプロセスライセンスを確保する |
ライセンスの確保
reserveおよびreservesub指示子を使うと,特定ユーザあるいはマシンが使用するライセンスが保証できる.確保されたライセンスは常に確保された状態であり,他のユーザやマシンからはアクセスできないことに注意する.
場合によっては,確保するフロントエンド数とカーネルライセンス数が同じでないこともあろう.この場合はreservefe,reservesubfe,reservekernel, reservesubkernelという追加の指示子を使うとよい.reservefeおよびreservekernelのシンタックスはreserveのシンタックスと同一であり,reservesubfeとreservesubkernelのシンタックスはreservesubのシンタックスと同一である.
並列計算あるいはグリッド計算のためにカーネルおよびフロントエンドを確保する場合,reservesub,reservesubfe,reservesubkernelといったサブプロセスの確保も必要である.例えば,ネットワーク上のユーザが大きいデータをモデル化するために16個の並列カーネルを必要としているとする.このとき,他のユーザがモデル化のプロセスを邪魔しないですむよう,reservesubkernel指示子を使うのである.
グループを含まないスクリプト
次のスクリプトは,192.168.0.1から192.168.0.5,および192.168.2.1から192.168.2.12までの範囲のuser1からuser5までのユーザからのライセンスリクエストのみを許可する.この他のユーザやマシンからのライセンスリクエストは,却下される.
AuthName Sample2
order deny,allow
deny from all
allow from [192.168.2.1 192.168.2.12] 192.168.0.1 192.168.0.5
deny user all
allow user user1 user2 user3 user4 user5
グループを含むスクリプト
AuthName Sample3
AuthGroupFile mathlmgroup1.txt
order deny,allow
deny from all
allow hostgroup group1
deny user all
allow group group2 group3
group1: 192.168.0.1 192.168.0.5 [192.168.2.1 192.168.2.12]
group2: user1 user2 user3
group3: user4 user5
デフォルトのアクセス状態を例示するスクリプト
以下のスクリプトでは,すべてのユーザ,host1以外のマシンからのライセンスリクエストが許可される.user1がhost1にログインしているときにライセンスをリクエストしても,ライセンスは許可される.リクエストは,このスクリプトの両方の規則にマッチしなければならない.また,order指示子の値によりallow指示子が優先であることが指定されている.host1にログインしているuser2からのライセンスリクエストは却下されることに注意する.
上のスクリプトと下のスクリプトでは,order指示子の値だけが異なるが,スクリプトの意味は逆転してしまう.下のスクリプトでは,user1からのライセンスリクエストしか許可しない.host1にログインしているuser1からのライセンスリクエストは却下される.そのようなリクエストは,両方の規則にマッチするが,deny規則が優先であるためにリクエストが却下されるのである.
ライセンス確保のスクリプト
以下のスクリプトは,すべてのライセンスリクエストを許可する.これは,アドレス192.168.0.1に3つのカーネルライセンスを,user1にフロントエンドライセンスとカーネルライセンスを1つずつ確保している.確保されたライセンスは常に確保されおり,他のマシンやユーザからはアクセスできない.
AuthName Sample6
order allow,deny
allow from all
allow user all
reservekernel 3 from 192.168.0.1
reserve user user1
以下のスクリプトはすべてのライセンスリクエストを許可する.これはuser1に対してフロントエンドライセンスを2つ,カーネルライセンスを2つ,カーネルサブプロセスライセンスを4つ確保している.これで並列計算に必要なリソースをuser1に保証するのである.並列計算についての詳細は「Parallel Computing Toolsユーザガイド」を参照のこと.
AuthName Sample7
order allow,deny
allow from all
allow user all
reservefe 2 user user1
reservekernel 2 user user1
reservesubkernel 4 user user1
以下のスクリプトは,user1,user2,hostname1,hostname2,domain1.com,192.168.1.1から192.168.2.9の範囲のアドレスからのライセンスリクエストのみを許可する.これではhostname2にカーネルライセンスとフロントエンドライセンスを3つずつ,192.168.1.1から192.168.2.9までの範囲のアドレスにもカーネルライセンスとフロントエンドライセンスを3つずつ,user1にはカーネルライセンスとフロントエンドライセンスを1つずつ,user2にもカーネルライセンスとフロントエンドライセンスを1つずつ確保する.このスクリプトでは,合計で8つのフロントエンドライセンスと8つのカーネルライセンスが確保される.
AuthName Sample8
order deny,allow
deny from all
allow from hostname1 hostname2 .domain1.com [192.168.1.1 192.168.2.9]
deny user all
allow user user1 user2
reserve 3 from hostname2 [192.168.1.1 192.168.2.9]
reserve user user1 user2
reserve 3 from hostname2
reserve 3 from [192.168.1.1 192.168.2.9]
グループのライセンス確保スクリプト
AuthName Sample9
AuthGroupFile mathlmgroup2.txt
order deny,allow
deny from all
allow hostgroup group1 group2
deny user all
allow group group3
reservekernel 3 hostgroup group2
reserve group group3
制限スクリプトを使うためには,オプション-restrictの後にスクリプトのパス名を置いて MathLM を起動する.制限スクリプトには,どのようなファイル名(および拡張子)を与えることもできる.コマンドラインオプションの詳細については,「MathLM の起動」を参照のこと.