属性保护¶
Glance 中有两种类型的镜像属性
核心属性,由镜像 schema 指定。
元属性,是可以添加到镜像的任意键/值对。
通过 Glance 的公共 API 调用访问元属性可能会受到属性保护配置文件中特定用户集的限制。 Glance 还保留了 os_glance 元属性命名空间供自身使用,并且将拒绝任何 API 用户设置任何以此为前缀的属性。
本文档详细解释了如何配置属性保护以及它们适用于哪些方面。
构建属性保护配置文件¶
属性保护配置文件遵循 Glance API 配置文件的格式,该格式由节组成,以 [section] 标题开头,后跟 name = value 条目。每个节标题都是与要保护的一组属性匹配的正则表达式。
注意
节标题必须编译为有效的正则表达式,否则 glance api 服务将无法启动。正则表达式将由 python 的 re 模块处理,该模块类似于 PERL。
每个节描述四个键值对,其中键是 create/read/update/delete 中的一个,值是允许在 Glance API 中执行该操作的逗号分隔的用户角色列表。 如果缺少任何键,则 glance api 服务将无法成功启动。
在用户角色列表中,@ 表示所有角色,! 表示没有角色。 如果为同一规则指定了 @ 和 !,则 glance api 服务将无法启动
注意
每个属性操作只允许一个策略规则。 如果指定了多个规则,则 glance api 服务将无法启动。
应在 [DEFAULT] 部分的 glance-api.conf 中指定文件路径,如下所示。
property_protection_file=/path/to/file
如果未指定此配置值,则不会强制执行属性保护。 如果路径无效,glance api 服务将无法成功启动。
文件可以使用角色或策略来描述属性保护。应在 [DEFAULT] 部分的 glance-api.conf 中指定配置值,如下所示。
property_protection_rule_format=<roles|policies>
property_protection_rule_format 的默认值为 roles。
属性保护按照配置文件中指定的顺序应用。这意味着,例如,如果在文件顶部指定了一个包含 [.*] 的节,则将忽略所有后续节。
如果属性与任何给定规则都不匹配,则所有操作将对所有角色禁用。
如果操作拼写错误或省略,则该操作将对所有角色禁用。
禁止 read 操作也会禁止 update/delete 操作。
成功的 HTTP 请求将返回状态 200 OK。如果用户无权执行请求的操作,将返回 403 Forbidden。