CA ControlMinder는 리소스에 대한 사용자의 액세스를 제어합니다. 각 리소스는 리소스 유형을 식별하는 클래스에 속합니다. 예를 들어 TERMINAL 클래스의 레코드 또는 개체는 사용자가 터미널에서 로그인할 수 있는지 여부를 제어합니다. 사용자는 요청된 방식으로 특정 리소스에 액세스하는 데 필요한 권한이 있는 경우에만 해당 리소스에 액세스할 수 있습니다. 예를 들어 사용자가 터미널에서 로그인하기 위해서는 해당 사용자에게 터미널에 대한 읽기 액세스 권한을 할당하는 규칙(레코드)이 CA ControlMinder 데이터베이스에 있어야 합니다. 규칙은 명시적으로 할당되지 않아도 됩니다. 즉, 그룹 구성원 자격이나 기본 액세스 설정을 사용하여 권한을 할당할 수도 있습니다.
CA ControlMinder 함수는 권한 부여 및 인증 API 내에서 호출되어 로컬 스테이션에 있는 seosd와 통신합니다. CA ControlMinder는 다음 유형의 프로세스를 지원합니다.
참고: MUSAS와 서버는 동의어입니다. 이 안내서에서는 서버라는 용어를 사용합니다.
CA ControlMinder를 사용하여 응용 프로그램의 리소스를 보호하려면 다음을 수행하십시오.
참고: CA ControlMinder에 새 리소스 클래스를 추가하는 방법에 대한 자세한 내용은 "UNIX Utilities Guide"(UNIX 유틸리티 안내서)의 seclassadm 유틸리티 부분을 참조하십시오.
서버와 일반 응용 프로그램은 모두 동일한 라이브러리를 사용합니다.
CA ControlMinder 함수를 사용하려면 C 코드에 다음 행을 포함해야 합니다.
#include <api_auth.h>
권한 부여 및 인증 AIP의 모든 함수 이름에는 SEOSROUTE_functionName 형식이 사용됩니다.
이 단원에는 권한 부여 및 인증 AIP 함수 중 일부의 사용 방법을 보여 주는 샘플 코드가 포함되어 있습니다. 시스템 드라이브의 다음 디렉터리에는 추가 예제가 제공되어 있습니다.
참고: CA ControlMinder 클래스 및 개체와 사용자 정의 리소스 추가 방법에 대한 자세한 내용 참조 안내서를 참조하십시오.
모든 응용 프로그램은 CA ControlMinder 권한 부여 및 인증 API를 사용하여 사용자가 리소스에 액세스할 수 있는지 여부를 확인할 수 있습니다. 응용 프로그램에서 리소스 액세스 검사를 수행할지 여부는 사용자가 결정합니다. CA ControlMinder 권한 부여 메커니즘을 사용하는 응용 프로그램을 작성하려면 적절한 매개 변수를 사용하여 SEOSROUTE_RequestAuth라는 단일 API 함수를 호출하고 반환 값을 확인하기만 하면 됩니다.
다음 프로그램은 사용자가 리소스에 액세스할 수 있는지 여부를 확인하는 방법을 보여 줍니다.
UNIX 예제
사용자가 su root 명령을 사용하여 루트를 대리하는 것을 CA ControlMinder가 허용하는지 여부를 테스트하려면 다음 명령을 입력하십시오.
>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; /* The result of request structure */
if (argc != 3)
return ShowUsage();
memset(&access, 0, sizeof(access) );
access.accs = SEOS_ACCS_READ;
rv = SEOSROUTE_RequestAuth( argv[1], /* Class Name */
argv[2], /* Resource Name */
SEOSAPI_AUTH_CURRACEE, /*Myself*/
&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 함수는 클라이언트에 대한 ACEE(Accessor Element Entry) 핸들을 응용 프로그램에 제공합니다.
그러면 이후부터 클라이언트가 CA ControlMinder 권한 부여 검사 모듈을 호출할 때마다 SEOSROUTE_VerifyCreate 함수가 반환한 ACEE 핸들이 사용됩니다. 응용 프로그램은 이러한 핸들을 주의 깊게 유지 관리해야 합니다.
클라이언트가 응용 프로그램과의 연결을 해제하거나 응용 프로그램이 클라이언트에 대한 서비스 제공을 종료하면 응용 프로그램은 "유사 로그아웃"을 수행하여 ACEE 핸들을 해제해야 합니다. 유사 로그아웃을 수행하려면 SEOSROUTE_VerifyDelete 함수를 호출하십시오. 핸들이 해제되지 않은 경우 시스템 리소스와 CA ControlMinder 내부 리소스는 모두 ACEE 핸들에 할당된 상태로 유지됩니다. 이러한 리소스가 할당된 상태로 유지되면 불필요한 할당으로 인해 시스템 속도가 느려지고 시스템에 로그인하지 못할 수 있습니다.
유효한 UID 0(루트)에서 실행되는 프로세스나 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;
/* The result of request structure */
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], /* Class Name */
argv[2], /* Resource Name */
usr_acee, /* User's ACEE Handle */
&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입니다.
|
Copyright © 2013 CA.
All rights reserved.
|
|