[ 
https://issues.apache.org/jira/browse/SCB-2093?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Smart Yang updated SCB-2093:
----------------------------
    Description: 
 
 *RBAC数据结构*

*账户信息*
||accout||password||role||createTime||...||
|root| |admin| | |
| | |developer| | |
| | |null| | |

1. 创建用户时,用户名和密码是必须项

2. 账户可以新增和删除,root用户不能删除,账户名不可以修改,账户均支持修改密码

3. 创建账号时若未添加角色信息,则默认为空角色,空角色不分配任何权限

4. 删除普通用户时, 若用户存在active token,有两种方案:

a) 直接删除,包括该用户的角色(用户与角色为多对一关系)

b) 使token失效,然后再删除

选用a方案,删除用户账号会删除用户所有信息

 

*角色权限*

*角色权限资源*

admin角色的权限:账户和服务管理
{code:json}
{
"account": {Verbs: []string{
                         "/v4/account",
                         "/v4/account/{name},
                         ........
                  },
 "service":   {Verbs: []string{                        
                       "/v4/{project}/registry/microservices",
                       "/v4/{project}/registry/microservices/{serviceId}"
                       .......
 }}
 {code}
developer角色的权限:服务管理
{code:json}
{
 "service":   {Verbs: []string{                        
                       "/v4/{project}/registry/microservices",
                       "/v4/{project}/registry/microservices/{serviceId}"
                       .......
}}
{code}
*角色与权限对应关系表*

 
||role||  *privilege*||
|admin| 拥有最高权限
 "account":  \{Verbs: []string{"*"}},
 "service":  \{Verbs: []string{"*"}},|
|developer|"service":  \{Verbs: []string{"*"}},|
|null|null|
|tester(new role)| 用户从服务列表中选择资源分配给角色{code:json}
{
"service": {Verbs}: []string{
          /registry/microservices/\{serviceId}"
                     .......
 }} {code}|

 

1. admin角色拥有最高权限,包含账户资源和服务资源列表,且该角色不可修改删除;

  developer角色拥有服务列表的所有权限,且该角色不可修改删除

2. 用户可以新增、删除角色

3. 添加的新角色可以从api列表中选择可访问的服务资源列表,支持修改角色可访问的服务资源列表

4. 删除角色时会删除该角色所对应的权限列表,账户对应的角色会变成空角色,空角色的账户没有任何权限

 

*REST API*

*账户管理(已有API)*

 
||Heading 1||Heading 2||Parameter ||Request Body||Description ||
|POST|/v4/token|null|{ "id": "string", "name": "string", "password": "string", 
"role": "string", "tokenExprirationTime": "string", "currentPassword": 
"string", " status": "string" }|token is the only credential to access rest 
API, before you access 
 any API, you need to get a token|
|GET|​/v4​/account|token|null|list all user accounts|
|POST|​/v4​/account|token|{ "id": "string", "name": "string", "password": 
"string", "role": "string", "tokenExprirationTime": "string", 
"currentPassword": "string", "status": "string" }|create user account|
|GET|​/v4​/account​/ \{name}|token、name|null| |
|DELETE|v4​/account​/\{name}|token、name|null| |
|POST|/v4/account/ \{name}/password|token、name| \{ "currentPassword":"string", 
"password":"string" }| |

 

*角色权限管理*
||Method  ||Request URI ||Parameter ||  Request Body  ||    Description         
    ||
|GET|+{color:#172b4d}​/v4​/privilege/account​/role{color}+|token|null|查询系统的role以及role对应的资源|
|POST|+/v4​/privilege/account/role+|token|{code:java}
{
 roleId: "string"
 service:[]string{}
 }{code}|添加新角色并为新角色添加API资源列表|
|PUT|+/v4​/privilege/account​/role​+|token| {code:java}
{
 roleId: "string"
 service:[]string{}
 }{code}|修改角色可访问的API资源列表|
|GET|+/v4​/privilege/account​/role/ \{roleId}+| 
roleId、token|null|查询相应角色可访问的API资源列表,admin角色还将返回account资源|
|DELETE |+/v4​/privilege/account​/role/\{roleId}+ |roleId、token |null | 
删除角色,但admin、developer角色不可删除|

 

 

 

  was:
 
 *RBAC数据结构*

*账户信息*
||accout||password||role||createTime||...||
|root| |admin| | |
| | |developer| | |
| | |null| | |

1. 创建用户时,用户名和密码是必须项

2. 账户可以新增和删除,root用户不能删除,账户名不可以修改,账户均支持修改密码

3. 创建账号时若未添加角色信息,则默认为空角色,空角色不分配任何权限

4. 删除普通用户时, 若用户存在active token,有两种方案:

a) 直接删除,包括该用户的角色(用户与角色为多对一关系)

b) 使token失效,然后再删除

选用a方案,删除用户账号会删除用户所有信息

 

*角色权限*

*角色权限资源*

admin角色的权限:账户和服务管理

"account": {Verbs: []string{

                         "/v4/account",

                         "/v4/account\{name}},

                        ........

                  },
 "service":   {Verbs: []string

{                        "/v4/\\{project}/registry/microservices",
 
                       "/v4/\{project}/registry/microservices/\{serviceId}"
 
                      .......
 
 }},
 
 developer角色的权限:服务管理
 
 "service":   \{Verbs: []string{                        "/v4/{project}

/registry/microservices",

                      "/v4/\{project}/registry/microservices/\{serviceId}"

                     .......

}}

*角色与权限对应关系表*

 
||role||  *privilege*||
|admin| 拥有最高权限
 "account":  \{Verbs: []string{"*"}},
 "service":  \{Verbs: []string{"*"}},|
|developer|"service":  \{Verbs: []string{"*"}},|
|null|null|
|tester(new role)| 用户从服务列表中选择资源分配给角色"service":   Unknown macro: \{Verbs}
/registry/microservices/\{serviceId}"
                     .......
 }}|

 

1. admin角色拥有最高权限,包含账户资源和服务资源列表,且该角色不可修改删除;

  developer角色拥有服务列表的所有权限,且该角色不可修改删除

2. 用户可以新增、删除角色

3. 添加的新角色可以从api列表中选择可访问的服务资源列表,支持修改角色可访问的服务资源列表

4. 删除角色时会删除该角色所对应的权限列表,账户对应的角色会变成空角色,空角色的账户没有任何权限

 

*REST API*

*账户管理(已有API)*

 
||Heading 1||Heading 2||Parameter ||Request Body||Description ||
|POST|/v4/token|null|{
  "id": "string",
  "name": "string",
  "password": "string",
  "role": "string",
  "tokenExprirationTime": "string",
  "currentPassword": "string",
  "status": "string"
}|token is the only credential to
 access rest API, before you access 
any API, you need to get a token|
|GET|​/v4​/account|token|null|list all user accounts|
|POST|​/v4​/account|token|{
  "id": "string",
  "name": "string",
  "password": "string",
  "role": "string",
  "tokenExprirationTime": "string",
  "currentPassword": "string",
  "status": "string"
}|create user account|
|GET|​/v4​/account​/\{name}|token、name|null| |
|DELETE|​/v4​/account​/\{name}|token、name|null| |
|POST|/v4/account/\{name}/password|token、name|'{
 "currentPassword":"string",
 "password":"string"
}| |

 

*角色权限管理*
||Method  ||Request URI ||Parameter ||  Request Body    ||    Description       
      ||
|GET|[​/v4​/privilege/account​/role|#/rbac/getAccount]|token|null|查询系统的role以及role对应的资源|
|POST|[/v4​/|#/rbac/getAccount] [privilege|#/rbac/getAccount] 
[/|#/rbac/getAccount] [account​/|#/rbac/getAccount]role|token|{
   roleid: "string"
  "service": []string{}
}|添加新角色并为新角色添加API资源列表|
|PUT|[/v4​/|#/rbac/getAccount] [privilege|#/rbac/getAccount] 
[/|#/rbac/getAccount] [account​/|#/rbac/getAccount]role|token| {
   roleid: "string"
  "service": []string{}
}|修改角色可访问的API资源列表|
|GET|[/v4/|#/rbac/getAccount] [privilege|#/rbac/getAccount] 
[/|#/rbac/getAccount] [account/|#/rbac/getAccount]role/\{roleid}| 
roleid、token|null|查询相应角色可访问的API资源列表,
 admin角色还将返回account资源|
|DELETE|[/v4​/|#/rbac/getAccount] [privilege|#/rbac/getAccount] 
[/|#/rbac/getAccount] [account​/|#/rbac/getAccount]role/\{roleid}|roleid、token| 
null|删除角色,但admin、developer角色不可删除|

 

 

 


> Supplement the role module of rbac
> ----------------------------------
>
>                 Key: SCB-2093
>                 URL: https://issues.apache.org/jira/browse/SCB-2093
>             Project: Apache ServiceComb
>          Issue Type: New Feature
>          Components: Service-Center
>            Reporter: Smart Yang
>            Priority: Major
>
>  
>  *RBAC数据结构*
> *账户信息*
> ||accout||password||role||createTime||...||
> |root| |admin| | |
> | | |developer| | |
> | | |null| | |
> 1. 创建用户时,用户名和密码是必须项
> 2. 账户可以新增和删除,root用户不能删除,账户名不可以修改,账户均支持修改密码
> 3. 创建账号时若未添加角色信息,则默认为空角色,空角色不分配任何权限
> 4. 删除普通用户时, 若用户存在active token,有两种方案:
> a) 直接删除,包括该用户的角色(用户与角色为多对一关系)
> b) 使token失效,然后再删除
> 选用a方案,删除用户账号会删除用户所有信息
>  
> *角色权限*
> *角色权限资源*
> admin角色的权限:账户和服务管理
> {code:json}
> {
> "account": {Verbs: []string{
>                          "/v4/account",
>                          "/v4/account/{name},
>                          ........
>                   },
>  "service":   {Verbs: []string{                        
>                        "/v4/{project}/registry/microservices",
>                        "/v4/{project}/registry/microservices/{serviceId}"
>                        .......
>  }}
>  {code}
> developer角色的权限:服务管理
> {code:json}
> {
>  "service":   {Verbs: []string{                        
>                        "/v4/{project}/registry/microservices",
>                        "/v4/{project}/registry/microservices/{serviceId}"
>                        .......
> }}
> {code}
> *角色与权限对应关系表*
>  
> ||role||  *privilege*||
> |admin| 拥有最高权限
>  "account":  \{Verbs: []string{"*"}},
>  "service":  \{Verbs: []string{"*"}},|
> |developer|"service":  \{Verbs: []string{"*"}},|
> |null|null|
> |tester(new role)| 用户从服务列表中选择资源分配给角色{code:json}
> {
> "service": {Verbs}: []string{
>           /registry/microservices/\{serviceId}"
>                      .......
>  }} {code}|
>  
> 1. admin角色拥有最高权限,包含账户资源和服务资源列表,且该角色不可修改删除;
>   developer角色拥有服务列表的所有权限,且该角色不可修改删除
> 2. 用户可以新增、删除角色
> 3. 添加的新角色可以从api列表中选择可访问的服务资源列表,支持修改角色可访问的服务资源列表
> 4. 删除角色时会删除该角色所对应的权限列表,账户对应的角色会变成空角色,空角色的账户没有任何权限
>  
> *REST API*
> *账户管理(已有API)*
>  
> ||Heading 1||Heading 2||Parameter ||Request Body||Description ||
> |POST|/v4/token|null|{ "id": "string", "name": "string", "password": 
> "string", "role": "string", "tokenExprirationTime": "string", 
> "currentPassword": "string", " status": "string" }|token is the only 
> credential to access rest API, before you access 
>  any API, you need to get a token|
> |GET|​/v4​/account|token|null|list all user accounts|
> |POST|​/v4​/account|token|{ "id": "string", "name": "string", "password": 
> "string", "role": "string", "tokenExprirationTime": "string", 
> "currentPassword": "string", "status": "string" }|create user account|
> |GET|​/v4​/account​/ \{name}|token、name|null| |
> |DELETE|v4​/account​/\{name}|token、name|null| |
> |POST|/v4/account/ \{name}/password|token、name| \{ 
> "currentPassword":"string", "password":"string" }| |
>  
> *角色权限管理*
> ||Method  ||Request URI ||Parameter ||  Request Body  ||    Description       
>       ||
> |GET|+{color:#172b4d}​/v4​/privilege/account​/role{color}+|token|null|查询系统的role以及role对应的资源|
> |POST|+/v4​/privilege/account/role+|token|{code:java}
> {
>  roleId: "string"
>  service:[]string{}
>  }{code}|添加新角色并为新角色添加API资源列表|
> |PUT|+/v4​/privilege/account​/role​+|token| {code:java}
> {
>  roleId: "string"
>  service:[]string{}
>  }{code}|修改角色可访问的API资源列表|
> |GET|+/v4​/privilege/account​/role/ \{roleId}+| 
> roleId、token|null|查询相应角色可访问的API资源列表,admin角色还将返回account资源|
> |DELETE |+/v4​/privilege/account​/role/\{roleId}+ |roleId、token |null | 
> 删除角色,但admin、developer角色不可删除|
>  
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to