Menu

Ranger Policy

Create a Ranger policy using the REST API v2

  • password (string) Ranger Administrator password.
  • url (string)
    Policy Manager External URL ("POLICY_MGR_URL").
  • username (string) Ranger Administrator username.
  • policy (object)
    User to be created.
  • policy.name (string)
    Name of the policy, required.

Exemple

nikita
.ranger_policy({
  "username": 'ranger_username',
  "password": 'ranger_secret',
  "url": "http://ranger.policy.manager",
  "policy": {
    "name": "hive-ranger-plugin-audit",
    "service": "hadoop-ryba-hdfs",
    "description": "Hive Ranger Plugin audit log policy",
    "repositoryType": "hdfs",
    "isEnabled": true,
    "isAuditEnabled": true,
    "resources": {
      "path": {
        "isRecursive": "true",
        "values": ["/ranger/audit/hiveServer2"],
        "isExcludes": false
      }
    },
    "policyItems": [{
      "users": ["hive"],
      "groups": [],
      "delegateAdmin": true,
      "accesses": [{
        "isAllowed": true,
        "type": "read"
      },{
        "isAllowed": true,
        "type": "write"
      },{
        "isAllowed": true,
        "type": "execute"
      }],
      "conditions": []
    }]
  }
}, function(err, status){
  console.log( err ? err.message : "Policy Created: " + status)
})
module.exports = ({options}) ->
  throw Error 'Required Options: username' unless options.username
  throw Error 'Required Options: password' unless options.password
  throw Error 'Required Options: url' unless options.url
  throw Error 'Required Options: policy' unless options.policy
  throw Error 'Required Options: policy.name' unless options.policy.name
  throw Error 'Required Options: policy.service' unless options.policy.service
  @system.execute
    cmd: """
    curl --fail -H "Content-Type: application/json" -k -X POST \
      -d '#{JSON.stringify options.policy}' \
      -u #{options.username}:#{options.password} \
      "#{options.url}/service/public/v2/api/policy"
    """
    unless_exec: """
    curl --fail -H "Content-Type: application/json" -k -X GET  \
      -u #{options.username}:#{options.password} \
      "#{options.url}/service/public/v2/api/service/#{options.policy.service}/policy/#{options.policy.name}"
    """
    code_skipped: 22