애플리케이션 설정(appsettings.json)
애플리케이션의 모든 설정은 appsettings.json이라는 파일에 포함됩니다. appsettings.json 파일을 변경하려면 "Microsoft IIS 관리" 서비스를 다시 시작해야 적용됩니다.
appsettings.json 파일은 다음 위치에 있습니다. %SystemDrive%\Program Files\IIS Administration\<version>\Microsoft.IIS.Administration\config\appsettings.json
CORS
CORS 정책을 사용하면 브라우저 기반 애플리케이션이 Microsoft IIS 관리 API에 요청을 보낼 수 있습니다.
기본 설정
CORS 설정이 없는 경우 IIS 관리 API는 원본에 대해 CORS를 허용하지 않습니다.
형식
예를 들어 다음 설정을 사용하면 CORS를 사용할 수 있습니다.
"cors": {
"rules": [
{
"origin": "https://contoso.com",
"allow": true
}
]
}
rules: API가 리소스를 공유하는 방법을 제어하는 CORS 규칙 집합입니다.
origin: 허용하거나 거부할 원본(CORS 사양에 정의된 대로)입니다. 와일드카드 문자 *가 원본으로 제공되면 해당 규칙이 모든 원본에 적용됩니다.
allow: 리소스를 지정된 원본에 공유해야 하는지 여부를 나타냅니다.
파일
여러 엔드포인트는 기존 디렉터리에서 웹 사이트를 만들거나(읽기) 파일의 콘텐츠 업로드(쓰기)와 같은 파일 시스템과 상호 작용해야 합니다. 이러한 구성 설정은 이러한 파일 시스템 상호 작용을 제한하는 메서드를 제공합니다. API에 표시되는 파일 시스템 위치 집합이 지정됩니다. 이러한 경로에는 연결된 privelege를 읽고 쓰거나 쓸 수 있습니다.
기본 설정
IIS 관리 API는 파일 설정이 없는 경우 %systemdrive%\inetpub에 대한 읽기 액세스를 허용합니다.
형식
다음 설정은 %systemdrive%\inetpub에 대한 읽기/쓰기 액세스를 허용합니다.
"files": {
"locations": [
{
"alias": "inetpub",
"path": "%systemdrive%\\inetpub",
"claims": [
"read",
"write"
]
}
]
}
skip_resolving_symbolic_links: 경로 허용 여부를 결정할 때 시스템에서 기호 링크를 확인할지 여부를 지정하는 플래그입니다. 기본적으로 이 플래그는 false이므로 바로 가기 링크 가 확인됩니다 .
locations: API를 통해 수행할 수 있는 작업을 지정하는 파일 시스템 위치 및 관련 권한 집합입니다.
별칭: 위치의 이름입니다.
path: 클레임 목록을 할당하는 루트 경로입니다. 이 경로 아래의 모든 파일 또는 디렉터리는 보다 구체적인 경로로 재정의되지 않는 한 클레임 목록을 상속합니다.
claims: 경로 아래의 파일 디렉터리에서 수행할 수 있는 작업을 지정합니다. 빈 클레임 집합은 해당 위치에 대한 액세스가 허용되지 않음을 의미합니다.
보안
보안 섹션은 IIS 관리 2.0.0에서 도입되었습니다. 이 섹션에서는 API에 액세스하기 위한 요구 사항을 지정합니다.
기본 설정
기본적으로 API는 모든 요청에 require_windows_authentication 플래그로 표시된 대로 유효한 Windows 자격 증명이 있어야 합니다. 웹 사이트 및 애플리케이션과 같은 API의 리소스에 액세스하고 키 조작에 액세스하려면 사용자가 관리자 API 역할에 있어야 합니다. 높은 권한 작업을 수행하려면 사용자가 소유자 역할에 있어야 합니다. API가 설치되면 관리자 및 소유자 역할이 설치 관리자를 실행한 사용자로 자동으로 채워집니다.
형식
"security": {
"require_windows_authentication": true,
"users": {
"administrators": [
],
"owners": [
]
},
"access_policy": {
"api": {
"users": "administrators",
"access_key": true
},
"api_keys": {
"users": "administrators",
"access_key": false
},
"system": {
"users": "owners",
"access_key": true
}
}
}
require_windows_authentication: API에 대한 모든 요청에 유효한 Windows 인증 필요한지 여부를 지정하는 부울 값입니다. true이면 Windows 인증되지 않은 모든 요청이 거부됩니다. false이면 Windows 인증 요구 사항은 access_policy 설정에 의해 결정됩니다.
사용자: Windows 사용자/그룹과 API 내의 역할 간의 매핑입니다. 모든 역할을 추가할 수 있지만 기본적으로 appsettings.json 파일에는 관리자 및 소유자가 포함됩니다. 이러한 역할은 access_policy 섹션에서 API의 다른 섹션에 대한 액세스를 제어하는 데 사용됩니다.
access_policy: 액세스 정책은 API 내의 영역에 액세스하기 위한 요구 사항 집합을 지정합니다. IIS 관리 API에는 api, api_keys 및 시스템의 세 가지 액세스 정책이 함께 제공됩니다.
api: 이 액세스 정책은 웹 사이트, 애플리케이션 풀 및 파일과 같은 API 리소스에 대한 것입니다.
api_keys: 이 액세스 정책은 API 키를 조작하기 위한 것입니다.
시스템: 이 액세스 정책은 애플리케이션 풀의 ID를 LocalSystem으로 변경하는 것과 같이 API에서 제공하는 높은 권한 작업을 위한 것입니다.
각 액세스 정책에는 구성할 수 있는 요구 사항 집합이 있습니다. 사용 가능한 요구 사항은 다음과 같습니다.
users: security.users 섹션에서 액세스할 수 있는 역할을 지정합니다. 모든 사용자가 'Everyone' 값을 사용할 수 있도록 허용합니다.
access_key: 요청에 액세스 토큰이 필요한지 여부를 지정합니다.
read_only: HTTP GET 메서드를 사용하도록 모든 요청을 제한하여 읽기 전용 모드를 적용합니다.
사용할 수 없음: 모든 액세스를 차단합니다.
완성된 예제
{
"host_id": "",
"host_name": "My instance of the IIS Administration API",
"logging": {
"enabled": true,
"file_name": "log-{Date}.txt",
"min_level": "Error",
"path": null
},
"auditing": {
"enabled": true,
"file_name": "audit-{Date}.txt",
"path": null
},
"security": {
"require_windows_authentication": true,
"users": {
"administrators": [
],
"owners": [
]
},
"access_policy": {
"api": {
"users": "administrators",
"access_key": true
},
"api_keys": {
"users": "administrators",
"access_key": false
},
"system": {
"users": "owners",
"access_key": true
}
}
},
"cors": {
"rules": [
{
"origin": "https://contoso.com",
"allow": true
}
]
},
"files": {
"locations": [
{
"alias": "inetpub",
"path": "%systemdrive%\\inetpub",
"claims": [
"read"
]
}
]
}
}