设为首页 收藏本站
查看: 1257|回复: 0

[经验分享] openstack中的身份管理

[复制链接]

尚未签到

发表于 2015-4-12 12:04:23 | 显示全部楼层 |阅读模式
  原文:http://blog.iyunv.com/xxfigo/article/details/8785748
  原作者关于openstack的一系列文章http://blog.iyunv.com/xxfigo/article/category/1151758
  基本概念
  
  身份服务有两个主要功能:
  1、用户管理:记录用户和他们的权限
  2、服务目录:提供可用服务和该服务api的终端地址
  身份服务定义了一些非常值得理解的定义:
  用户(User):使用OpenStack云服务的人、系统、服务的数字表示。身份验证服务验证用户传入的请求。用户登录可能被赋予访问资源的令牌。用户可能直接被指定给一个特定租户,好像用户在这个租户中一样。
  认证信息(Credentials):用户持有的,一般情况下只有这个用户知道的数据。用户能够使用这个数据来证明他的身份(因为没有其他人知道这个数据)。例如:
  

  • 配对的用户名和密码
  • 配对的用户名和API key
  • 自己和有你本人照片的驾驶证
  • 颁发给你不被其他人知道的令牌
认证(Authentication):在认证服务背景下,认证是确认用户身份和请求正确性的动作。身份服务确认传入的请求来自于有请求权限的用户。这些请求最初以一系列验证信息的形式出现(用户名和密码,或用户名和API key)。经过初始验证后,身份服务会颁发给用户一个令牌,在后续请求时用户可以用这个令牌说明他们的身份已经经过认证。  
  令牌(Token):令牌是用来访问资源的任意比特的文本。每个令牌有一个访问范围。令牌可在任意时间收回,并在一个有限的时间内有效。在Folsom版本中身份服务支持基于令牌的认证,未来将会支持额外的协议。首要目的是集成服务,不渴望成为一个成熟的身份存储和管理方案。
  

  租户(Tenant):用来分组或隔离资源和(或)身份对象的容器。根据服务运营商,租户可以映射成一个客户、账户、组织或项目。
  服务(Service):一个OpenStack服务,例如计算(nova),对象存储(swift)或镜像服务(glance)。服务提供一个或多个用户可以访问资源和执行(可能有用的)操作的端点。
  端点(Endpoint):一个可通过网络访问的服务地址,通常使用URL描述。如果使用扩展,可以创建端点模板,它代表了所有可跨区域访问的服务。
  角色(Role):可执行一特定系列操作的用户特性。角色包括一系列权利和特权。用户可继承其所属角色的权利和特权。在身份服务中,颁发给用户的令牌包括用户能承担的角色列表。这个用户调用的服务决定他们怎样解释这个用户所属的角色,以及每个角色授予访问的操作和资源。
DSC0000.png

  用户管理
  用户身份管理有三个主要的概念:
  

  • 用户Users
  • 租户Tenants
  • 角色Roles
用户代表一个人,他持有相关的信息,例如用户名、密码、电子邮件。下面的例子是创建一个名为“alice”的用户:  
  



[plain] viewplaincopy

  • $ keystone user-create --name=alice --pass=mypassword123 --email= alice@example.com  

租户可以看做是一个项目、分组或组织。当你向OpenStack服务发送请求时,你必须之地一个租户。例如如果你要向计算服务请求查询运行实例的列表,你将收到在你查询里指定租户内的运行实例列表。下面的例子创建一个名为“acme”的租户。  
  



[plain] viewplaincopy

  • $ keystone tenant-create --name=acme  

注意!因为在以前的OpenStack计算版本中使用术语“项目”来代替租户,一些命令行工具使用--project_id代替--tenant-id或--os-tenant-id指定租户ID。  
  角色归纳了给定租户下允许用户执行的操作。以下例子创建一个名为“compute-user"的角色:
  



[plain] viewplaincopy

  • $ keystone role-create --name=compute-user  

注意!这取决于单个的服务(比如计算服务和镜像服务)分配这些角色的意义。至于身份服务而言,角色只是一个简单的名字。  
  身份服务将一个用户与租户、角色关联。继续我们前面的例子,我们希望在租户“acme”中给用户”alice”分配“compute-user”权限。
  



[plain] viewplaincopy

  • $ keystone user-list  
  • +--------+---------+-------------------+--------+  
  • | id | enabled | email | name |  
  • +--------+---------+-------------------+--------+  
  • | 892585 | True | alice@example.com | alice |  
  • +--------+---------+-------------------+--------+  
  • $ keystone role-list  
  • +--------+--------------+  
  • | id | name |  
  • +--------+--------------+  
  • | 9a764e | compute-user |  
  • +--------+--------------+  
  • $ keystone tenant-list  
  • +--------+------+---------+  
  • | id | name | enabled |  
  • +--------+------+---------+  
  • | 6b8fd2 | acme | True |  
  • +--------+------+---------+  
  • $ keystone user-role-add --user=892585 --role=9a764e --tenant-id=6b8fd2  

  可以在不同的租户中给用户分配不同的角色。例如Alice可以在租户“Cyberdyne”中拥有“admin”角色。在同一个租户中,也可以给用户分配多个角色。
  /etc/[SERVICE_CODENAME]/policy.json控制给定服务允许用户进行的操作。例如/etc/nova/policy.json指定计算服务的访问策略,/etc/glance/policy.json指定镜像服务的访问策略,/etc/keystone/policy.json指定身份服务的访问策略。
  计算、身份、镜像服务中默认的policy.json文件只有一个“admin"角色:里面所有不需要admin角色的操作可以被租户中任意角色的用户访问。
  如果你希望在例如计算服务中限制用户执行操作,你需要在身份服务中创建角色,然后修改/etc/nova/policy.json文件使这个角色应用到计算操作中。
  例如,下面/etc/nova/policy.json中的这一行指定对用户创建卷不做限制:不论用户在租户中是有何种角色,他们都可以在租户中创建卷。
  



[plain] viewplaincopy

  • "volume:create":[],  
如果你希望限制当前租户中有”compute-user"角色的用户才能创建卷,可以增加“role:compute-user",例如这样:  
  



[plain] viewplaincopy

  • "volume:create": ["role:compute-user"],  

如果我们希望限制所有的计算服务请求都需要这个角色,策略文件是这样的:  
  



[plain] viewplaincopy

  • {  
  • "admin_or_owner": [["role:admin"], ["project_id: %(project_id)s"]],  
  • "default": [["rule:admin_or_owner"]],  
  • "compute:create": ["role":"compute-user"],  
  • "compute:create:attach_network": ["role":"compute-user"],  
  • "compute:create:attach_volume": ["role":"compute-user"],  
  • "compute:get_all": ["role":"compute-user"],  
  • "admin_api": [["role:admin"]],  
  • "compute_extension:accounts": [["rule:admin_api"]],  
  • "compute_extension:admin_actions": [["rule:admin_api"]],  
  • "compute_extension:admin_actions:pause": [["rule:admin_or_owner"]],  
  • "compute_extension:admin_actions:unpause": [["rule:admin_or_owner"]],  
  • "compute_extension:admin_actions:suspend": [["rule:admin_or_owner"]],  
  • "compute_extension:admin_actions:resume": [["rule:admin_or_owner"]],  
  • "compute_extension:admin_actions:lock": [["rule:admin_api"]],  
  • "compute_extension:admin_actions:unlock": [["rule:admin_api"]],  
  • "compute_extension:admin_actions:resetNetwork": [["rule:admin_api"]],  
  • "compute_extension:admin_actions:injectNetworkInfo": [["rule:admin_api"]],  
  • "compute_extension:admin_actions:createBackup": [["rule:admin_or_owner"]],  
  • "compute_extension:admin_actions:migrateLive": [["rule:admin_api"]],  
  • "compute_extension:admin_actions:migrate": [["rule:admin_api"]],  
  • "compute_extension:aggregates": [["rule:admin_api"]],  
  • "compute_extension:certificates": ["role":"compute-user"],  
  • "compute_extension:cloudpipe": [["rule:admin_api"]],  
  • "compute_extension:console_output": ["role":"compute-user"],  
  • "compute_extension:consoles": ["role":"compute-user"],  
  • "compute_extension:createserverext": ["role":"compute-user"],  
  • "compute_extension:deferred_delete": ["role":"compute-user"],  
  • "compute_extension:disk_config": ["role":"compute-user"],  
  • "compute_extension:extended_server_attributes": [["rule:admin_api"]],  
  • "compute_extension:extended_status": ["role":"compute-user"],  
  • "compute_extension:flavorextradata": ["role":"compute-user"],  
  • "compute_extension:flavorextraspecs": ["role":"compute-user"],  
  • "compute_extension:flavormanage": [["rule:admin_api"]],  
  • "compute_extension:floating_ip_dns": ["role":"compute-user"],  
  • "compute_extension:floating_ip_pools": ["role":"computeuser"],  
  • "compute_extension:floating_ips": ["role":"compute-user"],  
  • "compute_extension:hosts": [["rule:admin_api"]],  
  • "compute_extension:keypairs": ["role":"compute-user"],  
  • "compute_extension:multinic": ["role":"compute-user"],  
  • "compute_extension:networks": [["rule:admin_api"]],  
  • "compute_extension:quotas": ["role":"compute-user"],  
  • "compute_extension:rescue": ["role":"compute-user"],  
  • "compute_extension:security_groups": ["role":"compute-user"],  
  • "compute_extension:server_action_list": [["rule:admin_api"]],  
  • "compute_extension:server_diagnostics": [["rule:admin_api"]],  
  • "compute_extension:simple_tenant_usage:show": [["rule:admin_or_owner"]],  
  • "compute_extension:simple_tenant_usage:list": [["rule:admin_api"]],  
  • "compute_extension:users": [["rule:admin_api"]],  
  • "compute_extension:virtual_interfaces": ["role":"computeuser"],  
  • "compute_extension:virtual_storage_arrays": ["role":"computeuser"],  
  • "compute_extension:volumes": ["role":"compute-user"],  
  • "compute_extension:volumetypes": ["role":"compute-user"],  
  • "volume:create": ["role":"compute-user"],  
  • "volume:get_all": ["role":"compute-user"],  
  • "volume:get_volume_metadata": ["role":"compute-user"],  
  • "volume:get_snapshot": ["role":"compute-user"],  
  • "volume:get_all_snapshots": ["role":"compute-user"],  
  • "network:get_all_networks": ["role":"compute-user"],  
  • "network:get_network": ["role":"compute-user"],  
  • "network:delete_network": ["role":"compute-user"],  
  • "network:disassociate_network": ["role":"compute-user"],  
  • "network:get_vifs_by_instance": ["role":"compute-user"],  
  • "network:allocate_for_instance": ["role":"compute-user"],  
  • "network:deallocate_for_instance": ["role":"compute-user"],  
  • "network:validate_networks": ["role":"compute-user"],  
  • "network:get_instance_uuids_by_ip_filter": ["role":"computeuser"],  
  • "network:get_floating_ip": ["role":"compute-user"],  
  • "network:get_floating_ip_pools": ["role":"compute-user"],  
  • "network:get_floating_ip_by_address": ["role":"compute-user"],  
  • "network:get_floating_ips_by_project": ["role":"computeuser"],  
  • "network:get_floating_ips_by_fixed_address": ["role":"computeuser"],  
  • "network:allocate_floating_ip": ["role":"compute-user"],  
  • "network:deallocate_floating_ip": ["role":"compute-user"],  
  • "network:associate_floating_ip": ["role":"compute-user"],  
  • "network:disassociate_floating_ip": ["role":"compute-user"],  
  • "network:get_fixed_ip": ["role":"compute-user"],  
  • "network:add_fixed_ip_to_instance": ["role":"compute-user"],  
  • "network:remove_fixed_ip_from_instance": ["role":"computeuser"],  
  • "network:add_network_to_project": ["role":"compute-user"],  
  • "network:get_instance_nw_info": ["role":"compute-user"],  
  • "network:get_dns_domains": ["role":"compute-user"],  
  • "network:add_dns_entry": ["role":"compute-user"],  
  • "network:modify_dns_entry": ["role":"compute-user"],  
  • "network:delete_dns_entry": ["role":"compute-user"],  
  • "network:get_dns_entries_by_address": ["role":"compute-user"],  
  • "network:get_dns_entries_by_name": ["role":"compute-user"],  
  • "network:create_private_dns_domain": ["role":"compute-user"],  
  • "network:create_public_dns_domain": ["role":"compute-user"],  
  • "network:delete_dns_domain": ["role":"compute-user"]  
  • }  


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-56262-1-1.html 上篇帖子: openstack 流量控制 下篇帖子: 《openstack 和hadoop的区别是什么?》
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表