중간 계층(middle-tier) 서버에서 네트워크 공유를 사용하는 서비스에 접근할 때 사용자에게 자격 증명 입력을 요구한 뒤, 결국 액세스 거부 오류가 발생하는 경우가 있습니다. 이번 글에서는 몇 가지 대표적인 사례 시나리오를 살펴보고, Windows 10에서 CIFS에 대한 제한된 위임(constrained delegation)이 ACCESS_DENIED 오류와 함께 실패하는 원인과 이를 우회할 수 있는 해결 방법을 소개합니다.
CIFS(Common Internet File System)는 네트워크 서버의 파일과 서비스를 요청할 수 있는 개방형 크로스 플랫폼 메커니즘을 제공하는 파일 공유 프로토콜입니다. CIFS는 인터넷 및 인트라넷 환경에서의 파일 공유를 위해 Microsoft의 SMB(Server Message Block) 프로토콜을 향상시킨 버전을 기반으로 동작합니다.
Windows에서 CIFS 제한된 위임이 실패하는 상황
다음 세 가지 시나리오에서 사용자에게 자격 증명을 요구한 후 액세스 거부 오류와 함께 접근이 실패하는 이 문제가 나타날 수 있습니다.
시나리오 1
- 홈 디렉터리가 통과 인증(pass-through authentication) 방식으로 원격 공유를 가리키도록 IIS 웹 사이트가 설정되어 있고, CIFS에 대한 제한된 위임이 구성되어 있습니다.
- 해당 공유에 접근하는 IIS 응용 프로그램 풀이 서비스 계정의 ID로 실행되고 있습니다.
- 파일 서버의 CIFS 서비스에 대해 해당 도메인 계정이 위임을 신뢰하도록 설정되어 있습니다.
시나리오 2
- 웹 응용 프로그램이 특정 사용자 자격으로 파일 서버에 접근하려고 합니다.
- 해당 공유에 접근하는 IIS 응용 프로그램 풀이 서비스 계정의 ID로 실행되고 있으며, 파일 서버의 CIFS 서비스에 대해 도메인 계정이 위임을 신뢰하도록 설정되어 있습니다.
- 파일 서버를 위한 서비스 계정에 CIFS 제한된 위임이 구성되어 있습니다.
시나리오 3
- 클라이언트에서 접근하는 서버 측 응용 프로그램이 특정 사용자 자격으로 원격 공유에 접근합니다.
- 서버 측 응용 프로그램이 서비스 계정의 컨텍스트에서 실행되고 있습니다.
- 서비스 계정이 위임을 신뢰하도록 설정되어 있고, 파일 서버에 대한 CIFS 위임이 구성되어 있습니다.
이 문제는 제한된 위임이 적용된 환경에서 MrxSmb 2.0과 Kerberos 간의 호환성 충돌로 인해 발생하는 것으로 확인되었습니다. Microsoft는 이를 해결하기 위해 두 가지 워크어라운드를 제공합니다.
워크어라운드 1: 머신(컴퓨터) 계정 사용 (권장)
CIFS에 대한 제한된 위임을 수행할 응용 프로그램의 ID로 서비스 계정 대신 머신(컴퓨터) 계정을 사용하세요. 이 방법은 도메인 기능 수준이 Windows Server 2003, Windows Server 2008 또는 Windows Server 2008 R2일 때 제한된 위임을 구성하는 방식입니다.
웹 서버가 속한 도메인의 도메인 컨트롤러에서 아래 단계를 수행합니다.
- 시작 > 관리 도구 > Active Directory 사용자 및 컴퓨터를 클릭합니다.
- 도메인을 확장한 다음 Computers 폴더를 확장합니다.
- 오른쪽 창에서 웹 서버의 컴퓨터 이름을 마우스 오른쪽 버튼으로 클릭하고 속성을 선택한 뒤 위임 탭을 클릭합니다.
- 지정한 서비스에 대한 위임만 이 컴퓨터 신뢰(Trust this computer for delegation to specified services only) 확인란을 선택합니다.
- Kerberos만 사용(Use Kerberos only)이 선택되어 있는지 확인한 후 확인을 클릭합니다.
- 추가 버튼을 클릭합니다.
- 서비스 추가 대화 상자에서 사용자 또는 컴퓨터를 클릭한 후, IIS로부터 사용자 자격 증명을 전달받을 파일 서버의 이름을 찾아보거나 직접 입력합니다.
- 확인을 클릭합니다.
- 사용 가능한 서비스 목록에서 CIFS 서비스를 선택합니다.
- 확인을 클릭합니다.
워크어라운드 2: 서비스/도메인 계정 사용 (비권장)
이 방법은 컴퓨터 계정에 모든 인증 프로토콜 사용(Use any authentication protocol) 위임이 필요하므로 권장하지 않습니다. 이 옵션을 선택하면 해당 계정은 프로토콜 전환(protocol transition)이 포함된 제한된 위임을 사용하게 되어 보안상 바람직하지 않습니다.
응용 프로그램의 ID로 서비스 계정 및/또는 도메인 계정을 반드시 사용해야 하는 경우에만 아래 단계를 진행합니다.
1단계
- 시작 > 관리 도구 > Active Directory 사용자 및 컴퓨터를 클릭합니다.
- 도메인을 확장한 다음 Computers 폴더를 확장합니다.
- 오른쪽 창에서 웹 서버의 컴퓨터 이름을 마우스 오른쪽 버튼으로 클릭하고 속성을 선택한 뒤 위임 탭을 클릭합니다.
- 지정한 서비스에 대한 위임만 이 컴퓨터 신뢰 확인란을 선택합니다.
- 모든 인증 프로토콜 사용이 선택되어 있는지 확인합니다.
- 확인을 클릭합니다.
- 추가 버튼을 클릭합니다.
- 서비스 추가 대화 상자에서 사용자 또는 컴퓨터를 클릭한 후, IIS로부터 사용자 자격 증명을 전달받을 파일 서버의 이름을 찾아보거나 입력합니다.
- 확인을 클릭합니다.
- 사용 가능한 서비스 목록에서 CIFS 서비스를 선택합니다.
- 확인을 클릭합니다.
2단계
- 왼쪽 창에서 Users 폴더를 확장합니다.
- 오른쪽 창에서 응용 프로그램 풀의 ID인 서비스 계정을 마우스 오른쪽 버튼으로 클릭하고 속성을 선택한 뒤 위임 탭을 클릭합니다.
- 지정한 서비스에 대한 위임만 이 컴퓨터 신뢰 확인란을 선택합니다.
- Kerberos만 사용이 선택되어 있는지 확인합니다.
- 확인을 클릭합니다.
- 추가 버튼을 클릭합니다.
- 서비스 추가 대화 상자에서 사용자 또는 컴퓨터를 클릭한 후, IIS로부터 사용자 자격 증명을 전달받을 파일 서버의 이름을 찾아보거나 입력합니다.
- 확인을 클릭합니다.
- 사용 가능한 서비스 목록에서 CIFS 서비스를 선택합니다.
- 확인을 클릭합니다.
이 글이 CIFS 제한된 위임 관련 ACCESS_DENIED 문제를 해결하는 데 도움이 되기를 바랍니다.