7 访问控制

访问控制提供以下各项:

  • 卷访问控制允许将卷分配给一个客户机应用程序。可以允许其他客户机访问该客户机的卷。

  • 命令访问控制允许管理员将特定的 ACSLS 命令分配给特定的客户机。

卷访问控制命令访问控制均适用于通过 ACSAPI 提交请求的客户机应用程序用户。

访问控制不限制使用 cmd_proc 或 ACSLS GUI 提交磁带库请求的管理用户的访问权限。

卷访问控制

启用后,由某一特定用户拥有的卷仅可供该用户或其他可信用户访问。

首次针对卷访问控制配置 ACSLS 时,请执行以下步骤:

  1. 在 ACSLS 中启用 volume access 控制。

  2. 将客户机应用程序与用户名关联。

  3. 定义有权访问该用户的卷的其他用户。

  4. 建立卷的所有权。

启用卷访问控制

要在 ACSLS 中启用 volume access 控制,请执行以下操作:

  1. 运行配置实用程序 acsss_config

    此时将显示主菜单。

  2. 选择选项 4 "Set Access Control Variables"。

    每次列出一个变量,并显示其当前设置。

  3. 单击 Enter 键接受当前设置或默认设置。

  4. 当实用程序显示 Access control is active for volumes 消息时,选择 [TRUE] 并单击 Enter 键。

  5. 当实用程序显示 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。

  1. 转到 access_control 配置目录:

    $ACS_HOME/data/external/access_control.  
    
  2. 创建名为 internet.addresses 的文件或复制 internet.addresses.SAMPLE 文件。

  3. 在此文件中,为每个客户机创建一条记录。每条记录至少包含两个字段:客户机 IP 地址,后跟对应的用户名。您可以包括额外的字段进行注释。

    使用空格或制表符分隔这些字段,如以下示例所示:

    192.0.2.1  ulyssis   payroll department 
    

    您可以创建与客户机应用程序一样多的客户机用户关联。

    • 当客户机应用程序使用 ACSLS 请求传递用户名时,internet.addresses 文件将通过指定的 IP 地址验证用户名,并在这两个字段与请求包中的值均不一致时拒绝访问。如果多个客户机通过一个公用平台托管,则此文件中可能会多次出现相同的 IP 地址,且该地址可与正确应用于该 IP 地址的用户名一样多的用户名关联。

    • 如果客户机应用程序不使用该请求传递用户名,则 internet.addresses 文件将为该客户机建立用户名。在这种情况下,只有一个用户名可与任何客户机 IP 地址关联。

  4. 将所有更新保存到 internet.addresses 文件中:

    • 运行 acsss_config

    • 选择选项 6 "Rebuild Access Control Information"。

    ACSLS 将动态识别所做的更改。

    对于未使用 TCP/IP 的 SNA 和 OSLAN 客户机,请参阅 access_control 目录中的 lu62.namesadi.names 文件。

定义可以访问该用户的卷的其他用户

要授权其他用户访问某用户拥有的卷,请执行以下操作:

  1. access_control 目录中,创建 users.ALL.allowusers.ALL.disallow 文件。

    可以复制模板 users.SAMPLE.allow 或 users.SAMPLE.disallow。

  2. 在该文件中为每个所有者添加一条记录,并将所有者的用户 ID 放在左边界。

  3. 在与每位所有者相同的行中指定受影响的用户。

  4. 使用空格或制表符分隔这些用户名,如以下示例所示:

    owner_john   user-Allie   user-andre  
    

    users.allowusers.disallow 文件中列出的用户名必须唯一(忽略大小写)。用户名中字符的大小写将被忽略。

    与所有者不在同一行列出的用户与所有者的卷具备默认(ACCESSNOACCESS)关系。

    注:

    对于同一命令或 ALLusers.COMMAND.allowusers.COMMAND.disallow 文件中不能同时存在相同的 owner_IDuser_ID 对。此外,同一 users.COMMAND.allowusers.COMMAND.disallow 文件中,不能存在重复的 owner_IDuser_ID 对。这包括在同一行中重复相同的 user_ID

    如果一行无法容纳所有者的许可用户,则许可用户的列表可以继续显示在后续行中。每行必须以所有者 ID 开头。

  5. 可以选择为您定义的卷访问策略制定例外情况。

    通常,对于处于访问控制下的卷,允许用户具有完全访问权限或不具任何访问权限。但是,可以允许用户对其他用户的卷进行一定程度的受限访问。

    例如,您可以设置策略允许任何用户查询由特定用户拥有的卷,即便他们没有挂载或卸载这些卷也是如此。例外情况可应用于任何受访问控制影响的命令:

    为特定命令配置卷访问策略的例外情况:

    • 必须创建 users.COMMAND.allowusers.COMMAND.disallow 文件(其中,COMMAND 将替换为要授予或限制的特定命令)。

      users.COMMAND.allowusers.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 对和继续在后续行中显示许可用户列表的注意事项也同样适用于非许可用户的列表。

    • 对于每位所有者,请将所有者的名称放置在左边界,后跟策略适用的用户。

  6. 将所有更新保存至您定义的策略中:

    • 运行 acsss_config

    • 选择选项 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 scratchmount scratch 操作自动分配或取消分配所有权。ownership.assignments 文件允许定义默认所有者。只要卷遇到其中任一操作,其所有权即可分配给:

  • Owner_default(默认所有者)

  • 同一人(上一个所有者)

  • 请求者(发出当前请求的用户)

  • 无所有者(从卷取消所有权)

    注:

    ownership.assignments 文件中详细介绍了定义所有权策略的说明。此文件包括可用于设置卷所有权的命令的完整列表。
  • 将所有更新保存至您定义的策略中:

    • 运行 acsss_config

    • 选择选项 6 "Rebuild Access Control Information"。

    ACSLS 将动态识别所做的更改。

验证所有权

要验证所有权,可以使用 owner_id.volrpt 模板运行 volrpt

cd ~acsss/data/external/volrpt 
volrpt -f owner_id.volrpt 

这将显示磁带库中列出了关联所有者的所有卷。

卷访问摘要

卷访问控制支持以下命令:

dismount* 
display 
eject 
enter 
lock 
set_clean 
set_scratch 
mount 
query_mount 
query_scratch 
query_volume 
unlock 

访问控制不适用于 dismount force,因为强制选项可指示 StorageTek ACSLS 忽略卷 ID 且无条件卸载卷。

下表汇总了启用 volume access control 时应用的上下文。

表 7-1 已启用卷访问

卷的默认访问权限是 ACCESS 允许
访问
拒绝
访问

通过 cmd_proc 访问

X

 

指定卷无所有者

X

 

用户是卷的所有者

X

 

用户与 users.ALL.disallow
的所有者关联

 

X

如果用户与 users.ALL.disallow
的所有者不关联

X

 

表 7-2 已启用卷访问

卷的默认访问权限是 NOACCESS 允许
访问
拒绝
访问

通过 cmd_proc 访问

X

 

指定卷无所有者

X

 

用户是卷的所有者

X

 

用户与 users.ALL.allow
的所有者关联

X

 

如果用户与 users.ALL.allow
的所有者不关联

 

X


命令访问控制

命令访问控制允许 ACSLS 管理员将特定类的命令限于网络中的特定客户机应用程序或特定用户。受控访问仅适用于通过 ACSAPI 提交的用户命令,不适用于使用 cmd_proc 提交命令的本地用户。

针对命令访问控制配置 ACSLS 的过程包括三个步骤。

首次针对命令访问控制配置 ACSLS 时,请执行以下步骤:

  1. 在 ACSLS 中启用命令访问控制。

  2. 将客户机身份与用户名关联。

  3. 定义哪些命令适用于哪些用户。

启用命令访问控制

要在 ACSLS 中启用命令访问控制,请执行以下操作:

  1. 运行配置实用程序 acsss_config

    此时将显示主菜单。

  2. 选择选项 4 "Set Access Control Variables"。

    每次列出一个变量,并显示其当前设置。

  3. 单击 Enter 键接受当前设置或默认设置。

  4. 当实用程序显示 Access control is active for commands 消息时,选择 TRUE 并单击 Enter 键。

  5. 显示 "Default access for commands" 消息时:

    • 如果要允许所有用户访问所有命令,请选择 ACCESS

      要阻止特定用户发出命令,必须在 command.ALL.disallow 文件或特定的 command.XXX.disallow 文件中列出这些用户,其中:

      XXX 是指出访问控制所针对的命令

    • 如果要拒绝用户访问命令,请选择 [NOACCESS]。

      要允许特定用户发出命令,必须在 command.ALL.allow 文件或特定的 command.XXX.allow 文件中列出这些用户。

      注:

      如果要记录拒绝访问命令的实例,请输入 "TRUE" 响应该提示。

      注:

      每次启用或禁用命令访问权限时,必须重新启动 ACSLS 才能使更改生效。

将客户机身份与用户名关联

请参阅Associating a client identity with a user name下的过程。

定义哪些命令适用于哪些用户

此过程取决于您在启用命令访问控制时选择的默认行为。必须在 $ACS_HOME/data/external/access_control 目录中创建策略文件。

  • 如果您在上面定义的默认行为是 [NOACCESS],则必须创建 command.ALL.allow 文件,其中包含每个有权访问所有 ACSLS 命令的客户机的用户 ID。每个用户 ID 均应在该文件的单独一行中列出。

    如果只希望向特定的用户授予特定的命令,则必须为允许用户执行的每个命令创建 command.XXX.allow 文件。例如,要授权特定用户将卷装入磁带库,可以创建名称为 command.ENTER.allow 的文件,并在该文件的单独一行中列出每个合格 'enter' 用户的 ID。

  • 如果您在上面定义的默认行为是 [ACCESS],则必须创建 command.ALL disallow 文件,其中包含每个无权访问所有 ACSLS 命令的客户机的用户 ID。每个用户 ID 均应在该文件的单独一行中列出。

    注:

    对于同一命令或 ALLcommand.XXX.allowcommand.XXX.disallow command.XXX 文件中不能同时存在相同的 user_ID。

命令访问控制 allow 和 disallow 文件的命令名称

command.XXX.allowcommand.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 scratchmount readonly

使用下表作为确定何时允许访问命令的快速参考。

表 7-3 已启用命令访问

命令的默认访问权限是 NOACCESS 允许
访问
拒绝
访问

请求从 cmd_proc 中输入

X

 

user_ID 在 command.COMMAND.allow 中列出

X

 

user_ID 在 command.ALL.allow 中列出

X

 

- 所有其他情况 -

 

X


表 7-4 已启用命令访问

命令的默认访问权限是 ACCESS 允许
访问
拒绝
访问

请求从 cmd_proc 中输入

X

 

user_ID 在 command.COMMAND.disallow 中列出

 

X

user_ID 在 command.ALL.disallow 中列出

 

X

- 所有其他情况 -

X

 

  • 将所有更新保存至您定义的策略中:

    • 运行 acsss_config

    • 选择选项 6 "Rebuild Access Control Information"。

    ACSLS 将动态识别所做的更改。

记录访问控制消息

您可以设置策略来记录所有因用户访问被拒绝而失败的事务。消息将显示用户名和尝试的命令。

要启用访问控制日志记录,请执行以下操作:

  1. 运行 acsss_config,然后选择选项 4 "Set Access Control Variables"

  2. 在以下提示符下将 [FALSE] 更改为 [TRUE]:"Messages will be logged when access to commands or volumes is denied"。

  3. 选择选项 6 "Rebuild access control information"。

ACSLS 将识别所做的更改,并开始在每次命令请求被拒绝时进行日志记录。