Skip to content

Commit

Permalink
feat: ranger commit
Browse files Browse the repository at this point in the history
  • Loading branch information
taoran1250 committed Jan 23, 2025
1 parent 1d4d5f4 commit a253860
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@

package org.apache.linkis.metadata.domain.mdq.po;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown = true)
public class RangerPolicy extends RangerBaseModelObject implements java.io.Serializable {
public static final int POLICY_TYPE_ACCESS = 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,6 @@
public interface RangerDao {
List<String> getRangerPolicyText(
@Param("userName") String userName,
@Param("policyType") String policyType,
@Param("policyType") int policyType,
@Param("filterParams") List<String> filterParams);
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public interface DataSourceService {

JsonNode queryTables(MetadataQueryParam queryParam);

List<Map<String,Object>> queryHiveTables(MetadataQueryParam queryParam);
List<Map<String, Object>> queryHiveTables(MetadataQueryParam queryParam);

List<String> queryRangerTables(MetadataQueryParam queryParam);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ public JsonNode getDbsWithTablesAndLastAccessAt(String userName) {

@DataSource(name = DSEnum.FIRST_DATA_SOURCE)
@Override
public List<Map<String,Object>> queryHiveTables(MetadataQueryParam queryParam) {
public List<Map<String, Object>> queryHiveTables(MetadataQueryParam queryParam) {
return hiveMetaWithPermissionService.getTablesByDbNameAndOptionalUserName(queryParam);
}

Expand Down Expand Up @@ -211,11 +211,11 @@ public JsonNode queryTables(MetadataQueryParam queryParam) {
throw new RuntimeException(e);
}
List<String> rangerTables = dataSourceService.queryRangerTables(queryParam);
Set<String> tableNames = listTables.stream()
.map(table -> (String) table.get("NAME"))
.collect(Collectors.toSet());
Set<String> tableNames =
listTables.stream().map(table -> (String) table.get("NAME")).collect(Collectors.toSet());
// 过滤掉ranger中有,hive中也有的表
rangerTables = rangerTables.stream()
rangerTables =
rangerTables.stream()
.filter(rangerTable -> !tableNames.contains(rangerTable))
.collect(Collectors.toList());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@

package org.apache.linkis.metadata.service.impl;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.linkis.metadata.domain.mdq.po.RangerPolicy;
import org.apache.linkis.metadata.hive.dao.RangerDao;
import org.apache.linkis.metadata.hive.dto.MetadataQueryParam;
Expand All @@ -31,6 +30,7 @@
import java.util.Collections;
import java.util.List;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand All @@ -46,13 +46,17 @@ public class RangerPermissionServiceImpl implements RangerPermissionService {
public List<String> getDbsByUsername(String username) throws Exception {
List<String> rangerDbs = new ArrayList<>();
List<String> policyTextList =
rangerDao.getRangerPolicyText(username + "-hive", "0", new ArrayList<>());
rangerDao.getRangerPolicyText(
username + "-hive", RangerPolicy.POLICY_TYPE_ACCESS, new ArrayList<>());
for (String policyTextStr : policyTextList) {
RangerPolicy rangerPolicy = objectMapper.readValue(policyTextStr, RangerPolicy.class);
if (rangerPolicy == null || rangerPolicy.getResources() == null || !rangerPolicy.getResources().containsKey("database")) {
if (rangerPolicy == null
|| rangerPolicy.getResources() == null
|| !rangerPolicy.getResources().containsKey("database")) {
continue;
}
RangerPolicy.RangerPolicyResource databaseResource = rangerPolicy.getResources().get("database");
RangerPolicy.RangerPolicyResource databaseResource =
rangerPolicy.getResources().get("database");
List<String> values = databaseResource.getValues();
for (String db : values) {
if (!"*".equals(db) && !"default".equals(db)) {
Expand All @@ -67,10 +71,15 @@ public List<String> getDbsByUsername(String username) throws Exception {
public List<String> queryRangerTables(MetadataQueryParam queryParam) throws Exception {
List<String> rangerTables = new ArrayList<>();
List<String> policyTextList =
rangerDao.getRangerPolicyText(queryParam.getUserName() + "-hive", "0", Collections.singletonList(queryParam.getDbName()));
rangerDao.getRangerPolicyText(
queryParam.getUserName() + "-hive",
RangerPolicy.POLICY_TYPE_ACCESS,
Collections.singletonList(queryParam.getDbName()));
for (String policyTextStr : policyTextList) {
RangerPolicy rangerPolicy = objectMapper.readValue(policyTextStr, RangerPolicy.class);
if (rangerPolicy == null || rangerPolicy.getResources() == null ||!rangerPolicy.getResources().containsKey("table")) {
if (rangerPolicy == null
|| rangerPolicy.getResources() == null
|| !rangerPolicy.getResources().containsKey("table")) {
continue;
}
RangerPolicy.RangerPolicyResource tableResource = rangerPolicy.getResources().get("table");
Expand All @@ -88,10 +97,15 @@ public List<String> queryRangerTables(MetadataQueryParam queryParam) throws Exce
public List<String> queryRangerColumns(MetadataQueryParam queryParam) throws Exception {
List<String> rangerColumns = new ArrayList<>();
List<String> policyTextList =
rangerDao.getRangerPolicyText(queryParam.getUserName() + "-hive", "0", Arrays.asList(queryParam.getDbName(), queryParam.getTableName()));
rangerDao.getRangerPolicyText(
queryParam.getUserName() + "-hive",
RangerPolicy.POLICY_TYPE_ROWFILTER,
Arrays.asList(queryParam.getDbName(), queryParam.getTableName()));
for (String policyTextStr : policyTextList) {
RangerPolicy rangerPolicy = objectMapper.readValue(policyTextStr, RangerPolicy.class);
if (rangerPolicy == null || rangerPolicy.getResources() == null ||!rangerPolicy.getResources().containsKey("column")) {
if (rangerPolicy == null
|| rangerPolicy.getResources() == null
|| !rangerPolicy.getResources().containsKey("column")) {
continue;
}
RangerPolicy.RangerPolicyResource columnResource = rangerPolicy.getResources().get("column");
Expand All @@ -104,4 +118,4 @@ public List<String> queryRangerColumns(MetadataQueryParam queryParam) throws Exc
}
return rangerColumns;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,15 @@
SELECT xp.policy_text
FROM x_service xs
JOIN x_policy xp ON xs.id = xp.service
WHERE xs.name = #{userName}
AND xp.policy_type = #{policyType}
<if test="filterParams != null and filterParams.size() > 0">
<foreach collection="filterParams" item="param" separator=" AND ">
AND xp.policy_text LIKE CONCAT('%', #{param}, '%')
</foreach>
</if>
<where>
xs.name = #{userName}
AND xp.policy_type = #{policyType}
<if test="filterParams != null and filterParams.size() > 0">
AND
<foreach collection="filterParams" item="param" separator=" AND ">
xp.policy_text LIKE CONCAT('%', #{param}, '%')
</foreach>
</if>
</where>
</select>
</mapper>

0 comments on commit a253860

Please sign in to comment.