Ranger en HDP integra Kerberos para un control de acceso detallado

Tabla de contenido

1. Problema con el permiso de guardabosques

1. ¿Qué es Ranger?

2. Resumen

En segundo lugar, la configuración y realización de componentes específicos.

2.1, HDFS para control de permisos

2.2, control de permisos HBase

2.3, control de acceso a la colmena

2.4, control de permisos YARN


1. Problema con el permiso de guardabosques

1. ¿Qué es Ranger?

Ranger tiene como objetivo los permisos dentro de los componentes, como la ejecución de lectura y escritura de HDFS, las actualizaciones de lectura y escritura de Hive y Hbase, los derechos de uso de recursos de la cola de hilos, los permisos de envío de tareas, actualmente ranger solo admite hdfs, hive, hbase, kafka, yarn y otros componentes. Para grupos y usuarios para un control detallado de los derechos de acceso a los recursos.


2. Resumen

Se centra principalmente en la integración de Kerberos en el guardabosques para un control de acceso de usuarios detallado y en la descripción de la función de auditoría de auditoría del guardabosques.

  1. Control de permisos HDFS (integración Kerberos)
  2. Control de permisos HBase
  3. Control de permisos de colmena
  4. control de acceso a recursos de envío de tareas de hilo

En segundo lugar, la configuración y realización de componentes específicos.

Kerberos se ha instalado en el clúster, se han creado los usuarios de kangll, ranger_hive y los usuarios de Kerberos.

El cliente Kerberos admite dos tipos, uno es para usar principal + Contraseña, y el otro es para usar principal + keytab. El primero es adecuado para que los usuarios realicen aplicaciones interactivas, como hadoop fs -ls, y el segundo es adecuado para servicios , como rm y nm del hilo.

 

2.1, HDFS para control de permisos

1. Cree un nuevo usuario del sistema operativo useradd kangll (puede escribir un script para crear un usuario para cada nodo en el clúster)

2. Realice la autenticación kerberos para el usuario kangll en el host kdc y copie el archivo keytab generado en la máquina del clúster hadoop, modifique los permisos y realice kinit para obtener el Tiket del servicio.

3. Verifique la configuración de permisos en el directorio / kangna. En este momento, solo los usuarios de hdfs pueden leer y escribir

4. Agregue la configuración de Kerberos en el servicio

 

Descripción: (1) La  configuración  hadoop.secirity.auth_to_local  aquí se generará en core-site.xml después de que se instale Kerberos. Para obtener el significado específico, consulte: https://www.jianshu.com/p / 2ad4be7ecf39

REGLA: [1: $ 1 @ $ 0] ([email protected]) s /.*/ hdfs /    

REGLA: [2: $ 1 @ $ 0] ([email protected]) s /.*/ hdfs /

(2) El principal se puede encontrar en el archivo Kerberos.csv que instalamos Kerberos y descargamos, o vamos directamente a kadmin.local y usamos listprincs para ver

5. Cree la política correspondiente

 En este momento, la carpeta / kangll solo puede ser leída y escrita por el usuario de hdfs, y ningún otro usuario puede operar

El usuario de kangll abre el permiso de lectura en la carpeta HDFS / kangll

6. Verificación de la autorización 

Acceso de lectura y escritura a la carpeta / kangll A continuación vemos que debido a que solo habilito el permiso de lectura, no es posible escribir en archivos.

Abajo abro el  permiso de escritura 

 

Verifica de nuevo, es perfecto

7.Auditoría de Ranger

Nota : El registro de operación del usuario de Kangll en el módulo de función de auditoría de Ranger está permitido para que el usuario de kangll escriba en la carpeta / kangll en HDFS.

2.2, control de permisos HBase

 1. Configuración de políticas

2. Antes de agregar permiso para crear una tabla

 3. Después de agregar crear tabla, leer y escribir permisos

 4. La política solo tiene permiso de lectura

Habilitar permiso para leer datos

El permiso para escribir datos no está habilitado

Después de que se activa el permiso del usuario de kangll para escribir datos

  

Cree el usuario kangll para controlar los permisos de operación del usuario de kangll en tablas HBase. Aquí, al igual que en las tablas de colmena, puede asignar permisos específicos de tabla y columna. A los usuarios se les pueden asignar permisos de operación de tabla específicos, como: crear, leer, escribir y permisos de administrador.

5.Ranger Anit

2.3, control de permisos de Hive

1. Primero confirme si Ambari ha habilitado ranger-hive-plugin

HiveServer2 tampoco puede ingresar (hdp202). Aquí solo necesita realizar la autenticación principal para crear un usuario kangll, autenticación principal kinit kangll

2. Ingrese la interfaz de usuario web de Ranger, haga clic en Agregar nuevo servicio (la URL es la ip de la máquina de administración de Ranger: 6080)

 

Explique que habrá un servicio predeterminado después de que se instale el guardabosques aquí, pero Kerberos no está configurado. Podemos modificar este servicio.

3.Editar servicio 

  • jdbc.url * 中 填: jdbc: hive2: // hdp202: 2181, hdp201: 2181 /; serviceDiscoveryMode = zooKeeper; zooKeeperNamespace = hiveserver2 
  • jdbc.driverClassName:   org.apache.hive.jdbc.HiveDriver

Está bien si la conexión de prueba pasa la prueba. A veces no pasa, pero está bien. Está bien para ejecutar más tarde, jdbc.url es hiveServer2 IP: 10000

4. Utilice usuarios de colmena para crear tablas e insertar datos

Conseguir entradas

[root@hdp202 keytabs]# kinit -kt hive.service.keytab hive/[email protected]
[root@hdp202 keytabs]# kinit -kt hive.service.keytab hive/[email protected]

[hive@hdp202 keytabs]$ hive
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/hdp/3.1.4.0-315/hive/lib/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/hdp/3.1.4.0-315/hadoop/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Connecting to jdbc:hive2://hdp202:2181,hdp201:2181/default;password=hive;principal=hive/[email protected];serviceDiscoveryMode=zooKeeper;user=hive;zooKeeperNamespace=hiveserver2
20/07/07 21:20:47 [main]: INFO jdbc.HiveConnection: Connected to hdp202:10000
Connected to: Apache Hive (version 3.1.0.3.1.4.0-315)
Driver: Hive JDBC (version 3.1.0.3.1.4.0-315)
Transaction isolation: TRANSACTION_REPEATABLE_READ
Beeline version 3.1.0.3.1.4.0-315 by Apache Hive
0: jdbc:hive2://hdp202:2181,hdp201:2181/defau> show databases;
+---------------------+
|    database_name    |
+---------------------+
| default             |
| information_schema  |
| ranger_hive         |
| sys                 |
+---------------------+
4 rows selected (0.154 seconds)
0: jdbc:hive2://hdp202:2181,hdp201:2181/defau> use ranger_hive;
0: jdbc:hive2://hdp202:2181,hdp201:2181/defau> create table employee(name String,age int,address String)  ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;
0: jdbc:hive2://hdp202:2181,hdp201:2181/defau> load data local inpath '/hadoop/data/ranger_hive.txt' into table employee; 
0: jdbc:hive2://hdp202:2181,hdp201:2181/defau> select * from employee;

+----------------+---------------+-------------------+
| employee.name  | employee.age  | employee.address  |
+----------------+---------------+-------------------+
| kangna         | 12            | shanxi            |
| zhangsan       | 34            | Shanghai          |
| lisi           | 23            | beijing           |
| wangwu         | 21            | guangzhou         |
+----------------+---------------+-------------------+
4 rows selected (2.285 seconds)

5. Ver y modificar la estrategia de configuración

 

 

 Después de agregar la autoridad de operación del usuario kangll a la base de datos, ahora regresamos y continuamos usando el usuario kangll para ingresar hiveServer2 y usamos el comando show database para ver la base de datos de la colmena y no se informará ningún error.

Cambiar al usuario de kangll, kinit obtiene el ticket, conectarse a hiveserver2 

[kangll@hdp202 keytabs]$ kinit kangll
Password for [email protected]: 
[kangll@hdp202 keytabs]$ klist
Ticket cache: FILE:/tmp/krb5cc_1017
Default principal: [email protected]

Valid starting       Expires              Service principal
07/07/2020 21:57:04  07/08/2020 21:57:04  krbtgt/[email protected]
[kangll@hdp202 keytabs]$ beeline
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/hdp/3.1.4.0-315/hive/lib/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/hdp/3.1.4.0-315/hadoop/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Connecting to jdbc:hive2://hdp202:2181,hdp201:2181/default;principal=hive/[email protected];serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2
20/07/07 21:57:27 [main]: INFO jdbc.HiveConnection: Connected to hdp202:10000
Connected to: Apache Hive (version 3.1.0.3.1.4.0-315)
Driver: Hive JDBC (version 3.1.0.3.1.4.0-315)
Transaction isolation: TRANSACTION_REPEATABLE_READ
Beeline version 3.1.0.3.1.4.0-315 by Apache Hive
0: jdbc:hive2://hdp202:2181,hdp201:2181/defau> show databases;
+----------------+
| database_name  |
+----------------+
| ranger_hive    |
+----------------+
1 row selected (0.157 seconds)
0: jdbc:hive2://hdp202:2181,hdp201:2181/defau> use ranger_hive;
0: jdbc:hive2://hdp202:2181,hdp201:2181/defau> show tables;
+-----------+
| tab_name  |
+-----------+
| employee  |
+-----------+
1 row selected (0.044 seconds)
0: jdbc:hive2://hdp202:2181,hdp201:2181/defau> select * from employee;
+----------------+---------------+-------------------+
| employee.name  | employee.age  | employee.address  |
+----------------+---------------+-------------------+
| kangna         | 12            | shanxi            |
| zhangsan       | 34            | Shanghai          |
| lisi           | 23            | beijing           |
| wangwu         | 21            | guangzhou         |
+----------------+---------------+-------------------+
4 rows selected (0.271 seconds)
0: jdbc:hive2://hdp202:2181,hdp201:2181/defau> 

Sin permiso para crear una tabla

Habilitar permiso para crear tablas

6.Módulo de función de auditoría de Ranger Audit 

Nota: Para la política creada por el usuario kangll, las operaciones del usuario kangll en los componentes del clúster también se registran antes de que se cree la política, pero los permisos no están permitidos. El usuario de Kangll realizó una operación de consulta en Hive y se permite el resultado de la ejecución de este permiso.

Suplemento de colmena

Además del tipo de estrategia de acceso, Hive también tiene enmascaramiento y filtro de nivel de fila. Aquí no se ofrece ninguna demostración específica.

Tipo de política 为 Enmascaramiento 

Tipo de política 为 Filtro de nivel de fila 

2.4, control de permisos YARN

1. Mapreduce viene con worldcount para enviar pruebas de tareas

(1) Cree el archivo wordcount.txt y cárguelo en HDFS

[root@hdp201 tmp]# vim wordcount.txt 
[root@hdp201 tmp]# cat wordcount.txt 
world is a new world
I will do my world do this job
bye bye
[root@hdp201 tmp]# hdfs dfs -put wordcount.txt /data/input

(2) ubicación del jar del recuento de palabras en hdp

[kangll@hdp201 mapreduce]$ pwd
/usr/hdp/3.1.4.0-315/hadoop/hadoop/share/hadoop/mapreduce

 (3) Ejecute jar, no configure ninguna estrategia del usuario kangll para ejecutar directamente

[kangll@hdp201 mapreduce]$ hadoop jar hadoop-mapreduce-examples-3.1.1.3.1.4.0-315.jar wordcount /data/input/wordcount.txt /data/output
20/07/06 18:02:36 INFO client.RMProxy: Connecting to ResourceManager at hdp201/10.168.138.188:8050
20/07/06 18:02:36 INFO client.AHSProxy: Connecting to Application History server at hdp202/10.174.96.212:10200
20/07/06 18:02:37 INFO hdfs.DFSClient: Created token for kangll: HDFS_DELEGATION_TOKEN [email protected], renewer=yarn, realUser=, issueDate=1594029757336, maxDate=1594634557336, sequenceNumber=5, masterKeyId=6 on 10.168.138.188:8020
20/07/06 18:02:37 INFO security.TokenCache: Got dt for hdfs://hdp201:8020; Kind: HDFS_DELEGATION_TOKEN, Service: 10.168.138.188:8020, Ident: (token for kangll: HDFS_DELEGATION_TOKEN [email protected], renewer=yarn, realUser=, issueDate=1594029757336, maxDate=1594634557336, sequenceNumber=5, masterKeyId=6)
20/07/06 18:02:37 INFO mapreduce.JobResourceUploader: Disabling Erasure Coding for path: /user/kangll/.staging/job_1594028454535_0001
20/07/06 18:02:37 INFO input.FileInputFormat: Total input files to process : 1
20/07/06 18:02:38 INFO mapreduce.JobSubmitter: number of splits:1
20/07/06 18:02:38 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1594028454535_0001
20/07/06 18:02:38 INFO mapreduce.JobSubmitter: Executing with tokens: [Kind: HDFS_DELEGATION_TOKEN, Service: 10.168.138.188:8020, Ident: (token for kangll: HDFS_DELEGATION_TOKEN [email protected], renewer=yarn, realUser=, issueDate=1594029757336, maxDate=1594634557336, sequenceNumber=5, masterKeyId=6)]
20/07/06 18:02:38 INFO conf.Configuration: found resource resource-types.xml at file:/etc/hadoop/3.1.4.0-315/0/resource-types.xml
20/07/06 18:02:38 INFO impl.TimelineClientImpl: Timeline service address: hdp202:8188
20/07/06 18:02:39 INFO mapreduce.JobSubmitter: Cleaning up the staging area /user/kangll/.staging/job_1594028454535_0001
java.io.IOException: org.apache.hadoop.yarn.exceptions.YarnException: org.apache.hadoop.security.AccessControlException: User kangll does not have permission to submit application_1594028454535_0001 to queue default
	at org.apache.hadoop.yarn.ipc.RPCUtil.getRemoteException(RPCUtil.java:38)
	at org.apache.hadoop.yarn.server.resourcemanager.RMAppManager.createAndPopulateNewRMApp(RMAppManager.java:427)
	at org.apache.hadoop.yarn.server.resourcemanager.RMAppManager.submitApplication(RMAppManager.java:320)
	at org.apache.hadoop.yarn.server.resourcemanager.ClientRMService.submitApplication(ClientRMService.java:645)
	at org.apache.hadoop.yarn.api.impl.pb.service.ApplicationClientProtocolPBServiceImpl.submitApplication(ApplicationClientProtocolPBServiceImpl.java:277)
	at org.apache.hadoop.yarn.proto.ApplicationClientProtocol$ApplicationClientProtocolService$2.callBlockingMethod(ApplicationClientProtocol.java:563)
	at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:524)
	at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1025)
	at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:876)
	at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:822)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:422)
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1730)
	at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2682)
Caused by: org.apache.hadoop.security.AccessControlException: User kangll does not have permission to submit application_1594028454535_0001 to queue default

Podemos ver en el registro de ejecución de la tarea que el usuario kangll no tiene permiso para enviar la tarea, vamos a activarlo en la política de configuración a continuación.

2. Configuración de políticas

3. Vuelva a ejecutar el trabajo y verifique los resultados.

 

Supongo que te gusta

Origin blog.csdn.net/qq_35995514/article/details/106575381
Recomendado
Clasificación