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。
保留所有权利。
|
|