- MantouDev
- Apache Atlas开发指南(中文版)
- Introduction
- 一、高级架构
- 二、类型系统
- 三、基本搜索
- 四、高级搜索
- 五、术语
- 六、安全
- 七、认证
- 八、Atlas授权模型
- 九、分类传播
- 十、配置Atlas属性
- 十一、通知
- 十二、Hook & Bridge
- 十三、容错和高可用选项
- 本书使用 GitBook 发布
8.1 配置Atlas Simple Authorizer
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" ]
}
}