searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

使用Ranger API创建服务

2024-07-31 09:49:43
43
0

背景

Ranger是一款基于策略的权限管理框架,支持多种Haoop生态的组件,如Hadoop、Hive、HBase等。它提供了丰富的权限管理功能,包括权限控制、审计日志等。通过Ranger企业可以实现对数据资产的精细化权限管理,确保数据安全。Ranger部署之后,我们可以登陆Ranger页面,创建相关的服务,也可以通过提供api,来创建服务,从而实现自动化创建的能力。

 

使用的API

通过服务名查看服务是否存在

# 需要认证:ranger的用户名和密码
GET  http://127.0.0.1:6080/service/public/v2/api/service/name/${SERVICE_NAME}

 

创建服务

# 需要认证:ranger的用户名和密码
# 需要请求体
POST http://127.0.0.1:6080/service/public/v2/api/service

 

示例

提供一个创建hive服务的脚本。

function usage() {
  echo "USAGE: sh create_hive_service.sh -r RANGER_HOST:RANGER_PORT -u RANGER_USER -p RANGER_PASSWORD -s SERVICE_NAME -j JDBC_URL"
  exit 1
}

function fail() {
  echo "ERROR: $1"
  exit 1
}

function parse_params() {
  while [[ $# -gt 0 ]]
  do
    key="$1"
    case $key in
      -r)
        RANGER_URL="$2"
        shift
        ;;
      -u)
        RANGER_USER="$2"
        shift
        ;;
      -p)
        RANGER_PASSWORD="$2"
        shift
        ;;
      -s)
        SERVICE_NAME="$2"
        shift
        ;;
      -j)
        JDBC_URL="$2"
        shift
        ;;
      *)
        usage
        ;;
    esac
    shift
  done
}


function check_hive_service_instance() {
  curl -sS -u ''${RANGER_USER}:${RANGER_PASSWORD}'' "http://${RANGER_URL}/service/public/v2/api/service/name/${SERVICE_NAME}" | grep -c "${SERVICE_NAME}"
}

function create_hive_service_instance() {
  if [ "$(check_hive_service_instance)" -eq 0 ]; then
    local payload="{\"name\":\"${SERVICE_NAME}\",
                    \"type\":\"hive\",
                    \"description\":\"created by mozi\",
                    \"isEnabled\":true,
                    \"configs\":{\"username\":\"${RANGER_USER}\",
                               \"password\":\"************\",
                               \"jdbc.driverClassName\":\"org.apache.hive.jdbc.HiveDriver\",
                               \"jdbc.url\":\"${JDBC_URL}\",
                               \"tag.download.auth.users\":\"hive\",
                               \"policy.download.auth.users\":\"hive\",
                               \"policy.grantrevoke.auth.users\":\"hive\"}}"

    echo "Hive service instance was not found in Ranger Admin, creating it."

    local output
    output=$(curl -sS -u ''${RANGER_USER}:${RANGER_PASSWORD}'' -H "Content-Type: application/json" -X POST "http://${RANGER_URL}/service/public/v2/api/service" -d "${payload}")
    local created
    created=$(grep -c "created" <<< "${output}")

  if [ "${created}" -eq 0 ] || [ "$(check_hive_service_instance)" -eq 0 ]; then
    fail "Creation of Hive service instance in Ranger Admin at ${RANGER_URL} failed. ${output}"
  fi
  else
    echo "Hive service instance already exists in Ranger Admin, nothing to do."
  fi
}

main() {
  if [[ $# -lt 1 ]]; then
    usage
  fi
  parse_params "$@"
  create_hive_service_instance
}

main "$@"

 

调用命令

# 执行命令时将下面的值{{}}中的值,替换成实际的值
sh create_service_hive.sh -r "{{ RANGER_HOST }}":"{{ RANGER_PORT }}" -u "{{ RANGER_USER }}" -p '{{ RANGER_PASSWORD }}' -s "{{ SERVICE_NAME }}" -j "{{ JDBC_URL }}"

 

0条评论
0 / 1000
小桥流水
4文章数
0粉丝数
小桥流水
4 文章 | 0 粉丝
原创

使用Ranger API创建服务

2024-07-31 09:49:43
43
0

背景

Ranger是一款基于策略的权限管理框架,支持多种Haoop生态的组件,如Hadoop、Hive、HBase等。它提供了丰富的权限管理功能,包括权限控制、审计日志等。通过Ranger企业可以实现对数据资产的精细化权限管理,确保数据安全。Ranger部署之后,我们可以登陆Ranger页面,创建相关的服务,也可以通过提供api,来创建服务,从而实现自动化创建的能力。

 

使用的API

通过服务名查看服务是否存在

# 需要认证:ranger的用户名和密码
GET  http://127.0.0.1:6080/service/public/v2/api/service/name/${SERVICE_NAME}

 

创建服务

# 需要认证:ranger的用户名和密码
# 需要请求体
POST http://127.0.0.1:6080/service/public/v2/api/service

 

示例

提供一个创建hive服务的脚本。

function usage() {
  echo "USAGE: sh create_hive_service.sh -r RANGER_HOST:RANGER_PORT -u RANGER_USER -p RANGER_PASSWORD -s SERVICE_NAME -j JDBC_URL"
  exit 1
}

function fail() {
  echo "ERROR: $1"
  exit 1
}

function parse_params() {
  while [[ $# -gt 0 ]]
  do
    key="$1"
    case $key in
      -r)
        RANGER_URL="$2"
        shift
        ;;
      -u)
        RANGER_USER="$2"
        shift
        ;;
      -p)
        RANGER_PASSWORD="$2"
        shift
        ;;
      -s)
        SERVICE_NAME="$2"
        shift
        ;;
      -j)
        JDBC_URL="$2"
        shift
        ;;
      *)
        usage
        ;;
    esac
    shift
  done
}


function check_hive_service_instance() {
  curl -sS -u ''${RANGER_USER}:${RANGER_PASSWORD}'' "http://${RANGER_URL}/service/public/v2/api/service/name/${SERVICE_NAME}" | grep -c "${SERVICE_NAME}"
}

function create_hive_service_instance() {
  if [ "$(check_hive_service_instance)" -eq 0 ]; then
    local payload="{\"name\":\"${SERVICE_NAME}\",
                    \"type\":\"hive\",
                    \"description\":\"created by mozi\",
                    \"isEnabled\":true,
                    \"configs\":{\"username\":\"${RANGER_USER}\",
                               \"password\":\"************\",
                               \"jdbc.driverClassName\":\"org.apache.hive.jdbc.HiveDriver\",
                               \"jdbc.url\":\"${JDBC_URL}\",
                               \"tag.download.auth.users\":\"hive\",
                               \"policy.download.auth.users\":\"hive\",
                               \"policy.grantrevoke.auth.users\":\"hive\"}}"

    echo "Hive service instance was not found in Ranger Admin, creating it."

    local output
    output=$(curl -sS -u ''${RANGER_USER}:${RANGER_PASSWORD}'' -H "Content-Type: application/json" -X POST "http://${RANGER_URL}/service/public/v2/api/service" -d "${payload}")
    local created
    created=$(grep -c "created" <<< "${output}")

  if [ "${created}" -eq 0 ] || [ "$(check_hive_service_instance)" -eq 0 ]; then
    fail "Creation of Hive service instance in Ranger Admin at ${RANGER_URL} failed. ${output}"
  fi
  else
    echo "Hive service instance already exists in Ranger Admin, nothing to do."
  fi
}

main() {
  if [[ $# -lt 1 ]]; then
    usage
  fi
  parse_params "$@"
  create_hive_service_instance
}

main "$@"

 

调用命令

# 执行命令时将下面的值{{}}中的值,替换成实际的值
sh create_service_hive.sh -r "{{ RANGER_HOST }}":"{{ RANGER_PORT }}" -u "{{ RANGER_USER }}" -p '{{ RANGER_PASSWORD }}' -s "{{ SERVICE_NAME }}" -j "{{ JDBC_URL }}"

 

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0