分享

翻译:Keystone用户管理

hochikong 发表于 2014-8-13 11:17:10 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 10751
本帖最后由 hochikong 于 2014-8-13 11:21 编辑
问题导读:
1.租户、角色、用户之间可以存在并集或交集吗?
2./etc/[代号]/policy.json用于什么?
3.如何配置policy.json文件?


openstack身份服务,代号为keystone,这是openstack默认的身份管理系统。当你安装完它,你可以通过/etc/keystone.conf配置它.你可以通过keystone的命令行客户端初始化身份服务的数据。

用户管理:
以下是身份服务用户管理中的一些主要概念:
用户:代表一个使用者,拥有一些相关联的信息比如用户名,密码和电邮地址。以下的例子创建了一个名为alice的用户:
  1. keystone user-create --name=alice --pass=mypassword123 --email=alice@example.com
复制代码
租户:一个项目,组或组织。当你向OpenStack服务发出请求时,你必须指定一个租户。比如,当你向计算服务查询运行中的实例的列表时,你会在你所指定的租户内获得这个列表。以下这个例子创建了一个名为acme的租户:
  1. keystone tenant-create --name=acme
复制代码

请注意:因为在计算服务更早的版本中”project“已经被替换为”tenant“,所以有些命令行工具使用--project-id代替--tenant-id或--os-tenant-id,但其实所指的还是tenant的ID。

角色:在一个给定的租户中捕获用户可以执行的操作。
以下这个例子创建了一个名为compute-user的租户:
  1. keystone role-create --name=compute-user
复制代码

注意:在个别服务中,比如计算和镜像服务,assign的意思就是role,在身份服务中,一个角色(role)只是一个简单的名字。

身份服务为用户分配一个租户和角色,你可能会在acme租户中把compute-user角色分配给alice用户。
  1. $ keystone user-list
  2. +--------+---------+-------------------+--------+
  3. | id | enabled | email | name |
  4. +--------+---------+-------------------+--------+
  5. | 892585 | True | alice@example.com | alice |
  6. +--------+---------+-------------------+--------+
复制代码
  1. $ keystone role-list
  2. +--------+--------------+
  3. | id | name |
  4. +--------+--------------+
  5. | 9a764e | compute-user |
  6. +--------+--------------+
复制代码
  1. $ keystone tenant-list
  2. +--------+------+---------+
  3. | id | name | enabled |
  4. +--------+------+---------+
  5. | 6b8fd2 | acme | True |
  6. +--------+------+---------+
复制代码
  1. $ keystone user-role-add --user=892585 --role=9a764e --tenant-id=6b8fd2
复制代码

一个用户可以在不同的租户中拥有不同的角色。例如,alice可能在Cyberdyne租户中拥有admin角色。在同一个租户中,一个用户也可以拥有多个角色。

/etc/[SERVICE_CODENAME]/policy.json文件控制着对于一个给定的服务用户可以执行的任务。比如/etc/nova/police.json指定了对计算服务的访问策略,/etc/glance/policy.json指定了对镜像服务的的访问策略,而/etc/keystone/policy.json指定了对身份服务的访问权限。

默认的位于计算、身份和计算服务中的policy.json文件只识别admin角色:所有不需要admin角色的操作对于租户中任何用户(任意角色)都是可访问的。

如果你要限制用户执行某些操作,例如计算服务,你需要在身份服务中创建一个角色,接着修改/etc/nova/policy.json文件。实现仅有该角色才可以执行计算操作。

例如,/etc/nova/policy.json中这一行说明了对哪些用户可以创建volume没有限制的:如果用户在这个租户中有任何角色,他们都可以在这个租户中创建volume。
  1. "volume:create": [],
复制代码

如果要在某个特定的租户中限制只有那些拥有compute-user角色的用户才能创建volume,你可以添加”role:compute-user“,像这样:
  1. "volume:create": ["role:compute-user"],
复制代码

如我们需要对所有Compute服务的请求均需要指定的角色,你的配置文件应该会像这样:
  1. {
  2.     "admin_or_owner": [
  3.         [
  4.             "role:admin"
  5.         ],
  6.         [
  7.             "project_id:%(project_id)s"
  8.         ]
  9.     ],
  10.     "default": [
  11.         [
  12.             "rule:admin_or_owner"
  13.         ]
  14.     ],
  15.     "compute:create": [
  16.         "role:compute-user"
  17.     ],
  18.     "compute:create:attach_network": [
  19.         "role:compute-user"
  20.     ],
  21.     "compute:create:attach_volume": [
  22.         "role:compute-user"
  23.     ],
  24.     "compute:get_all": [
  25.         "role:compute-user"
  26.     ],
  27.     "compute:unlock_override": [
  28.         "rule:admin_api"
  29.     ],
  30.     "admin_api": [
  31.         [
  32.             "role:admin"
  33.         ]
  34.     ],
  35.     "compute_extension:accounts": [
  36.         [
  37.             "rule:admin_api"
  38.         ]
  39.     ],
  40.     "compute_extension:admin_actions": [
  41.         [
  42.             "rule:admin_api"
  43.         ]
  44.     ],
  45.     "compute_extension:admin_actions:pause": [
  46.         [
  47.             "rule:admin_or_owner"
  48.         ]
  49.     ],
  50.     "compute_extension:admin_actions:unpause": [
  51.         [
  52.             "rule:admin_or_owner"
  53.         ]
  54.     ],
  55.     "compute_extension:admin_actions:suspend": [
  56.         [
  57.             "rule:admin_or_owner"
  58.         ]
  59.     ],
  60.     "compute_extension:admin_actions:resume": [
  61.         [
  62.             "rule:admin_or_owner"
  63.         ]
  64.     ],
  65.     "compute_extension:admin_actions:lock": [
  66.         [
  67.             "rule:admin_or_owner"
  68.         ]
  69.     ],
  70.     "compute_extension:admin_actions:unlock": [
  71.         [
  72.             "rule:admin_or_owner"
  73.         ]
  74.     ],
  75.     "compute_extension:admin_actions:resetNetwork": [
  76.         [
  77.             "rule:admin_api"
  78.         ]
  79.     ],
  80.     "compute_extension:admin_actions:injectNetworkInfo": [
  81.         [
  82.             "rule:admin_api"
  83.         ]
  84.     ],
  85.     "compute_extension:admin_actions:createBackup": [
  86.         [
  87.             "rule:admin_or_owner"
  88.         ]
  89.     ],
  90.     "compute_extension:admin_actions:migrateLive": [
  91.         [
  92.             "rule:admin_api"
  93.         ]
  94.     ],
  95.     "compute_extension:admin_actions:migrate": [
  96.         [
  97.             "rule:admin_api"
  98.         ]
  99.     ],
  100.     "compute_extension:aggregates": [
  101.         [
  102.             "rule:admin_api"
  103.         ]
  104.     ],
  105.     "compute_extension:certificates": [
  106.         "role:compute-user"
  107.     ],
  108.     "compute_extension:cloudpipe": [
  109.         [
  110.             "rule:admin_api"
  111.         ]
  112.     ],
  113.     "compute_extension:console_output": [
  114.         "role:compute-user"
  115.     ],
  116.     "compute_extension:consoles": [
  117.         "role:compute-user"
  118.     ],
  119.     "compute_extension:createserverext": [
  120.         "role:compute-user"
  121.     ],
  122.     "compute_extension:deferred_delete": [
  123.         "role:compute-user"
  124.     ],
  125.     "compute_extension:disk_config": [
  126.         "role:compute-user"
  127.     ],
  128.     "compute_extension:evacuate": [
  129.         [
  130.             "rule:admin_api"
  131.         ]
  132.     ],
  133.     "compute_extension:extended_server_attributes": [
  134.         [
  135.             "rule:admin_api"
  136.         ]
  137.     ],
  138.     "compute_extension:extended_status": [
  139.         "role:compute-user"
  140.     ],
  141.     "compute_extension:flavorextradata": [
  142.         "role:compute-user"
  143.     ],
  144.     "compute_extension:flavorextraspecs": [
  145.         "role:compute-user"
  146.     ],
  147.     "compute_extension:flavormanage": [
  148.         [
  149.             "rule:admin_api"
  150.         ]
  151.     ],
  152.     "compute_extension:floating_ip_dns": [
  153.         "role:compute-user"
  154.     ],
  155.     "compute_extension:floating_ip_pools": [
  156.         "role:compute-user"
  157.     ],
  158.     "compute_extension:floating_ips": [
  159.         "role:compute-user"
  160.     ],
  161.     "compute_extension:hosts": [
  162.         [
  163.             "rule:admin_api"
  164.         ]
  165.     ],
  166.     "compute_extension:keypairs": [
  167.         "role:compute-user"
  168.     ],
  169.     "compute_extension:multinic": [
  170.         "role:compute-user"
  171.     ],
  172.     "compute_extension:networks": [
  173.         [
  174.             "rule:admin_api"
  175.         ]
  176.     ],
  177.     "compute_extension:quotas": [
  178.         "role:compute-user"
  179.     ],
  180.     "compute_extension:rescue": [
  181.         "role:compute-user"
  182.     ],
  183.     "compute_extension:security_groups": [
  184.         "role:compute-user"
  185.     ],
  186.     "compute_extension:server_action_list": [
  187.         [
  188.             "rule:admin_api"
  189.         ]
  190.     ],
  191.     "compute_extension:server_diagnostics": [
  192.         [
  193.             "rule:admin_api"
  194.         ]
  195.     ],
  196.     "compute_extension:simple_tenant_usage:show": [
  197.         [
  198.             "rule:admin_or_owner"
  199.         ]
  200.     ],
  201.     "compute_extension:simple_tenant_usage:list": [
  202.         [
  203.             "rule:admin_api"
  204.         ]
  205.     ],
  206.     "compute_extension:users": [
  207.         [
  208.             "rule:admin_api"
  209.         ]
  210.     ],
  211.     "compute_extension:virtual_interfaces": [
  212.         "role:compute-user"
  213.     ],
  214.     "compute_extension:virtual_storage_arrays": [
  215.         "role:compute-user"
  216.     ],
  217.     "compute_extension:volumes": [
  218.         "role:compute-user"
  219.     ],
  220.     "compute_extension:volume_attachments:index": [
  221.         "role:compute-user"
  222.     ],
  223.     "compute_extension:volume_attachments:show": [
  224.         "role:compute-user"
  225.     ],
  226.     "compute_extension:volume_attachments:create": [
  227.         "role:compute-user"
  228.     ],
  229.     "compute_extension:volume_attachments:delete": [
  230.         "role:compute-user"
  231.     ],
  232.     "compute_extension:volumetypes": [
  233.         "role:compute-user"
  234.     ],
  235.     "volume:create": [
  236.         "role:compute-user"
  237.     ],
  238.     "volume:get_all": [
  239.         "role:compute-user"
  240.     ],
  241.     "volume:get_volume_metadata": [
  242.         "role:compute-user"
  243.     ],
  244.     "volume:get_snapshot": [
  245.         "role:compute-user"
  246.     ],
  247.     "volume:get_all_snapshots": [
  248.         "role:compute-user"
  249.     ],
  250.     "network:get_all_networks": [
  251.         "role:compute-user"
  252.     ],
  253.     "network:get_network": [
  254.         "role:compute-user"
  255.     ],
  256.     "network:delete_network": [
  257.         "role:compute-user"
  258.     ],
  259.     "network:disassociate_network": [
  260.         "role:compute-user"
  261.     ],
  262.     "network:get_vifs_by_instance": [
  263.         "role:compute-user"
  264.     ],
  265.     "network:allocate_for_instance": [
  266.         "role:compute-user"
  267.     ],
  268.     "network:deallocate_for_instance": [
  269.         "role:compute-user"
  270.     ],
  271.     "network:validate_networks": [
  272.         "role:compute-user"
  273.     ],
  274.     "network:get_instance_uuids_by_ip_filter": [
  275.         "role:compute-user"
  276.     ],
  277.     "network:get_floating_ip": [
  278.         "role:compute-user"
  279.     ],
  280.     "network:get_floating_ip_pools": [
  281.         "role:compute-user"
  282.     ],
  283.     "network:get_floating_ip_by_address": [
  284.         "role:compute-user"
  285.     ],
  286.     "network:get_floating_ips_by_project": [
  287.         "role:compute-user"
  288.     ],
  289.     "network:get_floating_ips_by_fixed_address": [
  290.         "role:compute-user"
  291.     ],
  292.     "network:allocate_floating_ip": [
  293.         "role:compute-user"
  294.     ],
  295.     "network:deallocate_floating_ip": [
  296.         "role:compute-user"
  297.     ],
  298.     "network:associate_floating_ip": [
  299.         "role:compute-user"
  300.     ],
  301.     "network:disassociate_floating_ip": [
  302.         "role:compute-user"
  303.     ],
  304.     "network:get_fixed_ip": [
  305.         "role:compute-user"
  306.     ],
  307.     "network:add_fixed_ip_to_instance": [
  308.         "role:compute-user"
  309.     ],
  310.     "network:remove_fixed_ip_from_instance": [
  311.         "role:compute-user"
  312.     ],
  313.     "network:add_network_to_project": [
  314.         "role:compute-user"
  315.     ],
  316.     "network:get_instance_nw_info": [
  317.         "role:compute-user"
  318.     ],
  319.     "network:get_dns_domains": [
  320.         "role:compute-user"
  321.     ],
  322.     "network:add_dns_entry": [
  323.         "role:compute-user"
  324.     ],
  325.     "network:modify_dns_entry": [
  326.         "role:compute-user"
  327.     ],
  328.     "network:delete_dns_entry": [
  329.         "role:compute-user"
  330.     ],
  331.     "network:get_dns_entries_by_address": [
  332.         "role:compute-user"
  333.     ],
  334.     "network:get_dns_entries_by_name": [
  335.         "role:compute-user"
  336.     ],
  337.     "network:create_private_dns_domain": [
  338.         "role:compute-user"
  339.     ],
  340.     "network:create_public_dns_domain": [
  341.         "role:compute-user"
  342.     ],
  343.     "network:delete_dns_domain": [
  344.         "role:compute-user"
  345.     ]
  346. }
复制代码




#########################################################
本文译自:http://docs.openstack.org/admin- ... ser-management.html
译者:hochikong








欢迎加入about云群9037177932227315139327136 ,云计算爱好者群,亦可关注about云腾讯认证空间||关注本站微信

没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条