アクセス制御では、次のものが提供されます。
ボリュームアクセス制御では、ボリュームを 1 つのクライアントアプリケーションに割り当てることができます。そのクライアントのボリュームへのアクセスをほかのクライアントに許可できます。
コマンドアクセス制御では、管理者が、特定の ACSLS コマンドを特定のクライアントに割り当てることができます。
ボリュームアクセス制御とコマンドアクセス制御はどちらも、ACSAPI 経由でリクエストを送信するクライアントアプリケーションのユーザーに適用されます。
アクセス制御では、cmd_proc
または ACSLS GUI を使用してライブラリリクエストを送信する管理ユーザーによるアクセスは制限されません。
有効になっている場合、特定のユーザーによって所有されているボリュームはそのユーザーか、または信頼できるほかのユーザーからのみアクセスできます。
ACSLS でボリュームアクセス制御をはじめて構成する場合は、次の手順に従います。
ACSLS でボリュームアクセス
制御を有効にします。
クライアントアプリケーションをユーザー名に関連付けます。
そのユーザーのボリュームにほかのどのユーザーがアクセスできるかを定義します。
ボリュームの所有権を確立します。
ACSLS でボリュームアクセス
制御を有効にするには:
構成ユーティリティー acsss_config
を実行します。
メインメニューが表示されます。
「Option 4 - Set Access Control Variables」を選択します。
各変数が一度に 1 つずつ表示され、その現在の設定が表示されます。
現在の設定またはデフォルト設定を受け入れるには、Enter をクリックします。
ユーティリティーにメッセージ Access control is active for volumes
が表示されたら、「[TRUE]
」を選択して Enter をクリックします。
ユーティリティーにメッセージ Default access for volumes [ACCESS/NOACCESS]...
が表示されたら、次のいずれかを選択します。
目標が特定のユーザーに対してアクセスを禁止し、ほかのすべてのユーザーに対してアクセスを許可することである場合は、「[ACCESS]
」を選択します。
これには、特定のユーザーを users.ALL.disallow
ファイルまたは特定の users.COMMAND.disallow ファイルにリストしておく必要があります。ユーザーのボリュームへのアクセスが許可されるほかのユーザーの定義を参照してください。
目標が特定のユーザーに対してアクセスを許可し、ほかのすべてのユーザーに対してアクセスを禁止することである場合は、「[NOACCESS
]」を選択します。
これには、特定のユーザーを users.ALL.allow ファイルまたは特定の users.COMMAND.allow
ファイルにリストしておく必要があります。ユーザーのボリュームへのアクセスが許可されるほかのユーザーの定義を参照してください。
ボリュームへのアクセスが拒否されたインスタンスをログに記録する場合は、そのプロンプトに応答して「[TRUE]」を選択します。
ボリュームアクセスを有効または無効にした場合は常に、変更を有効にするために ACSLS を再起動する必要があります。
Associating a client identity with a user name
すべてのクライアントアプリケーションが ACSLS リクエストパケットでユーザー ID を渡すわけではありません。クライアントがユーザー名で識別されない場合は、ユーザー ID を割り当てることできます。
access_control
構成ディレクトリに移動します。
$ACS_HOME/data/external/access_control.
internet.addresses という名前でファイルを作成するか、または internet.addresses.SAMPLE
ファイルをコピーします。
このファイル内に、クライアントごとのレコードを作成します。各レコードには、クライアント IP アドレスと、それに続く対応するユーザー名の少なくとも 2 つのフィールドが含まれます。コメントのための追加フィールドを含めることができます。
次の例に示すように、各フィールドをスペースまたはタブで区切ります。
192.0.2.1 ulyssis payroll department
クライアントとユーザーの関連付けは、使用しているクライアントアプリケーションと同じ数だけ作成できます。
クライアントアプリケーションが ACSLS リクエストでユーザー名を渡す場合は、internet.addresses ファイルが指定されている IP アドレスでユーザー名を認証し、両方のフィールドがリクエストパケット内の値と一致しない場合はアクセスを拒否します。複数のクライアントが共通のプラットフォームからホストされている場合は、このファイル内に同じ IP アドレスが複数回含まれている可能性があるため、このアドレスをその IP アドレスに正しく適用されるものと同じ数のユーザー名に関連付けることができます。
クライアントアプリケーションがリクエストでユーザー名を渡さない場合は、internet.addresses
ファイルがそのクライアントのユーザー名を確立します。この場合は、どのクライアント IP アドレスにも 1 つのユーザー名しか関連付けることができません。
internet.addresses
ファイルへの更新をすべて保存します。
acsss_config
を実行します。
「Option 6 - "Rebuild Access Control Information"」を選択します。
ACSLS は、この変更を動的に認識します。
TCP/IP を使用しない SNA および OSLAN クライアントの場合は、access_control
ディレクトリ内の lu62.names
または adi.names
ファイルを参照してください。
ユーザーによって所有されているボリュームへのアクセスをほかのユーザーに許可するには:
access_control
ディレクトリ内にファイル users.ALL.allow
または users.ALL.disallow
を作成します。
テンプレート users.
SAMPLE.allow
または users.
SAMPLE.disallow
をコピーできます。
このファイルに所有者ごとのレコードを追加し、所有者のユーザー ID を左マージンに置きます。
影響を受けるユーザーを各所有者と同じ行に指定します。
次の例に示すように、各ユーザー名をスペースまたはタブで区切ります。
owner_john user-Allie user-andre
u
sers.allow
および users.disallow
ファイルにリストされているユーザー名は、大文字小文字は関係なく、一意である必要があります。ユーザー名の大文字小文字は無視されます。
所有者と同じ行にリストされていないユーザーには、所有者のボリュームへのデフォルトの (ACCESS
または NOACCESS
) 関係が与えられます。
注:
同じコマンドまたは ALL に対する users.COMMAND.allow ファイルと users.COMMAND.disallow ファイルの両方に同じowner_ID
と user_ID
のペアを含めることはできません。また、同じ users.COMMAND.allow および users.COMMAND.disallow ファイル内に重複した owner_ID
と user_ID
のペアを含めることもできません。これには、同じ行での同じ user_ID
の繰り返しが含まれます。
1 人の所有者に対して許可されるユーザーの数が多すぎて 1 行に収まらない場合は、許可されるユーザーのリストを以降の行に続けることができます。各行が所有者 ID で始まる必要があります。
オプションで、定義したボリュームアクセスポリシーの例外を確立できます。
ユーザーには一般に、アクセス制御の下にあるボリュームへのフルアクセスが許可されるか、またはどのアクセスも許可されません。ただし、ユーザーに、ほかのユーザーのボリュームへの特定の制限されたアクセスを許可できます。
たとえば、特定のユーザーによって所有されているボリュームのマウントまたはマウント解除はできないが、これらのボリュームの照会をすべてのユーザーに許可するポリシーを設定できます。例外は、アクセス制御によって影響を受けるすべてのコマンドに適用できます。
特定のコマンドに対するボリュームアクセスポリシーの例外を構成するには:
users.COMMAND.allow
または users.COMMAND.disallow
ファイルを作成する必要があります (ここで、COMMAND は、許可または制限する特定のコマンドに置き換えられます)。
users.COMMAND.allow
および users.COMMAND.disallow
ファイルには、下に示されているものとまったく同じように指定された名前 (コマンド名は大文字) を持つコマンドコンポーネントが含まれている必要があります。コマンドのその他のバリアント (QUERY_VOLUME
など) へのアクセスの制御はサポートされていません。
DISMOUNT EJECT LOCK MOUNT (1) MOUNT_READONLY (2) QUERY REGISTER SET_CLEAN SET_SCRATCH UNLOCK
注:
MOUNT (1) - MOUNT
ポリシーは、mount scratch にも適用されます。ポリシーは、mount readonly には適用されません
MOUNT_READOLNY
(2) - mount readonly のためのポリシーは、mount とは別に定義されています。
所有者 ID と許可されるユーザー ID のペアが重複していてはいけないこと、および許可されるユーザーのリストを以降の行に続けることに関する上の考慮事項は、禁止されるユーザーのリストにも適用されます。
所有者ごとに、所有者の名前を左マージンに置き、それに続けてポリシーが適用されるユーザーを並べます。
定義するポリシーへの更新をすべて保存します。
acsss_config
を実行します
「Option 6 - "Rebuild Access Control Information"」を選択します。
ACSLS は、この変更を動的に認識します。
ボリュームアクセス制御は、明示的な所有権を持つボリュームにのみ適用されます。ライブラリ内の所有されていないボリュームは、すべてのユーザーからアクセスできます。ボリューム所有権を明示的に設定するには、cmd_proc インタフェースを使用します。
ACSSA>set owner "daffy" volume V00100-V00199 Set: owner set for volumes V00100-V00199 Set: Set completed, Success.
空の文字列を使用すると、同様の方法で所有権を削除できます。
ACSSA> set owner "" volume V00100-V00199 Set: owner set for volumes V00100-V00199
この操作によって、範囲内のすべてのボリュームから所有権がクリアされます。詳細は、set ownerを参照してください。
ボリューム所有権は、watch_vols ユーティリティーで自動的に設定できます。詳細は、watch_volsを参照してください。
所有権を自動的に設定および削除するためのポリシーは、ACSLS でも定義できます。たとえば、マウントされたすべてのスクラッチボリュームが、それをマウントしたユーザーによって所有されるようになるポリシーを設定できます。それ以降、そのボリュームはそのユーザーによって所有されます。同じポリシーを、そのボリュームがスクラッチステータスに戻された場合は常に所有権を削除するように拡張することもできます。ポリシーを記述して、挿入されたすべてのボリュームがデフォルトユーザーか、その挿入をリクエストしたユーザーか、またはそのボリュームが以前に所有されていた場合は以前の所有者に割り当てられるようにもできます。この機能によって、非常に高い柔軟性が提供されます。
所有権ポリシーは、access_control ディレクトリ内に存在する ownership.assignments
ファイルで定義されます。このファイル内のポリシーを、enter、automatic enter、set scratch
、または mount scratch
操作ごとに所有権を自動的に割り当てまたは割り当て解除するように設定できます。ownership.assignments
ファイルでは、デフォルトの所有者を定義できます。あるボリュームでこれらのいずれかの操作が実行された場合は常に、その所有権を次に割り当てることができます。
Owner_default
(デフォルトの所有者)
同じ (以前の所有者)
リクエスタ (現在のリクエストを発行したユーザー)
未所有 (ボリュームの所有権を取り消します)
注:
所有権ポリシーを定義するための手順については、ownership.assignments
ファイルで詳細に説明されています。このファイルには、ボリューム所有権を設定するために使用できるコマンドの完全なリストが含まれています。定義するポリシーへの更新をすべて保存します。
acsss_config
を実行します
「Option 6 - Rebuild Access Control Information」を選択します。
ACSLS は、この変更を動的に認識します。
ボリュームアクセス制御では、次のコマンドがサポートされています。
dismount* display eject enter lock set_clean set_scratch mount query_mount query_scratch query_volume unlock
force オプションが StorageTek ACSLS にボリューム ID を無視し、ボリュームを無条件にマウント解除するよう指示するため、dismount force
にアクセス制御は適用されません。
次の表は、ボリュームアクセス制御
が有効になっているときに適用されるコンテキストについて要約したものです。
ボリュームに対するデフォルトアクセスは ACCESS | アクセスが 許可される |
アクセスが 拒否される |
---|---|---|
アクセスは |
X |
|
指定されたボリュームは所有されていない |
X |
|
ユーザーはボリュームの所有者である |
X |
|
ユーザーは |
X |
|
ユーザーが |
X |
コマンドアクセス制御では、ACSLS 管理者が特定のクラスのコマンドを、ネットワーク全体にわたる特定のクライアントアプリケーションまたは特定のユーザーに制限できます。制御されたアクセスは、ACSAPI 経由で送信されるユーザーコマンドにのみ適用され、cmd_proc を使用してコマンドを送信するローカルユーザーには適用されません。
ACSLS でコマンドアクセス制御を構成するプロセスには、3 つの手順が含まれます。
ACSLS でコマンドアクセス制御をはじめて構成する場合は、次の手順に従います。
ACSLS でコマンドアクセス制御を有効にします。
クライアント ID をユーザー名に関連付けます。
どのユーザーがどのようなコマンドを使用できるかを定義します。
ACSLS でコマンドアクセス制御を有効にするには、
構成ユーティリティー acsss_config
を実行します。
メインメニューが表示されます。
「Option 4 - Set Access Control Variables」を選択します。
各変数が一度に 1 つずつ表示され、その現在の設定が表示されます。
現在の設定またはデフォルト設定を受け入れるには、Enter をクリックします。
ユーティリティーにメッセージ Access control is active for commands
が表示されたら、「TRUE」を選択して Enter をクリックします。
メッセージ「Default access for commands」が表示されたら、次を実行します。
すべてのユーザーにすべてのコマンドへのアクセスを許可する場合は、「ACCESS
」を選択します。
特定のユーザーのコマンド発行をブロックするには、それらのユーザーを command.
ALL.disallow
ファイルまたは特定の command.XXX.disallow ファイルにリストしておく必要があります。ここでは:
XXX は、アクセス制御の対象となるコマンドです
コマンドへのユーザーアクセスを拒否する場合は、「[NOACCESS
]」を選択します。
特定のユーザーのコマンド発行を許可するには、それらのユーザーを command.
ALL.allow
ファイルまたは特定の command.
XXX.allow
ファイルにリストしておく必要があります。
注:
コマンドへのアクセスが拒否されたインスタンスをログに記録する場合は、そのプロンプトに応答して「TRUE」を入力します。注:
コマンドアクセスを有効または無効にした場合は常に、変更を有効にするために ACSLS を再起動する必要があります。このプロセスは、コマンドアクセス制御を有効にしたときに選択したデフォルトの動作によって異なります。$ACS_HOME/data/external/access_control
ディレクトリ内にポリシーファイルを作成する必要があります。
上で定義したデフォルトの動作が [NOACCESS] である場合は、すべての ACSLS コマンドへのアクセスを許可する各クライアントのユーザー ID を含む command.ALL.allow
ファイルを作成する必要があります。各ユーザー ID をこのファイル内の個別の行にリストするようにしてください。
特定のユーザーに特定のコマンドのみを許可する場合は、そのユーザーが実行を許可されるコマンドごとに command.
XXX
.allow
ファイルを作成する必要があります。たとえば、特定のユーザーにボリュームをライブラリに挿入する権限を許可するには、command.ENTER.allow
という名前のファイルを作成し、認定された各「挿入」ユーザーの ID をファイル内の個別の行にリストします。
上で定義したデフォルトの動作が [ACCESS] である場合は、すべての ACSLS コマンドへのアクセスを許可しない各クライアントのユーザー ID を含む command.ALL disallow
ファイルを作成する必要があります。各ユーザー ID をこのファイル内の個別の行にリストするようにしてください。
注:
同じコマンドまたは ALL に対するcommand
.XXX
.allow
ファイルと command
.XXX
.disallow
command.XXX
ファイルの両方に同じ user_ID を含めることはできません。command
.XXX
.allow
および command
.XXX
.disallow
ファイルには、下に示されているものとまったく同じように指定された名前 (コマンド名は大文字) を持つコマンドコンポーネントが含まれている必要があります。コマンドのその他のバリアント (QUERY_VOLUME
など) へのアクセスの制御はサポートされていません。
AUDIT CANCEL CHECK_REGISTRATION CLEAR_LOCK DEFINE_POOL DELETE_POOL DISMOUNTDISMOUNT_FORCE DISPLAY EJECT ENTER (1) IDLE LOCK MOUNT (2) QUERY QUERY_LOCK REGISTER SET_CAP SET_CLEAN SET_OWNER SET_SCRATCH START UNLOCK UNREGISTER VARY
注:
ENTER (1) - ポリシーは仮想挿入および手動挿入に適用されますが、自動挿入には適用されません。MOUNT (2) - ポリシーは、mount scratch
および mount readonly
にも適用されます。次の表は、コマンドアクセスがいつ許可されるかを判定するためのクイックリファレンスとして使用してください。
コマンドに対するデフォルトアクセスは NOACCESS | アクセスが 許可される |
アクセスが 拒否される |
---|---|---|
リクエストは |
X |
|
user_ID は |
X |
|
user_ID は |
X |
|
- - その他のすべての状態 - - |
X |
コマンドに対するデフォルトアクセスは ACCESS | アクセスが 許可される |
アクセスが 拒否される |
---|---|---|
リクエストは |
X |
|
user_ID は |
X |
|
user_ID は |
X |
|
- - その他のすべての状態 - - |
X |
定義するポリシーへの更新をすべて保存します。
acsss_config
を実行します
「Option 6 - "Rebuild Access Control Information"」を選択します。
ACSLS は、この変更を動的に認識します。
ユーザーがアクセスを拒否されたために失敗したすべてのトランザクションをログに記録するためのポリシーを設定できます。メッセージには、ユーザー名と試行されたコマンドが表示されます。
アクセス制御のロギングを有効にするには:
acsss_config
を実行し、「Option 4 - "Set Access Control Variables"」を選択します
「Messages will be logged when access to commands or volumes is denied」のプロンプトで、[FALSE] を [TRUE] に変更します。
「Option 6 - "Rebuild Access Control Information"」を選択します。
ACSLS はこの変更を認識し、コマンドのリクエストが拒否されるたびにロギングを開始します。