AD FS 2.0의 클라이언트 액세스 제어 정책
Active Directory Federation Services 2.0의 클라이언트 액세스 정책을 통해 사용자에게 리소스에 대한 액세스 권한을 제한하거나 부여할 수 있습니다. 이 문서에서는 AD FS 2.0의 클라이언트 액세스 정책을 사용하도록 설정하는 방법과 가장 일반적인 시나리오를 구성하는 방법을 설명합니다.
AD FS 2.0의 클라이언트 액세스 정책 사용
클라이언트 액세스 정책을 사용하도록 설정하려면 다음 단계를 수행합니다.
1단계: AD FS 서버에 AD FS 2.0 패키지용 업데이트 롤업 2 설치
AD FS(Active Directory Federation Services) 2.0 패키지용 업데이트 롤업 2를 다운로드하고 모든 페더레이션 서버 및 페더레이션 서버 프록시에 설치합니다.
2단계: Active Directory 클레임 공급자 트러스트에 5개의 클레임 규칙 추가
업데이트 롤업 2가 모든 AD FS 서버 및 프록시에 설치되면 다음 절차를 통해 정책 엔진에서 새 클레임 유형을 사용할 수 있는 클레임 규칙 집합을 추가합니다.
이 작업을 수행하려면 다음 절차를 통해 각 새 요청 컨텍스트 클레임 유형에 대한 5개의 수용 변환 규칙을 추가합니다.
Active Directory 클레임 공급자 트러스트에서 각 새 요청 컨텍스트 클레임 유형을 통과하는 새 수용 변환 규칙을 생성합니다.
각 다섯 개의 컨텍스트 클레임 유형에 대한 Active Directory 클레임 공급자 트러스트에 클레임 규칙을 추가하려면 다음을 수행합니다.
시작을 클릭하고 프로그램, 관리 도구를 차례로 가리킨 후, AD FS 2.0 관리를 클릭합니다.
콘솔 트리의 AD FS 2.0\트러스트 관계에서 클레임 공급자 트러스트를 클릭하고 Active Directory를 마우스 오른쪽 클릭한 후, 클레임 규칙 편집을 클릭합니다.
클레임 규칙 편집 대화 상자에서 수용 변환 규칙 탭을 선택한 후, 규칙 추가를 클릭하여 규칙 마법사를 시작합니다.
에 규칙 템플릿 선택 페이지의 클레임 규칙 템플릿, 선택, 통과 또는 들어오는 클레임 필터링 클릭 한 다음 확인 하 고 목록에서 다음합니다.
규칙 구성 페이지의 클레임 규칙 이름에서 이 규칙의 표시 이름을 입력합니다. 들어오는 클레임 유형에서 다음 클레임 유형 URL을 입력한 후, 모든 클레임 값 통과를 선택합니다.
https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip
규칙을 확인하려면 목록에서 규칙을 선택하고 규칙 편집을 클릭한 후, 규칙 언어 보기를 클릭합니다. 클레임 규칙 언어는 다음과 같이 표시됩니다.
c:[Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip"] => issue(claim = c);
Finish를 클릭합니다.
클레임 규칙 편집 대화 상자에서 확인을 클릭하여 규칙을 저장합니다.
2~6단계를 반복하여 5개의 규칙이 모두 생성될 때까지 다음에 표시된 각 나머지 4개 클레임 유형에 대한 추가 클레임 규칙을 생성합니다.
https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-application
https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-user-agent
https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-proxy
https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-endpoint-absolute-path
3단계: Microsoft Office 365 ID 플랫폼 신뢰 당사자 트러스트 업데이트
아래 예제 시나리오 중 하나를 선택하여, 조직의 요구 사항을 가장 잘 충족하는 Microsoft Office 365 ID 플랫폼 신뢰 당사자 트러스트에서 클레임 규칙을 구성합니다.
AD FS 2.0의 클라이언트 액세스 정책 시나리오
다음 섹션에서는 AD FS 2.0에 해당하는 시나리오를 설명합니다
시나리오 1: Office 365에 대한 모든 외부 액세스 차단
이 클라이언트 액세스 정책 시나리오는 모든 내부 클라이언트에서 액세스를 허용하고 외부 클라이언트의 IP 주소를 기반으로 모든 외부 클라이언트를 차단합니다. 규칙 집합은 기본 발급 권한 부여 규칙인 모든 사용자에 대한 액세스 허용을 기반으로 합니다. 다음 절차를 통해 Office 365 신뢰 당사자 트러스트에 발급 권한 부여 규칙을 추가할 수 있습니다.
Office 365에 대한 모든 외부 액세스를 차단하는 규칙 생성 방법
- 시작을 클릭하고 프로그램, 관리 도구를 차례로 가리킨 후, AD FS 2.0 관리를 클릭합니다.
- 콘솔 트리의 AD FS 2.0\Trust 관계에서 신뢰 당사자 트러스트를 클릭하고 Microsoft Office 365 ID 플랫폼 트러스트를 마우스 오른쪽 클릭한 후, 클레임 규칙 편집을 클릭합니다.
- 클레임 규칙 편집 대화 상자에서 발급 권한 부여 규칙 탭을 선택한 후, 규칙 추가를 클릭하여 클레임 규칙 마법사를 시작합니다.
- 규칙 템플릿 선택 페이지의 클레임 규칙 템플릿에서 사용자 지정 규칙을 사용하여 클레임 보내기를 선택한 후, 다음을 클릭합니다.
- 에 규칙 구성 페이지의 클레임 규칙 이름, 이 규칙에 대 한 표시 이름을 입력 합니다. 사용자 지정 규칙에서 다음 클레임 규칙 언어 구문을 입력하거나 붙여 넣습니다.
exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-proxy"]) && NOT exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip", Value=~"customer-provided public ip address regex"]) => issue(Type = "https://schemas.microsoft.com/authorization/claims/deny", Value = "true");
- Finish를 클릭합니다. 발급 권한 부여 규칙 목록에서 모든 사용자에 대한 액세스 허용 규칙 바로 아래에 새 규칙이 표시되는지 확인합니다.
- 규칙을 저장하려면 클레임 규칙 편집 대화 상자에서 확인을 클릭합니다.
참고 항목
"공용 IP 주소 정규식"에 대한 위의 값을 유효한 IP 식으로 변경해야 합니다. 자세한 내용은 IP 주소 범위 식 빌드를 참조하세요.
시나리오 2: Exchange ActiveSync를 제외하고 Office 365에 대한 모든 외부 액세스 차단
다음 예제에서는 Outlook을 포함한 내부 클라이언트에서 Exchange Online 등의 모든 Office 365 애플리케이션에 액세스할 수 있습니다. 스마트폰 등의 Exchange ActiveSync 클라이언트를 제외하고 클라이언트 IP 주소로 표시된 대로 회사 네트워크 외부에 있는 클라이언트의 액세스를 차단합니다. 규칙 집합은 모든 사용자에 대한 액세스 허용이라는 제목의 기본 발급 권한 부여 규칙을 기반으로 합니다. 다음 단계를 통해 클레임 규칙 마법사를 사용하여 Office 365 신뢰 당사자 트러스트에 발급 권한 부여 규칙을 추가합니다.
Office 365에 대한 모든 외부 액세스를 차단하는 규칙 생성 방법
- 시작을 클릭하고 프로그램, 관리 도구를 차례로 가리킨 후, AD FS 2.0 관리를 클릭합니다.
- 콘솔 트리의 AD FS 2.0\Trust 관계에서 신뢰 당사자 트러스트를 클릭하고 Microsoft Office 365 ID 플랫폼 트러스트를 마우스 오른쪽 클릭한 후, 클레임 규칙 편집을 클릭합니다.
- 클레임 규칙 편집 대화 상자에서 발급 권한 부여 규칙 탭을 선택한 후, 규칙 추가를 클릭하여 클레임 규칙 마법사를 시작합니다.
- 규칙 템플릿 선택 페이지의 클레임 규칙 템플릿에서 사용자 지정 규칙을 사용하여 클레임 보내기를 선택한 후, 다음을 클릭합니다.
- 에 규칙 구성 페이지의 클레임 규칙 이름, 이 규칙에 대 한 표시 이름을 입력 합니다. 사용자 지정 규칙에서 다음 클레임 규칙 언어 구문을 입력하거나 붙여 넣습니다.
exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-proxy"]) && NOT exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-application", Value=="Microsoft.Exchange.Autodiscover"]) && NOT exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-application", Value=="Microsoft.Exchange.ActiveSync"]) && NOT exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip", Value=~"customer-provided public ip address regex"]) => issue(Type = "https://schemas.microsoft.com/authorization/claims/deny", Value = "true");
- Finish를 클릭합니다. 발급 권한 부여 규칙 목록에서 모든 사용자에 대한 액세스 허용 규칙 바로 아래에 새 규칙이 표시되는지 확인합니다.
- 규칙을 저장하려면 클레임 규칙 편집 대화 상자에서 확인을 클릭합니다.
참고 항목
"공용 IP 주소 정규식"에 대한 위의 값을 유효한 IP 식으로 변경해야 합니다. 자세한 내용은 IP 주소 범위 식 빌드를 참조하세요.
시나리오 3: 브라우저 기반 애플리케이션을 제외하고 Office 365에 대한 모든 외부 액세스 차단
규칙 집합은 모든 사용자에 대한 액세스 허용이라는 제목의 기본 발급 권한 부여 규칙을 기반으로 합니다. 다음 단계를 통해 클레임 규칙 마법사를 사용하여 Microsoft Office 365 ID 플랫폼 신뢰 당사자 트러스트에 발급 권한 부여 규칙을 추가합니다.
참고 항목
이 시나리오는 수동(웹 기반) 요청이 있는 클라이언트 액세스 정책 헤더에 대한 제한 사항으로 인해 타사 프록시에서 지원되지 않습니다.
브라우저 기반 애플리케이션을 제외하고 Office 365에 대한 모든 외부 액세스를 차단하는 규칙 생성
- 시작을 클릭하고 프로그램, 관리 도구를 차례로 가리킨 후, AD FS 2.0 관리를 클릭합니다.
- 콘솔 트리의 AD FS 2.0\Trust 관계에서 신뢰 당사자 트러스트를 클릭하고 Microsoft Office 365 ID 플랫폼 트러스트를 마우스 오른쪽 클릭한 후, 클레임 규칙 편집을 클릭합니다.
- 클레임 규칙 편집 대화 상자에서 발급 권한 부여 규칙 탭을 선택한 후, 규칙 추가를 클릭하여 클레임 규칙 마법사를 시작합니다.
- 규칙 템플릿 선택 페이지의 클레임 규칙 템플릿에서 사용자 지정 규칙을 사용하여 클레임 보내기를 선택한 후, 다음을 클릭합니다.
- 에 규칙 구성 페이지의 클레임 규칙 이름, 이 규칙에 대 한 표시 이름을 입력 합니다. 사용자 지정 규칙에서 다음 클레임 규칙 언어 구문을 입력하거나 붙여 넣습니다.
exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-proxy"]) && NOT exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip", Value=~"customer-provided public ip address regex"]) && NOT exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-endpoint-absolute-path", Value == "/adfs/ls/"]) => issue(Type = "https://schemas.microsoft.com/authorization/claims/deny", Value = "true");
- Finish를 클릭합니다. 발급 권한 부여 규칙 목록에서 모든 사용자에 대한 액세스 허용 규칙 바로 아래에 새 규칙이 표시되는지 확인합니다.
- 규칙을 저장하려면 클레임 규칙 편집 대화 상자에서 확인을 클릭합니다.
시나리오 4: 지정된 Active Directory 그룹의 Office 365에 대한 모든 외부 액세스 차단
다음 예제에서는 IP 주소를 기반으로 내부 클라이언트에서 액세스할 수 있습니다. 지정된 Active Directory 그룹의 개인을 제외하고 외부 클라이언트 IP 주소가 있는 회사 네트워크 외부의 클라이언트 액세스를 차단합니다. 규칙 집합은 모든 사용자에 대한 액세스 허용이라는 제목의 기본 발급 권한 부여 규칙을 기반으로 합니다. 다음 단계를 통해 클레임 규칙 마법사를 사용하여 Microsoft Office 365 ID 플랫폼 신뢰 당사자 트러스트에 발급 권한 부여 규칙을 추가합니다.
지정된 Active Directory 그룹의 Office 365에 대한 모든 외부 액세스를 차단하는 규칙 생성
- 시작을 클릭하고 프로그램, 관리 도구를 차례로 가리킨 후, AD FS 2.0 관리를 클릭합니다.
- 콘솔 트리의 AD FS 2.0\Trust 관계에서 신뢰 당사자 트러스트를 클릭하고 Microsoft Office 365 ID 플랫폼 트러스트를 마우스 오른쪽 클릭한 후, 클레임 규칙 편집을 클릭합니다.
- 클레임 규칙 편집 대화 상자에서 발급 권한 부여 규칙 탭을 선택한 후, 규칙 추가를 클릭하여 클레임 규칙 마법사를 시작합니다.
- 규칙 템플릿 선택 페이지의 클레임 규칙 템플릿에서 사용자 지정 규칙을 사용하여 클레임 보내기를 선택한 후, 다음을 클릭합니다.
- 에 규칙 구성 페이지의 클레임 규칙 이름, 이 규칙에 대 한 표시 이름을 입력 합니다. 사용자 지정 규칙에서 다음 클레임 규칙 언어 구문을 입력하거나 붙여 넣습니다.
exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-proxy"]) && exists([Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid", Value =~ "Group SID value of allowed AD group"]) && NOT exists([Type == "https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip", Value=~"customer-provided public ip address regex"]) => issue(Type = "https://schemas.microsoft.com/authorization/claims/deny", Value = "true");
- Finish를 클릭합니다. 발급 권한 부여 규칙 목록에서 모든 사용자에 대한 액세스 허용 규칙 바로 아래에 새 규칙이 표시되는지 확인합니다.
- 규칙을 저장하려면 클레임 규칙 편집 대화 상자에서 확인을 클릭합니다.
위의 시나리오에서 사용되는 클레임 규칙 언어 구문에 대한 설명
설명 | 클레임 규칙 언어 구문 |
---|---|
모든 사용자에 대한 액세스를 허용하는 기본 AD FS 규칙입니다. 이 규칙은 Microsoft Office 365 ID 플랫폼 신뢰 당사자 트러스트 발급 권한 부여 규칙 목록에 이미 있어야 합니다. | => issue(Type = "<https://schemas.microsoft.com/authorization/claims/permit>", Value = "true") ; |
이 절을 새 사용자 지정 규칙에 추가하면 요청이 페더레이션 서버 프록시(예: x-ms-proxy 헤더 포함)에서 왔다는 것을 나타냅니다. | |
모든 규칙에 이 내용이 포함되는 것이 좋습니다. | exists([Type == "<https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-proxy>"] ) |
요청이 정의된 허용 범위의 IP를 가진 클라이언트의 요청 여부를 확인하는 데 사용됩니다. | NOT exists([Type == "<https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip>", Value=~"customer-provided public ip address regex"]) |
이 절은 액세스 중인 애플리케이션이 Microsoft.Exchange.ActiveSync가 아닌 경우 요청을 거부하도록 지정하는 데 사용됩니다. | NOT exists([Type == "<https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-application>", Value=="Microsoft.Exchange.ActiveSync"]) |
이 규칙을 사용하면 호출이 웹 브라우저를 통해 수행되었는지 확인할 수 있으며 거부되지 않습니다. | NOT exists([Type == "<https://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-endpoint-absolute-path>", Value == "/adfs/ls/"]) |
이 규칙은 특정 Active Directory 그룹(SID 값 기준)의 사용자만 거부해야 한다고 명시하고 있습니다. 이 문에 NOT을 추가하면 위치에 관계없이 사용자 그룹이 허용됩니다. | exists([Type == "<https://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid>", Value =~ "{Group SID value of allowed AD group}"]) |
이전의 모든 조건이 충족될 때 거부를 발급하기 위한 필수 절입니다. | => issue(Type = "<https://schemas.microsoft.com/authorization/claims/deny>", Value = "true"); |
IP 주소 범위 식 빌드
이 x-ms-forwarded-client-ip 클레임은 현재 Exchange Online에서만 설정된 HTTP 헤더에서 채워지며, AD FS에 인증 요청을 전달할 때 헤더를 채웁니다. 클레임 값은 다음 중 하나일 수 있습니다.
참고 항목
Exchange Online은 현재 IPv4 주소만 지원하며, IPv6 주소를 지원하지 않습니다.
단일 IP 주소: Exchange Online에 직접 연결된 클라이언트의 IP 주소
참고 항목
회사 네트워크에 있는 클라이언트의 IP 주소는 조직의 아웃바운드 프록시 또는 게이트웨이의 외부 인터페이스 IP 주소로 표시됩니다.
VPN 또는 DA(Microsoft DirectAccess)를 통해 회사 네트워크에 연결된 클라이언트는 VPN 또는 DA 구성에 따라 내부 회사 클라이언트 또는 외부 클라이언트로 표시될 수 있습니다.
하나 이상의 IP 주소: Exchange Online에서 연결 클라이언트의 IP 주소를 확인할 수 없는 경우, HTTP 기반 요청에 포함될 수 있으며 시장의 많은 클라이언트, 부하 분산 장치 및 프록시에서 지원되는 비표준 헤더인 x-forwarded-for 헤더의 값을 기반으로 값을 설정합니다.
참고 항목
클라이언트 IP 주소 및 요청을 전달한 각 프록시의 주소를 나타내는 여러 IP 주소는 쉼표로 구분됩니다.
Exchange Online 인프라와 관련된 IP 주소는 목록에 표시되지 않습니다
정규식
IP 주소 범위를 일치해야 하는 경우, 비교를 수행하기 위해 정규식을 생성해야 합니다. 다음 일련의 단계에서는 다음 주소 범위와 일치하도록 식을 생성하는 방법에 대한 예제를 제공합니다(공용 IP 범위와 일치하도록 해당 예제를 변경해야 함).
- 192.168.1.1 – 192.168.1.25
- 10.0.0.1 – 10.0.0.14
먼저, 단일 IP 주소와 일치하는 기본 패턴은 다음과 같습니다. \b###.###.###.###\b
이를 확장하면 서로 다른 두 개의 IP 주소를 OR 식과 일치시킬 수 있습니다. \b###.###.###.###\b|\b###.###.###.###\b
따라서 두 개의 주소(예: 192.168.1.1 또는 10.0.0.1)와 일치하는 예제는 \b192.168.1.1\b|\b10.0.0.1\b입니다.
이를 통해 주소를 원하는 수만큼 입력할 수 있는 기술을 사용할 수 있습니다. 주소 범위가 허용되어야 하는 경우(예: 192.168.1.1 – 192.168.1.25) 일치하는 예제는 문자별로 수행해야 합니다. \b192.168.1.([1-9]|1[0-9]|2[0-5])\b
참고 항목
IP 주소는 숫자가 아닌 문자열로 처리됩니다.
규칙은 다음과 같이 세분화됩니다. \b192.168.1.
192.168.1로 시작하는 모든 값과 일치합니다.
다음은 주소의 마지막 소수점 이후 부분에 필요한 범위와 일치합니다.
- ([1-9] 1-9로 끝나는 주소와 일치
- |1[0-9] 10-19로 끝나는 주소와 일치
- |2[0-5]) 20-25로 끝나는 주소와 일치
참고 항목
IP 주소의 다른 부분과 일치하지 않도록 괄호를 올바르게 배치해야 합니다.
192 블록이 일치하면 10 블록과 유사한 식을 작성할 수 있습니다. \b10.0.0.([1-9]|1[0-4])\b
이를 종합하면, 다음 식은 "192.168.1.1~25" 및 "10.0.0.1~14"의 모든 주소와 일치해야 합니다. \b192.168.1.([1-9]|1[0-9]|2[0-5])\b|\b10.0.0.([1-9]|1[0-4])\b
표현식 테스트
정규식 식은 매우 까다로울 수 있으므로 정규식 확인 도구를 사용하는 것이 좋습니다. "온라인 정규식 작성기"에 대한 인터넷 검색을 수행하는 경우, 샘플 데이터에 대해 식을 사용해 볼 수 있는 다양하고 유용한 온라인 유틸리티를 찾을 수 있습니다.
표현식을 테스트할 때 일치해야 할 항목을 이해하는 것이 중요합니다. Exchange Online 시스템은 쉼표로 구분된 많은 IP 주소를 보낼 수 있습니다. 위에 제공된 표현식이 이 작업에 대해 작동합니다. 그러나 정규식을 테스트할 때는 이를 고려해야 합니다. 예를 들어 다음의 샘플 입력을 사용하여 위의 예제를 확인할 수 있습니다.
192.168.1.1, 192.168.1.2, 192.169.1.1. 192.168.12.1, 192.168.1.10, 192.168.1.25, 192.168.1.26, 192.168.1.30, 1192.168.1.20
10.0.0.1, 10.0.0.5, 10.0.0.10, 10.0.1.0, 10.0.1.1, 110.0.0.1, 10.0.0.14, 10.0.0.15, 10.0.0.10, 10,0.0.1
배포 유효성 검사
보안 감사 로그
새 요청 컨텍스트 클레임이 전송되고 AD FS 클레임 처리 파이프라인에 사용할 수 있는지 확인하려면, AD FS 서버에서 감사 로깅을 사용하도록 설정합니다. 그런 다음, 일부 인증 요청을 보내고 표준 보안 감사 로그 항목에서 클레임 값을 확인합니다.
AD FS 서버의 보안 로그에 감사 이벤트 로깅을 사용하도록 설정하려면, AD FS 2.0에 대한 감사 구성의 단계를 따릅니다.
이벤트 로깅
기본적으로 실패한 요청은 애플리케이션 및 서비스 로그 \ AD FS 2.0 \ Admin에 있는 애플리케이션 이벤트 로그에 기록됩니다. AD FS에 대한 이벤트 로깅에 대한 자세한 내용은 AD FS 2.0 이벤트 로깅 설정을 참조하세요.
자세한 AD FS 추적 로그 구성
AD FS 추적 이벤트는 AD FS 2.0 디버그 로그에 기록됩니다. 추적을 사용하려면 AD FS 2.0에 대한 디버그 추적 구성을 참조하세요.
추적을 사용하도록 설정한 후 다음 명령줄 구문을 사용하여 자세한 로깅 수준을 사용하도록 설정합니다. wevtutil.exe sl “AD FS 2.0 Tracing/Debug” /l:5
관련
새 클레임 유형에 대한 자세한 내용은 AD FS 클레임 유형을 참조하세요.