zoukankan      html  css  js  c++  java
  • openstack 权限控制 (添加自定义角色)keystone等组件

    每一个平台、系统都会对于用户的权限进行严格的管理与控制。

    openstack是一个开源的项目,我们可以直接下载其源码,进行更改以达到我们的要求。

    这里只是针对于用户的权限进行管理,以keystone:

    keystone是使用policy.json定义权限,其它openstack组件也是一样的,都是存在文件policy.json(在这文件中保证的是该组件对于用户身份的管理   权限的控制):
    /etc/nova/policy.json
    /etc/keystone/policy.json
    /etc/glance/policy.json
    /etc/neutron/policy.json
    /etc/cinder/policy.json

    keystone的policy.json文件位于:
    /etc/keystone/policy.json


    其内容如下:
    1 {
    2 "admin_required": "role:admin or is_admin:1",

    34 "identity:get_project": "rule:admin_required",
    35 "identity:list_projects": "rule:admin_required",
    36 "identity:list_user_projects": "rule:admin_or_owner",
    37 "identity:create_project": "rule:admin_required",
    38 "identity:update_project": "rule:admin_required",
    39 "identity:delete_project": "rule:admin_required",

    41 "identity:get_user": "rule:admin_required",
    42 "identity:list_users": "rule:admin_required",
    43 "identity:create_user": "rule:admin_required",
    44 "identity:update_user": "rule:admin_required",
    45 "identity:delete_user": "rule:admin_required",
    46 "identity:change_password": "rule:admin_or_owner",

    此文件的格式为   ------------    identity:行为名  :   rule:规则

    每一个规则在这个文件的前面几行有规则的书写:

    如34行:34 "identity:get_project": "rule:admin_required",

    获取项目:rule:admin_required。这个规则在文本第二行有书写:2 "admin_required": "role:admin or is_admin:1",

    如果满足这个规则,就说明这个用户可以进行前面的行为。

    就34行来说:就是如果用户是管理员或者是管理员身份,他就可以进行get_project这个操作.

    我们如果需要对这个行为进行一个自定义的控制的话,我们可以自行的修改policy.json文件,

    并且这个文件在openstack中,是动态运行的,所以在修改之后,我们不需要去重新启动openstack。

    下面是我自己做的修改:

    "keystone01_role":"role:keystone01_role",

    在此之前,我已经新建了一个role,名字是keystone01_role。

    同时,我做了以下的修改:

    "identity:create_project": "rule:keystone01_role",

    我将创建项目的权限只给了keystone01_role这个角色。

    这时候,我们就会发现,就算是admin管理员,他也是无法创建项目了的。

    只有是keystone01_role角色的用户,才存在创建项目的权限。

    要是要对其他的组件的权限进行修改的话,办法是一样的。

  • 相关阅读:
    调用ajax的返回值,需要再ajax之外的函数体里return,以及同步异步问题
    JavaScript的进阶之路(三)引用类型之Object类型和Array类型
    JavaScript的进阶之路(二)函数简介,变量、作用域和内存问题
    JavaScript的进阶之路(一)
    mui.ajax()和asp.net sql服务器数据交互【3】最终版
    mui.ajax()和asp.net sql服务器数据交互【2】json数组和封装
    mui.ajax()和asp.net sql服务器数据交互【1】
    js和.net后台交互
    input文字垂直居中和按钮对齐问题,兼容IE8
    ios 搜索请求之没有报文返回 之 utf-8 之谜
  • 原文地址:https://www.cnblogs.com/52why/p/8081052.html
Copyright © 2011-2022 走看看