Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / / /

자체 관리형 Kerberos 인증 문제 해결

이 페이지의 내용

  • mongokerberos 유효성 검사 도구
  • Kerberos 구성 디버깅 전략
  • Linux의 Kerberos 추적 로깅
  • 일반적인 오류 메시지

mongokerberos 프로그램은 MongoDB 와 함께 사용할 플랫폼의 Kerberos 구성을 확인하고 MongoDB 클라이언트 에서 Kerberos 인증 이 예상대로 작동하는지 테스트할 수 있는 편리한 방법을 제공합니다.

mongokerberos 도구는 일반적인 구성 문제를 진단하는 데 도움이 될 수 있으며, Kerberos 구성 문제를 해결할 때 시작하는 것이 좋습니다. 자세한 내용은 mongokerberos 문서를 참조하세요.

mongokerberos MongoDB Enterprise에서만 사용할 수 있습니다.

Kerberos 를 사용하여 mongos 또는 에 mongod 대해 시작하거나 인증하는 데 문제가 있는 경우 다음 사항을 고려하세요.

  • MongoDB Community Edition이 아닌 MongoDB Enterprise를 실행 중인지 확인하세요. Kerberos 인증은 MongoDB Enterprise 기능이며 MongoDB Community Edition 바이너리에서는 작동하지 않습니다.

    MongoDB 엔터프라이즈를 사용하고 있는지 확인하려면 --version 명령줄 옵션을 mongod 또는 mongos에 전달합니다.

    mongod --version

    이 명령의 출력에서 modules: subscription 또는 modules: enterprise 문자열을 찾아 MongoDB Enterprise 바이너리를 사용하고 있는지 확인합니다.

  • mongod 또는 mongos 인스턴스의 표준 시스템 호스트 이름이 확인 가능한 정규화된 도메인 이름인지 확인합니다.

    Linux에서는 시스템 프롬프트에서 hostname -f 명령을 사용하여 시스템 호스트 이름 확인을 확인할 수 있습니다.

  • Linux에서는 서비스 주체 이름(SPN 의 기본 구성 요소가 인지 mongodb 확인합니다. 의 SPN은 입니다. SPN 의 프라이머리 컴포넌트가 mongodb 이 아닌 경우 --setParameter saslServiceName 을 사용하여 프라이머리 컴포넌트를 지정해야 합니다.

  • Linux에서는 SPN(서비스 주체 이름)의 인스턴스 구성 요소가 키탭 파일 의 또는 mongod 인스턴스의 표준 mongos 시스템 호스트 이름과 일치합니다. mongod 또는 mongos 인스턴스의 시스템 호스트 이름이 키탭 파일에 없는 경우 GSSAPI error acquiring credentials. 오류 메시지와 함께 인증이 실패합니다.

    에서 반환된 mongod 또는 mongos 인스턴스의 hostname -f --setParameter saslHostName 호스트 이름이 정규화되지 않은 경우 또는 를 시작할 때 를 mongod mongos 사용하여 인스턴스의 정규화된 도메인 이름을 설정합니다.

  • 정방향 및 역방향 DNS 조회를 모두 제공하기 위해 mongod 또는 mongos 인스턴스를 실행하는 각 호스트에 APTR DNS 레코드가 있는지 확인합니다. A 레코드는 mongod 또는 mongos 의 FQDN에 매핑되어야 합니다.

  • MongoDB 인스턴스와 Kerberos 인프라를 호스팅하는 서버의 시계가 최대 시간 왜곡(기본값 5분) 이내인지 확인합니다. 시간 차이가 최대 시간 왜곡보다 크면 인증에 성공할 수 없습니다.

  • Linux KRB5 키탭에 @<KERBEROS REALM> 로 끝나는 주체 이름이 포함되어 있는지 확인합니다. SPN 의 유효성을 검사하려면 Active Directory에서 setspn -Q <spn> 를 실행합니다. 올바르게 구성된 경우 이 명령은 SPN에 연결된 계정에 대해 하나의 고유 이름을 반환합니다. Linux에서 klist -k <keytab> 를 실행하면 키 탭에 <spn>@<KERBEROS REALM> 이(가) 나타납니다.

  • Active Directory를 KDC 로 사용하는 경우 MongoDB 서비스 계정이 컴퓨터 계정이 아닌 사용자 계정인지 확인합니다.

  • Active Directory에서 AES 암호화를 사용하는 경우, msDS-SupportedEncryptionTypes 속성 또는 "네트워크 보안: Kerberos에 허용된 암호화 유형 구성" 정책 설정을 사용하여 MongoDB 서비스 계정에서 AES를 사용하도록 설정합니다.

  • Kerberos는 동일한 비밀번호를 가진 두 사용자가 서로 다른 키를 생성하도록 키 생성 알고리즘에 솔트를 적용합니다. Linux의 ktutil 와 Active Directory(AD)는 솔트를 생성하는 데 동일한 프로세스를 사용하지 않습니다. 이러한 불일치로 인해 Linux 및 Windows 환경에서 작업할 때 인증 실패가 발생할 수 있습니다. 이 문제를 완화하려면 다음을 수행할 수 있습니다.

    • AD 서버에서 키탭 파일을 생성하고 결과 파일을 Linux 서버로 이동합니다.

      ktpass /out <outfile.keytab> /princ <spn>@<KERBEROS REALM> /mapuser <current userPrincipalName> /crypto ALL /ptype KRB5_NT_PRINCIPAL +rndpass

      참고

      이렇게 하면 userPrincipalName/princ 의 값으로 변경됩니다.

    • Linux에서 ktutil 을(를) 사용하고 올바른 솔트를 사용하도록 강제합니다. ktutil 가 올바른 솔트를 사용하도록 강제하려면 다음을 수행합니다.

      1. userPrincipalName 을 주체 이름으로 사용하는 키탭 항목을 생성합니다.

        ktutil: add_entry -password -p <userPrincipalName>@<KERBEROS REALM> -e aes256-cts-hmac-sha1-96 -k <KVNO>
        Password for <userPrincipalName>@<KERBEROS REALM>:
        ktutil: list -k
        slot KVNO Principal
      2. 키를 16진수 덤프합니다.

      3. <spn>@<KERBEROS REALM> 을 주체 이름으로 사용하여 새 키탭 항목을 만들고 16진수 덤프 키를 사용합니다.

        1 <KVNO> <userPrincipalName>@<KERBEROS REALM>(0x<HEXDUMP>)
        ktutil: add_entry -key -p <spn>@<KERBEROS REALM> -e aes256-cts-hmac-sha1-96 -k <KVNO>
        Key for <spn>@<KERBEROS REALM> (hex): <HEXDUMP>
        ktutil: write_kt mongodb_ad.keytab
    • 솔트를 사용하지 않는 RC4-HMAC를 사용하지만, 이는 권장되지 않습니다.

MIT Kerberos는 트레이스 로깅 출력을 위한 KRB5_TRACE 환경 변수를 제공합니다. Linux에서 MIT Kerberos에 지속적으로 문제가 발생하는 경우 mongod, mongos 또는 mongosh 인스턴스를 시작할 때 KRB5_TRACE를 설정하여 자세한 로깅을 생성할 수 있습니다.

예를 들어, 다음 명령은 키탭 파일이 기본 /etc/krb5.keytab 경로에 있는 독립형 mongod 를 시작하고 /logs/mongodb-kerberos.log KRB5_TRACE 설정합니다.

env KRB5_KTNAME=/etc/krb5.keytab \
KRB5_TRACE=/logs/mongodb-kerberos.log \
mongod --dbpath /data/db --logpath /data/db/mongodb.log \
--auth --setParameter authenticationMechanisms=GSSAPI \
--bind_ip localhost,<hostname(s)|ip address(es)> --fork

경우에 따라 MongoDB는 Kerberos 서비스에 문제가 있는 경우 GSSAPI 인터페이스에서 오류 메시지를 반환합니다. 몇 가지 일반적인 오류 메시지는 다음과 같습니다:

GSSAPI error in client while negotiating security context.

이 오류는 클라이언트에서 발생하며 자격 증명이 충분하지 않거나 악의적인 인증 시도가 반영됩니다.

이 오류가 발생하면 호스트에 연결할 때 올바른 자격 증명과 올바른 정규화된 도메인 이름을 사용하고 있는지 확인하세요.

GSSAPI error acquiring credentials.
이 오류는 mongod 또는 mongos 시작 중에 발생하며 시스템 호스트 이름의 부적절한 구성 또는 키탭 파일이 누락되었거나 잘못 구성되었음을 반영합니다.

다음도 참조하세요.

돌아가기

Windows 에서 구성