OpenStack云第三天

部署OpenStack Identity服务。
继OpenStack云第二天,本文翻译自OpenStack安装与部署指南第五章内容,内容主要是安装OpenStack Identity Service(身份认证服务) 。OpenStack Identity服务负责管理用户与客户,项目以及提供为其他OpenStack组件提供通用身份认证系统。

目录:
一、基本概念
二、安装与配置Identity服务
三、验证

一、基本概念
身份认证服务包括两个主要功能:
用户管理:时时跟踪用户以及用户被赋予了什么权限。
服务编录:提供一份可用服务的目录并可以定位这些服务的API。
1.1 用户管理
Identity用户管理包括三个主要概念:

  • 用户(Users)
  • 租户(Tenants)
  • 角色(Roles)

用户表示拥有用户名,密码,邮箱等帐号信息的自然人。这里给出创建用户名为"alice”的用户:
$ keystone user-create --name=alice --pass=mypassword123 [email protected]
租户可以被理解为一个项目,团队或组织。你必须指定一个相应的租户(tenant)才可以申请OpenStack服务,例如你指定以某租户申请Compute服务来查询当前运行的实例列表,则你将收到的是该租户的运行实例列表。这里是创建一个名为"acme”租户的例子:
$ keystone tenant-create --name=acme
注意事项:由于在早期的版本中使用项目术语来表示租户,所以有些命令行工具使用--project_id替代--tenant_id给客户分配一个ID号。
角色代表特定的租户中的用户用户操作权限,可以使用如下命令创建角色:
$ keystone role-create --name=compute-user
译者批注:你可以理解租户为那些使用你云环境的客户,这些客户可以是一个项目组、工作组、公司,这些客户中会建立不同的帐号(用户)及其对应的权限(角色).
Identity服务将用户与租户及角色结合在一起,继续刚才的例子,我们也许希望在acme租户中为alice用户分配compute-user角色。
$ keystone user-list

  1. +---------------------------------+----------+------+-------+
  2. |id | enabled | email | name |
  3. +----------------------------------+----------+------+-------+
  4. | 96a6ebba0d4c441887aceaeced892585 | True | ... | alice |
  5. +----------------------------------+----------+------+-------+

$ keystone role-list

  1. +----------------------------------+------------------+
  2. |id | name |
  3. +----------------------------------+------------------+
  4. | f8dd5a2e4dc64a41b96add562d9a764e | compute-user |
  5. +----------------------------------+------------------+

$ keystone tenant-list

  1. +----------------------------------+-------+----------+
  2. | id | name | enabled |
  3. +----------------------------------+-------+----------+
  4. | 2395953419144b67955ac4bab96b8fd2 | acme | True |
  5. +----------------------------------+-------+----------+

$ keystone user-role-add \
--user=96a6ebba0d4c441887aceaeced892585 \
--role=f8dd5a2e4dc64a41b96add562d9a764e \
--tenant_id=2395953419144b67955ac4bab96b8fd2
一个用户可以在不同的租户中被分配不同的角色,例如Alice也可以在Cyberdyne租户中用户admin角色。一个用户也可以在同一个租户中分配多个角色。
/etc/[服务代码名称]/policy.json控制着哪些用户可以拥有什么样的服务,如:/etc/nova/policy.json定义了Compute服务的访问策略,/etc/glance/policy.json定义Image服务的访问策略,以及/etc/keystone/policy.json定义Identity服务的访问策略。
Compute,Identity,Image服务的默认policy.json文件仅识别admin角色:所有的操作无需admin角色即可被租户中拥有任何角色的用户均可以访问。
如果你希望限制用户在Compute服务中所执行的操作,你需要在Identity服务中创建一个角色并修改/etc/nova/policy.json,实现仅提供该角色才可以执行Compute操作。
实例,以下在/etc/nova/policy.json中的配置设定卷创建的操作对用户无任何限制,在租户中的用户用户任何角色均可以创建卷。
"volume:create": [],
如果你需要仅拥有compute-user角色的用户才可以创建卷,你就需要添加一行”role:compute-user”,具体配置如下:
"volume:create": ["role:compute-user"],
如我们需要对所有Compute服务的请求均需要指定的角色,你的配置文件应该作类似于如下这样的配置:

  1. {
  2. "admin_or_owner": [["role:admin"], ["project_id:%(project_id)s"]],
  3. "default": [["rule:admin_or_owner"]],
  4. "compute:create": ["role":"compute-user"],
  5. "compute:create:attach_network": ["role":"compute-user"],
  6. "compute:create:attach_volume": ["role":"compute-user"],
  7. "compute:get_all": ["role":"compute-user"],
  8. "admin_api": [["role:admin"]],
  9. "compute_extension:accounts": [["rule:admin_api"]],
  10. "compute_extension:admin_actions": [["rule:admin_api"]],
  11. "compute_extension:admin_actions:pause": [["rule:admin_or_owner"]],
  12. "compute_extension:admin_actions:unpause": [["rule:admin_or_owner"]],
  13. "compute_extension:admin_actions:suspend": [["rule:admin_or_owner"]],
  14. "compute_extension:admin_actions:resume": [["rule:admin_or_owner"]],
  15. "compute_extension:admin_actions:lock": [["rule:admin_api"]],
  16. "compute_extension:admin_actions:unlock": [["rule:admin_api"]],
  17. "compute_extension:admin_actions:resetNetwork": [["rule:admin_api"]],
  18. "compute_extension:admin_actions:injectNetworkInfo": [["rule:admin_api"]],
  19. "compute_extension:admin_actions:createBackup": [["rule:admin_or_owner"]],
  20. "compute_extension:admin_actions:migrateLive": [["rule:admin_api"]],
  21. "compute_extension:admin_actions:migrate": [["rule:admin_api"]],
  22. "compute_extension:aggregates": [["rule:admin_api"]],
  23. "compute_extension:certificates": ["role":"compute-user"],
  24. "compute_extension:cloudpipe": [["rule:admin_api"]],
  25. "compute_extension:console_output": ["role":"compute-user"],
  26. "compute_extension:consoles": ["role":"compute-user"],
  27. "compute_extension:createserverext": ["role":"compute-user"],
  28. "compute_extension:deferred_delete": ["role":"compute-user"],
  29. "compute_extension:disk_config": ["role":"compute-user"],
  30. "compute_extension:extended_server_attributes": [["rule:admin_api"]],
  31. "compute_extension:extended_status": ["role":"compute-user"],
  32. "compute_extension:flavorextradata": ["role":"compute-user"],
  33. "compute_extension:flavorextraspecs": ["role":"compute-user"],
  34. "compute_extension:flavormanage": [["rule:admin_api"]],
  35. "compute_extension:floating_ip_dns": ["role":"compute-user"],
  36. "compute_extension:floating_ip_pools": ["role":"compute-user"],
  37. "compute_extension:floating_ips": ["role":"compute-user"],
  38. "compute_extension:hosts": [["rule:admin_api"]],
  39. "compute_extension:keypairs": ["role":"compute-user"],
  40. "compute_extension:multinic": ["role":"compute-user"],
  41. "compute_extension:networks": [["rule:admin_api"]],
  42. "compute_extension:quotas": ["role":"compute-user"],
  43. "compute_extension:rescue": ["role":"compute-user"],
  44. "compute_extension:security_groups": ["role":"compute-user"],
  45. "compute_extension:server_action_list": [["rule:admin_api"]],
  46. "compute_extension:server_diagnostics": [["rule:admin_api"]],
  47. "compute_extension:simple_tenant_usage:show": [["rule:admin_or_owner"]],
  48. "compute_extension:simple_tenant_usage:list": [["rule:admin_api"]],
  49. "compute_extension:users": [["rule:admin_api"]],
  50. "compute_extension:virtual_interfaces": ["role":"compute-user"],
  51. "compute_extension:virtual_storage_arrays": ["role":"compute-user"],
  52. "compute_extension:volumes": ["role":"compute-user"],
  53. "compute_extension:volumetypes": ["role":"compute-user"],
  54. "volume:create": ["role":"compute-user"],
  55. "volume:get_all": ["role":"compute-user"],
  56. "volume:get_volume_metadata": ["role":"compute-user"],
  57. "volume:get_snapshot": ["role":"compute-user"],
  58. "volume:get_all_snapshots": ["role":"compute-user"],
  59. "network:get_all_networks": ["role":"compute-user"],
  60. "network:get_network": ["role":"compute-user"],
  61. "network:delete_network": ["role":"compute-user"],
  62. "network:disassociate_network": ["role":"compute-user"],
  63. "network:get_vifs_by_instance": ["role":"compute-user"],
  64. "network:allocate_for_instance": ["role":"compute-user"],
  65. "network:deallocate_for_instance": ["role":"compute-user"],
  66. "network:validate_networks": ["role":"compute-user"],
  67. "network:get_instance_uuids_by_ip_filter": ["role":"compute-user"],
  68. "network:get_floating_ip": ["role":"compute-user"],
  69. "network:get_floating_ip_pools": ["role":"compute-user"],
  70. "network:get_floating_ip_by_address": ["role":"compute-user"],
  71. "network:get_floating_ips_by_project": ["role":"compute-user"],
  72. "network:get_floating_ips_by_fixed_address": ["role":"compute-user"],
  73. "network:allocate_floating_ip": ["role":"compute-user"],
  74. "network:deallocate_floating_ip": ["role":"compute-user"],
  75. "network:associate_floating_ip": ["role":"compute-user"],
  76. "network:disassociate_floating_ip": ["role":"compute-user"],
  77. "network:get_fixed_ip": ["role":"compute-user"],
  78. "network:add_fixed_ip_to_instance": ["role":"compute-user"],
  79. "network:remove_fixed_ip_from_instance": ["role":"compute-user"],
  80. "network:add_network_to_project": ["role":"compute-user"],
  81. "network:get_instance_nw_info": ["role":"compute-user"],
  82. "network:get_dns_domains": ["role":"compute-user"],
  83. "network:add_dns_entry": ["role":"compute-user"],
  84. "network:modify_dns_entry": ["role":"compute-user"],
  85. "network:delete_dns_entry": ["role":"compute-user"],
  86. "network:get_dns_entries_by_address": ["role":"compute-user"],
  87. "network:get_dns_entries_by_name": ["role":"compute-user"],
  88. "network:create_private_dns_domain": ["role":"compute-user"],
  89. "network:create_public_dns_domain": ["role":"compute-user"],
  90. "network:delete_dns_domain": ["role":"compute-user"]
  91. }

1.2 服务管理
服务管理有两个主要的概念:
服务
终端
Identity服务同时维护着一份与各个服务相同的用户(如:Compute服务有一个对应的用户名nova),以及一个名为service的特殊服务租户。

相关推荐