openstack_项目与用户的管理


openstack_项目与用户管理


1、项目或租户?

在OpenStack用户界面和一些文档中,有时候你会看到“项目”是指一组用户,而有时候你会也看到用来替代“租户”,这两种术语是可以通用的。

2、管理项目

一个用户必须至少属于一个项目,也可以属于多个项目。因此,您应该至少添加一个项目,然后再添加用户。

2.1 添加项目

通过仪表盘来创建一个项目:

用管理员用户登录。
在左侧导航栏中选择“项目”按钮。
在右上角,点击“创建项目”按钮。
这将会弹出一个对话框,有项目名称和一个可选的描述,在底部有一个复选框来设置这个项目的状态,默认是开启的。


该界面可以看到可以添加项目成员和调整项目的配额。我们在讨论过这些后在做修改,当然你也可以一次性处理完上面的操作。

通过命令行创建一个项目(CLI):

通过命令行添加一个项目,你需要使用keystone工具,使用”租户”代替”项目”:

# keystone tenant-create --name=demo
这将创建一个新项目命名为“demo”。可以用 –description <tenant-description> 参数添加一些描述,这是非常有用的。也可以用 –enable false参数创建一个禁用状态的租户,不指定是默认开启状态。
# keystone help tenant-create
也可以获得该命令的帮助。

2.2 配额

OpenStack提供了大量配额选项,并都是针对租户(而不是用户)。作为一个管理用户在仪表盘中你可以看到(但不能编辑)一个”配额”导航栏的默认配额。
这些默认项目配额都是在云控制器上nova.conf里默认的。

如果你不更改配额限制,系统会使用以下默认配额。

nova.conf文件里配额配置选项的描述:

选项默认值     (类型) 描述
quota_cores=20     (IntOpt) 允许租户使用的CPU核数
quota_floating_ips=10     (IntOpt) 允许租户使用的浮动IP数
quota_gigabytes=1000     (IntOpt) 设置租户的网络带宽
quota_injected_file_content_bytes=10240     (IntOpt) 允许注入文件的字节数
quota_injected_file_path_bytes=255     (IntOpt) 允许注入文件路径的字节数
quota_injected_files=5     (IntOpt) 允许注入文件的数量
quota_instances=10     (IntOpt) 允许租户创建实例的数量
quota_key_pairs=100     (IntOpt) 允许每个用户的密钥对数量
quota_metadata_items=128     (IntOpt) 允许每个实例的元数据项数量
quota_ram=51200     (IntOpt) 允许租户使用的内存大小
quota_security_group_rules=20     (IntOpt) 每个安全组中规则的数量
quota_security_groups=10     (IntOpt) 每个租户创建安全组的数量
quota_volumes=10     (IntOpt) 每个租户使用逻辑卷的数量
其它配置选项(http://docs.openstack.org/folsom/openstack-compute/admin/content/list-of-compute-config-options.html)

最简单的方式来改变默认的项目配额就是在你的云控制器上编辑nova.conf文件。配额是由 nova-schedler 服务执行,所以你一旦改变默认配额选项,你必须重新启动该服务。

通过仪表盘来查看和编辑个别项目的配额:

使用“项目”导航按钮链接获得到您现有项目的列表。
找到要修改的项目并从下拉菜单中选择“Modify Quotas”,修改相应的配额,最后点击“Save”完成修改。
通过命令行方式查看和编辑个别项目的配额,请按照下列步骤操作:你可以在命令行方式访问和修改配额,但这有点复杂。这是通过使用keystone来获取租户的ID,然后再用nova-manage查看。

1. 要列出一个项目的配额,必须要先使用keystone客户端工具找到它的ID:
# keystone tenant-list | grep <tenant-name>
98333a1a28e746fa8c629c83a818ad57 | <tenant-name> | True |

2. 为了查看项目的配额,我们必须使用上面例子中获取的ID:
# nova-manage project quota 98333a1a28e746fa8c629c83a818ad57
metadata_items: 128
volumes: 10
gigabytes: 1000
ram: 6291456
security_group_rules: 20
instances: 1024
security_groups: 10
injected_file_content_bytes: 10240
floating_ips: 10
injected_files: 5
cores: 2048
注意:nova-manage project quota 后面必须指定ID,输入项目名称会报错。

现在给 floating_ips 数量提高至20,我们可以用 –key 和 –value 来增加 ip 数:
# nova-manage project quota 98333a1a28e746fa8c629c83a818ad57 --key floating_ips --value 20
metadata_items: 128
volumes: 10
gigabytes: 1000
ram: 6291456
security_group_rules: 20
instances: 1024
security_groups: 10
injected_file_content_bytes: 10240
floating_ips: 20
injected_files: 5
cores: 2048

3、用户管理

在命令行用户管理用户非常不方便。需要多条命令才能完成一个任务,并且要是用UUID,而不是象征性的名字。在实践中,人们通常不会使用命令行管理用户。
幸运的是,OpenStack 仪表盘提供了一个合理的接口。此外,许多网站编写的自定义脚本也可能会适合您。

3.1 创建用户

要创建一个新的用户,您将需要以下信息:

用户名
邮箱
密码
所属主要项目
角色
用户名和电子邮件都是不言而喻的,设置和更改密码的认证服务,需要管理员权限。
在 Folsom 版本中,用户不能更改自己的密码。创建完用户和密码后,必须牢记分配的用户名和密码。项目必须在个创建用户之前存在。

可选的角色包括
“member”: 一个典型的用户。
“admin”: 超级管理员用户,在所有项目中,你应该谨慎使用它。
可以定义其它角色,但很少这样做。

创建用户只是在仪表盘上的一个web表单形式,”用户”链接在“Admin”导航栏上,然后点击右上角“创建用户”按钮。

修改用户也从“Users”的页面。如果你有大量的用户,这个页面会很拥挤。在页面的顶部有”Filter”可以用来搜索相关用户列表,与创建用户对话框相似,可以通过”Edit”
或下拉菜单中的动作来修改用户信息。

3.2 关联用户到项目

用户可以关联一个项目,也可以关联多个项目。
在仪表盘“项目”页面可以关联现有的用户到一个额外的项目或删除它们从一个旧的项目,通过选择”项目”页面的指示板“修改用户”:
在标题为“All Users”表格中,将会列出这个项目所有的用户。用户过多,显示可能会很长,在顶部有过滤器可以限制输入用户名来搜索。
点击”+”将添加一个用户到项目,然后点击“-“将删除它们。

这里存在危险性,就是可能会改变成员的角色。在“Project Members”列表中的用户名后面的下拉列表中,一般情况下,这个值应该被设置为“Member”,这个例子意在说明,管理员用户这个值是“admin”。 它是非常重要的,“admin”是全局用户,而不是每个项目,因此授予用户admin角色时候就等于赋予该用户在任何项目里管理整个云的权利。

3.3 自定义授权(policy)

简单来说,policy就是用来控制某一个User在某个Tenant中的权限的。这个User能执行什么操作,不能执行什么操作,就是通过policy机制来实现的。直观的看,policy就是一个json文件,位于/etc/[SERVICE_CODENAME]/policy.json中,每一个服务都有一个对应的policy.json文件,通过配置这个文件,实现了对User的权限管理。
例如policy.json文件中两行:
...
"admin_or_owner":  [["is_admin:True"], ["project_id:%(project_id)s"]],
"compute:create": [["rule:admin_or_owner"]],
...
这是定义创建虚拟机操作的策略。表示只有admin或tenant内的用户可以进行创建虚拟机操作。

缺省的授权设置只允许管理用户创建代表不用的项目资源。OpenStack处理两种类型的授权策略:

基于操作:策略为特定的操作指定访问权限。
基于资源:对特定资源的访问是否可能授权是根据配置的资源的权限来的。

策略引擎读取policy.json文件的条目。这个文件的实际位置可能会有所不同,它通常是在/etc/nova/policy.json。在系统运行时,您可以更新条目,而不必重新启动服务。
目前更新这些的唯一方法就是编辑策略文件。

OpenStack的服务的策略引擎直接匹配策略,一个规则表明了这些策略的元素。例如,在一个compute:create:[[“rule:admin_or_owner”]]声明,这项策略是compute:create并且规则是admin_or_owner。

一个授权策略可以由一个或多个规则组成。

规则:

基于角色的规则:成功提交请求的用户具有指定的角色。比如需要管理员角色“role:admin”才是成功的。
字段规则:如果字段指定的资源在当前请求匹配一个特定的值就评估成功。例如“field:networks:shared=True共享的网络资源被设置为True。
通用规则:比较属性与用户的安全凭据中提取的一种属性的资源和评估成果比较成功的。比如“tenant_id:%(tenant_id)s”是成功的,如果租户标识符在资源里等于租户标识用户提交请求。

以下是nova里一段默认policy.json文件的内容:

{
“context_is_admin”: [[“role:admin”]],
“admin_or_owner”: [[“is_admin:True”], [“project_id:%(project_id)s”]],   [1]
“default”: [[“rule:admin_or_owner”]],   [2]
“compute:create”: [],
“compute:create:attach_network”: [],
“compute:create:attach_volume”: [],
“compute:get_all”: [],
“admin_api”: [[“is_admin:True”]],
“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:migrate”: [[“rule:admin_api”]],
“compute_extension:aggregates”: [[“rule:admin_api”]],
“compute_extension:certificates”: [],
“compute_extension:cloudpipe”: [[“rule:admin_api”]],
...
“compute_extension:flavorextraspecs”: [],
“compute_extension:flavormanage”: [[“rule:admin_api”]],   [3]
}

[1] 一个规则,如果当前用户是管理员或请求的资源的所有者(租户标识符相等)。
[2] 默认的策略,如果API操作不匹配policy.json中的任何策略,则始终评估这条策略。
[3] 一个策略,仅限于管理员使用管理API时,才可以操作flavors。

在很多情况下,当用户在你的云中会破坏其他用户,有时故意和恶意,其它可能会意外。了解情况,可以让你做出更好的决定如何处理。

例如:A组的用户有非常计算密集型任务的情况下,利用大量的计算资源。这时负载的计算节点上,会影响其他用户。在这种情况下,请查看您的用户使用的情况。对这种情况,高密度计算方案是常见的,可以把您的云主机聚合或应适当的规划隔离。

另一个例子是一个用户消耗了非常大的带宽量。再次,关键是要了解用户在做什么。如果他们自然是需要大量的带宽,您可能需要限制其传输速率,以不影响其他用户或将它们移动到一个区域更多的可用带宽里。另一方面,也许用户的实例被黑客入侵,并发动DDOS攻击的成为僵尸网络的一部分。这个问题的解决方案是一样的,如果网络上的任何其他的服务器已经被黑客入侵。联系用户,使他们有时间作出反应。如果他们不回应,关闭实例。

最后一个例子是,如果一个用户反复使用云资源。联系用户,并了解他们正在尝试做的。也许他们不明白他们在做什么是不适当的或可能有问题的资源,他们正在试图访问,是造成他们请求队列或滞后的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值