Apache Ranger: un arma mágica para la gestión de operaciones y mantenimiento

La definición china de Ranger es "administrador del jardín". Como su nombre indica, Apache Ranger ha asumido las responsabilidades del administrador del gran jardín de Hadoop. Ranger proporciona un marco de gestión de seguridad centralizado.Los usuarios pueden configurar varias políticas operando la consola Ranger para lograr un control de acceso de datos detallado a los componentes ecológicos de Hadoop como HDFS, Hive, HBase, Yarn, etc.

Según el sitio web oficial de Apache Ranger, Ranger implementa principalmente las siguientes funciones:

(1) Administre todas las tareas de seguridad a través de una interfaz de administración centralizada unificada o una interfaz REST, logrando así una administración de seguridad centralizada;
(2) A través de una interfaz de administración centralizada unificada, operaciones / comportamientos detallados de los componentes / herramientas de Hadoop Control de nivel;
(3) Proporcionar un método de autorización unificado y estandarizado;
(4) Apoyar el control de acceso basado en roles, el control de acceso basado en atributos y otros métodos de control de acceso;
(5) Apoyar el acceso de usuarios y (y seguridad) Auditoría centralizada (relacionada) de las operaciones de gestión.

Actualmente, la última versión de Ranger es 2.1.0 y la versión más utilizada es 1.2.0.

(1) Arquitectura de Ranger

Ranger se compone principalmente de los siguientes tres componentes:
(1) Ranger Admin: Ranger Admin es el módulo principal de Ranger. Tiene una página de administración web incorporada, y los usuarios pueden formular políticas de seguridad a través de esta interfaz de administración web o interfaz REST.
(2) Complemento de agente: El complemento de agente es un complemento integrado en los componentes ecológicos de Hadoop. Extrae y ejecuta regularmente políticas de Ranger Admin y registra los registros de operaciones para su auditoría.
(3) User Sync: User Sync sincroniza los datos de permisos de los usuarios / grupos del sistema operativo (Usuarios / Grupos) a la base de datos de Ranger.

La relación entre ellos se muestra en la siguiente figura:
Apache Ranger: un arma mágica para la gestión de operaciones y mantenimiento

(2) Flujo de trabajo de Ranger

Ranger Admin es la interfaz principal entre Apache Ranger y los usuarios. Cuando un usuario inicia sesión en Ranger Admin, se pueden formular diferentes políticas de seguridad para diferentes componentes de Hadoop; después de que se formulan y guardan las políticas, el complemento de agente periódicamente (30 segundos de forma predeterminada) extrae todas las políticas configuradas por el componente de Ranger Admin y las almacena en caché. Para el local. De esta manera, cuando un usuario solicita el servicio de datos del componente Hadoop, el Complemento del Agente proporciona el servicio de autenticación y retroalimenta el resultado de la autenticación al componente correspondiente, realizando así la función de control de autoridad del servicio de datos. Cuando el usuario modifica la política de configuración en Ranger Admin, el complemento de agente extraerá la nueva política y la actualizará; si el usuario elimina la política de configuración en Ranger Admin, el servicio de autenticación del complemento de agente no podrá seguir utilizándose.

Tome Hive como ejemplo. Hive proporciona dos interfaces para que los desarrolladores implementen sus propias políticas de autorización, a saber, org.apache.hadoop.hive.ql.security.authorization.plugin.HiveAuthorizerFactory y org.apache.hadoop.hive.ql.security.authorization.plugin .HiveAuthorizer. Entre ellos, HiveAuthorizerFactory se utiliza para generar instancias relacionadas de HiveAuthorizer. Cuando se inicializa HiveAuthorizer, iniciará un subproceso PolicyRefresher para extraer periódicamente todas las políticas relacionadas con Hive de Ranger Admin, escribir el archivo json temporal local y actualizar el caché, y autorizar directamente de acuerdo con la política en caché cuando se requiera autorización. El proceso específico se muestra en la siguiente figura:

Apache Ranger: un arma mágica para la gestión de operaciones y mantenimiento

(3) Combate de operación y mantenimiento de guardabosques

Las personas, los roles y los permisos siempre han sido las áreas clave del diseño, operación y mantenimiento del sistema. Si no se establece un conjunto completo de relaciones de personal, roles y autoridad, entonces un "usuario ilegal" puede acceder fácilmente o incluso alterar los recursos y datos del sistema. Comparado con los sistemas Unix / Linux, que simplemente usan "usuarios / grupos de usuarios" para establecer permisos, Apache Ranger proporciona una página web más amigable y fácil de operar para establecer un conjunto completo de relaciones de personal, roles y permisos. Los usuarios autorizados pueden acceder legalmente a los recursos y datos autorizados, y esos "usuarios ilegales" no autorizados son "eliminados" por completo.

Además, Ranger también admite la creación de políticas temporales para lograr la autorización temporal de otros usuarios. Una vez que el usuario autorizado temporalmente completa las operaciones pertinentes, estas políticas temporales se eliminan, de modo que la autorización temporal del usuario se puede realizar de forma cómoda y rápida.

Tome HDFS como ejemplo. Seleccionamos Administrador de servicios en Ranger Admin y luego hacemos clic en el componente HDFS para ingresar a la página de edición de políticas de HDFS. Como se muestra abajo:
Apache Ranger: un arma mágica para la gestión de operaciones y mantenimiento

Haga clic en el botón Agregar nueva política y podrá comenzar a desarrollar una política de seguridad. En el entorno de producción real, una estrategia de seguridad específica que formulamos se muestra en la siguiente figura:

Apache Ranger: un arma mágica para la gestión de operaciones y mantenimiento

Como puede ver en la figura anterior, esta estrategia es permitir que usuarios como admin y test0822-2 del sistema de aplicación accedan a / user, / user / rangerpath /, / user / rangerpath / data, / user / rangerpath / data / allday de componentes HDFS La estrategia de esperar la ruta y ejecutar comandos debajo de la ruta. Cabe señalar que, dado que no activamos el conmutador recursivo cuando hicimos la política, el usuario puede acceder al directorio / user, pero no hay garantía de que tenga permiso para acceder al siguiente nivel del directorio. Por lo tanto, especificamos los directorios específicos a los que estos usuarios pueden acceder a su vez.
En la pestaña Auditoría, podemos ver claramente la información de auditoría y estado, como registros de inicio de sesión del sistema, registros de autenticación de políticas, estado del complemento del agente, etc., como se muestra en la siguiente figura:

Apache Ranger: un arma mágica para la gestión de operaciones y mantenimiento

El soporte de Ranger para Hive también es muy completo. No solo admite el control de acceso a nivel de mesa, sino que también se puede refinar al control de acceso a nivel de campo. Al mismo tiempo, Ranger también admite el cifrado a nivel de campo y el filtrado a nivel de fila. Estos métodos son muy adecuados para restringir los derechos de acceso de los usuarios temporales durante la autorización temporal.

El método para formular estrategias de Hive es básicamente el mismo que el de HDFS. La estrategia de acceso que desarrollamos se muestra en la siguiente figura:

Apache Ranger: un arma mágica para la gestión de operaciones y mantenimiento

En la pestaña Enmascaramiento, puede formular estrategias de cifrado a nivel de campo. Como se muestra abajo:

Apache Ranger: un arma mágica para la gestión de operaciones y mantenimiento

En la figura anterior, la estrategia que hemos formulado es evitar que los usuarios húmedos que pertenecen al grupo vean los datos reales del campo lname en la tabla de clientes de la base de datos de foodmart. Los datos de este campo se mostrarán para amortiguar a los usuarios en forma de valor hash. Cuando damp accede a esta tabla, los resultados de su consulta se muestran en la siguiente figura:

Apache Ranger: un arma mágica para la gestión de operaciones y mantenimiento

En la pestaña Filtro de nivel de fila, podemos formular estrategias de filtrado de nivel de fila. Hemos desarrollado una estrategia simple: No permita que los usuarios húmedos vean que la tabla de clientes fname es un registro de Sheri, como se muestra en la siguiente figura:
Apache Ranger: un arma mágica para la gestión de operaciones y mantenimiento

En este momento, el usuario húmedo no puede ver el registro de la tabla de clientes fname = 'Sheri':

Apache Ranger: un arma mágica para la gestión de operaciones y mantenimiento
Cabe señalar que Ranger sincroniza los usuarios del sistema operativo con el componente de colmena a través del componente Usersync. Por lo tanto, al configurar la política del componente Hive, debe iniciar sesión en el administrador de Ranger con la cuenta del sistema operativo correspondiente al administrador de Hive para configurarlo correctamente. De lo contrario, le indicará:
Apache Ranger: un arma mágica para la gestión de operaciones y mantenimiento

(4) Operación por lotes de la estrategia Ranger

Con la aceleración y profundización del proceso de informatización, el alcance de aplicación del sistema de información se amplía gradualmente, el número de usuarios del sistema de información también aumenta y la demanda de permisos de usuario aumenta. Además, el pensamiento de macrodatos se ha popularizado gradualmente y también ha aumentado la demanda de acceso temporal a los datos. Si utiliza métodos manuales tradicionales para agregar políticas de seguridad una por una, causará una gran pérdida de mano de obra y es probable que se produzcan errores. En respuesta a este escenario, usamos el programa java para agregar, eliminar, modificar y verificar la política de seguridad de Ranger en lotes, lo que mejora enormemente la eficiencia de operación y mantenimiento.

Primero implementamos una clase básica para acceder a Ranger Api, el código es el siguiente:

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

Con base en esta clase básica, podemos diseñar aún más la clase de implementación para agregar, eliminar, modificar y consultar estrategias de Ranger. El código básico es el siguiente:

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

Finalmente, podemos pasar la política de seguridad que hicimos a Ranger Admin a través del comando curl, para lograr el procesamiento por lotes de las políticas de seguridad. El comando de referencia es el siguiente:

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

En resumen, Apache Ranger proporciona una gran cantidad de componentes de Hadoop para ayudarnos a implementar mejor varias estrategias de seguridad. Al mismo tiempo, la personalización de la estrategia Ranger es conveniente, rápida, fácil de entender y se puede "quemar después de su uso", lo que es muy adecuado para escenarios de autorización temporal. Tenemos razones para creer que a medida que el ecosistema de Hadoop continúe expandiéndose, Ranger será favorecido y utilizado por más y más personal de operación y mantenimiento.

Materiales de referencia:
1. http://ranger.apache.org/
2. ZTE ZTE, materiales de capacitación de guardabosques

El texto original proviene de: http://dwz-9.cn/3p42b

Supongo que te gusta

Origin blog.51cto.com/mageedu/2590392
Recomendado
Clasificación