[ 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角色的权限:账户和服务管理 "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角色不可删除| 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": {Verbs: []string{ "/v4/\{project}/registry/microservices", "/v4/\{project}/registry/microservices/\{serviceId}" ....... }}| 1. admin角色拥有最高权限,包含账户资源和服务资源列表,且该角色不可修改删除; developer角色拥有服务列表的所有权限,且该角色不可修改删除 2. 用户可以新增、删除角色 3. 添加的新角色可以从api列表中选择可访问的服务资源列表 4. 不提供修改角色类型,但角色的权限可以修改(即可访问的API列表) 5. 删除普通角色时会删除该角色管理列表,不会删除用户信息 角色管理 ||Method ||Request URI ||Parameter ||Request Body ||Description|| |GET|[/v4/account/role|#/rbac/getAccount]| token| null| 查询系统的role种类| |POST|[/v4/account/role|#/rbac/getAccount] | role、token|{ role: string }| 新增role| | DELETE| [/v4/account/role|#/rbac/getAccount] | role、token| \{ role: string }| 删除role,但admin角色不可删除| 为角色分配权限 ||Method ||Request URI ||Parameter || Request Body || Description || |GET| [/v4/account/|#/rbac/getAccount]role/\{role}|role、token|null|查询相应角色可访问的API资源列表, admin角色还将返回account资源| |POST|[/v4/account/|#/rbac/getAccount]role/\{role}|role、token|API List|为角色添加API资源列表| |PUT|[/v4/account/|#/rbac/getAccount]role/\{role}|role、token| API List|修改角色可访问的API资源列表| |DELETE|[/v4/account/|#/rbac/getAccount]role/\{role}|role、token| null|删除角色| GET、POST、PUT方法返回的列表中admin角色除了返回API资源列表 还返回相应角色对应的用户列表 > 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角色的权限:账户和服务管理 > "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角色不可删除| > > > -- This message was sent by Atlassian Jira (v8.3.4#803005)