Azure HDInsight의 인증 문제
이 문서에서는 Azure HDInsight 클러스터와 상호 작용할 때 문제에 대한 문제 해결 단계 및 가능한 해결 방법을 설명합니다.
Azure Data Lake Gen2에 의해 지원되는 보안 클러스터에서 도메인 사용자가 HDI 게이트웨이를 통해 클러스터 서비스에 로그인하는 경우(예: Apache Ambari 포털에 로그인) HDI 게이트웨이에서 먼저Microsoft Entra로부터 OAuth 토큰을 가져오려고 시도한 다음, Microsoft Entra Domain Services에서 Kerberos 티켓을 가져옵니다. 이러한 단계 중 하나에서 인증이 실패할 수 있습니다. 이 문서에서는 이러한 문제 중 일부를 디버깅하는 방법을 설명합니다.
인증에 실패하면 자격 증명을 묻는 메시지가 표시됩니다. 이 대화 상자를 취소하면 오류 메시지가 인쇄됩니다. 다음은 몇 가지 일반적인 오류 메시지입니다.
invalid_grant 또는 unauthorized_client, 50126
문제
페더레이션 사용자에 대한 로그인이 실패합니다(오류 코드 50126)(클라우드 사용자의 경우에는 로그인 성공). 오류 메시지는 다음과 유사합니다.
Reason: Bad Request, Detailed Response: {"error":"invalid_grant","error_description":"AADSTS70002: Error validating credentials. AADSTS50126: Invalid username or password\r\nTrace ID: 0000aaaa-11bb-cccc-dd22-eeeeee333333\r\n Correlation ID: aaaa0000-bb11-2222-33cc-444444dddddd\r\nTimestamp: 2019-01-28 17:49:58Z","error_codes":[70002,50126], "timestamp":"2019-01-28 17:49:58Z","trace_id":"0000aaaa-11bb-cccc-dd22-eeeeee333333","correlation_id":"aaaa0000-bb11-2222-33cc-444444dddddd"}
원인
Microsoft Entra 오류 코드 50126은 테넌트가 설정하지 않은 AllowCloudPasswordValidation
정책을 의미합니다.
해결
Microsoft Entra 테넌트의 관리자는 ADFS 지원 사용자에 대해 암호 해시를 사용하려면 Microsoft Entra ID를 사용하도록 설정해야 합니다. HDInsight에서 Enterprise Security Package 사용 문서에 표시된 대로 AllowCloudPasswordValidationPolicy
를 적용합니다.
invalid_grant 또는 unauthorized_client, 50034
문제
로그인이 실패합니다(오류 코드 50034). 오류 메시지는 다음과 유사합니다.
{"error":"invalid_grant","error_description":"AADSTS50034: The user account Microsoft.AzureAD.Telemetry.Diagnostics.PII doesn't exist in the 0c349e3f-1ac3-4610-8599-9db831cbaf62 directory. To sign into this application, the account must be added to the directory.\r\nTrace ID: 2222cccc-33dd-eeee-ff44-aaaaaa555555\r\nCorrelation ID: cccc2222-dd33-4444-55ee-666666ffffff\r\nTimestamp: 2019-04-29 15:52:16Z", "error_codes":[50034],"timestamp":"2019-04-29 15:52:16Z","trace_id":"2222cccc-33dd-eeee-ff44-aaaaaa555555", "correlation_id":"cccc2222-dd33-4444-55ee-666666ffffff"}
원인
사용자 이름이 잘못되었습니다(존재하지 않음). 사용자는 Azure Portal에서 사용되는 것과 동일한 사용자 이름을 사용하지 않습니다.
해결
해당 포털에서 작동하는 것과 동일한 사용자 이름을 사용합니다.
invalid_grant 또는 unauthorized_client, 50053
문제
사용자 계정이 잠겨 있습니다(오류 코드 50053). 오류 메시지는 다음과 유사합니다.
{"error":"unauthorized_client","error_description":"AADSTS50053: You've tried to sign in too many times with an incorrect user ID or password.\r\nTrace ID: 00aa00aa-bb11-cc22-dd33-44ee44ee44ee\r\nCorrelation ID: 11bb11bb-cc22-dd33-ee44-55ff55ff55ff\r\nTimestamp: 2019-06-06 09:47:23Z","error_codes":[50053],"timestamp":"2019-06-06 09:47:23Z","trace_id":"aaaa0000-bb11-2222-33cc-444444dddddd","correlation_id":"aaaa0000-bb11-2222-33cc-444444dddddd"}
원인
잘못된 암호를 사용하여 로그인을 너무 많이 시도했습니다.
해결
30분 정도 기다립니다. 인증을 시도할 수 있는 애플리케이션을 모두 중지합니다.
invalid_grant 또는 unauthorized_client, 50053 (#2)
문제
암호가 만료되었습니다(오류 코드 50053). 오류 메시지는 다음과 유사합니다.
{"error":"user_password_expired","error_description":"AADSTS50055: Password is expired.\r\nTrace ID: 6666aaaa-77bb-cccc-dd88-eeeeee999999\r\nCorrelation ID: eeee4444-ff55-6666-77aa-888888bbbbbb\r\nTimestamp: 2019-06-06 17:29:37Z","error_codes":[50055],"timestamp":"2019-06-06 17:29:37Z","trace_id":"6666aaaa-77bb-cccc-dd88-eeeeee999999","correlation_id":"eeee4444-ff55-6666-77aa-888888bbbbbb","suberror":"user_password_expired","password_change_url":"https://portal.microsoftonline.com/ChangePassword.aspx"}
원인
암호가 만료되었습니다.
해결
온-프레미스 시스템에서 Azure Portal의 암호를 변경한 다음, 동기화가 완료될 때까지 30분 동안 기다립니다.
interaction_required
문제
interaction_required
오류 메시지를 수신합니다.
원인
조건부 액세스 정책 또는 MFA가 사용자에게 적용되고 있습니다. 대화형 인증은 아직 지원되지 않으므로 MFA/조건부 액세스에서 사용자 또는 클러스터를 제외해야 합니다. 클러스터(IP 주소 기반 예외 정책)를 제외하도록 선택한 경우 해당 vnet에 대해 AD ServiceEndpoints
를 사용하도록 설정했는지 확인합니다.
해결
조건부 액세스 정책을 사용하고 Microsoft Entra Domain Services를 사용하여 Enterprise Security Package로 HDInsight 클러스터 구성에 표시된 대로 MFA에서 HDInsight 클러스터를 제외합니다.
로그인 거부됨
문제
로그인이 거부되었습니다.
원인
이 단계로 이동하는 경우 OAuth 인증 문제는 없지만 Kerberos 인증 문제가 있는 것입니다. ADLS로 지원되는 클러스터인 경우 Kerberos 인증을 시도하기 전에 OAuth 로그인이 성공했습니다. WASB 클러스터에서는 OAuth 로그인이 시도되지 않습니다. Kerberos 실패에는 여러 가지 이유가 있을 수 있습니다. 예를 들어, 암호 해시가 동기화되지 않았거나 Microsoft Entra Domain Services에서 사용자 계정이 잠겨 있는 경우 등이 있습니다. 암호 해시는 사용자가 암호를 변경하는 경우에만 동기화됩니다. Microsoft Entra Domain Services 인스턴스를 만들면 만든 후 변경된 암호 동기화가 시작됩니다. 동기화가 시작되기 전에 설정된 암호는 소급되지 않습니다.
해결
암호가 동기화되지 않은 것 같다고 생각되면 암호를 변경하고 몇 분 후에 동기화해 보세요.
SSH를 시도합니다. 도메인에 가입된 컴퓨터에서 동일한 사용자 자격 증명을 사용하여 인증(kinit)을 시도해야 합니다. 로컬 사용자로 헤드/에지 노드에 대한 SSH를 실행한 다음, kinit를 실행합니다.
Kinit가 실패함
문제
Kinit가 실패합니다.
원인
다양함
해결
Kinit가 성공하려면 sAMAccountName
(영역이 없는 짧은 계정 이름)을 알아야 합니다. sAMAccountName
는 일반적으로 bob@contoso.com
의 bob과 같은 계정 접두사입니다. 일부 사용자의 경우 상황이 다를 수 있습니다. sAMAccountName
을 알아보려면 디렉터리를 탐색/검색할 수 있는 기능이 필요합니다.
sAMAccountName
검색 방법:
로컬 Ambari admin을 사용하여 Ambari에 로그인할 수 있는 경우 사용자 목록을 확인합니다.
도메인에 가입된 Windows 컴퓨터를 사용하는 경우 표준 Windows AD 도구를 사용하여 찾아볼 수 있습니다. 이렇게 하려면 도메인의 작업 계정이 필요합니다.
헤드 노드에서는 SAMBA 명령을 사용하여 검색할 수 있습니다. 이를 위해서는 유효한 Kerberos 세션(성공한 kinit)이 필요합니다. net ads search "(userPrincipalName=bob*)"
검색/찾아보기 결과에
sAMAccountName
특성이 표시됩니다. 또한,pwdLastSet
,badPasswordTime
,userPrincipalName
등의 다른 특성도 확인하여 이러한 속성이 기대한 속성과 일치하는지 확인할 수 있습니다.
kinit가 사전 인증 실패로 실패함
문제
Preauthentication
실패와 함께 Kinit가 실패합니다.
원인
잘못된 사용자 이름 또는 암호입니다.
해결
사용자 이름과 암호를 확인합니다. 또한 설명된 다른 속성도 확인합니다. 자세한 디버깅을 사용하려면 kinit를 시도하기 전에 세션에서 export KRB5_TRACE=/tmp/krb.log
를 실행합니다.
TokenNotFoundException으로 인해 작업/HDFS 명령이 실패합니다.
문제
TokenNotFoundException
으로 인해 작업/HDFS 명령이 실패합니다.
원인
작업/명령이 성공하는 데 필요한 OAuth 액세스 토큰을 찾을 수 없습니다. ADLS/ABFS 드라이버는 스토리지를 요청하기 전에 자격 증명 서비스에서 OAuth 액세스 토큰을 검색하려고 시도합니다. 이 토큰은 동일한 사용자를 사용하여 Ambari 포털에 로그인할 때 등록됩니다.
해결
작업을 실행하는 데 사용되는 ID의 사용자 이름을 통해 Ambari 포털에 성공적으로 로그인한 적이 있는지 확인합니다.
액세스 토큰을 가져오는 동안 오류 발생
문제
사용자가 Error fetching access token
오류 메시지를 받습니다.
원인
사용자가 ACL을 사용하여 ADLS Gen2에 액세스하려고 하는데 Kerberos 토큰이 만료된 경우 이 오류가 간헐적으로 발생합니다.
해결
Azure Data Lake Storage Gen1의 경우 브라우저 캐시를 정리하고 다시 Ambari에 로그인합니다.
Azure Data Lake Storage Gen2의 경우 사용자가 로그인을 시도하는
/usr/lib/hdinsight-common/scripts/RegisterKerbTicketAndOAuth.sh <upn>
을 실행합니다.
다음 단계
문제가 표시되지 않거나 문제를 해결할 수 없는 경우 다음 채널 중 하나를 방문하여 추가 지원을 받으세요.
Azure 커뮤니티 지원을 통해 Azure 전문가로부터 답변을 얻습니다.
사용자 환경을 개선하기 위한 공식 Microsoft Azure 계정인 @AzureSupport와 연결합니다. Azure 커뮤니티를 적절한 리소스(답변, 지원 및 전문가)에 연결합니다.
도움이 더 필요한 경우 Azure Portal에서 지원 요청을 제출할 수 있습니다. 메뉴 모음에서 지원을 선택하거나 도움말 + 지원 허브를 엽니다. 자세한 내용은 Azure 지원 요청을 만드는 방법을 참조하세요. 구독 관리 및 청구 지원에 대한 액세스 권한은 Microsoft Azure 구독에 포함되어 있으며, Azure 지원 플랜 중 하나를 통해 기술 지원이 제공됩니다.