Apache Ranger: Eine magische Waffe für das Betriebs- und Wartungsmanagement

Die chinesische Definition von Ranger lautet "Gartenverwalter". Wie der Name schon sagt, hat Apache Ranger die Verantwortung des Administrators des großen Gartens von Hadoop übernommen. Ranger bietet ein zentrales Sicherheitsmanagement-Framework. Benutzer können verschiedene Richtlinien konfigurieren, indem sie die Ranger-Konsole bedienen, um eine differenzierte Datenzugriffskontrolle für ökologische Hadoop-Komponenten wie HDFS, Hive, HBase, Yarn usw. zu erreichen.

Laut der offiziellen Website von Apache Ranger implementiert Ranger hauptsächlich die folgenden Funktionen:

(1) Verwalten Sie alle Sicherheitsaufgaben über eine einheitliche zentralisierte Verwaltungsschnittstelle oder REST-Schnittstelle, um ein zentrales Sicherheitsmanagement zu erreichen.
(2) Über eine einheitliche zentralisierte Verwaltungsschnittstelle können Sie fein abgestimmte Vorgänge / Verhaltensweisen von Hadoop-Komponenten / -Tools ausführen Ebenenkontrolle;
(3) Bereitstellung einer einheitlichen und standardisierten Autorisierungsmethode;
(4) Unterstützung der rollenbasierten Zugriffskontrolle, der attributbasierten Zugriffskontrolle und anderer Zugriffskontrollmethoden;
(5) Unterstützung des Benutzerzugriffs und (und der Sicherheit) (Verwandte) zentralisierte Prüfung von Managementvorgängen.

Derzeit ist die neueste Version von Ranger 2.1.0 und die weit verbreitete Version 1.2.0.

(1) Rangers Architektur

Ranger besteht hauptsächlich aus den folgenden drei Komponenten:
(1) Ranger Admin: Ranger Admin ist das Kernmodul von Ranger. Es verfügt über eine integrierte Webverwaltungsseite, und Benutzer können Sicherheitsrichtlinien über diese Webverwaltungsschnittstelle oder REST-Schnittstelle formulieren.
(2) Agent Plugin: Das Agent Plugin ist ein Plug-In, das in die ökologischen Komponenten von Hadoop eingebettet ist. Es ruft regelmäßig Richtlinien von Ranger Admin ab und führt sie aus und zeichnet Betriebsaufzeichnungen zur Überwachung auf.
(3) Benutzersynchronisierung: Die Benutzersynchronisierung synchronisiert die Berechtigungsdaten der Benutzer / Gruppen des Betriebssystems (Benutzer / Gruppen) mit der Ranger-Datenbank.

Die Beziehung zwischen ihnen ist in der folgenden Abbildung dargestellt:
Apache Ranger: Eine magische Waffe für das Betriebs- und Wartungsmanagement

(2) Ranger-Workflow

Ranger Admin ist die Hauptschnittstelle zwischen Apache Ranger und Benutzern. Wenn sich ein Benutzer bei Ranger Admin anmeldet, können verschiedene Sicherheitsrichtlinien für verschiedene Hadoop-Komponenten formuliert werden. Nachdem die Richtlinien formuliert und gespeichert wurden, ruft das Agent-Plugin regelmäßig (standardmäßig 30 Sekunden) alle von der Komponente konfigurierten Richtlinien von Ranger Admin ab und speichert sie zwischen Zum lokalen. Auf diese Weise stellt das Agent-Plugin, wenn ein Benutzer den Datendienst der Hadoop-Komponente anfordert, den Authentifizierungsdienst bereit und gibt das Authentifizierungsergebnis an die entsprechende Komponente zurück, wodurch die Berechtigungssteuerungsfunktion des Datendienstes realisiert wird. Wenn der Benutzer die Konfigurationsrichtlinie in Ranger Admin ändert, ruft das Agent-Plugin die neue Richtlinie ab und aktualisiert sie. Wenn der Benutzer die Konfigurationsrichtlinie in Ranger Admin löscht, kann der Authentifizierungsdienst des Agent-Plugins nicht weiter verwendet werden.

Nehmen Sie Hive als Beispiel. Hive bietet Entwicklern zwei Schnittstellen zum Implementieren ihrer eigenen Autorisierungsrichtlinien, nämlich org.apache.hadoop.hive.ql.security.authorization.plugin.HiveAuthorizerFactory und org.apache.hadoop.hive.ql.security.authorization.plugin .HiveAuthorizer. Unter diesen wird HiveAuthorizerFactory verwendet, um verwandte Instanzen von HiveAuthorizer zu generieren. Wenn HiveAuthorizer initialisiert wird, wird ein PolicyRefresher-Thread gestartet, um regelmäßig alle Hive-bezogenen Richtlinien von Ranger Admin abzurufen, die lokale temporäre JSON-Datei zu schreiben und den Cache zu aktualisieren und direkt gemäß der zwischengespeicherten Richtlinie zu autorisieren, wenn eine Autorisierung erforderlich ist. Der spezifische Prozess ist in der folgenden Abbildung dargestellt:

Apache Ranger: Eine magische Waffe für das Betriebs- und Wartungsmanagement

(3) Ranger-Betriebs- und Wartungskampf

Personen, Rollen und Berechtigungen waren schon immer die Schlüsselbereiche des Systemdesigns sowie des Betriebs und der Wartung. Wenn kein vollständiger Satz von Personal-, Rollen- und Berechtigungsbeziehungen hergestellt wird, kann ein "illegaler Benutzer" leicht auf Systemressourcen und Daten zugreifen oder diese sogar manipulieren. Im Vergleich zu Unix / Linux-Systemen, die lediglich "Benutzer / Benutzergruppen" zum Festlegen von Berechtigungen verwenden, bietet Apache Ranger eine benutzerfreundlichere und benutzerfreundlichere Webseite, auf der ein vollständiger Satz von Personal-, Rollen- und Berechtigungsbeziehungen eingerichtet werden kann. Autorisierte Benutzer können legal auf autorisierte Ressourcen und Daten zugreifen, und diese nicht autorisierten "illegalen Benutzer" werden vollständig "herausgestellt".

Darüber hinaus unterstützt Ranger auch die Erstellung temporärer Richtlinien, um eine temporäre Autorisierung anderer Benutzer zu erreichen. Nachdem der vorübergehend autorisierte Benutzer die entsprechenden Vorgänge abgeschlossen hat, werden diese temporären Richtlinien gelöscht, damit die temporäre Autorisierung des Benutzers bequem und schnell realisiert werden kann.

Nehmen Sie als Beispiel HDFS. Wir wählen Services Manager in Ranger Admin aus und klicken dann auf die HDFS-Komponente, um die Seite zur Bearbeitung der HDFS-Richtlinien aufzurufen. Wie nachfolgend dargestellt:
Apache Ranger: Eine magische Waffe für das Betriebs- und Wartungsmanagement

Klicken Sie auf die Schaltfläche Neue Richtlinie hinzufügen, und Sie können mit der Entwicklung einer Sicherheitsrichtlinie beginnen. In der tatsächlichen Produktionsumgebung ist in der folgenden Abbildung eine bestimmte Sicherheitsstrategie dargestellt, die wir formuliert haben:

Apache Ranger: Eine magische Waffe für das Betriebs- und Wartungsmanagement

Wie Sie der obigen Abbildung entnehmen können, besteht diese Strategie darin, Benutzern wie admin und test0822-2 des Anwendungssystems den Zugriff auf / user, / user / rangerpath /, / user / rangerpath / data, / user / rangerpath / data / allday von HDFS-Komponenten zu ermöglichen Die Strategie, auf den Pfad zu warten und Befehle unter dem Pfad auszuführen. Es sollte beachtet werden, dass der Benutzer auf das Verzeichnis / user zugreifen kann, da wir den rekursiven Schalter bei der Erstellung der Richtlinie nicht aktiviert haben. Es gibt jedoch keine Garantie dafür, dass er über die Berechtigung zum Zugriff auf die nächste Ebene des Verzeichnisses verfügt. Daher haben wir die spezifischen Verzeichnisse angegeben, auf die diese Benutzer nacheinander zugreifen können.
Auf der Registerkarte "Überwachung" werden die Überwachungs- und Statusinformationen wie Systemanmeldedatensätze, Richtlinienauthentifizierungsdatensätze und der Status des Agenten-Plugins deutlich angezeigt (siehe folgende Abbildung):

Apache Ranger: Eine magische Waffe für das Betriebs- und Wartungsmanagement

Rangers Unterstützung für Hive ist ebenfalls sehr vollständig. Es unterstützt nicht nur die Zugriffssteuerung auf Tabellenebene, sondern kann auch auf die Zugriffssteuerung auf Feldebene verfeinert werden. Gleichzeitig unterstützt Ranger auch die Verschlüsselung auf Feldebene und die Filterung auf Zeilenebene. Diese Methoden eignen sich sehr gut, um die Zugriffsrechte temporärer Benutzer während der temporären Autorisierung einzuschränken.

Die Methode zur Formulierung von Hive-Strategien entspricht im Wesentlichen der von HDFS. Die von uns entwickelte Zugriffsstrategie ist in der folgenden Abbildung dargestellt:

Apache Ranger: Eine magische Waffe für das Betriebs- und Wartungsmanagement

Auf der Registerkarte Maskierung können Sie Verschlüsselungsstrategien auf Feldebene formulieren. Wie nachfolgend dargestellt:

Apache Ranger: Eine magische Waffe für das Betriebs- und Wartungsmanagement

In der obigen Abbildung besteht die von uns formulierte Strategie darin, zu verhindern, dass feuchte Benutzer, die zur Gruppe gehören, die realen Daten des Felds lname in der Kundentabelle der foodmart-Datenbank sehen. Die Daten dieses Feldes werden angezeigt, um Benutzer in Form eines Hashwerts zu dämpfen. Wenn feucht auf diese Tabelle zugreift, werden die Ergebnisse seiner Abfrage in der folgenden Abbildung angezeigt:

Apache Ranger: Eine magische Waffe für das Betriebs- und Wartungsmanagement

Auf der Registerkarte Filter auf Zeilenebene können wir Filterstrategien auf Zeilenebene formulieren. Wir haben eine einfache Strategie entwickelt: Lassen Sie feuchte Benutzer nicht sehen, dass die Kundentabelle fname eine Aufzeichnung von Sheri ist, wie in der folgenden Abbildung gezeigt:
Apache Ranger: Eine magische Waffe für das Betriebs- und Wartungsmanagement

Zu diesem Zeitpunkt kann der feuchte Benutzer den Datensatz der Kundentabelle nicht sehen. Fname = 'Sheri':

Apache Ranger: Eine magische Waffe für das Betriebs- und Wartungsmanagement
Es ist zu beachten, dass Ranger die Benutzer des Betriebssystems über die Usersync-Komponente mit der Hive-Komponente synchronisiert. Daher müssen Sie sich beim Konfigurieren der Richtlinie der Hive-Komponente beim Ranger-Administrator mit dem Betriebssystemkonto anmelden, das dem Hive-Administrator entspricht, um sie erfolgreich zu konfigurieren. Andernfalls werden Sie aufgefordert:
Apache Ranger: Eine magische Waffe für das Betriebs- und Wartungsmanagement

(4) Batch-Betrieb der Ranger-Strategie

Mit der Beschleunigung und Vertiefung des Informatisierungsprozesses wird der Anwendungsbereich des Informationssystems schrittweise erweitert, die Anzahl der Benutzer des Informationssystems nimmt ebenfalls zu und die Nachfrage nach Benutzerberechtigungen steigt. Darüber hinaus ist das Big-Data-Denken allmählich populär geworden, und die Nachfrage nach vorübergehendem Zugriff auf Daten hat ebenfalls zugenommen. Wenn Sie herkömmliche manuelle Methoden verwenden, um Sicherheitsrichtlinien einzeln hinzuzufügen, führt dies zu einer enormen Verschwendung von Personal und es können Fehler auftreten. Als Reaktion auf dieses Szenario verwenden wir das Java-Programm, um die Ranger-Sicherheitsrichtlinie in Stapeln hinzuzufügen, zu löschen, zu ändern und zu überprüfen, wodurch die Betriebs- und Wartungseffizienz erheblich verbessert wird.

Wir implementieren zuerst eine Basisklasse für den Zugriff auf Ranger Api. Der Code lautet wie folgt:

  public ApiResult execRangerApi(String url, String method, String requestBody) {
    HadoopConfig.Ranger ranger = this.hadoop.getRanger();
    String baseUrl = ranger.getApiBaseUrl();
    String user = ranger.getUser();
    String password = ranger.getPassword();
    String fullUrl = baseUrl + url;
    String auth = user + ":" + password;
    String authInfo = DatatypeConverter.printBase64Binary(auth.getBytes());
    HttpRequest request = null;
    if (method.equalsIgnoreCase("GET")) {
      request = HttpRequest.get(fullUrl);
    } else if (method.equalsIgnoreCase("POST")) {
      request = HttpRequest.post(fullUrl);
    } else if (method.equalsIgnoreCase("PUT")) {
      request = HttpRequest.put(fullUrl);
    } else if (method.equalsIgnoreCase("DELETE")) {
      request = HttpRequest.delete(fullUrl);
    } 
    ((HttpRequest)((HttpRequest)((HttpRequest)request.header("Authorization", "Basic " + authInfo))
      .header("Accept", "application/json"))
      .header("Content-Type", "application/json"))
      .header("X-XSRF-HEADER", "valid");
    if (requestBody != null && !requestBody.isEmpty())
      request.body(requestBody); 
    HttpResponse response = request.execute();
    ApiResult result = new ApiResult(this);
    result.setHttpCode(response.getStatus());
    result.setBodyRaw(response.body());
    return result;
  }

Basierend auf dieser Basisklasse können wir die Implementierungsklasse zum Hinzufügen, Löschen, Ändern und Abfragen von Ranger-Strategien weiter entwerfen. Der Basiscode lautet wie folgt:

  public void savePolicy(String policyName, List<String> paths, boolean isPathAdd, String appUser, List<PolicyAccess> accesses, boolean isReclusive) {
    ApiResult result = null;
    Policy policy = getPolicyByName(policyName);
    ......
    Gson gson = new Gson();
    if (isNewPolicy) {
      logger.info("create policy, content:" + gson.toJson(policy));
      result = execRangerApi("/public/v2/api/policy/", "POST", gson.toJson(policy));
      if (result.getHttpCode() != 200)
        throw new DMCException(String.format("create policy failed! ranger return : %d, %s", new Object[] { Integer.valueOf(result.getHttpCode()), result.getBodyRaw() })); 
      logger.info("create policy ok! " + policyName);
    } else {
      logger.info("edit policy, content:" + gson.toJson(policy));
      result = execRangerApi("/public/v2/api/policy/" + policy.getId(), "PUT", gson.toJson(policy));
      if (result.getHttpCode() != 200)
        throw new DMCException(String.format("edit policy failed! ranger return : %d, %s", new Object[] { Integer.valueOf(result.getHttpCode()), result.getBodyRaw() })); 
      logger.info("edit policy ok! " + policyName);
    } 
  }

Schließlich können wir die Sicherheitsrichtlinie, die wir erstellt haben, über den Befehl curl an Ranger Admin übergeben, um die Stapelverarbeitung von Sicherheitsrichtlinien zu erreichen. Der Referenzbefehl lautet wie folgt:

curl -H "Content-Type:application/json" -H "X-Token:token-name" -X POST "http://web-url&appUser=user-name" -d"[\"ranger-policy"]"

Zusammenfassend bietet Apache Ranger eine Fülle von Hadoop-Komponenten, mit denen wir verschiedene Sicherheitsstrategien besser implementieren können. Gleichzeitig ist die Anpassung der Ranger-Strategie bequem, schnell, leicht verständlich und kann "nach Gebrauch gebrannt" werden, was für temporäre Autorisierungsszenarien sehr gut geeignet ist. Wir haben Grund zu der Annahme, dass Ranger im Zuge des weiteren Ausbaus des Hadoop-Ökosystems von immer mehr Betriebs- und Wartungspersonal bevorzugt und genutzt wird.

Referenzmaterialien:
1. http://ranger.apache.org/
2. ZTE ZTE, Ranger-Schulungsmaterialien

Der Originaltext stammt von: http://dwz-9.cn/3p42b

Ich denke du magst

Origin blog.51cto.com/mageedu/2590392
Empfohlen
Rangfolge