CA ControlMinder 管理用户对资源的访问。 每个资源都属于一个标识资源类型的类。 例如,TERMINAL 类的记录或对象管理用户从终端登录的能力。 仅当用户拥有以请求的方式访问资源的权限时,该用户才能访问特定资源。 例如,仅当 CA ControlMinder 数据库中存在向用户分配终端读取访问权限的规则(记录)时,用户才能从终端登录。 请注意,规则不必是显式分配,您也可以使用组成员资格或默认访问设置来分配授权。
授权和身份验证 API 中的 CA ControlMinder 函数与本地工作站上的 seosd 进行通信。 CA ControlMinder 支持以下类型的进程:
注意:术语 MUSAS 和服务器是同义词。 在本指南中,我们使用服务器。
要使用 CA ControlMinder 来保护应用程序的资源,请执行以下操作:
注意:有关将新的资源类添加到 CA ControlMinder 的详细信息,请参阅 UNIX《Utilities Guide》中的 seclassadm 实用程序。
服务器和普通应用程序使用相同的库。
要使用任何 CA ControlMinder 函数,您必须在 C 代码中包含以下行:
#include <api_auth.h>
授权和身份验证 API 中所有函数的名称都采用 SEOSROUTE_functionName 形式。
本部分包括演示如何使用某些授权和身份验证 API 函数的示例代码。 在系统驱动器的以下目录中提供其他示例:
注意:有关 CA ControlMinder 类和对象,以及添加用户定义资源的详细信息,请参阅《参考指南》。‑
任何应用程序都可以使用 CA ControlMinder 授权和身份验证 API 来检查用户是否可以访问资源。 您决定是否在应用程序中执行资源访问权限检查。 要编写使用 CA ControlMinder 授权机制的应用程序,您只需调用名为 SEOSROUTE_RequestAuth、具有适当参数的单个 API 函数并检查返回值。
以下程序演示如何检查用户是否可以访问资源:
UNIX 示例
要测试 CA ControlMinder 是否允许您使用 su root 命令代理 root,请键入以下命令:
>upexamp SURROGATE USER.root #include <stdio.h> #include <string.h> #include <memory.h> #include “api_auth.h” int ShowUsage(void) { fprintf( stderr, “Usage:\n” “ upexamp Class‑Name Resource‑Name\n”); return 1; } int main(int argc, char *argv[]) { int rv; char buff[SEOSAPI_AUTH_MSGLEN]; SEOS_ACCESS access; API_AUTH_RES result; /* 请求结构的结果 */ if (argc != 3) return ShowUsage(); memset(&access, 0, sizeof(access) ); access.accs = SEOS_ACCS_READ; rv = SEOSROUTE_RequestAuth( argv[1], /* 类名 */ argv[2], /* 资源名称 */ SEOSAPI_AUTH_CURRACEE, /*我自己*/ &access, SEOSAPI_AUTH_LOGNONE, &result, buff); printf( “Result %s (0x%X)\n”, buff, rv ); return 0; }
在编译和链接此示例后,可以检查您是否已获得访问特定资源的授权。
Windows 示例
要测试 CA ControlMinder 是否允许您访问已明确拒绝您访问的文件,请键入以下命令:
newfile D:\Winnt\system32\notepad.exe defaccess(all) authorize file D:\Winnt\system32\notepad.exe \ uid(your_UID) access(none) >upexamp FILE D:\Winnt\system32\notepad.exe
以下部分说明该程序使用的文件。
该程序使用以下文件:
其中,ACDir 是 CA ControlMinder 的安装目录,默认为 /opt/CA/AccessControl
如果系统上已安装 CA ControlMinder,则程序使用以下文件:
其中,ACDir 是 CA ControlMinder 的安装目录,默认为 C:\Program Files\CA\Access Control
授权和身份验证 API 包括用于应用程序服务器的接口。 假定服务器应用程序向许多用户提供服务。 只有服务器应用程序可以代表用户(包括与进程相关的用户)执行授权检查。
服务器应用程序必须对每个新连接的客户端执行“伪登录”。‑ 通过调用 SEOSROUTE_VerifyCreate 函数执行伪登录。‑ SEOSROUTE_VerifyCreate 函数向应用程序提供客户端的 Accessor Element Entry (ACEE) 句柄。
从现在起,由 SEOSROUTE_VerifyCreate 函数返回的 ACEE 句柄执行对客户端的 CA ControlMinder 授权检查模块的各次调用。 应用程序应仔细维护这些句柄。
客户端断开与应用程序的连接时,或应用程序向客户端提供服务后,应用程序必须执行“伪注销”来释放 ACEE 句柄。‑ 要执行伪注销,请调用 SEOSROUTE_VerifyDelete 函数。‑ 如果未释放句柄,则仍会将系统资源和 CA ControlMinder 内部资源分配给 ACEE 句柄。 如果保持分配这些资源,则不必要的分配可能会导致系统运行缓慢,从而可能导致无法登录系统。
只有有效 UID 0 (root) 运行的进程或具有 SERVER 属性的用户可以使用除 SEOSAPI_AUTH_CURRACEE 之外的句柄发出 SEOSROUTE_VerifyCreate、SEOSROUTE_VerifyDelete 和 SEOSROUTE_RequestAuth 调用。
示例
以下程序演示如何使用 CA ControlMinder 来管理多用户进程的安全性方面:‑
#include <stdio.h> #include <string.h> #include <memory.h> #include “api_auth.h” int ShowUsage(void) { fprintf( stderr, “Usage:\n” “ musexamp Class‑Name Resource‑Name User‑Name\n”); return 1; } int main(int argc, char *argv[]) { int rv; int usr_acee; char msg_buff[SEOSAPI_AUTH_MSGLEN]; SEOS_ACCESS access; API_AUTH_RES result; /* 请求结构的结果 */ if (argc != 4) return ShowUsage(); memset(&access, 0, sizeof(access) ); access.accs = SEOS_ACCS_READ | SEOS_ACCS_WRITE | SEOS_ACCS_EXEC; rv = SEOSROUTE_VerifyCreate( argv[3], NULL, NULL, 0, NULL, SEOSAPI_AUTH_LOG, &usr_acee, &result, msg_buff ); if (rv) { printf( “Return Value: 0x%08x\n” “Msg: '%s'\n”, rv, msg_buff ); return 1; } else printf( “Got ACEE handle for user '%s': %d\n”, argv[3], usr_acee ); rv = SEOSROUTE_RequestAuth(argv[1], /* 类名 */ argv[2], /* 资源名称 */ usr_acee, /* 用户的 ACEE 句柄 */ &access, 0, &result, msg_buff); if (rv) printf( “Return Value: 0x%08x\n” “Msg: '%s'\n”, rv, msg_buff ); else printf( “Pass !!!!\n” ); rv = SEOSROUTE_VerifyDelete( &usr_acee, 1, msg_buff ); if (rv) { printf( “Return Value: 0x%08x\n” “Msg: '%s'\n”, rv, msg_buff ); return 1; } else printf(“Released ACEE handle for user '%s': %d\n”, argv[3], usr_acee ); return 0; }
该程序使用以下文件:
其中,ACDir 是 CA ControlMinder 的安装目录,默认为 /opt/CA/AccessControl
假定系统上已安装 CA ControlMinder,则程序使用以下文件:
其中,ACDir 是 CA ControlMinder 的安装目录,默认为 C:\Program Files\CA\Access Control
版权所有 © 2013 CA。
保留所有权利。
|
|