1 이 사용자가 사용할 수 있는 역할이 없습니다. Active Directory에서 가장 혼란스러운 대화 상자입니다. 테스트 방법 및 주의 사항

답변 2개

풀 수 있는.

전반전은 내 감독이었다. 후반... 뭐, 뭐가 잘못됐는지 모르겠어요. 실제로는 버그나 비호환성 문제가 아니라 매우 어색하고 간헐적이며 이해하기 어려운 문제입니다. 관심 있는 사람들을 위해 먼저 요약을 한 다음 길이에 대한 설명을 제공합니다.

오류 메시지의 제안에도 불구하고 이는 개념적 모델(CSDL)의 문제가 아니라 간헐적으로 다시 생성되는 열 매핑 문제입니다.

DbContext와 해당 주요 부분을 구문 분석하기 위해 EdmxWriter를 사용하여 개념적 모델이 구축되었습니다.

그런 다음 이 모델을 사용하여 스키마를 새 데이터베이스로 변환하는 SQL 스크립트를 생성했습니다. 비결은 데이터베이스가 Oracle이라는 것입니다.

Oracle은 초기 단계이므로 긴 열 이름을 허용하지 않습니다. 따라서 생성된 EDMX 및 SQL 스크립트를 수정하여 단축된 열 이름을 사용하여 개념 모델의 일부를 만들고 매핑해야 했습니다.

별거 아닙니다. 잘 작동합니다. 그렇다면 모든 것이 어디서 잘못 되었습니까?

오라클은 "코드 우선"을 지원하지 않습니다. 수동으로 수행되었지만 EdmxWriter를 사용하는 것은 Oracle에서 코드 기반 접근 방식입니다. 따라서 첫 번째 EDMX 회로가 분해되었을 때 논리적 매핑에 대한 바이너리였습니다. 해결책은 C# 모델에서 부울을 일시적으로 제거하고 이를 EDMX에 수동으로 추가한 다음 Oracle web.config 매핑(NUMBER(1,0)에 대한 부울 매핑)을 수행하는 것이었습니다.

모든 것이 다시 멋지다. 그런데 왜 계속 반복되는 걸까요?

개발 프로세스 전반에 걸쳐 다양한 시점에서 규칙의 일부 끝(C#, EDMX 또는 Oracle)이 변경됩니다. 그리고 매번 내가 모르는 사이에 열이 자동으로 재할당되는 것 같았습니다. EDMX 모델이 Oracle에서 업데이트된 경우 매핑은 존재하지 않는 C# 속성(짧은 열 이름)을 가리키고 있었습니다. 모델이 C# 코드에서 업데이트된 경우 매핑이 저장되지 않았으며 Oracle에 없는 긴 열 이름을 매핑하려고 했습니다.

이 접근 방식(첫 번째 하이브리드 코드 및 모델)의 아쉬운 점은 내 모델을 계속 관리하고 어린 자녀 관계에 필요한 설정을 처리하려면 매우 조심해야 하며 EDMX 파일 특성을 계속 주시해야 한다는 것입니다.

2012/10/29 팀 스프링스턴

이 기사에서는 MMC(Microsoft Management Console) Active Directory 사용자 및 컴퓨터 스냅인(dsa)의 개체 속성 창에 있는 위임 탭인 "AD에서 가장 혼란스러운 대화 상자"의 몇 가지 측면을 명확히 설명하겠습니다. .msc). 다양한 구성에 대한 속성 값을 살펴보겠습니다. 설정의 목적을 이해하면 AD에서 Kerberos 위임을 사용하는 응용 프로그램과 서비스를 올바르게 구성할 수 있습니다.

팀 스프링스턴( [이메일 보호됨]) – 수석 서비스 엔지니어 기술적 지원보안 및 인증을 담당하는 Microsoft의 상용 기술 지원 부서

블로그에서 가장 활발하게 논의되는 것 중 하나 마이크로소프트 기술– Kerberos 프로토콜을 사용한 인증. 기술 자체와 기능이 출시된 이후 큰 변화를 겪지 않았다는 점을 고려하면 이는 이상합니다. 윈도우 서버 2003. 여전히 Kerberos는 추가 문서의 대상으로 남아 있습니다.

Kerberos의 작동 방식과 오류가 발생하는 이유에 대한 기술적 측면을 지속적으로 배워야 하는 이유는 기술 자체는 동일하지만 이를 사용하는 서비스와 사용 방식이 고유한 경우가 많기 때문입니다. 그러나 각 시나리오에서 변함없이 유지되는 것은 AD(Active Directory) 설정의 의도와 오류 메시지의 의미입니다.

이 기사에서는 MMC(Microsoft Management Console) Active Directory 사용자 및 컴퓨터 스냅인(dsa)의 개체 속성 창에 있는 위임 탭인 "AD에서 가장 혼란스러운 대화 상자"의 몇 가지 측면을 명확히 설명하겠습니다. .msc). 다양한 구성에 대한 속성 값을 살펴보겠습니다. 설정의 목적을 이해하면 AD에서 Kerberos 위임을 사용하는 응용 프로그램과 서비스를 올바르게 구성할 수 있습니다.

간단한 인터페이스

왜 "간단한" 인터페이스를 배우는데 시간을 낭비합니까? 다양한 매개변수의 작동 방식에 대한 기술적 측면을 이해하면 구성 오류를 보다 성공적으로 수정할 수 있으므로 자세히 설명할 필요가 있습니다. 그러므로 태도의 의미를 이해하는 것부터 시작하겠습니다. Active Directory 사용자 및 컴퓨터 스냅인을 열고 컴퓨터 계정 속성으로 이동하면 위임 탭이 표시됩니다(포리스트가 Server 2003 기능 수준에 있다고 가정). 이 탭은 그림 1에 나와 있습니다. 이 탭에 있는 스위치의 목적을 설명하기 위해 그림 2에서는 스위치에 지정할 수 있는 대체 이름을 제안합니다.

매개변수의 의미를 알아보기 전에 Kerberos 위임이 무엇인지 설명하겠습니다. 위임(가장 또는 단순 위임이라고도 함)은 응용 프로그램이나 서비스가 리소스에 액세스하기 위해 Kerberos 티켓을 얻는 프로세스입니다. 원격 컴퓨터사용자를 대신하여. 위임을 위해 신뢰되는 엔터티는 서비스 엔터티입니다. 계정, 이를 대신하여 애플리케이션이 실행됩니다. 위임을 사용하면 애플리케이션은 사용자가 액세스할 수 있는 리소스에만 액세스하고 사용자에게 정보를 전달할 수 있습니다. 예제 시나리오는 시스템에 연결하는 웹 서버입니다. SQL 서버웹 클라이언트에서 사용자에게 필요한 데이터를 표시합니다.

그림 1의 상위 두 가지 옵션("위임할 컴퓨터를 신뢰하지 않음" 및 "모든 서비스를 위임할 컴퓨터를 신뢰함")은 설명이 필요 없습니다. 세 번째 옵션은 KCD(Kerberos 제한 위임)로, 기본적으로 단순 위임과 동일하지만 가장된 ID를 지정된 서비스나 컴퓨터에만 위임합니다. 이 옵션은 가장된 사용자 ID의 위임 범위를 제한하여 더 높은 수준의 보안을 제공합니다. 따라서 위임을 위해 신뢰할 수 있는 서비스 ID가 손상되면 결과는 해당 리소스에만 액세스할 수 있는 기능으로 제한됩니다. 원격 서버, 제한된 위임을 위해 수동으로 선택됩니다.

그림 1의 네 번째 옵션은 KCD 및 사용자용 서비스(또는 S4U) 확장을 허용합니다. S4U 확장은 프로토콜 변경과 같은 고급 기능을 제공합니다. 프로토콜 전환은 클라이언트가 들어오는 연결에서 Kerberos가 아닌 다른 프로토콜로 먼저 인증한 다음 Kerberos로 전환할 때 발생합니다. 상세 설명 S4U는 "Windows Server 2003에서 S4U Kerberos 확장 탐색"(msdn.microsoft.com/en-us/magazine/cc188757.aspx) 문서 및 "제한된 위임을 통한 프로토콜 전환 기술 보충 자료"(msdn.microsoft.com/ en-us/library/ff650469.aspx). 이러한 리소스는 관리자가 아닌 프로그래머를 대상으로 하지만 관리자가 S4U가 무엇인지, 어떻게 구성하고 언제 사용해야 하는지 이해하는 것도 중요합니다. 이를 위해 관리자를 위한 S4U 기능의 간단한 목록은 다음과 같습니다.

실제로 해당 토큰을 얻지 않고, 신뢰할 수 있는 티켓 서비스가 신뢰하는 사용자로부터 TGT(티켓 부여 티켓)를 얻거나 자격 증명에 액세스하지 않고 사용자 토큰에 대한 정보를 얻습니다. 획득한 정보는 인증 확인 등을 위해 사용될 수 있습니다. 이 확장을 S4U2Self(Services-For-User-To-Self)라고 합니다.

Kerberos 서비스 티켓 없이, 자격 증명에 액세스하지 않고, TGT를 전달하지 않고, 전혀 인증 없이 티켓 얻기 - Services-For-User-To-Proxy(S4U2Proxy).

앞서 언급한 프로토콜 변경을 수행합니다. 엔터프라이즈 서비스에 액세스하는 클라이언트는 처음에 Kerberos가 아닌 다른 방법을 사용하여 인증하며, S4U를 사용하면 신뢰할 수 있는 서비스가 이미 인증된 사용자의 세션을 Kerberos를 사용하도록 전환할 수 있습니다. 여기서는 구성 오류로 인한 실패가 가장 자주 발생하는 곳입니다. 애플리케이션 문서에는 프로토콜 변경이 필요한지 또는 AD에서 이를 구성하는 방법이 명확하게 설명되지 않는 경우가 많기 때문입니다. 그러나 오늘날 "클라우드"를 언급하지 않고는 완성된 기사가 거의 없기 때문에 이 주제는 관련이 있습니다. 클라우드를 통해 연결하는 클라이언트는 인터넷을 통해 Kerberos 서비스 티켓 요청을 처리하는 DC(도메인 컨트롤러)가 부족하기 때문에 NTLM 인증을 가장 자주 사용합니다. 프로토콜을 변경하면 이 도메인의 사용자가 다음을 통해 연결할 수 있습니다. 소프트웨어 방화벽또는 인증 방법(예: NTLM) 중 하나를 사용하여 프록시를 사용한 다음 Kerberos 인증으로 전환하여 수행합니다. 추가 조치내부에 기업 네트워크. "클라우드"는 인터넷을 통한 연결을 의미하므로 클라우드 솔루션을 사용하는 경우 조만간 Kerberos 프로토콜 체인저를 사용하게 될 것이므로 안심하셔도 됩니다.

외부 껍질 아래

이제 각 구성에 설정된 속성의 값을 살펴보기 위해 LDP를 사용하여 이 4가지 매개변수를 각각 설정할 때 실제로 어떤 일이 발생하는지 살펴보겠습니다. LDP는 기본적으로 AD 도메인 서비스 역할과 함께 설치되며 다음과 같은 LDAP 쿼리 처리 도구로 사용될 수 있습니다. 그래픽 인터페이스. LDP를 사용하면 자신만의 LDAP 쿼리를 작성하고 읽기 쉬운 형식으로 결과를 볼 수 있습니다. LDP를 사용하여 속성 값(예: userAccountControl)을 보는 추가 이점은 계산된 매개변수 값을 숫자의 조합이 아닌 사람이 읽을 수 있는 형식으로 변환한다는 것입니다. 그런데 Adsiedit.msc의 이후 버전도 계산된 매개변수 값에 대해 유사한 처리를 제공합니다.

따라서 Windows Server 2008 이상에서는 ldp.exe 및 Adsiedit.msc가 속성 값(예: userAccountControl)의 자동 변환을 제공하므로 calc.exe를 열고 온라인 MSDN 설명서나 Microsoft 기술 자료를 참조할 필요가 없습니다.

이제 설정에 따라 LDP의 속성값이 변경되는 것을 살펴보겠습니다. 위임용으로 신뢰할 수 없는 계정부터 시작해 보겠습니다. 그림 3에서는 Test2 계정이 신뢰할 수 없으며 userAccountControl 속성의 16진수 값 1020(10진수 4128에 해당)이 WORKSTATION_TRUST_ACCOUNT 및 PASSWD_NOTREQD로 변환되는 것을 보여줍니다.

그림 4는 위임을 위해 신뢰할 수 있는 계정을 보여줍니다. TRUSTED_FOR_DELEGATION으로 변환된 userAccountControl 속성 값을 볼 수 있습니다. 이는 이 서비스 ID에 대해 단순하고 제한되지 않은 Kerberos 위임이 허용됨을 나타냅니다.

특정 서비스에 대한 신뢰 위임

S4U 또는 KCD를 사용하려는 경우 다음 설정이 중요합니다. 첫 번째 경우는 Trust this 옵션의 선택에 해당합니다. 컴퓨터지정된 서비스에만 위임 및 Kerberos만 사용. 그림 5에서는 이 선택을 통해 userAccountControl 특성이 다시 WORKSTATION_TRUST_ACCOUNT로 설정되고 MsDS-AllowedToDelegateTo 특성이 위임이 허용된 선택된 서비스로 자동으로 채워지는 것을 보여줍니다. 이 속성은 다른 프로시저에 의해 채워지거나 영향을 받지 않습니다. 항목에는 위임이 활성화된 컴퓨터의 특정 서비스가 나열됩니다.

두 번째 옵션은 덜 안전합니다. 프로토콜 및 기타 확장 옵션을 변경할 수 있는 인증 프로토콜을 사용하세요. MsDS-AllowedToDelegateTo 특성의 항목 외에도 이 설정은 그림 6과 같이 TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION(T2A4D)을 수신하는 userAccountControl 특성을 변경합니다. T2A4D 플래그가 없으면 프로토콜 변경 오류가 발생할 수 있습니다. 이 플래그는 다른 구성 요소에서는 사용되지 않습니다. 이 간단한 스위치는 선택하지 않으면 S4U2Self, S4U2Proxy 및 프로토콜 변경이 다르게 동작하여 해당 티켓 유형을 예상하는 애플리케이션 및 서비스에 문제를 일으킬 수 있으므로 매우 중요합니다. 특히, 프로토콜 변경은 실패하며 티켓이 발급되지 않습니다. S4U2Proxy 및 S4U2Self에는 전달 가능한 플래그가 없으므로 오류가 발생합니다. S4U2Proxy의 경우 - 어떤 경우에도 S4U2Self의 경우 - 티켓을 다른 서비스나 노드로 보내야 하는 상황에서 발생합니다.

"너 스스로해라"

애플리케이션이나 서비스에서 사용하는 서비스 계정이 프로토콜 변경이 필요한 작업을 수행해야 하고 위임 탭이 모든 인증 프로토콜 인증 사용 대신 Kerberos만 사용으로 설정되어 있으면 어떻게 되나요? 클라이언트 애플리케이션의 경우 오류는 다음과 같습니다. 액세스 양식네트워크를 통해 리소스에 액세스하려고 할 때 거부되거나 알림 없이 NTLM 인증 오류가 발생하거나 예기치 않은 응용 프로그램 종속 오류가 발생할 수 있습니다. 오류가 나타날 형태의 불확실성으로 인해 작업이 더욱 복잡해집니다. 그러나 가장 가능성이 높은 결과는 액세스 거부입니다. 이 상황에서는 애플리케이션이나 서비스 문서를 검토하여 TGT 없이 서비스에서 프로토콜 변경이나 티켓 요청이 있을 것이라고 명시되어 있는지 확인하십시오. 문제는 대부분의 문서 작성자가 KCD 구성의 의미를 실제로 이해하지 못하기 때문에 설명을 거의 또는 전혀 제공하지 않는다는 것입니다.

오류의 원인을 식별하는 DIY 방법은 위임을 위해 신뢰할 수 있는 서버에서 네트워크 추적 데이터를 수집하는 것입니다. 수집된 데이터를 Kerberos(Microsoft 네트워크 모니터의 Kerberosv5 또는 Wireshark의 kerberos)별로 필터링합니다. 티켓 발급 서비스 요청(TGS_REQ)은 AD KDC(Kerberos 배포 센터)로 전송되며 제한된 위임 플래그가 설정된 KDC 매개 변수를 포함합니다. 티켓이 거부되면 서버 응답(TGS_REP)에 KDC_ERR_BAD_OPTION 오류가 포함되며 이는 네트워크 추적 결과에서 쉽게 확인할 수 있습니다.

자세한 정보 Microsoft Kerberos 구현의 작동은 온라인 개방형 프로토콜 사양에서 찾을 수 있습니다. "Kerberos 프로토콜 확장"(msdn.microsoft.com/en-us/library/cc233855%28v=PROT.13%29.aspx)에는 Kerberos에 대한 일반 문서와 "Kerberos 프로토콜 확장: 사용자를 위한 서비스 및 제한된 위임 프로토콜 사양이 포함되어 있습니다. » (msdn.microsoft.com/en-us/library/cc246071%28v=PROT.13%29.aspx) – Kerberos 및 S4U 제한 위임에 대한 문서입니다.

완벽한 세상

Kerberos 인터페이스 창의 설정과 AD의 해당 설정에 대한 분석이 해당 설정의 의미를 더 잘 이해하는 데 도움이 되기를 바랍니다. 이상적인 세상은 관리형 서비스 문서를 통해 서비스 운영 방법에 대한 기술 지침을 제공하는 것입니다. 올바른 설정인증을 위해. 그러나 현실이 이상적이지 않은 경우 이 정보는 툴킷을 개선하는 데 도움이 됩니다. 매개변수가 어떻게 작동하는지에 대한 기술적 측면을 이해하는 것이 성공의 열쇠가 될 것입니다.



웹사이트, 애플리케이션, 게임 등은 사용자가 관리하는 정보자원입니다. 특정 사용자에게 허용된 행위와 금지된 행위를 구분하기 위해 접근권한(AP)을 사용합니다. PD의 적용 범위는 역할을 형성합니다. 예를 들어, 등록 옵션이 있는 기본 웹사이트를 살펴보겠습니다.

해당 사이트에서는 3가지 역할이 각자의 권리와 책임을 갖고 "살아 있습니다".

1.

모든 익명 사용자는 기본적으로 이 역할을 수행합니다. 사이트 방문자에게 "댓글 추가" 권한을 부여하면 사이트를 방문하는 사용자가 귀하의 흥미로운 사항에 댓글을 달 수 있습니다. 그렇지 않은 경우 콘텐츠에 댓글을 달려면 먼저 등록해야 합니다.

2.

인증 및 승인을 통과한 익명의 개인이 새로운 역할. 승인된 사용자만 관리할 수 있습니다. 개인 계정, 개인 데이터를 추가 및 편집하고, 다른 캐릭터에 대한 정보를 봅니다. 등록되지 않은 사용자는 이러한 작업을 수행할 수 있는 권한이 없습니다.

3. 관리자

이 기본 역할은 사용자에게 사이트에 대한 전체 액세스 권한을 부여합니다. 리소스 관리자는 블록을 추가 및 삭제하고 다른 사용자에게 특정 기능에 액세스할 수 있는 권한을 부여하거나 빼앗습니다.

우리는 어떻게 테스트하고 무엇에 주의해야 합니까?

우선, 설정을 조작하여 "최고 관리자"를 삭제하지 않도록 노력하겠습니다.

  • 안전한 캐릭터 만들기

프로젝트의 실제 활동에 더 가까이 다가가려면 유사한 관리 권한을 가진 추가 사용자로 충분합니다. 그리고 이 문자를 사용하여 리소스를 테스트하고 다른 사용자의 액세스 권한을 변경합니다.

  • 여러 브라우저에서 체크인 중

동시에 수행합니다. 하나에서는 PD를 변경하고 다른 하나에서는 사용자에 대한 권한 적용을 확인하여 사용자 세션을 분리합니다.

  • 직접 링크를 따라가세요

우리는 직접 URL을 통해 차단 제한 사항을 탐색하여 테스트합니다. 승인되지 않은 사이트 게스트에 대한 링크를 통해 일부 리소스 데이터를 볼 수 없어야 합니다. 액세스가 제한되면 모든 것이 정상입니다. 기밀 정보 대신 익명 사용자는 특별 페이지 형태로 경고 메시지를 받게 되며, 대부분 코드 403이 포함되어 있습니다.

  • 엔터티 차단 테스트

티켓팅, 투어 서비스와 같은 리소스의 경우 여러 사용자가 동시에 액세스할 수 있는 요소를 잠그는 것이 중요합니다. 두 가지 차단 옵션이 있습니다.

+ 낙관적 차단저장할 때 데이터베이스에서 자세한 내용을 확인합니다. 새로운 버전다른 사용자가 남긴 데이터. 만약 존재한다면, 현재 사용자다시 다운로드 이 사본본질.

+ 비관적 차단낙관적 충돌이 너무 많이 발생하는 경우 엔터티가 사용됩니다. 이 경우 현재 한 명의 사용자만 이 버전의 엔터티를 사용하고 변경합니다.

한 컴퓨터에서 여러 브라우저나 다른 계정으로 테스트할 수 있습니다.

  • 테스트 매트릭스 사용

이는 테스터의 작업을 단순화하고, 허용된 작업과 금지된 작업을 명확하게 표시하며, 아무것도 놓치지 않도록 도와줍니다. 우리는 여기에 캐릭터의 모든 역할, 사용자, 한계의 변형을 설명합니다.

다음은 테스트 매트릭스의 가장 간단한 예입니다.

액세스 제어는 프레임워크 내의 주요 검사 중 하나입니다. 세 가지 역할로 지역 도서관 웹사이트를 테스트하는 것조차 테스터에게는 어려운 일입니다. 그러나 수십 개의 역할, 수천 명의 사용자 및 수백만 개의 권한을 가진 인기 있는 리소스에는 전체 관리자 군대가 필요합니다! 아마추어가 테스트를 맡으면 피해 규모는 상상하기 어렵다. 유능한 전문가를 고용하고 제품 안전에 공백이 생기지 않도록 하십시오!