KR20050022283A - 호스트된 리소스로의 위임된 관리 - Google Patents

호스트된 리소스로의 위임된 관리 Download PDF

Info

Publication number
KR20050022283A
KR20050022283A KR1020040057674A KR20040057674A KR20050022283A KR 20050022283 A KR20050022283 A KR 20050022283A KR 1020040057674 A KR1020040057674 A KR 1020040057674A KR 20040057674 A KR20040057674 A KR 20040057674A KR 20050022283 A KR20050022283 A KR 20050022283A
Authority
KR
South Korea
Prior art keywords
user
resource
perform
name
resources
Prior art date
Application number
KR1020040057674A
Other languages
English (en)
Other versions
KR101137049B1 (ko
Inventor
고시맨시프리안
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20050022283A publication Critical patent/KR20050022283A/ko
Application granted granted Critical
Publication of KR101137049B1 publication Critical patent/KR101137049B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/101Access control lists [ACL]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/102Entity profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/535Tracking the activity of the user
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2101Auditing as a secondary aspect
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)
  • Computer And Data Communications (AREA)
  • Telephonic Communication Services (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

분산형 컴퓨팅 환경에서 호스트된 리소스로의 액세스를 위임하는 시스템 및 방법이 설명된다. 일 태양에서, 서버는 한 세트의 리소스를 호스트한다. 서버는 호스트된 리소스들 중 하나에 대하여 연산을 수행하기 위한 요청을 사용자로부터 수신한다. 요청의 수신에 응답하여, 서버는, 사용자에게 이 연산을 수행하기 위한 권한이 위임되었는지의 여부를 판정한다. 위임된 권한은, 사용자가 서버에 대한 임의의 리소스와 관련된 관리자 그룹의 멤버인지의 여부와는 무관한다.

Description

호스트된 리소스로의 위임된 관리{DELEGATED ADMINISTRATION OF A HOSTED RESOURCE}
본 출원은, 본 출원의 양수인에게 양도되었으며 여기에서 참조하는, 2002년 10월 26일에 출원된 "Role-Based Authorization Management Framework"라는 명칭의 미국 특허출원 제 10/281,083호에 관련된다.
본 발명은 네트워크 서비스 제공자의 호스트된 리소스 관리에 관한 것이다.
웹 사이트 관리, 특히, 많은 ISP(Internet Service Provider) 설치를 관리하는 엔티티에 대한 웹 사이트 관리는 시간 소모적이며 고비용일 수 있다. 시간과 비용을 절감하기 위해, 많은 ISP들은, 개인 웹 사이트들을 희생시켜, 대형 컴퍼니 웹 사이트들만을 지원한다. 이에 대한 한가지 이유는, 컴퓨터 보안이 기업들과 다른 조직에 대해서 뿐만 아니라 개개인에 대해서도 점차 중요해지고 있기 때문이다. 이러한 보안 요구를 충족시키기 위해, 각각의 관리 시나리오에 대해 컴퓨터 및 웹 사이트 보안 전략이 선택되고 강제되어야 한다. 이러한 선택 및 강제로 인해, 개인 웹 사이트 지원은 상당히 노동 및 시간집약적이 되며 고비용화한다.
분산형 컴퓨팅 환경에서 호스트된 리소스로의 액세스를 위임하는 시스템 및 방법을 설명한다. 일 태양에서, 서버는 한 세트의 리소스들을 호스트한다. 서버는 사용자로부터 호스트된 리소스들 중 하나에 대하여 연산을 수행하라는 요청을 수신한다. 요청의 수신에 응답하여, 서버는, 그 연산을 수행하기 위한 권한이 사용자에게 위임되었는지의 여부를 판정한다. 위임된 권한은, 사용자가 서버의 리소스와 관련된 관리자 그룹(administrators group)의 멤버인지의 여부와 무관하다.
도면에서, 컴포넌트 참조 번호의 가장 높은 자릿수는, 그 컴포넌트가 처음으로 등장한 특정 도면을 식별한다.
웹 사이트에 대한 원격 관리를 위임하고 구현하기 위한, 신뢰할 수 있으며 확장가능하고 제어가 용이하며 안전한 시스템 및 방법을 설명한다. 특히, ISP 컴퓨터 서버 관리자는, 특정 웹 사이트의 관리 태스크를 실행이 인가된 사용자들에게 위임하기 위해, 다음에 설명한 IIS(Internet Information Services) DA(Delegation Administration) 프레임워크를 이용한다. 인가된 사용자로는, 예를 들어, ISP에 의해 호스트되는 개인 웹 사이트를 소유한 사용자를 들 수 있다.
사용자 인가는 호스트되는 웹 사이트와 관련된 특정한 애플리케이션 연산을 수행하기 위한 특정한 롤-기반의 액세스 허가(들)의 관점에서 판정된다. 이러한 IIS DA 프레임워크는, 상술한 바와 같이, 시간과 비용의 비효율성으로 인해 개인 웹 사이트가 지원되지 않는, 컴퓨터 보안에 관한 기존의 경향에서 벗어난다. 이에 대한 한가지 이유는, 호스트된 개인 웹 사이트가 수정되거나 테스트될 때마다 관리자가 관여(즉, 컴퓨터 보안 및 인가된 액세스를 보증)할 필요가 없기 때문이다. 이러한 수정으로는, 예를 들어, 웹 사이트상에 새로운 애플리케이션을 배치하는 것과 같은, 웹 사이트의 내용/기능 변경을 들 수 있다.
이제, 웹 사이트 관리를 위임하는 시스템 및 방법의 이들 및 다른 태양들을 보다 상세히 설명한다.
예시적인 연산 환경
유사한 참조 번호가 유사한 요소를 참조하는 도면들을 참조하면, 본 발명은 적당한 컴퓨팅 환경에 구현되는 것으로 도시되어 있다. 요구되는 것은 아니지만, 본 발명은 퍼스널 컴퓨터에 의해 실행되는, 프로그램 모듈과 같은, 컴퓨터-실행가능 명령의 일반적인 문맥에서 설명된다. 프로그램 모듈은 일반적으로, 특정한 태스크를 수행하거나 특정한 추상적 데이터형을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다.
도 1은 호스트된 리소스의 관리를 위임하기 위한 후술하는 시스템, 장치 및 방법이 구현될 수 있는 적당한 컴퓨팅 환경(120)의 일례를 도시한다. 예시적인 컴퓨팅 환경(120)은 적당한 컴퓨팅 환경의 일례일 뿐이며, 여기에서 설명하는 시스템 및 방법의 사용 또는 기능 범위를 한정하려는 것은 아니다. 컴퓨팅 환경(120)은 컴퓨팅 환경(120)에 도시된 컴포넌트들 중의 어느 하나 또는 컴포넌트들의 조합과 관련하여 어떠한 의존성 또는 요구사항을 갖는 것으로 해석되어서는 안된다.
여기에서 설명한 방법들 및 시스템들은 다수의 다른 범용 또는 특수 목적의 컴퓨팅 시스템 환경 또는 구성을 사용할 수도 있다. 적당할 수 있는 널리-공지된 컴퓨팅 시스템, 환경, 및/또는 구성의 예로는 작은 형태 팩터(예를 들어, 핸드-헬드, 모바일 등)의 컴퓨팅 장치(예를 들어, 모바일 폰, PDA(personal digital assistants) 등), 멀티-프로세서 시스템, 마이크로프로세서 기반 또는 프로그램가능한 상용 전자제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터 등을 들 수 있지만, 이에 한정되는 것은 아니다. 본 발명은 또한, 통신 네트워크를 통해 링크되어 있는 원격 프로세싱 장치들에 의해 태스크가 수행되는 분산형 컴퓨팅 환경에서 실행될 수도 있다. 분산형 컴퓨팅 환경에서, 프로그램 모듈들은 로컬 및 원격 메모리 저장 장치 모두에 위치할 수 있다.
도 1에 나타낸 바와 같이, 컴퓨팅 환경(120)은 컴퓨터(130) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(130)의 컴포넌트로는 하나 이상의 프로세서 또는 프로세싱 유닛(132), 시스템 메모리(134), 및 시스템 메모리(134)를 포함하는 다양한 시스템 컴포넌트들을 프로세서(132)에 결합시키는 버스(136)를 들 수 있다. 버스(136)는 메모리 버스 또는 메모리 컨트롤러, 주변장치 버스, 가속 그래픽 포트, 및 다양한 버스 아키텍처들 중 하나를 사용하는 프로세서 또는 로컬 버스를 포함하는 몇가지 타입의 버스 구조들 중 하나 이상을 표현한다. 한정이 아닌 일례로써, 이러한 버스 아키텍처로는 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 Mezzanine 버스라고도 하는 PCI(peripheral Component Interconnects) 버스를 들 수 있다.
컴퓨터(130)는 통상적으로 다양한 컴퓨터-판독가능 매체를 포함한다. 이러한 매체는 컴퓨터(130)에 의해 액세스될 수 있는 이용가능한 임의의 매체일 수 있으며, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체 모두를 포함한다. 시스템 메모리(134)는 RAM(random access memory;138)과 같은 휘발성 메모리 및/또는 ROM(read only memory;140)과 같은 비휘발성 메모리 형태의 컴퓨터-판독가능 매체를 포함한다. 스타트-업(start-up) 동안과 같은 때에, 컴퓨터(130)내의 요소들 사이에서의 정보 전달을 돕는 기본적 루틴을 포함하는 BIOS(basic input/output system;142)는 ROM(140)에 저장된다. RAM(138)은 통상적으로, 프로세서(132)로 즉시 액세스될 수 있거나 그리고/또는 프로세서(132)에 의해 현재 연산되고 있는 데이터 및/또는 프로그램 모듈을 포함한다.
컴퓨터(130)는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체를 더 포함할 수도 있다. 예를 들어, (나타내지 않은) 비분리형, 비휘발성 자기 매체로부터 판독하고 그에 기입하는데 하드 디스크 드라이브(144)가 사용될 수 있으며, 분리형, 비휘발성 자기 디스크(148;예를 들어, "플로피 디스크")로부터 판독하고 그에 기입하는데 자기 디스크 드라이브(146)가 사용될 수 있고, CD-ROM/R/RW, DVD-ROM/R/RW/+R/RAM 또는 다른 광학 매체와 같은 분리형, 비휘발성 광학 디스크(152)로부터 판독하고 그에 기입하는데 광학 디스크 드라이브(150)가 사용될 수 있다. 하드 디스크 드라이브(144), 자기 디스크 드라이브(146) 및 광학 디스크 드라이브(150)는 하나 이상의 인터페이스(154)에 의해 버스(136)에 각각 접속된다.
드라이브들 및 그와 관련된 컴퓨터-판독가능 매체는 컴퓨터(130)에 대한 컴퓨터-판독가능 명령, 데이터 구조, 프로그램 모듈, 및 다른 데이터의 비휘발성 저장을 제공한다. 여기에서 설명한 예시적 환경은 하드 디스크, 분리형 자기 디스크(148) 및 분리형 광학 디스크(152)를 이용하지만, 당업자는, 자기 카세트, 플래시 메모리 카드, 디지털 비디오 디스크, RAM, ROM 등과 같이, 컴퓨터에 의해 액세스될 수 있는 데이터를 저장할 수 있는 다른 타입의 컴퓨터-판독가능 매체가 예시적인 연산 환경에 사용될 수도 있다는 것을 알 수 있다.
예를 들어, 오퍼레이팅 시스템(158), 하나 이상의 애플리케이션 프로그램(160), 다른 프로그램 모듈(162), 및 프로그램 데이터(164)를 포함하는 다수의 프로그램 모듈들이 하드 디스크, 자기 디스크(148), 광학 디스크(152), ROM(140), 또는 RAM(138)에 저장될 수 있다.
ISP 웹 사이트 관리자와 같은 사용자는 키보드(166) 및 ("마우스"와 같은) 포인팅 장치(168)와 같은 입력 장치를 통해 명령 및 정보를 컴퓨터(130)에 입력할 수 있다. (나타내지 않은) 다른 입력 장치로는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 직렬 포트, 스캐너 등을 들 수 있다. 이들 및 다른 입력 장치들은 버스(136)에 결합되어 있는 사용자 입력 인터페이스(170)를 통해 프로세싱 유닛(132)에 접속되지만, 병렬 포트, 게임 포트, 또는 USB(universal serial bus)와 같은 다른 인터페이스 및 버스 구조에 의해 접속될 수도 있다.
모니터(172) 또는 다른 타입의 디스플레이 장치 또한, 비디오 어댑터(174)와 같은 인터페이스를 통해 버스(136)에 접속된다. 모니터는, 예를 들어, 후술하는 바와 같이, 액세스 정책 및 룰을 정의하는 것에 의해, 예를 들어, 웹 사이트 관리를 위임하기 위한 설명한 시스템 및 방법과 관련된 사용자 인터페이스(UI)를 표시하는데 이용될 수 있다. 모니터(172) 이외에, 퍼스널 컴퓨터는 통상적으로, 다른 주변 장치 인터페이스(175)를 통해 접속될 수 있는, 스피커 및 프린터와 같은 (나타내지 않은) 다른 주변 출력 장치들을 포함한다.
컴퓨터(130)는, 원격 컴퓨터(182)와 같은, 하나 이상의 원격 컴퓨터로의 논리적 접속을 사용하는 네트워크 환경에서 연산할 수도 있다. 원격 컴퓨터(182)는 컴퓨터(130)와 관련하여 여기에서 설명한 요소들 및 사양들 중의 일부를 또는 그 전부를 포함할 수 있다. 논리적 접속은, 예를 들어, LAN(local area network;177) 및 일반적인 WAN(wide area network;179)을 포함한다. 이러한 네트워킹 환경은 사무실, 기업-범위의 컴퓨터 네트워크, 인트라넷, 및 인터넷에서 흔히 볼 수 있다.
LAN 네트워킹 환경에서 사용될 경우, 컴퓨터(130)는 네트워크 인터페이스 또는 어댑터(186)를 통해 LAN(177)에 접속된다. WAN 네트워킹 환경에서 사용될 경우, 컴퓨터는 통상적으로 WAN(179)에 대한 통신을 확립하기 위한 모뎀(178) 또는 다른 수단을 포함한다. 내장형이거나 외장형일 수 있는 모뎀(178)은 사용자 입력 인터페이스(170) 또는 다른 적절한 메커니즘을 통해 시스템 버스(136)에 접속될 수 있다.
인터넷을 통한 WAN의 특정한 구현을 도 1에 도시한다. 여기에서, 컴퓨터(130)는 인터넷(180)을 통해 하나 이상의 원격 컴퓨터(182)와 통신을 확립하는데 모뎀(178)을 이용한다. 네트워크 환경에서, 컴퓨터(130)와 관련하여 도시한 프로그램 모듈들, 또는 그 일부는 원격 메모리 저장 장치에 저장될 수 있다. 따라서, 예를 들어, 도 1에 도시한 바와 같이, 원격 애플리케이션 프로그램(189)은 원격 컴퓨터(182)의 메모리 장치에 상주할 수 있다. 나타내고 설명한 네트워크 접속은 예시적인 것이다. 따라서, 컴퓨팅 장치들간에 통신 링크를 확립하는 다른 수단이 사용될 수도 있다.
예시적인 애플리케이션 프로그램 및 데이터
도 2는 호스트된 리소스의 관리를 위임하기 위한 애플리케이션 프로그램(160) 및 프로그램 데이터(164)를 포함하는, 도 1의 시스템 메모리에 대한 추가적인 예시적 태양들을 나타내는 블록도이다. 이 구현에서, 애플리케이션 프로그램(160)은, 예를 들어, 인가 모듈(202), 위임 모듈(204), RCWA(Remote Client Web Site Administration) 모듈(206)(즉, "요청 애플리케이션"), 실행 모듈(208), 및 인가된 프로세스(들)(210)을 포함한다. 논의를 위해, 이하에서는, 도 1의 시스템(100)에 대해 선택된 다른 사양들에 대한 이들 애플리케이션 프로그램을 대개 "IIS(Internet Information Service) DA(Delegated Administration) 프레임워크" 또는 "프레임워크"라고 한다.
인가 관리자(202)는 IIS 메타베이스 노드들(즉, IIS 메타베이스(212)의 노드들)의 호스트된 리소스에 대한 관리를 위임하는 보안 지원을 제공한다. IIS 메타베이스(212)는 도 1의 컴퓨터(130)에 의해 호스트되고, 배치되며, 그리고/또는 관리되는 애플리케이션, 리소스, 또는 오브젝트에 대한 노드를 식별한다. 보다 구체적으로, 메타베이스는 IIS를 구성하는데 사용되는 구성 정보 및 스키마의 계층적인 스토어(store)이다. 기존 시스템에서는, 관리 그룹의 멤버인 사용자만이 메타베이스 노드에 의해 표현되는 리소스를 보고 변경할 수 있다. 이러한 종래 시스템과 달리, 지금 설명되고 있는 IIS DA 프레임워크는, 웹 사이트 소유자와 같은 관리자 그룹 이외의 사용자들(예를 들어, 애플리케이션 관리자들)이 IIS 메타베이스(212)의 특정 부분(들)을 보고 그리고/또는 변경할 수 있게 한다. 이를 설명하기 위해, "사용자(user)"는, 사용자가 관리자 그룹일 수도 있기는 하지만, 관리자 그룹에 할당되지 않은 개인이다.
이를 위해, 인가 관리자 모듈(202)은, DA 모듈(204)과의 선택적인 상호작용을 통해, 관리자 엔티티(즉, 관리자 그룹의 멤버)가 (도 1의 디스플레이 장치(172)상에 디스플레이된 UI를 통해) IIS 메타베이스(212)의 노드들로의 사용자 액세스 허가를 특정할 수 있게 한다. 인가 관리자 모듈(202)은 이러한 사용자 액세스 허가(즉, 정책들/룰들)를 인가 정책 스토어(214;Authorization Policy Store)에 기입한다. 일 구현에서, 이러한 액세스 허가는, 예를 들어, XML(Extended Markup Language), 액티브 디렉토리, SQL(Software Query Language), 또는 다른 데이터 포맷으로 표현된다.
애플리케이션은, 클라이언트가 리소스에 대해 요청된 연산을 수행하도록 인가되었다는 것을 확인하기 위해, 실행시에 (애플리케이션 관리자(202)에 의해 노출된 API(216)를 통해) APS(214)를 조회한다. 인가 관리자는 인가 정책을 관리하고 액세스 제어를 확인하는 API 및, 관리자들이 인가 정책 스토어를 관리할 수 있도록 하기 위해 관리자들에 대한 사용자 인터페이스를 제공한다.
애플리케이션 정의
APS(214)에 의해 특정된 바와 같은 애플리케이션은 APS(214)에 대한 정상 수준 노드(top-level node)이다. 애플리케이션은, 예를 들어, 애플리케이션이 설치될 때, 애플리케이션이 수행할 수 있는 연산들 또는 태스크들을 특정하며, 이들을 APS(214)에 선언한다. 애플리케이션 스펙은, (예를 들어, 조직에서) 작업을 수행하는데 필요한 태스크 및 연산들의 관점에서 관리자 식별형 애플리케이션 특정 롤을 포함한다. 롤, 태스크 및 연산들(방법들)의 정의 및 범위가 APS(214)에 저장된다. 롤은 인가 또는 리소스 구성 롤(예를 들어, 리소스들의 어떤 세트에 대한 조직적인 허가)이다. 인가 롤은 사용자의 작업 함수에 기초한다. 리소스 구성 롤은 컴퓨터의 함수에 기초한다.
태스크는 저급 연산(low-level operations)의 집합이다. 태스크의 목적은, 어떠한 저급 연산이 관리자들에게 의미있는 어떤 작업 유닛을 수행하는지 판정하는 것이다. 태스크의 일례는 패스워드를 변경하는 것일 수 있다. 태스크는 다른 태스크들을 포함할 수도 있다. 예를 들어, 사용자 어카운트 관리(Manage User Accounts)라고 하는 태스크는 패스워드 변경, 패스워드 리셋, 어카운트 디스에이블 등의 태스크를 포함할 수 있다.
연산은, 리소스 관리자가 보안 과정을 식별하는데 사용하는 저급 허가이다. 의미있는 하나의 태스크를 수행하기 위해 수개의 연산이 사용될 수도 있다. (연산들은 대개 관리자들에게 노출되지 않거나 의미가 없다.) 연산의 일례로는 WriteAttributes 또는 ReadAttributes를 들 수 있다. 범위(scope)는 개개의 인가 정책과 관련된 하나 이상의 물리적 또는 논리적 리소스들(예를 들어, 폴더 및/또는 파일들)의 집합이다. 애플리케이션은, 리소스들을 분류하는데, (예를 들어, 애플리케이션이 사용자 액세스를 체크할 때) 사용자 요청 리소스를 범위에 매핑하는데 등에, 이 범위를 사용할 수 있다.
이 구현에서, 인가 관리자(202)는 각각의 특정 그룹 멤버에 대해 0개 이상의 그룹들 및 대응되는 롤들의 스펙을 허용한다. 그룹은 사용자의 롤에 대응되고, 애플리케이션 관리자는 그룹 허가(예를 들어, 애플리케이션, 리소스 등)를 오브젝트에 대한 ACL에 부여함으로써 롤에 의해 필요한 허가를 특정한다. 표 1은 APS(214)에 대한 예시적인 애플리케이션 정의를 나타내는데, 이 구현에서, 이는 XML 데이터 포맷이다.
예시적인 애플리케이션 스펙
각각의 애플리케이션은, 실질적으로 전역적인 고유 식별자("GUID", 예를 들어, d9089f17-5fa6-4ae9-bddf-8ca6cd1c06fb), 이름(예를 들어, SiteAdminApp) 등과 같은 다수의 속성들을 포함한다. 애플리케이션 속성들은, 예를 들어, 인가 정책 스토어(214)에 특정된 애플리케이션들 중 특정한 것들을 식별하는데 사용된다. 표 1의 본 예에서, 애플리케이션은 애플리케이션에 대한 하나 이상의 "롤들"에 할당된 하나 이상의 사용자들을 특정하는 그룹을 포함한다(예를 들어, 태그 쌍 "AzApplicationGroup" 참고). 롤은, 사용자가 태스크들의 세트를 수행할 수 있도록 하기 위해, 사용자에게 할당된 허가들의 세트이다. 각각의 애플리케이션 그룹은 GUID 속성(예를 들어, 값 bf9d00f0-2be3-4367-a931-680038b51d0a) 및 이름 속성(예를 들어, GroupMetabaseChangeDefaultDoc)을 포함한다. 이러한 예시적 그룹은 SID:S-1-5-21-3131233723-616130271-937215924-1032에 의해 식별되는 하나의 멤버를 도시한다. 이러한 예를 위해, 이는 사용자 "User1"와 관련된 SID라고 가정한다.
이 구현에서, 롤은 관련된 오브젝트들의 세트에 적용된 다음, 사용자들의 그룹이 롤에 할당된다.
범위 및 롤의 정의
표 1의 애플리케이션은 범위를 가진 (임의 갯수의 이러한 그룹이 정의될 수도 있지만) 하나의 애플리케이션 그룹을 포함한다. 범위는 개개의 인가 정책과 관련된 하나 이상의 물리적 또는 논리적 리소스들(예를 들어, 폴더 및/또는 파일들)의 집합이다. 애플리케이션은, 리소스를 분류하는데, (예를 들어, 애플리케이션이 사용자 액세스를 체크할 때) 사용자 요청 리소스를 범위에 매핑하는데 등에, 이 범위를 사용할 수 있다. <AzScope Guid="ce010982-6b6f-4e93-804e-d04bf1ddff78" Name="Site Access for "User1""/>는 범위를 정의하는 예시적 구문이다. 각각의 범위는, API(Application Programming Interface)가 범위에 액세스하는데 사용될 수 있는 고유한 식별자(예를 들어, ce010982-6b6f-4e93-804e-d04bf1ddff78) 및 이름(예를 들어, Site Access for "User1")을 가진다. 논의를 위해, 도시된 범위는 "w3svc/1"의 메타베이스 사이트 ID를 가진다.
일 구현에서, 인가 관리자 모듈(202)은, 범위 레벨(즉, 범위내)에 하나 이상의 롤을 특정함으로써, 보안 정책 스토어로서 사용된다. 예를 들어, 특정 롤은 개별적인 사이트로의 보안 액세스를 변경하도록 특정될 수 있고, 사이트 아래의 (예를 들어, "WebDirs")와 같은 새로운 노드를 지시하기 위해 또 하나의 롤이 생성될 수 있다. 범위내의 예시적 롤:"<AzRole Guid="3ac117fd-7f12-4287-a7ff-982770d6ce49" Name="ChangeDefaultDoc"/>"은 사이트에 대한 디폴트 문서 리스트를 변경하기 위해 도시된다. 롤은 생성시에 할당된 고유 식별자(예를 들어, 3ac117fd-7f12-4287-a7ff-982770d6ce49) 및 이름, 예를 들어, ChangeDefaultDoc을 가진다(이름을 의미를 갖도록 특정될 수 있다). 표 2는 범위내에 정의된 롤의 일례를 도시한다.
범위내에 정의된 롤의 예
롤은, 롤이 속하는 범위로의 액세스를 가진 애플리케이션 그룹에 대해 하나 이상의 태스크가 특정되었을 때 정의된다. 태스크는 관리자에 대해 어떤 작업 유닛을 수행하기 위한 하나 이상의 저급 연산이다. 예를 들어, 태스크는 "패스워드 변경"일 수 있다. 태스크는 하나 이상의 다른 태스크를 인캡슐레이트(encapsulate)할 수 있다. 예를 들어, "사용자 어카운트 관리"라는 태스크는 "패스워드 변경", "패스워드 리셋", "어카운트 디스에이블" 등의 태스크를 포함할 수 있다. 표 3은 롤 정의의 예를 나타낸다.
예시적인 롤 정의
표 3에 나타낸 롤은, 이 예의 경우, bf9d00f0-2be3-4367-a931-680038b51d0a인 고유 식별자에 기초하여 애플리케이션 그룹을 참조하는 AppMemberLink 속성을 포함한다. 표 4는 관련 롤을 가진 범위를 나타낸다.
롤을 가진 예시적인 범위
태스크 및 비지니스 룰의 정의
롤은 하나 이상의 태스크를 정의한다. 태스크는, 비지니스 룰과 함께, 사용자에게 수행 허가가 부여된 하나 이상의 저급 "연산"으로 이루어진다. 연산은 태스크와 관련된 보안 레벨(들)을 식별하는 저급 허가이다. 수개의 연산들이 하나의 의미있는 연산을 구성할 수 있다. 연산들의 예로는 "WriteAttributes" 및 "ReadAttributes"를 들 수 있다. 표 5의 다음 예는, 사용자에게 웹 사이트에 대한 특성(예를 들어, "DefaultDoc" 특성)을 변경하도록 허용하는 태스크를 도시한다. 이 태스크는 2개의 연산:이 특성의 값을 설정하는 연산 및 이 특성의 값을 취하는 연산을 포함한다.
예시적인 태스크
표 5의 예에서, 연산은, 이전의 속성 정의의 경우에서와 같이, 고유한 식별자 및 이름에 할당된다. 연산의 가장 중요한 특성들 중 하나는 OperationID 속성이다. 태스크는 OperationID를 통해 하나 이상의 연산을 참조할 수 있다. 표 6은 예시적인 태스크를 정의하는 방법을 도시한다.
예시적인 태스크 정의
표 6의 예는 하나의 태스크에 의해 참조되는 2개의 연산을 나타낸다. 이는 정책 파일이 정의될 수 있는 방법을 도시하기 위한 것이다. 다수의 연산들을 참조하는 하나의 태스크를 가질 수 있다. 그러나, 일 구현에서, IIS DA 프레임워크가, 도구와 함께 사용되는 정책 파일내에서, 예상대로 연산하는 것을 보증하기 위해, 태스크는 하나의 연산만을 참조한다. 이러한 구현에서, 연산이 롤내의 태스크에 의해 참조될 경우, 이 연산은 동일한 롤내의 상이한 태스크에 의해서는 참조되지 않는다. 그러나, 이 연산이 다른 롤내의 태스크에 의해서는 참조될 수 있다. 인가 정책 스토어의 예시적인 구문에 관한 더 많은 정보를 위해, 아래의 표 11을 참고한다.
태스크는 그들의 고유 ID 및 비지니스 룰, 즉 BizRule에 의해 식별되는 하나 이상의 연산(예를 들어, 표 6에 정의된 2개의 연산)을 정의한다. 비지니스 룰을 JScript 또는 VBScript와 같은 스크립트 언어로 기재된 인가 스크립트라고도 한다. 이 구현에서, AccessCheck API가 호출될 때 실행되는 태스크 오브젝트에 첨부된 스크립트는 사용자가 소정 방법을 실행할 수 있는지를 확인한다. 이 구현에서, AccessCheck API는 오퍼레이팅 시스템(158;도 1)의 공지의 POS(Private Object Security) API에 의해 구현된다. POS API는 사용자의 그룹 멤버쉽을 토큰(token)으로 보고, 사용자가 요청된 액세스를 가졌는지를 판정하기 위해 이들을 ACL(Access Control List)의 내용과 비교한다. 스크립트는 인가 판정을 위해, "time of day" 또는 "dollar amount requested"와 같이, 실행시에만 이용가능한 정보를 사용할 수도 있다.
표 6의 예에서, JScript 비지니스 룰은, 사용자가 수행을 시도할 수 있는 동작들에 대하여 제한을 가한다. 사용자가 태스크의 일부로서 OperationID=1인 연산을 수행하고자 한다고 가정한다. 스크립트는, 사용자가 본 방법에 전달한 DefaultDoc 파라미터의 값을 무효화할 수 있다. 이 예에서, 스트립트는, 사용자가 이 특성의 값을 "index.htm"과 상이한 스트링으로 설정하는 것을 허용하지 않는다. AzBizRuleContext는, BizRule 스크립트가 액세스를 가진 오브젝트이다. 그것의 BizRuleResult 특성은, 사용자에게 그 연산의 수행이 허용되었는지의 여부를 판정하는데 사용된다.
호스트된 리소스로의 액세스를 가진 사용자에게 위임
인가 관리자(202)에 따라, DA 모듈(204)은 인가 관리자(202)와 인터페이스할 때 한 세트의 입력값을 사용하고 요청 애플리케이션(예를 들어, RCWA 애플리케이션(208))을 통해 사용자가 호스트된 리소스(예를 들어, 웹 사이트)에 대해 수행하고자 하는 연산을 위한 파라미터인 또 한 세트의 값을 사용한다. 예를 들어, 표 6의 선행 예에서, SetDefaultDoc 연산을 위해, DA(204)는 범위 이름, 연산 또는 방법 이름, 및 상기 BizRule에서 참조되는 DefaultDoc 파라미터의 값을 입력으로 이용한다.
DA(204)는, 어떤 APS(들)(214)가 입력 범위를 포함하는지를 판정하고 입력 연산 또는 방법 이름을 OperationID에 매핑하기 위해 구성 파일(218)을 사용한다. 이 구현에서, 구성 파일(218)은 소정 세트의 사용자들에게 할당된 각각의 방법을 특정/정의하고 이 방법을 APS(214)의 대응되는 연산 식별자(들)(IDs)에 매핑하는 XML 파일이다. 구성 파일(218)은 또한 방법 파라미터, 범위 매핑, 로그 파일 데이터 포맷, 및 명령-라인 템플릿을 포함한다. 범위 이름을 매핑할 때, DA(204)는 구성 파일로부터 그 범위가 위치하는 APS(214)의 경로, 및 그 아래에 이 범위가 정의되어 있는 APS의 애플리케이션 이름를 획득한다.
DA(204)가 이러한 정보를 위해 구성 파일을 파싱한 후, DA(204)는 스토어 경로를 사용해 인가 관리자(202)를 초기화하고, 소정 애플리케이션을 오픈하며, 사용자가 요청된 함수/리소스로의 액세스를 가졌는지의 여부를 판정하는데 사용될 클라이언트 문맥 오브젝트를 취한다.
예시적인 구성 파일 포맷
IIS DA 프레임워크는 구성 파일(218)의 전체 경로(예를 들어, HKLM\Software\Entity\IISDelAdmin\DelegAdminMappingPath (REG_SZ))를 저장하기 위해 "String" 타입의 레지스트리 엔트리를 사용한다. 이러한 스트링은 레지스트리(220)에 저장된다. 표 7은 예시적인 구성 파일(218)을 나타낸다.
예시적인 DA 구성 파일
이러한 예시적 구현에서, 구성 파일(218)은 다음의 엔트리들:사용자에게 허용될 각각의 방법에 대한 엔트리; 구성 파일(218)에 기존 방법을 참조하는 태스크를 포함하는 스토어에 사용되는, 각각의 범위에 대한 엔트리를 포함한다. 각각의 범위 엔트리는 APS에 범위를 가진 사용자에 대응된다. 또한, 엔트리는 소정의 그리고/또는 디폴트 로그 파일 데이터 포맷을 정의한다.
방법 및 파라미터 구문
표 8은 구성 파일(218)의 IISDAMethod 노드내에 방법을 정의하는 예시적인 템플릿을 나타낸다.
예시적인 태스크 정의
이 구현에서는, Description을 제외한 모든 속성들이 이용된다. 속성이 ExcuteMethod에 의해 사용될 노드 정의로부터 누락되면, 이 방법은 에러를 리턴한다. (ExcuteMethod는 (인가된 경우의) 사용자에 의해 요청된 연산을 수행하기 위해 DA 모듈(204)에 의해 노출된 API(222)이다.)
방법 구문은 다음의 속성들을 사용한다.
ㆍ PublicName - 사용자에게 노출될 방법 이름, 도구가 엔트리로서 확인할 이름(DA 모듈(204)에 의해 노출된 API(222)를 통해 액세스되는 동적 링크 라이브러리 오브젝트(예를 들어, COM)에 대한 ExcuteMethod 방법의 파라미터).
ㆍ Exepath - 사용자에 의해 요청된 방법을 실행하는데 사용될 실행가능한 스크립트 또는 명령-라인 스트립트로의 경로를 정의하거나 그것의 방법들 중 하나를 통해 연산을 수행하도록 지정된 COM 오브젝트의 ProgID를 정의한다.
ㆍ AZStoreID - 인가 정책 스토어의 이 방법에 대응되는 OperationID를 정의한다.
ㆍ CmdLine - 실행가능한 모듈에 대한 명령 라인이 구축될 방법을 정의하거나, ExePath가 COM 오브젝트의 ProgID를 특정한다면 방법의 이름을 정의한다. 실행가능한 모듈에 대해, 이 속성으로, 키워드, 속성 이름/값 (방법, 파라미터, 및 범위 속성들) 및 파라미터 인덱스를 특정할 수 있다. CmdLine 값들을 정의하는 것에 관한 더 많은 정보를 위해서는, 다음의 CmdLine 필드 포맷을 참고한다.
ㆍ WaitTimeout - CreateProcess API를 호출한 후 종료되어 결과를 로깅(logging)하기 전에 몇초를 대기할 것인지 DA(204)에 지시한다. CreateProcess를 성공적으로 호출한 후, 도구는 그 프로세스의 종료를 대기하기 위해 WaitForSingleobject(processHandle, timeout)를 호출한다. 연산이 COM 방법과 관련되면, 이 속성은 사용되지 않는다.
ㆍ ProcessType - 방법을 실행하는데 사용될 프로세스 타입을 특정한다. 이 속성에 대한 유효값은 (COM 방법이 본 방법을 실행할 것을 특정하는) "COM" 및 (실행가능한 명령-라인이 본 방법을 실행할 것을 특정하는) "CMD"이다.
ㆍ Separator - 실행가능한 모듈의 출력이 보다 세분화되는 것을 돕는다. ("\r" 및 "\n"과 같은) 특수 문자의 경우, 이 필드는 그 문자의 에스케이프 버전(escaped version;예를 들어, "%0D" 및 "%0A")을 포함한다. 도구는 항상 Separator 필드의 값을 판독한 다음 언이스케이프(unescape)하므로, 이들 특수 문자를 도구에 의해 분리자로서 인식되도록 특정할 수 있다. 예를 들어, 결과가 사이트에 대해 거부되는 한 세트의 IP 어드레스를 포함하는 스트링이며, 결과는 또한 이들 어드레스 모두가 "CRLF"("\r\n" 시퀀스)에 의해 분리되는 것을 포함하는 스트링이라고 가정한다. IP 어드레스를 가진 전체 스트링을 리턴하는 OutputArray 함수 대신에, Separator="%0D%0A"가 IISDAMethod 노드에 정의된다면, 이 함수는 각각이 결과 스트링으로부터의 IP 어드레스에 대응되는 스트링들의 어레이를 리턴한다.
ㆍ Description - 방법을 사용자에게 노출시키는 애플리케이션에 사용될 수 있는 방법의 서술을 부가한다. 예를 들어, 이는, 사용자가 페이지의 방법 이름 위에서 마우스를 이동시킬 때, 방법의 서술을 디스플레이하기 위한 샘플 ASP.NET 애플리케이션, Admin에 의해 사용된다.
파라미터 구문
각각의 방법은 0개 이상의 파라미터를 정의할 수 있다. 다음의 템플릿은 파라미터가 정의되는 방법을 나타낸다.
<Parameter Name="" MetabaseProperty="" Description=""/>
파라미터 XML 태그가 정의될 경우, Description을 제외한 모든 속성들이 이용된다. 하나의 속성이 노드의 정의로부터 누락되고 이 노드가 ExecuteMethod에 의해 사용될 경우, 본 방법은 에러를 리턴한다.
방법 파라미터 구문은 다음의 속성들을 사용한다.
ㆍ Name - 파라미터로서 도구에 의해 AccessCheck 함수로 송신된다. 동일한 이름이, 파라미터가 정의된 방법에 대응되는 연산 ID를 참조하는 태스크들의 BizRule에 사용될 것이다.
ㆍ MetabaseProperty - 예를 들어, "adsutil.exe get w3svc/1/AnonymousUserName"과 같이, 실행 모듈이 특정한 메타베이스 특성을 그 명령 라인의 일부로서 요청할 경우 사용될 수 있다. 이 예에서, 파라미터는 MetabaseProperty="AnonymousUserName"의 속성을 가지고, "w3svc/1"는 범위에 정의된 MetabaseNode이다. 범위를 정의하는 것에 관한 더 많은 정보를 위해서는, 다음의 범위 구문을 참조한다.
ㆍ Description - 서술을 파라미터와 관련시킨다. 예를 들어, 이러한 파라미터가 속하는 방법을 노출시키는 애플리케이션은 이 필드를 파라미터 값들에 대해 부여된 제한을 디스플레이하는데 사용할 수 있다.
인터페이스 구문
인터페이스 노드를 사용하여, 연산을 참조하는 태스크내에서 BizRule을 실행하는데 사용될 인터페이스를 특정할 수 있다. 다음의 예는 인터페이스 노드의 구문을 나타낸다:<Interface Name="" Flag="" ProgID=""/>. 인터페이스 노드는 옵션이며, COM 오브젝트가 방법을 참조하는 태스크의 비즈니스 룰에 사용될 때 사용된다. 인터페이스 노드가 정의될 경우, 모든 속성들이 이용된다. 하나의 속성이 노드 정의로부터 누락되고 이 노드가 ExcuteMethod에 의해 사용되면, 본 방법은 에러를 리턴한다.
인터페이스 구문은 다음의 속성들을 사용한다.
ㆍ Name - 비즈니스 룰에 사용될 오브젝트의 이름을 식별한다.
ㆍ Flag - BizRule 스크립트에 오브젝트를 생성하는데 사용될 플래그를 특정한다.
ㆍ ProgID - COM 오브젝트에 대한 ProgID의 독자적인 버전을 특정한다. 이 노드의 대응되는 Name은, 사실상, 이 오브젝트의 인스턴스이다. BizRule은 제공된 Name을 통해서만 오브젝트를 사용한다.
각각의 속성은 인터페이스에 관련된 AccessCheck에 의해 이용되는 파라미터에 대응된다.
범위 구문
다음의 템플릿 엔트리는 범위를 정의한다:<IISDAScope PublicName="" AZName="" MetabaseNode="" AZStorePath="" AZApplicationName="" GenerateAudits="" AuditName=""/>. 모든 속성들이 이용된다. 하나가 누락되고 이 노드가 ExecuteMethod에 의해 사용되면, 본 방법은 에러를 리턴한다.
범위 구문은 다음의 속성들을 사용한다.
ㆍ PublicName - 범위가 생성될 때 사용자에게 제공되는 이름이고, (예를 들어, 사용자는 하나 이상의 할당된 사이트를 가질 수 있으므로) 메타베이스(212)의 어떤 레벨이 변경되었는지를 식별하기 위해 사용자가 제공하는 이름이다.
ㆍ AZName - 이 범위에 대응되는 인가 정책 스토어 파일의 범위 이름이다. MetabaseNode는, 실제로, 사용자가 액세스를 가진 메타베이스 노드인 실제 범위를 정의한다.
ㆍ AZStorePath - 이 범위가 위치하는 인가 정책 스토어의 경로이다. 이 속성은, DA 모듈(204)이 이 범위를 검색할 인가 정책 스토어를 특정한다.
ㆍ AZApplicationName - 아래에 이 범위가 정의되는, 스토어의 애플리케이션을 특정한다.
ㆍ GenerateAudits - 이 범위로의 액세스 시도가 감사(auditing)를 생성하는지의 여부를 특정한다.
ㆍ AuditName - 액세스된 오브젝트를 식별하기 위해 감사에 사용된 키 스트링을 특정한다(이 구현에서, 이는, 이 범위가 특히 액세스된 것을 확인한다).
로그 파일 구문
구성 파일(218)은 다음의 템플릿을 사용하여 로그 파일(224)에 대한 포맷도 정의한다:
<IISDALog Path="">
<Field Name=""/>
<Field Name=""/>
</IISDALog>
로그 파일(224) 구문은 다음의 속성들을 사용한다.
ㆍ Path - 로그 파일이 저장되어 있는 경로를 정의한다. 이 속성이 이용된다. 이것이 존재하지 않으면, 도구는 에러를 리턴한다. 이 속성값은 유효하고 액세스가능한 폴더를 지시하고; 그렇지 않으면, 이 구현의 도구는 어떤 것도 로그하지 않지만, 예외를 생성한다. 처음으로 로그 파일을 생성할 때, 애플리케이션은 (Path 속성의 값에 의해 식별된) 부모 폴더로부터 물려받은 보안 설정을 사용하는데, 이는, COM+ 애플리케이션의 식별(다른 모듈(210) 참고)이 이 폴더로의 판독/기입 액세스를 가진다는 것을 의미한다.
ㆍ Field - 관련된 Name 속성을 사용해 로그 파일의 각 필드를 식별한다. 필드에 관한 더 많은 정보를 위해서는, 다음의 로그 파일 필드를 참고한다.
ExecuteMethod(ExecuteMethod는, 인가된 사용자에 의해 요청된 연산을 수행하기 위해 DA 모듈(204)에 의해 노출된 API(222)이다. ExecuteMethod에 의해 구현된 연산 또는 태스크는 실행 모듈(208)로서 도시된다)의 결과는 콤마로 분리된 값의 로그 포맷을 사용해 로그된다. 이 구현에서, 구성 파일(218)에 로깅 섹션이 존재하지 않으면, DA(202)는 어떤 것도 로그하지 않으며 예외도 던져버린다.
로그 파일 필드
로그 파일은, 각각이 필드 서버 노드의 Name 속성에 의해 식별되는 임의적인 다수 필드를 가질 수 있다. 로그 파일은 디폴트로 먼저 다음의 6개 필드를 포함한다.
(ExcuteMethod를 호출하는) 요청의 날짜와 시간(Date 필드).
사용자의 이름(User 필드; 예를 들어, .aspx 페이지 내부로 ExcuteMethod가 호출되면, .aspx 페이지로의 액세스가 허용된 사용자의 이름이 로그될 것이다).
호출자에 의해 제공된 방법 이름(Method 필드).
호출자에 의해 제공된 범위 이름(Scope 필드).
방법에 대응되는 ExePath 속성의 값(구성 파일 속성의 방법 정의 속성인 ProcessType 속성).
방법에 대응되는 CmdLine 속성의 값(CmdLine 필드).
DA(204)는 또한, ExecuteMethod 함수(208)의 결과(Result 필드) 및 예외적인 정보(Exception 필드)의 마지막 2개 위치에도 로그인한다. 예외적인 정보는 예외의 문맥(즉, 예외가 발생한 방법 실행의 단계)에 관한 세부 사항 및 도구에 의해 포착된 예외 코드를 제공한다.
CmdLine 필드 포맷
여섯번째 필드, CmdLine은 특수한 언급을 이용한다. IISDAMethod 노드가 ProcessType="COM"인 경우, 이 필드에 로그인된 값은 구성 파일(218)의 CmdLine 속성에 정의된 것으로 나타난다. IISDAMethod 노드가 ProcessType="CMD"인 경우, 이 필드에 로그인된 값은 구성 파일(218)의 CmdLine 속성에 정의된 것으로 나타나거나 (스트링이 IISDACmdLineKeys를 참조할 경우) ExecuteMethod가 리턴하기 전에 모듈에 대한 명령 라인을 실제로 구축한다면, 실행가능 모듈의 전체 명령 라인의 값에 정의된 것으로 나타난다. 이는 가능한 많은 요청의 요소들을 이해하고 문제 해결 프로세스를 용이하게 하기 위한 더 많은 정보를 로그 파일에 제공한다.
정의된 Field 노드가 존재하지 않으면, DA 모듈(204)은, 예를 들어, 상술한 8개의 필드를 로그하며, IISDALog 노드는 로그 파일 경로를 취하는데만 사용된다. 일반적으로, 디폴트로 로그되는 상술한 필드 이외에 유용하다고 생각할 수 있는 다른 필드들이 존재할 수 있으므로, 필드 이름은 "Param1", "Param2" 등의 형태이다.
이 구현에서, "Param" 필드는, 상술한 6개 필드 이후에 로그된다. 파라미터 값의 리스트가 IISDALog 노드의 필드/노드에 대한 실제 갯수보다 많은 요소를 포함한다면, 파라미터 값 모두가 로그되는 것은 아니다. 그러나, 방법에 대해 IISDALog 노드의 필드 노드 갯수보다 적은 파라미터 값이 존재한다면, 로그 엔트리의 나머지 필드값은 공백(" ")으로 이루어질 것이다.
명령-라인 파라미터 포맷
구성 파일(218)에서, 실행될 방법의 명령-라인 파라미터에 대한 포맷(다시 말해, ProcessType 속성이 "CMD"일 경우 IISDAMethod의 CmdLine 속성값이 해석될 방법)을 정의할 수 있다. 다음의 템플릿은 명령-라인 파라미터의 포맷을 나타낸다.
<IISDACmdLineKeys>
<IISDACmdLineKey Name=" " AttributeName="" Node=""/>
</IISDACmdLineKeys>
IISDACmdLineKeys는 다음의 속성들을 가진다.
ㆍ Name - 명령-라인 스트링에 키로서 사용된다.
ㆍ AttributeName - IISDAMethod, IISDAScope, 또는 Parameter 노드들 아래에, 키가 참조하는, 구성 파일내의 속성 이름을 특정한다. 이 속성으로 인해 속성 이름 자체나 속성이 참조하는 속성값을 특정할 수 있다.
ㆍ Node - 아래에 AttributeName이 위치하는 노드를 식별한다. Node 속성은 "IISDAMethod", "IISDAScope", "Parameter" 값들 중 하나를 가질 수 있다.
명령-라인 템플릿으로 인해, DA(202)는 방법에 대한 명령-라인 정의(IISDAMethod 노드의 CmdLine 속성)내에 토큰을 지원할 수 있다. 이러한 토큰은, 예를 들어, 표 9에 나타낸 토큰들을 포함한다.
토큰 설명
키워드 그대로 특정됨. 따라서, CmdLine 속성이 "get" 스트링을 포함하면, 예를 들어, 이 스트링은 모듈에 대한 명령 라인을 구축하는데 사용된다.
#D# #D# 포맷을 사용해 파라미터 값이 특정된다. (D는 숫자를 식별한다.) 2개의 # 사이에 나타낸 숫자는 파라미터 인덱스를 특정한다. 도구는 방법에 전달된 인덱스 파라미터 값 "D"로 시퀀스 #D#를 대체한다. 예를 들어, 방법에 전달된 2개의 파라미터 값이 존재하고, CmdLine이 #1#를 포함하면, ExecuteMethod는 첫번째 파라미터 값으로 시퀀스 #1#를 대체한다. 이 구현에서, 예를 들어, CmdLine 속성이 #3#를 포함하면, 2개의 파라미터 값만이 전달되었기 때문에, ExecuteMethod는에러를 리턴한다.
$KEY$ 속성 이름을 특정한다. (KEY는 Name 속성을 사용해 IISDACmdLineKeys 노드에 정의된 값이다.) #KEY# 및 $KEY$ 토큰의 경우, (IISDACmdLineKeys 노드의 Name 속성에 특정된) KEY는 IISDAMethod, IISDAScope, 및 Parameter 노드들 내의 속성 이름일 수 있다. 상술한 바와 같이, 정확한 위치는 IISDACmdLineKeys 노드의 Node 속성에 특정된다. 본 방법은 KEY값을 보고, IISDACmdLineKeys 노드 아래에 IISDACmdLineKey 노드가 존재하는지의 여부를 체크하며, Node에 의해 식별된 노드에 대응되는 AttributeName에 의해 식별된 속성이 존재하는지의 여부도 체크한다. 노드 및 속성이 존재하면, 본 방법은 토큰을 그 속성의 이름($KEY$) 또는 값(#KEY#)으로 대체한다.
#KEY# 속성값을 특정한다. #KEY# 및 $KEY$ 토큰의 경우, (IISDACmdLineKeys 노드의 Name 속성에 특정된) KEY는 IISDAMethod, IISDAScope, 및 Parameter 노드들 내의 속성 이름일 수 있다. 상술한 바와 같이, 정확한 위치는 IISDACmdLineKeys 노드의 Node 속성에 특정된다. 본 방법은 KEY값을 보고, IISDACmdLineKeys 노드 아래에 IISDACmdLineKey 노드가 존재하는지의 여부를 체크하며, Node에 의해 식별된 노드에 대응되는 AttributeName에 의해 식별된 속성이 존재하는지의 여부도 체크한다. 노드 및 속성이 존재하면, 본 방법은 토큰을 그 속성의 이름($KEY$) 또는 값(#KEY#)으로 대체한다.
#KEY@D# 명령 라인이 소정 파라미터의 속성값을 이용하면, #KEY@D# 토큰을 사용한다. 이 토큰의 해석은 "인덱스 파라미터 D에 대해 KEY에 의해 특정된 속성값"이다.
예시적인 명령-라인 템플릿 토큰
이 구현에서, # 및 $가 명령 라인을 구축하는데 사용되기 때문에, (#스트링# 또는 $스트링$와 같이) 이들 문자 2개에 대한 시퀀스가 존재하면, 도구는 "스트링"과 동일한 Name 속성을 가진 IISDACmdLineKey 노드를 찾으려 한다는 점에서, 이들 문자는 제한된다. 이는 설계 아키텍처가 의미하는 바에 따라 변경될 수 있는 이식 의존적 특징(implantation dependent feature)이다.
명령-라인 파라미터를 정의하는 이 기술로 인해, %SYSTEMROOT%와 같은 환경 변수를 모듈 명령 라인에 특정할 수 있다. IISDACmdLineKey 노드가 생성될 때, 모든 속성이 이용된다. 그렇지 않으면, 노드의 파싱을 시도할 때, ExecuteMethod는 실패하게 될 것이다. IISDACmdLineKey 노드를 정의하는 것과 이들이 실행시에 행석되는 방법에 관한 더 많은 정보를 위해, CmdLine 및 IISDACmdLineKeys 예들을 참고한다.
DA 모듈에 의해 노출된 예시적인 방법(API(222))
DA 모듈(202)은 API(222)를 통해 다음의 방법들을 노출한다.
ㆍ Parameters 방법 - 연산과 관련된 파라미터들을 설정한다. 이 방법의 파라미터들은 (어레이의 각 요소가 VT_BSTR 타입인) VT_ARRAY 타입 또는 VT_BSTR 타입의 변수이다. 이 방법은 ExecuteMethod를 호출하기 전에 호출된다.
ㆍ ParamError 방법 - Parameters 방법에 의해 파라미터들이 정확하게 설정되었는지의 여부를 체크한다. 파라미터들이 성공적으로 설정되었다면, 0를 리턴한다. 파라미터들이 Parameters 방법에 의해 정확하게 설정되지 않았다면, ExecuteMethod를 호출하는 것을 방지하기 위해 이 방법을 호출한다.
ㆍ ExecuteMethod 방법 - 사용자에 의해 요청된 연산을 수행한다. 성공적인 완결시에 0를 리턴한다. 이 방법을 호출하기 전에, 연산이 하나 이상의 파라미터를 이용한다면, Parameters 방법을 호출한다. 비성공적인 실행에 대해 리턴된 에러 코드에 관한 정보를 위해서는, DA 리턴값을 참조한다. ExecuteMethod 방법은 다음의 파라미터들을 가진다.
0 Scope 이름 - 연산의 실행을 요청하고 있는 사용자와 관련된 범위. 사용
자에게 방법을 노출시키는 애플리케이션은 이 범위를 사용자로부터 수집한
다. 예를 들어, 샘플 ASP.NET 애플리케이션을 사용해, 사용자는 사이
트의 이름을 관리자에게 특정한다. 이 이름은 세션 변수로서 저장되어
ExecuteMethod가 호출될 때마다 사용된다. 파라미터 타입은 BSTR이다.
0 Method 이름 - 사용자가 실행하려 하는 방법의 이름. 이 이름은 구성 파
일내의 IISDAMethod 노드의 PublicName 속성의 값에 대응된다. 파라미터
타입은 BSTR이다.
0 LogResult - 방법이 연산의 결과를 로그할 것인지의 여부를 특정하는 부울
값.
0 ExecuteOperation - ExecuteMethod가 명령 라인을 실행할 것인지 또는 방
법과 관련된 COM 방법을 호출할 것인지의 여부를 특정하는 부울값. 이 파
라미터는, AccessCheck가 사용자에게 이 방법을 실행하기 위한 액세스가 부
여되었는지의 여부를 판정하는 시점에 따라 ExecuteMethod를 사용하고자 할
때 유용하다. (이 파라미터를 FALSE로 설정함으로써) 어떤 방법이나 명령
라인도 실행하지 않기로 선택하면, IISDAMethod 노드의 대응되는 속성값을
공백 스트링으로 남겨둘 수 있다. AccessCheck가 리턴한 후, 결과가 로그
된다.
웹 사이트 관리를 위임하는 예시적인 과정
도 3은 웹 사이트의 위임 관리를 위한 예시적인 과정(300)을 나타낸다. 특히, 이 과정은, 사용자가 설명한 도 1 및 도 2의 IIS DA 프레임워크를 구현하는 ISP에 의해 호스트되는 웹 사이트의 특성을 변경하고자 할 때에 발생하는 예시적인 프로세싱을 도시한다. 따라서, 그리고 설명을 위해, 이 과정의 연산을 도 2 및 도 2의 특징에 대해 설명한다. 상술한 바와 같이, 도면에서, 컴포넌트 참조 번호의 가장 높은 자릿수는, 그 컴포넌트가 처음으로 등장한 특정 도면을 식별한다.
블록 302에서, 관리 엔티티(예를 들어, 관리자 그룹의 멤버)는 (도 1의) 컴퓨터(130)에 의해 호스트된 애플리케이션 및/또는 리소스에 대한 연산을 위해 하나 이상의 파라미터를 제공한다. 이러한 제공은 (도 2의) 인가 모듈(202)에 의해 노출된 API(222)를 통해 제공된다.
블록 304에서, 사용자는 (도 1의) 컴퓨터(130)에 의해 호스트된 RWSA(Remote Web Site Administration) 애플리케이션(206)과 같은 애플리케이션을 실행한다. RWSA 애플리케이션(206)으로 인해 웹 사이트 소유자와 같은 사용자는 내용 및/또는 기능, 또는 (도 1의) 컴퓨터(130)에 의해 호스트되는 웹 사이트 또는 리소스의 어떤 다른 태양을 변경, 테스트하거나 관리할 수 있다. 후술하는 바와 같이, 이러한 관리에 대한 인가는 DA 모듈(204)에 의해 동적으로 판정된다. 사용자가 이러한 관리자 그룹의 멤버일 수도 있기는 하지만, 이 예를 위해, 사용자는 도 1의 컴퓨터(130)와 관련된 구성 및/또는 리소스의 관리에 대한 관리자 그룹의 멤버가 아니다. 블록 306에서, 사용자는 호스트된 리소스(예를 들어, 웹 사이트 등)에 대해 하나 이상의 연산을 수행할 것을 요청한다. 이를 위해, 애플리케이션(예를 들어, RWSA 애플리케이션(206))은 연산으로의 액세스를 요청하기 위해, DA 모듈(204)에 의해 노출된 하나 이상의 API(222)를 호출한다. 이미 설명한 바와 같이, 호스트된 리소스로의 사용자의 연산 액세스는, 표 10에 나타낸 바와 같은, 기능의 수개 계층에 의해 제어된다.
계층 설명
인가 정책 스토어(214) 인가 정책 스토어(214)는 요청된 태스크/방법으로의 사용자 액세스를 확인하는데 사용된다. 태스크는, 파라미터 값들을 제어할 수 있는 하나의 연산을 참조한다. 관련된 비즈니스 룰로 인해 사용자 입력에 기초하여 그 방법으로의 액세스를 거부할 수 있다. 각 태스크에 대한 비즈니스 룰을 기입하는 것에 관한 더 많은 정보를 위해서는, 예시적인 인가 관리자 정책 스토어의 표 11을 참고한다.
모듈(인가된 프로세스) 모듈은, 사용자가 연산을 수행(즉, 방법을 실행)할 수 있는지 확인하는 선행 계층 이후의 연산을 수행하는 인가된 프로세스(210)이다. 모듈은 명령-라인 모듈이거나 COM 방법이다.
호스트된 애플리케이션(예를 들어, RWSA 애플리케이션(206)) API(222)의 DA 모듈(202)에 대해 개개의 것들을 호출함으로써 태스크로의 인터페이스를 제공한다. 이 계층에서는, 길이, 값, 및 포맷과 같은 특징들을 특정함으로써, 사용자로부터의 입력을 제어할 수 있다. 이 구현에서, RWSA 애플리케이션(206)은 이러한 인터페이스를 DA 모듈(202)의 노출된 API(222)에 제공한다.
예시적인 연산 계층들
블록 308에서, DA 모듈(204)은, 사용자가 요청된 연산을 통해 리소스를 액세스하도록 인가되었는지의 여부를 판정한다. 이 판정은, 사용자가 (도 1의) 컴퓨터(130)의 리소스를 관리하는 것에 대한 관리자 그룹의 멤버인지의 여부와 전혀 무관하게 수행된다. 이를 위해, DA 모듈(204)은 Parameters 방법 API(222)를 통해 ExcuteMethod 파라미터들을 설정한다. ExcuteMethod는 구성 파일(218)로의 경로를 제공하는 레지스트리(220)의 엔트리를 검색한다. 구성 파일(218)은, 모든 사용자들에 의해 수행될 수 있으며 관리 엔티티가 각 사용자에 대해 엔트리(즉, IISDAScope 노드)를 부가할 수 있는 가능한 모든 방법을 특정한다.
블록 306의 이 시점에서, ExcuteMethod는 구성 파일(218)을 판독하고, 요청된 연산 이름, 범위 및 파라미터를 이 파일의 엔트리에 매핑하고자 한다. 이들 엔트리가 발견되면, 인가 정책 스토어(214)에 관한(즉, IISDAScope 노드 속성으로부터 유도된) 정보가 검색된다. ExcuteMethod는 인가 정책 스토어(214)로부터 정보를 검색하며, 방법 및 제공된 파라미터에 기초하여, 사용자가 특정된 범위로의 액세스를 갖는지의 여부(즉, AccessCheck로의 호출)를 확인한다. 이를 위해, ExcuteMethod는, 클라이언트 ID에 대해 수행될 액세스 체크 또는 인증을 위해, 클라이언트를 대신해 호출자가 호스트하는 리소스로의 클라이언트 ID를 나타내는 것으로 호출자를 구체화(impersonation)한다. (구체화는 스레드(thread)를 소유하는 프로세스의 그것과는 상이한 보안 문맥에서 실행하는 스레드 능력이다.)
블록 310에서, 사용자가 요청된 연산을 수행하도록 인가되지 않았다고 판정되면, 사용자는 연산으로의 액세스가 거부된다. 그러나, 블록 312에서, 사용자에게 범위로의 액세스가 부여되고 참조되는 방법이 사용자 범위내의 태스크에 있다면, ExcuteMethod는 프로세스(즉, 인가된 프로세스(210))를 실행하거나 사용자 요청 연산을 수행하는 프로세스를 실행하는(즉, 오브젝트(예를 들어, COM 오브젝트) 또는 명령 라인을 통해 실행하는) 명령 라인(210)을 구축한다.
예를 들어, DA 모듈(202)은 실제로 연산/방법을 실행할 실행가능 모듈에 대한 명령 라인을 구축하거나, 연산과 관련된 COM 오브젝트를 초기화하고 특정된 방법의 DISPID를 취하고자 한다. 그 다음, DA 모듈(202)은, 제 1의 부울 파라미터에 특정된 것에 따라, CreateProcess 또는 연산과 관련된 COM 방법을 호출한다. CreateProcess의 경우, DA 모듈(202)은 방금 구축된 명령 라인(210)을 사용하고 프로세스는 애플리케이션(예를 들어, COM 애플리케이션)의 사용자 문맥하에서 시작한다. 논의를 위해, 이러한 애플리케이션을 인가된 프로세스(210)로서 나타낸다.
블록 314에서, 요청된 연산이 성공적으로 실행되면, 인가된 프로세스(210)는 출력 어레이를 구축하고 이 출력 어레이를 로그 파일(224)에 로그한다. 논의를 위해, 이러한 출력 어레이를 "다른 데이터"(226)의 개별적인 부분으로 나타낸다. 이 구현에서, 본 방법의 리턴 타입이 VT_BSTR 또는 VT_ARRAY이면, 어레이의 모든 요소는 VT_BSTR 타입이다.
예시적인 위임 관리
표 11은 인가 정책 스토어(214)의 예시적인 포맷을 나타낸다. 이 파일 타입의 구문에 관한 더 많은 정보를 위해서는, 인가 정책 스토어 파일 포맷을 참고한다.
예시적인 인가 정책 스토어
CmdLine 및 DACmdLineKeys 예들
다음의 예들은, 구성 파일(218)의 설정 및 ExecuteMethod와 Parameters 방법에 전달된 파라미터들에 기초하여, 모듈에 대해 명령 라인이 구축되는 방법을 나타낸다.
예시적인 명령 라인-예 1
다음의 예는 표 11의 예시적인 명령 라인이 유도되는 구성 파일(218)의 예시적인 구문을 나타낸다.
("Scope1", "SetFlags", true, true)의 파라미터들이 ExecuteMethod로 전달된다. "3"의 파라미터가 Parameters로 전달된다. 본 방법의 CmdLine 속성의 값은 "SET #mn# #mp@1# #1#"이다. DA(202;"도구")는 # 또는 $의 2개 문자로 한정된 첫번째 시퀀스(이 예에서는, #mn#)를 인식한다. 도구는 Name="mn" 속성으로 IISDACmdLineKeys의 서브노드를 찾고자 한다. IIS DA는, 그것이 참조하는 AttributeName, 이 예에서는 MetabaseNode, 및 이 속성이 정의되었다는 Node, 이 예에서는 IISDAScope를 위치시킨다. "Scope1"은 ExecuteMethod의 호출자에 의해 특정된 범위이므로, 도구는 #mn# 시퀀스를 범위 "Scope1"에 정의된 MetabaseNode 속성값으로 대체한다. 이 예에서, 이 값은 "w3svc/1/Root"이다.
DA(202)는, # 또는 $의 2개 문자로 범위가 정해진 후속 시퀀스, 이 예에서는 #mp@1#를 Name="mp" 속성을 가진 IISDACmdLineKeys의 서브노드를 위치시키기 위해 확인한다. DA(202)는 그것이 참조하는 AttributeName, 이 예에서는 MetabaseProperty 및 이 속성이 정의된 Node, 이 예에서는 Parameter를 위치시킨다. "@1"은 토큰으로 표시되기 때문에, 도구는 토큰 #mp@1#를 인덱스 1의 파라미터, 이 예에서는 "AccessFlags"에 대해 정의된 MetabaseProperty 속성의 값으로 대체한다.
상술한 관점에서, 이 명령 라인을 생성하기 위해 다음의 동작들이 발생한다: "SET"은 # 또는 $의 문자들로 범위가 정해지지 않았으므로 그대로 사용되고; #mn#은 "w3svc/1"으로 대체되며; "/"은 # 또는 $의 문자들로 범위가 정해지지 않았으므로 그대로 사용되고; #mp@1#은 "AccessFlags"로 대체되며; #1#는 3인, 인덱스 1의 파라미터 값으로 대체된다.
예시적인 명령 라인-예 2
다음의 예는, 표 12의 예시적인 명령 라인이 유도되는 구성 파일(218)의 예시적인 구문을 나타낸다.
("Scope1", "SetFlags")의 파라미터들이 ExecuteMethod로 전달된다. "3"의 파라미터가 Parameters로 전달된다. 이러한 명령 라인이 구축되는 방법에 대한 다음의 논의를 이해하기 위해 구성 파일 구문을 참조한다. 본 방법의 CmdLine 속성값은 "SET $mn$ #mp@1# #1#"이다. DA(202)는 # 또는 $의 2개 문자로 한정된 첫번째 시퀀스, 이 예에서는 $mn$을 인식하고, Name="mn" 속성을 가진 ISDACmdLineKeys의 서브노드를 찾고자 한다. DA는, 그것이 참조하는 AttributeName-MetabaseNode-및 이 속성이 정의되었다는 Node-IISDAScope-를 찾고, "Scope1"은 ExecuteMethod의 호출자에 의해 특정된 범위이므로, "Scope1" 범위에 정의된 MetabaseNode 속성의 이름으로 $mn$ 시퀀스를 대체한다. DA는, # 또는 $의 2개 문자로 범위가 정해진 후속 시퀀스, 이 예에서는 #mp@1#를 인식하고 Name="mp" 속성을 가진 IISDACmdLineKeys의 서브노드를 위치시키고자 한다. DA는 그것이 참조하는 AttributeName-MetabaseProperty-및 이 속성이 정의된 Node-Parameter를 위치시킨다. "@1"은 토큰으로 표시되기 때문에, 도구는 토큰 $mp@1$를 인덱스 1의 파라미터, 이 예에서는 "AccessFlags"에 대해 정의된 MetabaseProperty 속성의 값으로 대체한다.
간단하게, 이 명령 라인을 생성하기 위해 다음의 동작들이 발생한다: "SET"은 # 또는 $의 문자들로 범위가 정해지지 않았으므로 그대로 사용되고; $mn$은 "MetabaseNode"로 대체되며; #mp@1#은 "AccessFlags"로 대체되고; #1#는 3인, 인덱스 1의 파라미터 값으로 대체된다.
예시적인 명령 라인-예 3
다음의 예는, 표 14의 명령 라인이 유도되는 구성 파일 구문을 나타낸다.
("Scope1", "SetFlags")의 파라미터들이 ExecuteMethod로 전달된다. "1", "1", "1"의 스트링을 포함하는 어레이가 Parameters로 전달된다. 이러한 명령 라인이 구축되는 방법에 대한 다음의 논의를 이해하기 위해 구성 파일 구문을 참조한다. 본 방법의 CmdLine 속성값은 "SET #1# #2# #3#"이다. 도구는 # 또는 $의 2개 문자로 범위가 정해진 첫번째 시퀀스, 이 예에서는 #1#을 인식한다. 2개의 # 문자 사이에 숫자가 존재하기 때문에, 도구는 이 토큰을 제 1 파라미터의 값으로 대체한다. 도구는 후속의 2개 토큰:#2# #3#에 대해서도 동일한 과정을 수행한다.
예시적인 명령 라인-예 4
다음의 예는, Parameters 방법에 부정확한 숫자의 파라미터를 제공함으로써 에러가 발생하는 명령 라인을 나타낸다. 표 15의 명령 라인이 유도되는 구성 파일 구문은 다음과 같다.
("Scope1", "SetFlags")의 파라미터들이 ExecuteMethod로 전달된다. "1", "1", "1"의 스트링을 포함하는 어레이가 Parameters로 전달된다.
이 예에서, 명령 라인은 (Cmdline 속성에 #4#를 특정함으로써) 인덱스 4를 가진 파라미터를 참조하기 때문에, DA 모듈(202)은 에러를 리턴하지만, Parameters는 3개의 파라미터만을 수신한다. 따라서, 명령 라인이 구축되지 않는다.
예시적인 구성 파일
다음의 구성 파일(218)은 "SetProperty" 방법 및 관련 매핑: 사용자에 대해 "www.fabrikam.com"이라 명명된 범위; 로그 파일 포맷; 및 명령-라인 토큰에 대한 템플릿을 정의한다.
예시적인 구성 파일
SetProperty 방법
표 15의 예에서, 이 방법은 인가 정책 스토어(214)에 OperationID=1을 가진 방법에 대응된다. 요청된 연산을 수행하는 실행가능한 명령 라인(210)의 경로는 "C:\Adsutil.exe"이다. 이 방법에 대한 명령-라인 템플릿은 "SET #mn# #1#"이다. 이 방법이 실행되기 위한 타임-아웃은 10초이다. 분리자 또는 서술이 정의되지 않는다. 본 방법은, IIS 메타베이스의 "AccessFlags" 특성에 대응되는, "Flags"로 명명된 하나의 파라미터만을 가진다. 본 방법은, 인가 정책 스토어에 ID 1을 가진 연산을 참조하는 태스크와 관련된 BizRule에 의해 사용될 수 있는 것으로서 ("Scripting.FileSystemObject" 오브젝트의 인스턴스에 대응되는) "MyObject" 오브젝트 이름을 정의한다.
표 15의 예에서, "www.fabrikam.com"으로 정의된 범위는 "C:\Store.xml"에 위치하는 스토어의 "Scope1"으로 명명된 범위에 대응된다. 이 스토어내에서 이 범위는 "SecurityApplication" 애플리케이션 아래에 정의된다. 이 범위로의 액세스는 EventLog의 엔트리를 식별하기 위해 "Scope1" 이름을 사용하는 감사를 생성한다.
명령-라인 토큰 포맷
이 템플릿은, "SetProperty" 방법의 CmdLine 속성이, ExecuteMethod에 대한 파라미터로서 특정된 범위에 대응되는 "IISDAScope" 아래에 정의된 "MetabaseNode"의 이름을 가진 속성 ($mn$를 사용하는) 이름 또는 (#mn#를 사용하는) 값에 의해 식별되는 "mn" 키를 포함하는 (파라미터 값에 대한 "keywords" 및 #D# 토큰들 옆의) 토큰들만을 사용할 수 있다는 것을 특정한다.
예시적인 시나리오:ExecuteMethod 작업 방법
Executemethod가 이 시나리오에서 연산하는 방법을 이해하기 위해, 다음의 간략화된 구성 및 인가 관리자 파일들을 참조한다. 구성 파일(218)은 다음과 같다.
예시적인 인가 정책 스토어(214)는 다음과 같다.
레지스트리 엔트리 HKLM\Software\Microsoft\IISDelAdmin\DelegAdminMappingPath(REG_SZ)가 정의되며 "C:\DelegAdmin\Config\Config.xml"의 스트링-구성 파일(218)을 포함한다는 것이 이러한 예시적 시나리오에 적용된다고 가정한다. Delegadm.dll 오브젝트가, 그 ID가 이 레지스트리 엔트리로의 판독 액세스를 가진 COM+ 애플리케이션(즉, 인가된 프로세스(210))내에서 실행된다.
예를 들어, "user1"의 사용자가 그룹 ApplicationAccessGroup 아래의 다음의 SID에 의해 스토어에서 식별된다:
<Member>S-1-5-21-3131233723-616130271-937215924-1032</Member>.
이 사용자는 "SetAccessProperty" 방법의 실행을 위한 애플리케이션(예를 들어, RWSA 애플리케이션(206))에 요청을 형성한다. 이 요청에서, 범위는 "ScopeUser1"이고, 방법은 "SetAccessProperty"이며, 본 방법에 대한 파라미터는 "1"이다. 이 요청에 기초하여, 다음의 간단한 코드가 .asp 페이지에서 실행된다:
이 코드로 인해, user1은, "SetAccessProperty" 방법을 호출하고 인가 관리자 API를 사용함으로써, "ScopeUser1"에 대응되는 사이트에 대한 AccessFlags 특성을 1로 설정할 수 있다.
예시적인 ExecuteMethod 프로세싱
이 태스크를 실현하기 위해, 특정된 파라미터들이 확인되는 단계들이 ExecuteMethod내에서 수행된다. "Parameters" 방법 구문에서 언급한 바와 같이, Parameters 방법에 대한 파라미터는 스트링이거나 스트링들의 어레이일 수 있다. 이 예에서, 파라미터는, 그것이 스트링이기 때문에, 수용된다. 파라미터가 거부되면, 대응되는 에러 코드가 로그된다. 오브젝트는 레지스트리 엔트리 HKLM_Software_Microsoft_IISDelAdmin_DelegAdminMappingPath의 값을 취하고자 한다. 이 예에서, 그 값은 C:\Delegadmin\Config\Config.xml이다. COM+ 애플리케이션의 ID는 이 값으로의 액세스를 가진다. 애플리케이션이 레지스트리 엔트리 값을 판독할 수 없다면, 애플리케이션은 에러를 로그한다.
연산이 실행되지 않았으므로, 로그 파일의 CMDLine 필드는, SetAccessProperty 방법에 대응되는 IISDAMethod 노드의 CmdLine 속성의 값을 포함하게 된다.
애플리케이션이 구성 파일로의 액세스를 획득한 후, 애플리케이션은, 파라미터로서 특정된 "ScopeUser1" 범위를 위해 구성 파일을 검색한다. 범위가 발견되지 않으면, 에러가 로그된다. "www.fabrikam.com"의 PublicName 속성값을 포함하는 "IISDAScope" 노드가 존재하더라도 이 노드가 이용된 모든 속성들을 갖지 않으면, 에러가 발생할 수 있다.
범위가 발견된 후, 대응되는 IISDAScope 노드가 판독되며 애플리케이션은, "ScopeUser1"이 AZStorePath 속성에 정의된 인가 정책 스토어의 "Scope1"으로 명명된 범위, 이 예에서는 "C:\DelegAdmin\Stores\User1.xml"로 매핑된다는 것을 인식한다. 또한, 애플리케이션은, AZApplicationName 속성의 값을 통해, 그 아래에 "Scope1" 범위가 정의되는 스토어내에서 애플리케이션 이름, 이 예에서는 "SiteAdminApp"를 취한다.
공용의 범위 이름이 확인된 후, 본 방법의 이름이 확인된다. 애플리케이션은 구성 파일(118)에서 특정된 방법 이름, 이 예에서는 "SetAccessProperty"를 찾는다. 방법이 발견되지 않으면, 적절한 에러 코드가 로그된다. "SetAccessProperty" 값을 가진 PublicName 속성을 포함하는 "IISDAMethod" 노드가 존재하더라도 이 노드가 이용된 모든 속성을 갖지 않으면, 에러가 발생할 수 있다.
방법 이름이 발견된 후, 대응되는 IISDAMethod 노드가 판독된다. 이제 도구는 "SetAccessProperty" 방법을 AZStoreID 속성에 정의된 연산으로, 이 예에서는 "1"로 매핑한다. 정책 파일의 구문에서 특정한 바와 같이, 인가 정책 스토어의 하나의 태스크만이 이 방법을 참조할 수 있다. 인가 정책 스토어의 하나 이상의 태스트가 이 방법을 참조하면, AccessCheck가 이 범위로의 액세스를 거부할 수 있다. 이는, 태스크들 중 하나에 대한 비즈니스 룰이 이 범위로의 액세스를 거부했기 때문에 발생할 수 있다.
속성들과 함께, (이 예에서는, ID "1"을 가진 연산인) 이 연산을 참조하는 태스크의 비즈니스 룰에 사용될 방법의 파라미터 및 인터페이스에 관한 정보를 검색하기 위해, IISDAMethod 노드의 서브노드들이 판독된다. 확인 프로세스에서 에러가 발생하면, 대응되는 에러 코드가 로그된다. 파라미터 또는 인터페이스 서브노드들내에서 이용된 속성들이 IISDAMethod 노드의 정의로부터 누락되기 때문에, 에러가 발생할 수 있다. 구성 파일에 정의된 파라미터들의 갯수는 ExecuteMethod가 호출되기 전에 (Parameters 방법을 사용해) 설정된 파라미터들의 갯수에 매칭된다. 그렇지 않으면, 특정한 에러 코드가 로그된다.
애플리케이션은 스토어 경로, 이 예에서는 "C:\DelegAdmin\Stores\User1.xml"을 사용해 인가 스토어 오브젝트를 초기화하고 이 스토어내에 대응되는 애플리케이션, 이 예에서는 "SiteAdminApp"를 오픈하려 한다. 연산들 중 하나가 실패하면, 예외가 포착되며 그 결과가 로그된다.
애플리케이션은 (이 예에서는 User1인) 호출자에 관한 정보를 수집하고 AccessCheck를 위한 파라미터들을 구축한다. 다음의 표 17은 이 예에 사용된 AccessCheck 파라미터들을 설명한다.
AccessCheck파라미터 설명
bstrObjectName "ScopeUser1"이 정의되어 있는 IISDAScope 노드가 GenerateAudits="1"을 특정하기 때문에, 이 파라미터는 AuditName 속성의 값, 이 예에서는 "Scope1"을 가진다.
varScopeNames 파라미터 "ScopeUser1" 범위가 인가 스토어의 범위 이름 "Scope1"으로 매핑된다. 이는 AccessCheck를 위한 이 파라미터의 값이다.
varOperations 이 파라미터는, 우리가 관심있는 스토어 연산의 ID를, 이 예에서는 1을 포함한다.
varParameterNames 이 파라미터는 파라미터 이름들의 어레이를 포함한다. 이 예에서는, 본 방법이 "Flags"로 정의된 하나의 파라미터 서브노드만을 가진다.
varParameterValues 이 파라미터는, 상기 어레이에 정의된 파라미터 이름들에 대응되는 파라미터 값들의 어레이를 포함한다. 이 예는, "1"의 값을 가진 하나의 파라미터만을 사용한다.
varInterfaceNames 이 파라미터는, 오브젝트 이름들이 ID 1을 가진 연산을 참조하는 태스크에 정의된 비즈니스 룰에 사용되기 때문에, 오브젝트 이름들의 리스트를 포함한다. 이 예에서는, 하나의 인터페이스 서브노드만이 존재하며, 어레이는 이 서브노드의 Name 속성의 값, 이 예에서는 "MyFSOObject"만을 포함한다.
varInterfaceFlags 이 어레이는 상술한 오브젝트 이름에 대응되는 하나의 요소만을 포함한다. 이는, 9600인, 인터페이스 서브노드의 Flags 속성값이다.
varInterfaces 이 파라미터는, Interface 서브노드의 ProgID 속성에 정의된 ProgID에 의해 정의되는 오브젝트 인스턴스의 생성을 시도하는 동안에 획득되는 (이 예에서는 하나의 요소를 가진) IDispatch 포인터들의 어레이이다. 이 예에서, 이 ProgID는 "System.FileSystemObject"이다. 이 오브젝트의 인스턴스가 생성될 수 없으면, 특정한 에러 코드가 리턴된다.
AccessCheck 파라미터들의 예시적인 세트
AccessCheck를 위한 파라미터들의 구축 프로세스가 성공하면, 이 함수가 호출되어 결과가 체크된다. 이 예에서는, 파라미터들과 정의된 2개의 XML 파일들에 기초하여, user1에게 "Scope1" 범위로의 액세스가 부여된다. 이 함수가 실패하면, 예외가 생성된다. AccessCheck가 사용자로의 액세스를 거부하면, 특정한 에러 코드가 로그된다.
함수가 사용자로의 액세스를 "Scope1"에 부여하면, (즉, 이 예의 ProcessType 속성값이 "CMD"이므로) 실행가능 모듈에 대한 명령 라인(210)이 구축되고 새롭게 구축된 명령 라인을 사용해 실행 모듈이 호출된다. 이 예에서, 명령 라인은 다음과 같이 구축된다. #Path#가, 발견된 범위에 대응되는 IISDAScope 노드 아래에 정의된 MetabaseNode 속성값, IIS://Localhost/W3svc/1으로 대체된다. #Flag@1#는, 인덱스 1의 파라미터 값에 대해 정의된 MetabaseProperty 속성값, 이 예에서는 AccessFalgs으로 대체된다. #1#는, 제 1 파라미터 값, 이 예에서는 1로 대체된다. 이는 실행가능 모듈에 대한 명령 라인이 "SET IIS://W3svc/1/root/AccessFlags 1"임을 의미한다. 다음의 예, C:\adsutil.exe SET IIS://W3svc/1/root/AccessFlags 1"는 실행되는 전체 명령 라인을 나타낸다.
일반적으로, 명령 라인을 구축하는 동안 에러가 발생하면(예를 들어, 키를 #KEY$로 정의하는 것과 같이 무효한 시퀀스가 사용되거나 정의되지 않은 키가 사용되면), 애플리케이션은 에러를 로그한다.
결론
이미지 주의 분석(image attention analysis)을 위해 콘트라스트-기반의 특징 맵을 생성하는 시스템 및 방법이 상술된다. 본 시스템 및 방법이 구성적 특징 및 방법적 연산에 대해 특징적인 언어로 설명되었지만, 첨부된 청구항에 정의된 바와 같은 주된 내용이, 설명된 특정 사양 또는 연산에 한정될 필요는 없다. 오히려, 특정 사양 및 연산들은 청구된 주된 내용을 구현하는 예시적인 형태로서 개시되어 있다.
따라서, 본 발명에 따르면, 웹 사이트에 대한 원격 관리를 위임하고 구현하기 위한, 신뢰할 수 있으며 확장가능하고 제어가 용이하며 안전한 시스템 및 방법이 제공된다.
도 1은 호스트된 리소스의 관리를 위임하는 시스템 및 방법이 구현될 수 있는 예시적인 컴퓨팅 환경을 나타낸다.
도 2는 호스트된 리소스의 관리를 위임하기 위한 애플리케이션 프로그램 및 프로그램 데이터를 포함하는, 도 1의 시스템 메모리에 대한 부가적인 예시적 태양들을 나타낸다.
도 3은 호스트된 리소스의 관리를 위임하는 예시적 과정을 나타낸다.
<도면의 주요 부분에 대한 부호의 설명>
120 : 컴퓨팅 환경
130 : 컴퓨터
140 : ROM
150 : 광학 디스크 드라이브
160 : 애플리케이션 프로그램
170 : 사용자 입력 인터페이스
180 : 인터넷
202 : 인가 관리자 모듈
204 : DA(Delegation Administration) 모듈
206 : RWSA(Remote Client Web Site Administration) 모듈

Claims (38)

  1. 분산형 컴퓨팅 환경에서 하나 이상의 클라이언트 장치에 결합되어 있는 서버에 의해 사용되는 방법으로서,
    한 세트의 리소스들을 호스트하는 단계;
    상기 서버에 의해 호스트되어 있는 애플리케이션을 통해, 사용자로부터, 상기 리소스들 중 하나의 리소스에 대하여 연산을 수행하기 위한 요청을 수신하는 단계; 및
    상기 사용자에게, 상기 리소스에 대하여 상기 연산을 수행하기 위한 권한이 위임되었는지의 여부에 대한 함수로서 상기 연산의 인가 여부를 판정하는 단계로서, 상기 권한은 상기 사용자가 상기 서버에 대한 임의의 리소스와 관련된 관리자 그룹의 멤버인지의 여부와는 무관한, 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 연산의 인가 여부를 판정하는 단계는 안전한 위임 관리 프레임워크(secure delegation administration framework)에 의해 수행되는 방법.
  3. 제1항에 있어서,
    상기 연산은 상기 리소스의 내용 및/또는 기능의 변경과 관련되어 있는 방법.
  4. 제1항에 있어서,
    상기 리소스는 IIS(Internet Information Service) 메타베이스 노드로서 표현되는 방법.
  5. 제1항에 있어서,
    상기 요청은 사용자와 관련되어 있는 범위, 및 상기 연산과 관련되어 있는 방법의 이름을 포함하는 방법.
  6. 제1항에 있어서,
    상기 리소스는 ISP(Internet Service Provider)에 의해 호스트되는 웹 사이트이고, 상기 사용자에게는, 상기 안전한 위임 관리 프레임워크에 의한 허가 확인를 위해 상기 요청을 상기 ISP로 송신하는 것을 제외하면, 상기 ISP와 관련된 임의의 리소스에 대하여 관리 활동을 수행하는 것이 인가되지 않는 방법.
  7. 제1항에 있어서,
    상기 요청은, 상기 사용자가 동적으로 구축된 명령 라인을 통해 또는 상기 연산과 이미 관련되어 있는 실행가능한 오브젝트를 통해 상기 연산을 실행하고자 하는지의 여부에 대한 지시를 더 포함하는 방법.
  8. 제1항에 있어서,
    상기 요청은, 상기 사용자가 상기 연산의 결과를 로그하고자 하는지의 여부에 대한 지시를 더 포함하는 방법.
  9. 제1항에 있어서,
    상기 안전한 위임 관리 프레임워크는, 적어도, 상기 리소스로 지시된 상기 연산을 수행하기 위한 사용자 롤-기반 허가에 대한 매핑으로의 사용자 액세스를 허용하지 않기 때문에, 안전한 방법.
  10. 제1항에 있어서,
    상기 방법은,
    상기 애플리케이션을 상기 서버에 설치하는 단계;
    상기 설치하는 단계에 응답하여, 상기 애플리케이션은, 상기 애플리케이션이 수행할 수 있는 한 세트의 연산들을 식별하는 단계; 및
    관리자 그룹의 멤버에 의해, 상기 사용자를 포함하는 한 세트의 사용자들에 대한 인가 특정 롤(들)에 기초하여, 상기 연산들을 한 세트의 안전 허가들로 매핑하는 단계를 더 포함하고,
    상기 판정하는 단계는, 상기 애플리케이션이, 상기 사용자가 상기 연산을 수행할 허가를 가졌는지의 여부를 식별하는데 상기 매핑을 이용하는 단계를 더 포함하는 방법.
  11. 제1항에 있어서,
    상기 방법은,
    상기 관리자 그룹의 멤버에 의해, 상기 리소스들을 식별하는 IIS 메타베이스의 노드들로의 롤-기반 사용자 액세스 허가를 특정하는 단계; 및
    한 세트의 파라미터들 및 이름을 포함하는 인터페이스를 상기 연산을 포함하는 태스크에 지시하는 단계를 더 포함하고,
    상기 판정하는 단계는,
    상기 인터페이스를 구성 파일에 배치하는 단계;
    상기 인터페이스의 배치에 응답하여, 상기 파라미터들과 상기 이름 및 상기 리소스의 관점에서 범위를 확인하기 위해 상기 사용자의 ID를 상기 리소스에 제시하는 단계; 및
    상기 제시하는 단계에 응답하여, 상기 사용자에게 상기 리소스에 대하여 상기 연산을 수행하기 위한 롤-기반 액세스 허가가 위임되었는지의 여부를 식별하는 단계를 더 포함하는 방법.
  12. 제1항에 있어서,
    상기 사용자에게 상기 리소스에 대하여 상기 연산을 수행하기 위한 권한이 위임되었는지를 판정하는 단계에 응답하여,
    상기 연산과 관련된 파라미터들을 설정하는 단계; 및
    상기 사용자와 관련된 범위내에서 상기 연산을 실행하는 단계를 더 포함하는 방법.
  13. 서버 및 상기 서버에 결합되어 있는 하나 이상의 클라이언트 컴퓨팅 장치를 포함하는 분산형 컴퓨팅 환경에 사용하기 위한 컴퓨터-판독가능 매체로서,
    사용자에게 리소스들 중 하나의 리소스를 액세스하기 위한 권한이 위임되었는지의 여부를 상기 사용자가 판정할 수 있게 하는, 한 세트의 리소스들을 호스트하고;
    상기 리소스에 대하여 연산을 수행하기 위한 요청을 상기 사용자로부터 수신하며;
    상기 사용자에게, 상기 사용자가 상기 서버의 임의의 리소스와 관련되어 있는 관리자 그룹의 멤버일 것을 요하지 않는, 상기 연산을 수행하기 위한 권한의 롤-기반 범위가 위임되었는지의 여부에 대한 함수로서 상기 연산의 인가 여부를 판정하는 컴퓨터-실행가능 명령을 포함하는 컴퓨터-판독가능 매체.
  14. 제13항에 있어서,
    상기 연산은 상기 리소스의 내용 및/또는 기능의 변경과 관련되어 있는 컴퓨터-판독가능 매체.
  15. 제13항에 있어서,
    상기 리소스는 IIS 메타베이스 노드로서 표현되는 컴퓨터-판독가능 매체.
  16. 제13항에 있어서,
    상기 요청은 사용자와 관련되어 있는 범위, 및 상기 연산과 관련되어 있는 방법의 이름을 포함하는 컴퓨터-판독가능 매체.
  17. 제13항에 있어서,
    상기 리소스는 ISP에 의해 호스트되는 웹 사이트이고, 상기 사용자는 상기 관리자 그룹의 멤버가 아닌 컴퓨터-판독가능 매체.
  18. 제13항에 있어서,
    상기 요청은, 상기 연산이 동적으로 구축된 명령 라인을 통해 또는 상기 연산과 이미 관련되어 있는 실행가능한 오브젝트를 통해 실행될 것인지의 여부에 대한 지시를 더 포함하는 컴퓨터-판독가능 매체.
  19. 제13항에 있어서,
    상기 연산들을 인가할 것인지의 여부를 판정하는 것과 관련된 연산들은, 적어도, 상기 사용자가 상기 연산을 수행하기 위한 사용자 롤-기반 허가(들)로의 액세스를 갖지 않기 때문에, 안전한 컴퓨터-판독가능 매체.
  20. 제13항에 있어서,
    상기 컴퓨터-실행가능 명령은,
    상기 리소스와 관련된 한 세트의 연산들을 식별하고;
    상기 연산들을, 상기 사용자를 포함하는 한 세트의 사용자들에 대한 인가 특정 롤(들)에 기초하는 한 세트의 안전 허가들로 매핑하는 명령을 더 포함하고,
    상기 판정하는 명령은, 상기 사용자가 상기 연산을 수행하기 위한 허가를 가졌는지의 여부를 식별하는데 상기 매핑을 이용하는 명령을 더 포함하는 컴퓨터-판독가능 매체.
  21. 제13항에 있어서,
    상기 컴퓨터-실행가능 명령은,
    상기 리소스들을 식별하는 IIS 메타베이스의 노드들로의 롤-기반 사용자 액세스 허가들을 안전하게 특정하고;
    한 세트의 파라미터들 및 이름을 포함하는 인터페이스를 상기 연산을 포함하는 태스크에 지시하는 명령을 더 포함하고,
    상기 판정하는 컴퓨터-실행가능 명령은,
    상기 인터페이스를 구성 파일에 배치하고;
    상기 인터페이스 배치에 응답하여, 상기 파라미터들과 상기 이름 및 상기 리소스의 관점에서 범위를 확인하기 위해 상기 사용자의 ID를 상기 리소스에 제시하며;
    상기 제시에 응답하여, 상기 사용자에게 상기 리소스에 대하여 상기 연산을 수행하기 위한 롤-기반 액세스 허가가 위임되었는지의 여부를 식별하는 명령을 더 포함하는 컴퓨터-판독가능 매체.
  22. 제13항에 있어서,
    상기 컴퓨터-실행가능 명령은, 상기 사용자에게 상기 리소스에 대하여 상기 연산을 수행하기 위한 권한이 위임되었는지를 판정하는 것에 응답하여,
    상기 연산과 관련된 파라미터들을 설정하고;
    상기 사용자와 관련된 범위내에서 상기 연산을 실행하는 명령을 더 포함하는 컴퓨터-판독가능 매체.
  23. 서버 및 상기 서버에 결합되어 있는 하나 이상의 클라이언트 컴퓨팅 장치를 포함하는 분산형 컴퓨팅 환경에 사용하기 위한 서버로서,
    프로세서; 및
    상기 프로세서에 결합되어 있는 메모리를 구비하고,
    상기 메모리는,
    한 세트의 리소스들을 호스트하고;
    상기 리소스들 중 하나의 리소스에 대하여 연산을 수행하기 위한 요청을 사용자로부터 수신하며;
    상기 사용자에게, 상기 사용자가 상기 서버의 리소스들과 관련되어 있는 관리자 그룹의 멤버일 것을 요하지 않는, 상기 연산을 수행하기 위한 권한의 롤-기반 범위가 위임되었는지의 여부에 대한 함수로서 상기 연산의 인가 여부를 판정하는 컴퓨터-실행가능 명령을 포함하는 서버.
  24. 제23항에 있어서,
    상기 요청은 상기 리소스들 중 하나 이상의 리소스에 의해 생성되는 서버.
  25. 제23항에 있어서,
    상기 연산은 상기 리소스의 내용 및/또는 함수의 변경과 관련되어 있는 서버.
  26. 제23항에 있어서,
    상기 리소스는 IIS 메타베이스 노드로서 표현되는 서버.
  27. 제23항에 있어서,
    상기 요청은 사용자와 관련되어 있는 범위, 및 상기 연산과 관련되어 있는 방법의 이름을 포함하는 서버.
  28. 제23항에 있어서,
    상기 리소스는 ISP에 의해 호스트되는 웹 사이트이고, 상기 사용자는 상기 관리자 그룹의 멤버가 아닌 서버.
  29. 제23항에 있어서,
    상기 요청은, 상기 연산이 동적으로 구축된 명령 라인을 통해 또는 상기 연산과 이미 관련되어 있는 실행가능한 오브젝트를 통해 실행될 것인지의 여부에 대한 지시를 더 포함하는 서버.
  30. 제23항에 있어서,
    상기 안전한 위임 관리 프레임워크는, 적어도, 상기 리소스로 지시된 상기 연산을 수행하기 위한 사용자 롤-기반 허가에 대한 매핑으로의 사용자 액세스를 허용하지 않기 때문에, 안전한 서버.
  31. 제23항에 있어서,
    상기 컴퓨터-실행가능 명령은,
    상기 리소스와 관련된 한 세트의 연산들을 식별하고;
    상기 연산들을, 상기 사용자를 포함하는 한 세트의 사용자들에 대한 인가 특정 롤(들)에 기초하는 한 세트의 안전 허가들로 매핑하는 명령을 더 포함하고,
    상기 판정하는 명령은, 상기 사용자가 상기 연산을 수행하기 위한 허가를 가졌는지의 여부를 식별하는데 상기 매핑을 이용하는 명령을 더 포함하는 서버.
  32. 제23항에 있어서,
    상기 컴퓨터-실행가능 명령은,
    상기 리소스들을 식별하는 IIS 메타베이스의 노드들로의 롤-기반 사용자 액세스 허가들을 안전하게 특정하고;
    한 세트의 파라미터들 및 이름을 포함하는 인터페이스를 상기 연산을 포함하는 태스크에 지시하는 명령을 더 포함하고,
    상기 판정하는 컴퓨터-실행가능 명령은,
    상기 인터페이스를 구성 파일에 배치하고;
    상기 인터페이스 배치에 응답하여, 상기 파라미터들과 상기 이름 및 상기 리소스의 관점에서 범위를 확인하기 위해 상기 사용자의 ID를 상기 리소스에 제시하며;
    상기 제시에 응답하여, 상기 사용자에게 상기 리소스에 대하여 상기 연산을 수행하기 위한 롤-기반 액세스 허가가 위임되었는지의 여부를 식별하는 명령을 더 포함하는 서버.
  33. 제23항에 있어서,
    상기 컴퓨터-실행가능 명령은, 상기 사용자에게 상기 리소스에 대하여 상기 연산을 수행하기 위한 권한이 위임되었는지를 판정하는 것에 응답하여,
    상기 연산과 관련된 파라미터들을 설정하고;
    상기 사용자와 관련된 범위내에서 상기 연산을 실행하는 명령을 더 포함하는 서버.
  34. 한 세트의 리소스들을 호스트하는 수단;
    상기 리소스들 중 하나의 리소스에 대하여 연산을 수행하기 위한 요청을 사용자로부터 수신하는 수단; 및
    상기 사용자에게, 상기 사용자가 상기 서버와 관련된 관리자 그룹의 멤버일 것을 요하지 않는, 상기 연산을 수행하기 위한 권한의 롤-기반 범위가 위임되었는지의 여부에 대한 함수로서 상기 연산의 인가 여부를 판정하는 수단을 구비하는 서버.
  35. 제34항에 있어서,
    상기 연산은 상기 리소스의 내용 및/또는 함수의 변경과 관련되어 있는 서버.
  36. 제34항에 있어서,
    상기 리소스는 IIS 메타베이스 노드로서 표현되는 서버.
  37. 제34항에 있어서,
    상기 리소스는 ISP에 의해 호스트되는 웹 사이트이고, 상기 사용자는 상기 관리자 그룹의 멤버가 아닌 서버.
  38. 제34항에 있어서,
    상기 사용자에게 상기 리소스에 대하여 상기 연산을 수행하기 위한 권한이 위임되었는지를 판정하는 것에 응답하여,
    상기 연산과 관련된 파라미터들을 설정하는 수단; 및
    상기 사용자와 관련된 범위내에서 상기 연산을 실행하는 수단을 더 구비하는 서버.
KR1020040057674A 2003-08-28 2004-07-23 호스트된 리소스로의 위임된 관리 KR101137049B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/650,891 2003-08-28
US10/650,891 US7827595B2 (en) 2003-08-28 2003-08-28 Delegated administration of a hosted resource

Publications (2)

Publication Number Publication Date
KR20050022283A true KR20050022283A (ko) 2005-03-07
KR101137049B1 KR101137049B1 (ko) 2012-04-23

Family

ID=34104718

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040057674A KR101137049B1 (ko) 2003-08-28 2004-07-23 호스트된 리소스로의 위임된 관리

Country Status (19)

Country Link
US (1) US7827595B2 (ko)
EP (1) EP1510900B1 (ko)
JP (1) JP4718804B2 (ko)
KR (1) KR101137049B1 (ko)
CN (1) CN1592230B (ko)
AU (1) AU2004203375A1 (ko)
BR (1) BRPI0403012A (ko)
CA (1) CA2472982A1 (ko)
CO (1) CO5600217A1 (ko)
HK (1) HK1073709A1 (ko)
IL (1) IL162885A (ko)
MX (1) MXPA04007143A (ko)
MY (1) MY163665A (ko)
NO (1) NO20043160L (ko)
NZ (1) NZ533955A (ko)
RU (1) RU2360368C2 (ko)
SG (1) SG109539A1 (ko)
TW (1) TWI336043B (ko)
ZA (1) ZA200405489B (ko)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7546633B2 (en) * 2002-10-25 2009-06-09 Microsoft Corporation Role-based authorization management framework
CA2442799A1 (en) * 2003-09-26 2005-03-26 Ibm Canada Limited - Ibm Canada Limitee Generalized credential and protocol management of infrastructure
US7434256B2 (en) * 2003-12-18 2008-10-07 Intel Corporation Security management for wireless clients
US20060168216A1 (en) * 2004-12-09 2006-07-27 Alexander Wolf-Reber Digital management system and method for managing access rights in such a management system
JP4628149B2 (ja) * 2005-03-14 2011-02-09 株式会社エヌ・ティ・ティ・ドコモ アクセス制御装置及びアクセス制御方法
US7657746B2 (en) * 2005-04-22 2010-02-02 Microsoft Corporation Supporting statements for credential based access control
US8700523B2 (en) * 2005-06-10 2014-04-15 American Express Travel Related Services Company, Inc. System and method for delegating management of a financial transaction account to a designated assistant
US20070143801A1 (en) * 2005-12-20 2007-06-21 Madonna Robert P System and method for a programmable multimedia controller
WO2007074797A1 (ja) * 2005-12-28 2007-07-05 International Business Machines Corporation クライアント・サーバ・システムにおける負荷分散
US8429708B1 (en) * 2006-06-23 2013-04-23 Sanjay Tandon Method and system for assessing cumulative access entitlements of an entity in a system
US20080104418A1 (en) * 2006-10-25 2008-05-01 Electonic Data Systems Corporation Apparatus, and associated method, for providing an electronic storage box for securely storing data in electronic form
US20090187552A1 (en) * 2008-01-17 2009-07-23 International Business Machine Corporation System and Methods for Generating Data Analysis Queries from Modeling Constructs
RU2484596C2 (ru) * 2008-02-14 2013-06-10 Нокиа Корпорейшн Система и способ выполнения публикации
JP5164727B2 (ja) * 2008-08-06 2013-03-21 キヤノン株式会社 アプリケーション開発を支援するための開発ツールキットとしてのプログラム
US8667578B2 (en) * 2009-01-16 2014-03-04 Microsoft Corporation Web management authorization and delegation framework
US10110631B2 (en) * 2009-02-12 2018-10-23 International Business Machines Corporation Introducing encryption, authentication, and authorization into a publication and subscription engine
US20100325684A1 (en) * 2009-06-17 2010-12-23 Microsoft Corporation Role-based security for messaging administration and management
KR101528020B1 (ko) * 2010-05-28 2015-06-10 미쓰비시덴키 가부시키가이샤 로깅 장치, 로깅 시스템, 및 로깅 장치의 제어 방법
CN102411575A (zh) * 2010-09-21 2012-04-11 北京大学 一种网页显示方法、系统以及服务器
JP5623234B2 (ja) * 2010-10-22 2014-11-12 キヤノン株式会社 権限委譲システム、権限委譲方法、情報処理装置およびその制御方法、並びにプログラム
US8683557B1 (en) * 2011-02-05 2014-03-25 Google Inc. Delegation as a mechanism to manage business activity by taking on a shared identity
US9105009B2 (en) 2011-03-21 2015-08-11 Microsoft Technology Licensing, Llc Email-based automated recovery action in a hosted environment
JP5827518B2 (ja) * 2011-08-17 2015-12-02 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 情報管理システム、方法及びプログラム
US8839257B2 (en) 2011-11-22 2014-09-16 Microsoft Corporation Superseding of recovery actions based on aggregation of requests for automated sequencing and cancellation
CN103176771B (zh) * 2011-12-21 2016-04-13 无锡华润矽科微电子有限公司 芯片软件系统中实现内核程序自动实时生成的系统及方法
WO2013128338A1 (en) * 2012-03-02 2013-09-06 Koninklijke Philips N.V. System and method for access decision evaluation for building automation and control systems
US9460303B2 (en) * 2012-03-06 2016-10-04 Microsoft Technology Licensing, Llc Operating large scale systems and cloud services with zero-standing elevated permissions
US9401904B1 (en) * 2012-03-15 2016-07-26 Motio, Inc. Security migration in a business intelligence environment
US9081950B2 (en) * 2012-05-29 2015-07-14 International Business Machines Corporation Enabling host based RBAC roles for LDAP users
US9086933B2 (en) * 2012-10-01 2015-07-21 Nvidia Corporation System and method for launching callable functions
US8881249B2 (en) 2012-12-12 2014-11-04 Microsoft Corporation Scalable and automated secret management
RU2524566C1 (ru) * 2013-03-18 2014-07-27 Закрытое акционерное общество "Научно-производственное предприятие "Информационные технологии в бизнесе" Система контроля доступа к файлам на основе их автоматической разметки
RU2536678C1 (ru) * 2013-07-30 2014-12-27 ООО "НеоБИТ" Способ проверки прав доступа для учетных записей пользователей в грид-системах и система для его осуществления
CN103744673B (zh) * 2014-01-06 2017-02-08 北京乐动卓越科技有限公司 一种基于iOS平台的资源配置方法
US9762585B2 (en) 2015-03-19 2017-09-12 Microsoft Technology Licensing, Llc Tenant lockbox
US10931682B2 (en) 2015-06-30 2021-02-23 Microsoft Technology Licensing, Llc Privileged identity management
CN106570035B (zh) * 2015-10-13 2020-10-13 北京国双科技有限公司 数据库授权的方法及装置
CA3004175A1 (en) * 2015-11-18 2017-05-26 Level 3 Communications, Llc Service activation system
KR102315895B1 (ko) * 2016-06-16 2021-10-20 구글 엘엘씨 클라우드 컴퓨팅 노드들의 보안 구성
WO2018075011A1 (en) 2016-10-18 2018-04-26 Hewlett-Packard Development Company, L.P. Generating authentication assertions including an assurance score
US11188362B2 (en) * 2019-05-29 2021-11-30 Red Hat, Inc. Generating a command line interface for projects based on configuration management technologies
CN110633250B (zh) * 2019-07-19 2023-05-09 完美世界(北京)软件科技发展有限公司 资源管理系统和方法
US11302589B2 (en) * 2019-12-02 2022-04-12 Micron Technology, Inc. Electron beam probing techniques and related structures
CN112347442B (zh) * 2020-11-30 2023-03-21 四川长虹电器股份有限公司 用户权限的验证方法及装置
CN114003963B (zh) * 2021-12-30 2022-05-06 天津联想协同科技有限公司 一种企业网盘下文件授权的方法、系统、网盘及存储介质

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0697662B1 (en) 1994-08-15 2001-05-30 International Business Machines Corporation Method and system for advanced role-based access control in distributed and centralized computer systems
US6222856B1 (en) * 1996-07-02 2001-04-24 Murali R. Krishnan Adaptive bandwidth throttling for individual virtual services supported on a network server
US6055637A (en) * 1996-09-27 2000-04-25 Electronic Data Systems Corporation System and method for accessing enterprise-wide resources by presenting to the resource a temporary credential
US5748890A (en) 1996-12-23 1998-05-05 U S West, Inc. Method and system for authenticating and auditing access by a user to non-natively secured applications
US6014666A (en) * 1997-10-28 2000-01-11 Microsoft Corporation Declarative and programmatic access control of component-based server applications using roles
US6189103B1 (en) * 1998-07-21 2001-02-13 Novell, Inc. Authority delegation with secure operating system queues
US6519647B1 (en) * 1999-07-23 2003-02-11 Microsoft Corporation Methods and apparatus for synchronizing access control in a web server
GB2353875A (en) 1999-09-04 2001-03-07 Hewlett Packard Co Computer access control system.
US20020026592A1 (en) * 2000-06-16 2002-02-28 Vdg, Inc. Method for automatic permission management in role-based access control systems
US6535884B1 (en) * 2000-07-11 2003-03-18 Xerox Corporation System, method and article of manufacture for providing an attribute system with primitive support of dynamic and evolvable roles in support of fluid and integrative application development
US20020026535A1 (en) * 2000-08-30 2002-02-28 Karur Srinivasan Method for phase oriented internet business agents
US6772157B2 (en) * 2000-10-19 2004-08-03 General Electric Company Delegated administration of information in a database directory
US20020078365A1 (en) * 2000-12-15 2002-06-20 International Business Machines Corporation Method for securely enabling an application to impersonate another user in an external authorization manager
US6792462B2 (en) * 2001-01-16 2004-09-14 Netiq Corporation Methods, systems and computer program products for rule based delegation of administration powers
US7131000B2 (en) 2001-01-18 2006-10-31 Bradee Robert L Computer security system
US20030041076A1 (en) 2001-03-14 2003-02-27 Lucovsky Mark H. Schema-based services for identity-based access to calendar data
US7107610B2 (en) * 2001-05-11 2006-09-12 Intel Corporation Resource authorization
US7698381B2 (en) * 2001-06-20 2010-04-13 Microsoft Corporation Methods and systems for controlling the scope of delegation of authentication credentials
US7031967B2 (en) 2001-08-06 2006-04-18 Sun Microsystems, Inc. Method and system for implementing policies, resources and privileges for using services in LDAP
US8015204B2 (en) * 2001-10-16 2011-09-06 Microsoft Corporation Scoped access control metadata element
US7260831B1 (en) * 2002-04-25 2007-08-21 Sprint Communications Company L.P. Method and system for authorization and access to protected resources
US7546633B2 (en) * 2002-10-25 2009-06-09 Microsoft Corporation Role-based authorization management framework

Also Published As

Publication number Publication date
EP1510900A1 (en) 2005-03-02
IL162885A (en) 2009-11-18
CN1592230A (zh) 2005-03-09
CO5600217A1 (es) 2006-01-31
SG109539A1 (en) 2005-03-30
NO20043160L (no) 2005-02-28
JP4718804B2 (ja) 2011-07-06
HK1073709A1 (en) 2005-10-14
MXPA04007143A (es) 2005-03-31
RU2004120673A (ru) 2006-01-10
MY163665A (en) 2017-10-13
ZA200405489B (en) 2005-05-25
US20050050354A1 (en) 2005-03-03
AU2004203375A1 (en) 2005-03-17
JP2005078626A (ja) 2005-03-24
US7827595B2 (en) 2010-11-02
KR101137049B1 (ko) 2012-04-23
CA2472982A1 (en) 2005-02-28
EP1510900B1 (en) 2012-10-24
TW200516414A (en) 2005-05-16
RU2360368C2 (ru) 2009-06-27
IL162885A0 (en) 2005-11-20
BRPI0403012A (pt) 2005-05-31
TWI336043B (en) 2011-01-11
NZ533955A (en) 2006-07-28
CN1592230B (zh) 2013-01-02

Similar Documents

Publication Publication Date Title
KR101137049B1 (ko) 호스트된 리소스로의 위임된 관리
US7051366B1 (en) Evidence-based security policy manager
US6138238A (en) Stack-based access control using code and executor identifiers
US7603548B2 (en) Security provider development model
US7644432B2 (en) Policy inheritance through nested groups
US8990262B2 (en) managing data center using web services
McDaniel On context in authorization policy
US7200862B2 (en) Securing uniform resource identifier namespaces
US20070006325A1 (en) Method, system and computer program for controlling access to resources in web applications
US8667578B2 (en) Web management authorization and delegation framework
US20080282354A1 (en) Access control based on program properties
US20050097353A1 (en) Policy analysis tool
JP2002517852A (ja) 信頼できないコンテントを安全に実行するための方法およびシステム
JP2000207363A (ja) ユ―ザ・アクセス制御装置
JPH11504145A (ja) アプリケーションまたはアプリケーションユーザによる、通信の下部構造を介する管理情報ベースへのアクセスを管理する方法
CN115422526B (zh) 角色权限管理方法、设备及存储介质
Hauswirth et al. A flexible and extensible security framework for Java code
Peiris et al. CYA Securing IIS 6.0

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160318

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170317

Year of fee payment: 6