Skip to content

Latest commit

 

History

History
125 lines (108 loc) · 3.33 KB

8.1 简单授权.md

File metadata and controls

125 lines (108 loc) · 3.33 KB

Atlas简单授权

如授权模型章节中所描述的,Apache Atlas支持可插拔授权模型。简单授权程序是Apache Atlas中包含的默认授权程序实现。简单授权程序使用JSON文件中定义的策略。本文档提供了配置Apache Atlas以使用简单授权程序的步骤的详细信息,以及包含授权策略的JSON文件格式的详细信息。

1. 配置

要将Apache Atlas配置为使用简单授权程序,请在application.properties配置文件中包含以下属性:

atlas.authorizer.impl=simple
atlas.authorizer.simple.authz.policy.file=/etc/atlas/conf/atlas-simple-authz-policy.json

请注意,如果指定的策略文件位置不是绝对路径,则将在以下路径中查找该文件:

  • Apache Atlas配置目录(由系统属性atlas.conf指定)
  • Apache Atlas服务器的当前目录
  • CLASSPATH

2.策略文件格式

简单授权程序使用角色(roles)对权限进行分组,然后可以将权限分配给用户和用户组。以下示例有助于理解策略文件格式的详细信息:

2.1 角色

以下策略文件定义了3个角色:

  • ROLE_ADMIN:拥有所有权限
  • PROD_READ_ONLY:可以访问具有以“@prod”结尾的qualifiedName的读取实体
  • TEST_ALL_ACCESS:具有对以“@test”结尾的qualifiedName的实体的所有访问权限

简单授权程序支持Java reg-ex指定privilege / entity-type / entity-id / classification / typeName / typeCategory的值。

{
  "roles": {
    "ROLE_ADMIN": {
      "adminPermissions": [
        {
          "privileges": [ ".*" ]
        }
      ],

      "entityPermissions": [
        {
          "privileges":      [ ".*" ],
          "entityTypes":     [ ".*" ],
          "entityIds":       [ ".*" ],
          "classifications": [ ".*" ]
        }
      ],

      "typePermissions": [
        {
          "privileges":     [ ".*" ],
          "typeCategories": [ ".*" ],
          "typeNames":      [ ".*" ]
        }
      ]
    },

    "PROD_READ_ONLY" : {
      "entityPermissions": [
        {
          "privileges":      [ "entity-read", "entity-read-classification" ],
          "entityTypes":     [ ".*" ],
          "entityIds":       [ ".*@prod" ],
          "classifications": [ ".*" ]
        }
    }

    "TEST_ALL_ACCESS" : {
      "entityPermissions": [
        {
          "privileges":      [ ".*" ],
          "entityTypes":     [ ".*" ],
          "entityIds":       [ ".*@test" ],
          "classifications": [ ".*" ]
        }
    }
  },

  "userRoles": {
   ...
  },

  "groupRoles": {
   ...
  }
}

2.2 将角色分配给用户和用户组

上面定义的角色可以分配(授予)给用户,如下所示:

{
  "roles": {
   ...
  },

  "userRoles": {
    "admin":   [ "ROLE_ADMIN" ],
    "steward": [ "DATA_STEWARD" ],
    "user1":   [ "PROD_READ_ONLY" ],
    "user2":   [ "TEST_ALL_ACCESS" ],
    "user3":   [ "PROD_READ_ONLY", "TEST_ALL_ACCESS" ],
  },

  "groupRoles": {
   ...
  }
}

可以将角色分配(授予)给用户组,如下所示。用户可以属于多个组;分配给用户所属的所有组的角色将用于授权访问。

{
  "roles": {
   ...
  },

  "userRoles": {
   ...
  },

  "groupRoles": {
    "admins":        [ "ROLE_ADMIN" ],
    "dataStewards":  [ "DATA_STEWARD" ],
    "testUsers":     [ "TEST_ALL_ACCESS" ],
    "prodReadUsers": [ "PROD_READ_ONLY" ]
  }
}