LDAP-synchronisatie in Ranger en Apache Ambari in Azure HDInsight

HDInsight Enterprise Security Package-clusters (ESP) maken gebruik van Ranger voor autorisatie. Apache Ambari en Ranger synchroniseren gebruikers en groepen onafhankelijk en werken iets anders. Dit artikel is bedoeld om de LDAP-synchronisatie in Ranger en Ambari aan te pakken.

Algemene richtlijnen

  • Implementeer altijd clusters met een of meer groepen.
  • Als u meer groepen in het cluster wilt gebruiken, controleert u of het zinvol is om de groepslidmaatschappen in Microsoft Entra-id bij te werken.
  • Als u de clustergroepen wilt wijzigen, kunt u de synchronisatiefilters wijzigen met behulp van Ambari.
  • Alle wijzigingen in het groepslidmaatschap in Microsoft Entra-id worden in de volgende synchronisaties doorgevoerd in het cluster. De wijzigingen moeten eerst worden gesynchroniseerd met Microsoft Entra Domain Services en vervolgens naar de clusters.
  • HDInsight-clusters gebruiken Samba/Winbind om de groepslidmaatschappen op de clusterknooppunten te projecteren.
  • Groepsleden worden transitief gesynchroniseerd (alle subgroepen en hun leden) naar zowel Ambari als Ranger.

Gebruikers worden afzonderlijk gesynchroniseerd

  • Ambari en Ranger delen de gebruikersdatabase niet omdat ze twee verschillende doeleinden dienen.
    • Als een gebruiker de Ambari-gebruikersinterface moet gebruiken, moet de gebruiker worden gesynchroniseerd met Ambari.
    • Als de gebruiker niet is gesynchroniseerd met Ambari, weigert de Ambari-gebruikersinterface/API deze, maar andere onderdelen van het systeem werken (deze worden beveiligd door Ranger of Resource Manager en niet door Ambari).
    • Als u gebruikers of groepen in Ranger-beleid wilt opnemen, moeten de principals expliciet worden gesynchroniseerd in Ranger.

Synchronisatie en configuratie van Ambari-gebruikers

Vanaf de hoofdknooppunten, een cron-taak, /opt/startup_scripts/start_ambari_ldap_sync.pywordt elk uur uitgevoerd om de gebruikerssynchronisatie te plannen. De cron-taak roept de Ambari REST API's aan om de synchronisatie uit te voeren. Het script verzendt een lijst met gebruikers en groepen die moeten worden gesynchroniseerd (omdat de gebruikers mogelijk niet tot de opgegeven groepen behoren, worden beide afzonderlijk opgegeven). Ambari synchroniseert de sAMAccountName als de gebruikersnaam en alle groepsleden, transitief.

De logboeken moeten zich in /var/log/ambari-server/ambari-server.log. Zie Ambari-logboekregistratieniveau configureren voor meer informatie.

In Data Lake-clusters wordt de hook voor het maken van gebruikers gebruikt om de basismappen voor de gesynchroniseerde gebruikers te maken en ze worden ingesteld als de eigenaren van de basismappen. Als de gebruiker niet correct is gesynchroniseerd met Ambari, kan de gebruiker fouten ondervinden bij het uitvoeren van taken, omdat de basismap mogelijk niet correct is ingesteld.

Synchronisatie en configuratie van Ranger-gebruikers

Ranger heeft een ingebouwde synchronisatie-engine die elk uur wordt uitgevoerd om gebruikers te synchroniseren. De gebruikersdatabase wordt niet gedeeld met Ambari. HDInsight configureert het zoekfilter voor het synchroniseren van de gebruiker met beheerdersrechten, de watchdog-gebruiker en de leden van de groep die tijdens het maken van het cluster zijn opgegeven. De groepsleden worden transitief gesynchroniseerd:

  1. Schakel incrementele synchronisatie uit.
  2. Schakel de synchronisatietoewijzing van de gebruikersgroep in.
  3. Geef het zoekfilter op om de transitieve groepsleden op te nemen.
  4. Synchroniseer het kenmerk sAMAccountName voor gebruikers en het naamkenmerk voor groepen.

Groeps- of incrementele synchronisatie

Ranger ondersteunt een groepssynchronisatieoptie, maar het werkt als een snijpunt met gebruikersfilter, niet als een samenvoeging tussen groepslidmaatschappen en gebruikersfilters. Een typische use case voor groepssynchronisatiefilter in Ranger is - groepsfilter: (dn=clusteradmingroup), gebruikersfilter: (plaats=seattle).

Incrementele synchronisatie werkt alleen voor de gebruikers die al zijn gesynchroniseerd (de eerste keer). Incrementeel synchroniseert geen nieuwe gebruikers die na de eerste synchronisatie aan de groepen zijn toegevoegd.

Synchronisatiefilter van Ranger bijwerken

Het LDAP-filter vindt u in de Ambari-gebruikersinterface in de sectie Configuratie van Ranger-gebruikerssynchronisatie. Het bestaande filter wordt in het formulier weergegeven (|(userPrincipalName=bob@contoso.com)(userPrincipalName=hdiwatchdog-core01@CONTOSO.ONMICROSOFT.COM)(memberOf:1.2.840.113556.1.4.1941:=CN=hadoopgroup,OU=AADDC Users,DC=contoso,DC=onmicrosoft,DC=com)). Zorg ervoor dat u predicaat toevoegt aan het einde en het filter test met behulp van de net ads zoekopdracht of ldp.exe of iets dergelijks.

Synchronisatielogboeken van Ranger-gebruikers

Ranger-gebruikerssynchronisatie kan worden uitgevoerd vanuit een van de hoofdknooppunten. De logboeken bevinden zich in /var/log/ranger/usersync/usersync.log. Als u de uitgebreidheid van de logboeken wilt vergroten, voert u de volgende stappen uit:

  1. Meld u aan bij Ambari.
  2. Ga naar de sectie Ranger-configuratie.
  3. Ga naar de sectie Advanced usersync-log4j .
  4. Wijzig het log4j.rootLogger niveau DEBUG in. (Nadat u deze hebt gewijzigd, moet het er als log4j.rootLogger = DEBUG,logFile,FilterLogvolgt uitzien).
  5. Sla de configuratie op en start Ranger opnieuw op.

Bekende problemen met synchronisatie van Ranger-gebruikers

  • Als de groepsnaam unicode-tekens heeft, kan het object niet worden gesynchroniseerd met rangersynchronisatie. Als een gebruiker deel uitmaakt van een groep met internationale tekens, synchroniseert Ranger gedeeltelijke groepslidmaatschap
  • Gebruikersnaam (sAMAccountName) en groepsnaam (naam) moeten 20 tekens lang of kleiner zijn. Als de groepsnaam langer is, wordt de gebruiker behandeld alsof deze niet tot de groep behoort bij het berekenen van de machtigingen.

Volgende stappen