Apache Ranger: une arme magique pour la gestion des opérations et de la maintenance

La définition chinoise de Ranger est «administrateur de jardin». Comme son nom l'indique, Apache Ranger a pris les responsabilités d'administrateur du grand jardin d'Hadoop. Ranger fournit un cadre de gestion de la sécurité centralisé. Les utilisateurs peuvent configurer diverses politiques en utilisant la console Ranger pour obtenir un contrôle d'accès aux données précis aux composants écologiques Hadoop tels que HDFS, Hive, HBase, Yarn, etc.

Selon le site officiel d'Apache Ranger, Ranger implémente principalement les fonctions suivantes:

(1) Gérer toutes les tâches de sécurité via une interface de gestion centralisée unifiée ou une interface REST, permettant ainsi une gestion centralisée de la sécurité;
(2) Grâce à une interface de gestion centralisée unifiée, opérations / comportements à granularité fine des composants / outils Hadoop Contrôle de niveau;
(3) Fournir une méthode d'autorisation unifiée et normalisée;
(4) Prise en charge du contrôle d'accès basé sur les rôles, du contrôle d'accès basé sur les attributs et d'autres méthodes de contrôle d'accès;
(5) Prise en charge de l'accès et (et de la sécurité) des utilisateurs Audit centralisé (connexe) des opérations de gestion.

Actuellement, la dernière version de Ranger est 2.1.0, et la version largement utilisée est 1.2.0.

(1) Architecture du Ranger

Ranger est principalement composé des trois composants suivants:
(1) Ranger Admin: Ranger Admin est le module principal de Ranger. Il a une page de gestion Web intégrée et les utilisateurs peuvent formuler des politiques de sécurité via cette interface de gestion Web ou REST.
(2) Agent Plugin: Agent Plugin est un plug-in intégré dans les composants écologiques Hadoop. Il extrait et exécute régulièrement les politiques de Ranger Admin et enregistre les enregistrements d'opération pour l'audit.
(3) User Sync: User Sync synchronise les données d'autorisations des utilisateurs / groupes du système d'exploitation (utilisateurs / groupes) avec la base de données Ranger.

La relation entre eux est illustrée dans la figure suivante:
Apache Ranger: une arme magique pour la gestion des opérations et de la maintenance

(2) Flux de travail du Ranger

Ranger Admin est l'interface principale entre Apache Ranger et les utilisateurs. Lorsqu'un utilisateur se connecte à Ranger Admin, différentes politiques de sécurité peuvent être formulées pour différents composants Hadoop; une fois les politiques formulées et enregistrées, le plug-in d'agent périodiquement (30 secondes par défaut) extrait toutes les politiques configurées par le composant de Ranger Admin et les met en cache. Au local. De cette manière, lorsqu'un utilisateur demande le service de données du composant Hadoop, l'agent Plugin fournit le service d'authentification et renvoie le résultat de l'authentification au composant correspondant, réalisant ainsi la fonction de contrôle d'autorité du service de données. Lorsque l'utilisateur modifie la politique de configuration dans Ranger Admin, le plug-in d'agent extrait la nouvelle politique et la met à jour; si l'utilisateur supprime la politique de configuration dans Ranger Admin, le service d'authentification du plug-in d'agent ne peut pas continuer à être utilisé.

Prenons Hive comme exemple. Hive fournit deux interfaces permettant aux développeurs de mettre en œuvre leurs propres politiques d'autorisation, à savoir org.apache.hadoop.hive.ql.security.authorization.plugin.HiveAuthorizerFactory et org.apache.hadoop.hive.ql.security.authorization.plugin .HiveAuthorizer. Parmi eux, HiveAuthorizerFactory est utilisé pour générer des instances associées de HiveAuthorizer. Lorsque HiveAuthorizer est initialisé, il démarre un thread PolicyRefresher pour extraire périodiquement toutes les stratégies liées à Hive de Ranger Admin, écrire le fichier json temporaire local et mettre à jour le cache, et autoriser directement selon la stratégie de mise en cache lorsque l'autorisation est requise. Le processus spécifique est illustré dans la figure ci-dessous:

Apache Ranger: une arme magique pour la gestion des opérations et de la maintenance

(3) Opération et combat de maintenance des Rangers

Les personnes, les rôles et les autorisations ont toujours été les domaines clés de la conception, de l'exploitation et de la maintenance du système. Si un ensemble complet de relations de personnel, de rôles et d'autorité n'est pas établi, un «utilisateur illégal» peut facilement accéder ou même altérer les ressources et les données du système. Par rapport aux systèmes Unix / Linux, qui utilisent simplement des «utilisateurs / groupes d'utilisateurs» pour définir les autorisations, Apache Ranger fournit une page Web plus conviviale et facile à utiliser pour établir un ensemble complet de relations de personnel, de rôles et d'autorisations. Les utilisateurs autorisés peuvent accéder légalement aux ressources et aux données autorisées, et ces «utilisateurs illégaux» non autorisés sont complètement «éliminés».

En outre, Ranger prend également en charge la création de stratégies temporaires pour obtenir l'autorisation temporaire d'autres utilisateurs. Une fois que l'utilisateur autorisé temporairement a terminé les opérations pertinentes, ces politiques temporaires sont supprimées, de sorte que l'autorisation temporaire de l'utilisateur peut être réalisée de manière pratique et rapide.

Prenons HDFS comme exemple. Nous sélectionnons Gestionnaire de services dans Ranger Admin, puis cliquons sur le composant HDFS pour accéder à la page d'édition de la politique HDFS. Comme indiqué ci-dessous:
Apache Ranger: une arme magique pour la gestion des opérations et de la maintenance

Cliquez sur le bouton Ajouter une nouvelle politique et vous pouvez commencer à développer une politique de sécurité. Dans l'environnement de production réel, une stratégie de sécurité spécifique que nous avons formulée est illustrée dans la figure suivante:

Apache Ranger: une arme magique pour la gestion des opérations et de la maintenance

Comme vous pouvez le voir sur la figure ci-dessus, cette stratégie consiste à permettre aux utilisateurs tels que admin et test0822-2 du système d'application d'accéder à / user, / user / rangerpath /, / user / rangerpath / data, / user / rangerpath / data / allday des composants HDFS La stratégie d'attendre le chemin et d'exécuter des commandes sous le chemin. Il convient de noter que puisque nous n'avons pas activé le commutateur récursif lorsque nous avons défini la stratégie, l'utilisateur peut accéder au répertoire / user, mais il n'y a aucune garantie qu'il ait l'autorisation d'accéder au niveau suivant du répertoire. Par conséquent, nous avons spécifié les répertoires spécifiques auxquels ces utilisateurs peuvent accéder à tour de rôle.
Dans l'onglet Audit, nous pouvons voir clairement les informations d'audit et d'état, telles que les enregistrements de connexion système, les enregistrements d'authentification de stratégie, l'état du plug-in d'agent, etc., comme illustré dans la figure suivante:

Apache Ranger: une arme magique pour la gestion des opérations et de la maintenance

Le support de Ranger pour Hive est également très complet. Il prend non seulement en charge le contrôle d'accès au niveau de la table, mais peut également être affiné au contrôle d'accès au niveau du champ. En même temps, Ranger prend également en charge le chiffrement au niveau du champ et le filtrage au niveau des lignes. Ces méthodes conviennent parfaitement pour restreindre les droits d'accès des utilisateurs temporaires lors d'une autorisation temporaire.

La méthode de formulation des stratégies Hive est fondamentalement la même que celle de HDFS. La stratégie d'accès que nous avons développée est illustrée dans la figure ci-dessous:

Apache Ranger: une arme magique pour la gestion des opérations et de la maintenance

Dans l'onglet Masquage, vous pouvez formuler des stratégies de chiffrement au niveau du champ. Comme indiqué ci-dessous:

Apache Ranger: une arme magique pour la gestion des opérations et de la maintenance

Dans la figure ci-dessus, la stratégie que nous avons formulée est d'empêcher les utilisateurs humides qui appartiennent au groupe de voir les données réelles du champ lname dans la table client de la base de données foodmart. Les données de ce champ seront affichées pour les utilisateurs humides sous la forme d'une valeur de hachage. Lorsque wet accède à cette table, les résultats de sa requête sont affichés dans la figure suivante:

Apache Ranger: une arme magique pour la gestion des opérations et de la maintenance

Dans l'onglet Filtre au niveau des lignes, nous pouvons formuler des stratégies de filtrage au niveau des lignes. Nous avons développé une stratégie simple: ne pas permettre aux utilisateurs humides de voir que la table client fname est un enregistrement de Sheri, comme le montre la figure suivante:
Apache Ranger: une arme magique pour la gestion des opérations et de la maintenance

À ce stade, l'utilisateur humide ne peut pas voir l'enregistrement de la table client fname = 'Sheri':

Apache Ranger: une arme magique pour la gestion des opérations et de la maintenance
Il convient de noter que Ranger synchronise les utilisateurs du système d'exploitation avec le composant hive via le composant Usersync. Par conséquent, lors de la configuration de la stratégie du composant Hive, vous devez vous connecter à l'administrateur Ranger avec le compte du système d'exploitation correspondant à l'administrateur de la ruche pour le configurer correctement. Sinon, il vous demandera:
Apache Ranger: une arme magique pour la gestion des opérations et de la maintenance

(4) Fonctionnement par lots de la stratégie Ranger

Avec l'accélération et l'approfondissement du processus d'informatisation, le périmètre d'application du système d'information s'élargit progressivement, le nombre d'utilisateurs du système d'information augmente également et la demande de permissions utilisateurs augmente. En outre, la réflexion sur le Big Data est progressivement devenue populaire et la demande d'accès temporaire aux données a également augmenté. Si vous utilisez des méthodes manuelles traditionnelles pour ajouter des politiques de sécurité une par une, cela entraînera un énorme gaspillage de main-d'œuvre et des erreurs sont susceptibles de se produire. En réponse à ce scénario, nous utilisons le programme java pour ajouter, supprimer, modifier et vérifier la politique de sécurité Ranger par lots, ce qui améliore considérablement l'efficacité de l'exploitation et de la maintenance.

Nous implémentons d'abord une classe de base pour accéder à Ranger Api, le code est le suivant:

  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;
  }

Sur la base de cette classe de base, nous pouvons concevoir davantage la classe d'implémentation pour ajouter, supprimer, modifier et interroger des stratégies Ranger. Le code de base est le suivant:

  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);
    } 
  }

Enfin, nous pouvons transmettre la politique de sécurité que nous avons faite à Ranger Admin via la commande curl, afin de réaliser un traitement par lots des politiques de sécurité. La commande de référence est la suivante:

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

En résumé, Apache Ranger fournit une multitude de composants Hadoop pour nous aider à mieux mettre en œuvre diverses stratégies de sécurité. Dans le même temps, la personnalisation de la stratégie Ranger est pratique, rapide, facile à comprendre et peut être "brûlée après utilisation", ce qui est très approprié pour les scénarios d'autorisation temporaire. Nous avons des raisons de croire qu'au fur et à mesure que l'écosystème Hadoop continue de s'étendre, Ranger sera favorisé et utilisé par de plus en plus de personnel d'exploitation et de maintenance.

Matériel de référence:
1. http://ranger.apache.org/
2. ZTE ZTE, matériel de formation Ranger

Le texte original provient de: http://dwz-9.cn/3p42b

Je suppose que tu aimes

Origine blog.51cto.com/mageedu/2590392
conseillé
Classement