AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

자체 관리형 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의 서비스 주체 이름(SPN)의 프라이머리 구성 mongodb 요소가 인지 확인합니다. 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 인스턴스를 실행하는 각 호스트에 A 및 PTR 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 시작 중에 발생하며 시스템 호스트 이름의 부적절한 구성 또는 키탭 파일이 누락되었거나 잘못 구성되었음을 반영합니다.