맨위로가기

코드 액세스 보안

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

코드 액세스 보안은 .NET 환경에서 어셈블리에 부여되는 권한을 관리하는 보안 메커니즘이다. 이 시스템은 어셈블리의 증명 정보를 기반으로 코드 그룹 멤버십을 결정하고, 이를 통해 어셈블리가 접근할 수 있는 리소스를 제어한다. 증명 정보는 어셈블리의 위치, 게시자, URL, 해시 값 등이며, 정책은 이러한 증명 정보를 평가하여 어셈블리에 부여할 권한을 결정하는 규칙 집합이다. .NET Framework 4.0부터 정책 시스템은 제거되었다. 코드가 특정 권한이 필요한 작업을 수행하려면 권한을 요청해야 하며, CLR은 호출 스택을 검사하여 요청된 권한이 어셈블리에 부여된 권한에 포함되는지 확인한다. 권한이 없으면 보안 예외가 발생하여 신뢰할 수 없는 코드가 권한 있는 작업을 수행하는 것을 방지한다.

더 읽어볼만한 페이지

  • 암호 프로토콜 - HTTPS
    HTTPS는 HTTP에 보안 기능이 더해진 통신 규약으로, 웹 브라우저와 서버 간 통신을 암호화하여 보안을 강화하지만, 인증서 비용, 서버 부하, 혼합 콘텐츠 문제 등의 단점도 존재한다.
  • 암호 프로토콜 - IPsec
    IPsec은 IP 네트워크에서 보안 통신을 제공하기 위한 프로토콜 스위트로서, 전송 모드와 터널 모드를 지원하며, AH, ESP 등의 프로토콜을 사용하여 데이터 무결성, 인증, 기밀성을 제공하고, IKE 프로토콜을 통해 보안 연결을 설정 및 키를 교환하는 개방형 표준이다.
  • 닷넷 프레임워크 - 파워셸
    파워셸은 마이크로소프트에서 개발한 작업 자동화 솔루션으로, 명령줄 셸과 스크립트 언어의 기능을 결합하여 윈도우 시스템 관리를 위해 설계되었으며, .NET 프레임워크 기반의 객체 지향적 특징을 갖고 다양한 플랫폼에서 자동화 스크립트 작성 및 실행, 시스템 구성 관리 등에 활용된다.
  • 닷넷 프레임워크 - 유니버설 윈도우 플랫폼
    유니버설 윈도우 플랫폼(UWP)은 마이크로소프트에서 개발한 애플리케이션 모델로, Windows 10, 11 등 다양한 기기에서 실행되는 앱 개발을 위한 통합 플랫폼이며, Visual Studio를 통해 개발되고 XAML Islands를 통해 기존 WinAPI 기반 애플리케이션에서도 활용 가능하다.
코드 액세스 보안
일반 정보
명칭코드 액세스 보안
로마자 표기Kodeu aksesu boan
약칭CAS
분류컴퓨터 보안
유형보안 정책
목적네트워크 상에서 다운로드되고 실행되는 코드에 대한 특정 수준의 접근 권한을 부여
개발마이크로소프트
플랫폼.NET Framework
상태더 이상 사용되지 않음
대체 기술샌드박싱
관련 기술클라우드 컴퓨팅
기술적 세부 사항
작동 방식코드의 출처 및 기타 속성을 기반으로 코드가 접근할 수 있는 시스템 리소스 제한
보안 정책 수준에 따라 코드에 부여되는 권한 결정
정책 수준Enterprise (엔터프라이즈)
Machine (머신)
User (사용자)
코드 그룹All_Code (모든 코드)
My_Computer_Zone (내 컴퓨터 영역)
LocalIntranet_Zone (로컬 인트라넷 영역)
Trusted_Zone (신뢰 영역)
Internet_Zone (인터넷 영역)
Restricted_Zone (제한 영역)
권한 예시FileIOPermission (파일 입출력 권한)
SecurityPermission (보안 권한)
UIPermission (UI 권한)
DnsPermission (DNS 권한)
ReflectionPermission (리플렉션 권한)
역사 및 중요성
도입 시기.NET Framework 1.0
중요성다운로드된 코드의 악의적인 행위로부터 시스템 보호
다양한 신뢰 수준의 코드 실행 가능
문제점복잡한 구성
성능 오버헤드
잠재적인 보안 취약점
단점.NET Framework 4.0부터는 기본적으로 비활성화됨
대안 및 발전
대체 기술샌드박싱 및 기타 운영체제 수준 보안 메커니즘
발전 방향보다 세분화된 권한 관리
동적 권한 조정
클라우드 환경에 최적화된 보안 모델
기타 정보
참고 자료마이크로소프트 코드 액세스 보안 문서
코드 액세스 보안 (CAS) 개요
MSDN 코드 액세스 보안
관련 용어증거
보안 정책
권한
코드 그룹
보안 영역

2. 증명 정보 (Evidence)

증명 정보는 어셈블리에 대한 정보를 담고 있으며, 코드 접근 보안에서 권한 부여의 근거로 사용된다. 증명 정보는 어셈블리 안에 포함되어 있다. .NET 코드 접근 보안에서 사용되는 기본 증명 정보는 [기본 증명 정보] 섹션에서 표로 확인할 수 있다.

어셈블리 해시에 기반한 증명 정보는 코드에서 쉽게 얻을 수 있으며, C#에서는 `this.GetType().Assembly.Evidence` 코드를 통해 얻을 수 있다.

2. 1. 기본 증명 정보

증명 정보설명
응용 프로그램 디렉터리어셈블리가 있는 디렉터리.
게시자어셈블리 게시자의 디지털 서명 (인증 코드로 서명된 어셈블리 필요).
URL어셈블리가 게시된 위치의 전체 URL.
사이트원격 도메인, 가상 사설망, URL의 호스트 이름.
영역어셈블리가 있는 보안 영역
해시특정 버전을 식별하는 어셈블리의 암호화 해시.
강력한 이름어셈블리 이름, 버전 및 어셈블리 서명에 사용된 서명 키의 공개 키 조합. 서명 키는 X.509 인증서가 아니라 강력한 이름 지정 도구인 SN.EXE 또는 비주얼 스튜디오에서 생성된 사용자 지정 키 쌍.



개발자는 사용자 지정 증명 정보 (어셈블리 증명 정보)를 사용할 수 있지만 이를 위해서는 보안 어셈블리를 작성해야 하며 .NET 버전 1.1에서는 이 기능이 작동하지 않는다.

2. 2. 사용자 지정 증명 정보

개발자는 사용자 지정 증명 정보 (어셈블리 증명 정보라고도 함)를 만들 수 있지만, 이를 위해서는 보안 어셈블리를 작성해야 한다. 그러나 .NET 버전 1.1에서는 이 기능이 작동하지 않는다.

2. 3. 증명 정보 획득 (C#)

csharp

this.GetType().Assembly.Evidence

```

C#에서 어셈블리의 증명 정보는 위 코드를 통해 얻을 수 있다.

3. 정책 (Policy)

정책은 코드 그룹 멤버십을 결정하기 위해 증명 정보를 사용하는 표현식 집합이다. 코드 그룹은 해당 그룹 내의 어셈블리에 권한 집합을 제공한다. 코드 접근 보안은 어셈블리의 증명 정보를 각 정책에 제출하고, 어셈블리에 부여된 권한으로 교집합(모든 권한 집합에 공통된 권한)을 받는다. 기본적으로 엔터프라이즈, 사용자 및 애플리케이션 도메인 정책은 전체 신뢰(모든 어셈블리가 모든 권한을 갖도록 허용)를 제공하며, 머신 정책은 더 제한적이다. 교집합이 사용되므로 최종 권한 집합은 머신 정책에 의해 결정된다. 이 정책 시스템은 닷넷 프레임워크 4.0에서 제거되었다.[3]

3. 1. 정책의 종류

.NET에는 다음과 같은 네 가지 정책이 존재한다.[3]

  • 엔터프라이즈 - 도메인 컨트롤러에 가입한 기계에 관한 정책.
  • 기계 - 현재 기계에 대한 정책.
  • 사용자 - 로그인한 사용자에 대한 정책.
  • 앱도메인 - 실행 중인 응용 프로그램 도메인에 대한 정책.


처음 세 가지 정책(엔터프라이즈, 기계, 사용자)은 XML 파일로 저장되며 닷넷 구성 도구 1.1 (mscorcfg.msc)를 통해 관리된다. 마지막 정책(앱도메인)은 현재 응용 프로그램 도메인의 코드를 통해 관리된다. 기본 값으로 엔터프라이즈, 사용자, 앱도메인 정책은 전체 신뢰(모든 어셈블리가 모든 권한을 갖도록 하는 역할)를 제공하며, 기계 정책은 좀 더 제한되어 있다. 이 정책 시스템은 닷넷 프레임워크 4.0에서 제거되었다.[3]

3. 2. 정책 관리

정책은 코드 그룹 멤버 자격을 결정하기 위해 증거를 사용하는 표현식의 집합이다. 코드 그룹은 해당 그룹 내의 어셈블리에 권한 집합을 제공한다. .NET에는 다음과 같은 네 가지 정책이 있다.

  • 엔터프라이즈: 액티브 디렉터리 설치의 일부인 컴퓨터 제품군에 대한 정책이다.
  • 머신: 현재 컴퓨터에 대한 정책이다.
  • 사용자: 로그인한 사용자에 대한 정책이다.
  • 애플리케이션 도메인: 실행 중인 애플리케이션 도메인에 대한 정책이다.


처음 세 가지 정책(엔터프라이즈, 머신, 사용자)은 XML 파일로 저장되며 닷넷 구성 도구 1.1 (mscorcfg.msc)을 통해 관리된다. 애플리케이션 도메인 정책은 현재 애플리케이션 도메인의 코드를 통해 관리된다.[3]

코드 액세스 보안은 어셈블리의 증명 정보를 각 정책에 제출하고, 어셈블리에 인증된 권한으로 교점(증명된 권한 집합의 공통 권한)을 받는다. 기본적으로 엔터프라이즈, 사용자, 앱도메인 정책은 전체 신뢰(모든 어셈블리가 모든 권한을 갖도록 하는 역할)를 제공하며, 기계 정책은 좀 더 제한되어 있다. 교점부터는 기계 정책에 의해 결정된 마지막 권한 집합을 받는다.[3]

이 정책 시스템은 닷넷 프레임워크 4.0에서 제거되었다.[3]

3. 3. 정책의 작동 방식

코드 접근 보안은 어셈블리의 증명 정보를 각 정책에 제출하고, 어셈블리에 부여된 권한으로 교집합(모든 권한 집합에 공통된 권한)을 받는다. 기본적으로 엔터프라이즈, 사용자, 애플리케이션 도메인 정책은 전체 신뢰(모든 어셈블리가 모든 권한을 갖도록 허용)를 제공하며, 머신 정책은 더 제한적이다. 교집합이 사용되므로, 최종 권한 집합은 머신 정책에 의해 결정된다.[3]

.NET에는 다음과 같은 네 가지 정책이 존재한다.[3]

  • 엔터프라이즈: 액티브 디렉터리 설치의 일부인 컴퓨터 제품군에 대한 정책이다.
  • 머신: 현재 컴퓨터에 대한 정책이다.
  • 사용자: 로그인한 사용자에 대한 정책이다.
  • 앱도메인: 실행 중인 응용 프로그램 도메인에 대한 정책이다.


처음 세 가지 정책 (엔터프라이즈, 머신, 사용자)은 XML 파일로 저장되며 닷넷 구성 도구 1.1 (mscorcfg.msc)를 통해 관리된다. 마지막 정책 (앱도메인)은 현재 응용 프로그램 도메인의 코드를 통해 관리된다.[3]

이 정책 시스템은 닷넷 프레임워크 4.0.에서 제거되었다.[3]

3. 4. 정책 시스템의 변화 (.NET Framework 4.0)

.NET에는 다음과 같은 4가지 정책이 있었다.[3]

  • 엔터프라이즈: 액티브 디렉터리 설치의 일부인 컴퓨터 제품군에 대한 정책이다.
  • 머신: 현재 컴퓨터에 대한 정책이다.
  • 사용자: 로그인한 사용자에 대한 정책이다.
  • 애플리케이션 도메인: 실행 중인 애플리케이션 도메인에 대한 정책이다.


처음 세 가지 정책은 XML 파일에 저장되며 .NET 구성 도구 1.1(mscorcfg.msc)을 통해 관리되었고, 마지막 정책은 현재 애플리케이션 도메인에 대한 코드를 통해 관리되었다.[3]

코드 액세스 보안은 어셈블리의 증거를 각 정책에 제시한 다음 교집합(생성된 모든 권한 집합에 공통된 권한)을 어셈블리에 부여된 권한으로 간주했다.[3]

기본적으로 엔터프라이즈, 사용자 및 애플리케이션 도메인 정책은 전체 트러스트(모든 어셈블리가 모든 권한을 갖도록 허용)를 제공했고, 머신 정책은 더 제한적이었다. 교집합이 사용되므로 최종 권한 집합은 머신 정책에 의해 결정되었다.[3]

이러한 정책 시스템은 .NET Framework 4.0에서 제거되었다.[3]

4. 코드 그룹 (Code group)

코드 그룹은 증명 정보 항목을 명명된 권한 집합과 연결한다. 관리자는 .NET 구성 도구를 사용하여 특정 유형의 증명 정보(예: 사이트)와 해당 증명 정보에 대한 특정 값(예: www.mysite.com)을 지정하고, 코드 그룹에 부여할 권한 집합을 식별할 수 있다.

5. 코드 요청 (Demands)

코드가 특정 권한이 필요한 작업을 수행하려면 하나 이상의 권한을 요청해야 한다. 코드 요청에 따라 CLR은 호출 스택을 탐색하고, 각 메서드에 대해 요청된 권한이 해당 메서드의 어셈블리에 부여된 권한에 포함되는지 확인한다. 권한이 부여되지 않으면 보안 예외가 발생한다. 이러한 방식은 다운로드한 코드와 같이 신뢰할 수 없는 코드가 권한 있는 작업을 수행하는 것을 방지한다. 예를 들어, 신뢰할 수 없는 사이트에서 어셈블리를 다운로드한 경우 해당 어셈블리는 파일 입출력(IO) 권한이 없으므로 파일 액세스를 시도하면 예외가 발생하여 호출이 방지된다.[1]

6. 코드 접근 보안과 한국의 IT 환경

(원문 소스(source)가 비어있어 요약(summary) 내용을 그대로 출력합니다.)

한국의 IT 환경에서 코드 접근 보안은 다음과 같은 의미를 가진다.

참조

[1] 문서 Code Access Security Policy Compatibility and Migration https://docs.microso[...]
[2] 문서 Summary of Changes in Code Access Security http://msdn.microsof[...]
[3] 웹인용 Summary of Changes in Code Access Security http://msdn.microsof[...] 2011-01-28



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com