安全

Atlas 简单授权器

qianmoQqianmoQ· 更新于 2026-09-27· 阅读 5 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

Atlas 简单授权器

配置 Atlas 以使用简单授权器

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

配置 Apache Atlas

要配置 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

策略文件格式

Simple authorizer 使用 =roles=(角色)对权限进行分组,然后可将这些角色分配给用户和用户组。以下示例有助于理解策略文件格式的细节:

角色

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

  • ROLE_ADMIN:拥有全部权限
  • PROD_READ_ONLY:拥有读取 qualifiedName 以 "@prod" 结尾的实体的权限
  • TEST_ALL_ACCESS:拥有对 qualifiedName 以 "@test" 结尾的实体的所有访问权限

Simple authorizer 支持使用 Java 正则表达式来指定 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": {
   ...
  }
}

为用户和用户组分配角色

上面定义的角色可以按下所示方式授予(grant)给用户:

{
  "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" ]
  }
}

评论

登录后参与评论

正在加载评论…