다음을 통해 공유


COM+ 역할 기반 보안 및 .NET Framework

.NET Framework에서는 관리 코드와 COM+ 보안 서비스를 통합하는 메커니즘을 제공합니다. 이 기능은 ID의 기본으로서 실행 코드와 연결된 Windows NT 토큰을 기반으로 합니다.

역할 기반 보안

역할 기반 보안을 사용하면 응용 프로그램의 역할을 정의할 수 있으므로 해당 역할의 멤버 자격에 따라 구성 요소, 메서드 또는 인터페이스 수준에서 응용 프로그램에 대한 인증이 수행됩니다. COM+ 및 .NET Framework를 사용하면 응용 프로그램 수준 역할을 정의할 수 있습니다. .NET Framework 및 COM+의 역할 기반 보안 메커니즘은 독립적이므로 한 응용 프로그램에 한 메커니즘만 사용할 수 있습니다.

COM+ 보안은 Windows NT 계정 및 프로세스/스레드 가장을 기반으로 합니다. 관리 코드에서 인증 서비스를 제공하는 경우 해당 코드는 COM 개체를 호출하기 전에 Windows NT 보안 토큰을 얻고 가장을 수행해야 합니다.

응용 프로그램 및 구성 요소 액세스 제어

COM+를 사용하면 응용 프로그램 수준이나 클래스 수준에서 보안을 사용할 수 있습니다. 다음 샘플 코드처럼 응용 프로그램 수준 보안은 ApplicationAccessControlAttribute 특성을 사용하여 설정합니다.

[assembly: ApplicationAccessControl (AccessChecksLevel=AccessChecksLevelOption. ApplicationComponent)]

Application 또는 ApplicationComponent 속성을 사용하여 응용 프로그램에 대한 액세스 검사 세분성을 구성합니다. 첫 번째 속성을 사용하면 응용 프로그램 수준에만 액세스 검사를 수행할 수 있습니다. 구성 요소, 인터페이스 또는 메서드 수준에서는 액세스 검사가 수행되지 않습니다. 호출자가 응용 프로그램에 정의되어 있는 역할 중 적어도 한 역할의 멤버인 경우 모든 개체, 인터페이스 또는 메서드를 호출할 수 있습니다. 두 번째 속성을 사용하면 모든 수준에서 액세스 검사를 수행할 수 있습니다. 구성 요소, 인터페이스 및 메서드 수준에서 역할 기반 액세스 검사가 적용되는 것을 나타내는 ApplicationComponent를 사용하는 것이 좋습니다.

ApplicationComponent 속성을 사용하면 구성 요소 수준의 액세스 검사만 수행할 수 있습니다. 실제로 특정 구성 요소에 대해 액세스 검사를 수행하려면 ComponentAccessControlAttribute 특성을 사용해야 합니다.

ComponentAccessControlAttribute 특성을 사용하면 구성 요소 수준 보안을 사용할 수 있습니다. 이 특성은 클래스(다음 샘플 코드 참조), 인터페이스 또는 메서드에 적용할 수 있습니다.

[ComponentAccessControl(true)]
public class CreditAccount : ServicedComponent
{
}

구성 요소의 보안을 설정하기 전에 구성 요소를 호스팅하는 응용 프로그램의 보안을 사용해야 합니다. ApplicationAccessControlAttribute 특성을 어셈블리에 적용하고 ApplicationAccessControlAttribute 특성을 ApplicationComponent로 설정한 경우에만 액세스 검사가 실행됩니다.

보안 제어가 사용되는 수준에 따라 호출자의 역할 멤버 자격을 검사하는 시기가 결정됩니다. 다음 표에서는 응용 프로그램 보안이나 구성 요소 보안의 사용 여부에 따라 호출자 역할 멤버 자격을 검사하는 방법을 설명합니다.

응용 프로그램 보안 구성 요소 보안 역할 멤버 자격 검사 시기

사용

사용 안 함

호출자가 응용 프로그램에 액세스할 때마다 역할 멤버 자격 검사가 수행됩니다.

사용

사용

응용 프로그램 수준 액세스 검사와 함께 클래스 수준 보안이 사용되는 모든 클래스에 대해 역할 멤버 자격 검사가 수행됩니다. 구성 요소 수준 설정을 사용하면 클래스, 인터페이스 및 메서드 수준에서 역할 기반 보안을 사용할 수 있습니다.

사용 안 함

사용/사용 안 함

응용 프로그램의 모든 클래스에 대해 보안을 사용하지 않습니다.

응용 프로그램에 역할 추가

다음 샘플 코드처럼 SecurityRoleAttribute 특성을 사용하여 응용 프로그램에 역할을 추가하고 해당 역할을 구성 요소에 연결할 수 있습니다.

[SecurityRole("Teller", Description="Bank teller role")]
public class CreditAccount : ServicedComponent
{
}

이 특성을 사용하면 역할을 만들어 응용 프로그램, 구성 요소, 인터페이스 또는 메서드의 멤버 자격 요구 사항에 해당 역할을 할당할 수 있습니다. 전체적으로 이 특성을 어셈블리에 적용하면 COM+ 카탈로그에 해당 역할이 포함됩니다. 이 특성을 구성 요소에 적용하면 응용 프로그램 구성에 역할을 추가하고 대상 구성 요소와 역할을 연결할 수 있습니다.

SetEveryoneAccess 속성이 true로 설정되어 있으면 Everyone 역할이 멤버로 추가됩니다. 기본값은 false입니다. 즉, 역할에 할당된 사용자가 없습니다. 대신 사용자를 수동으로 구성해야 합니다.

보안 역할은 어셈블리, 클래스, 메서드 및 인터페이스 수준에서 지원됩니다. 다른 메서드 특성과 마찬가지로 보안 구성은 인터페이스 정의와 메서드 구현 사이에서 공유되지 않습니다.

SecurityCallContext 클래스는 COM+ 보안 호출 컨텍스트에 대한 액세스를 제공하며 Visual Basic의 SecurityCallContext 개체와 유사하지만 동일하지는 않습니다. 새 인스턴스는 프로그래밍 방식으로 만들어지는 것이 아니라 CurrentCall 속성을 통해 얻어집니다. 다음 표에서 설명하는 나머지 속성은 SecurityCallContext 개체에 대해 메서드를 호출합니다.

속성 설명

Callers

COM+의 SecurityCallContext 개체에서 Callers 항목을 검색하고 이를 SecurityCallers 개체로서 반환합니다.

CurrentCall

현재 호출과 연결된 SecurityCallContext 개체에 대한 참조를 반환합니다.

DirectCaller

COM+의 SecurityCallContext 개체에서 DirectCaller 항목을 검색하고 이를 SecurityIdentity 개체로서 반환합니다.

MinAuthenticationLevel

COM+의 SecurityCallContext 개체에서 MinAuthenticationLevel 항목을 검색합니다.

NumCallers

COM+의 SecurityCallContext 개체에서 NumCallers 항목을 검색합니다.

OriginalCaller

COM+의 SecurityCallContext 개체에서 OriginalCaller 항목을 가져와서 해당 항목을 SecurityIdentity 개체로서 반환합니다.

참고 항목

참조

SecurityRoleAttribute
System.EnterpriseServices

개념

사용 가능한 COM+ 서비스 요약

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.