第 7 章 keystone


下面的章节包含有关 keystone 服务中的配置选项的信息。

7.1. keystone.conf

本节包含 /etc/keystone/keystone.conf 文件的选项。

7.1.1. DEFAULT

下表概述了 /etc/keystone/keystone.conf 文件中的 [DEFAULT] 组下可用的选项。

.

配置选项 = 默认值类型Description

admin_token = None

字符串值

不建议使用 此功能。反之,使用 keystone-manage bootstrap 命令。此选项的值被视为"共享 secret",可用于通过 API 启动 Keystone。此"令牌"不代表用户(它没有身份),也没有明确的授权(有效绕过大多数授权检查)。如果设置为 None,则忽略该值,并且 admin_token 中间件被有效地禁用。

conn_pool_min_size = 2

整数值

连接过期策略的池大小限制

conn_pool_ttl = 1200

整数值

池中闲置连接的生存时间

control_exchange = keystone

字符串值

主题范围的默认交换。可以被 transport_url 选项中指定的交换名称覆盖。

debug = False

布尔值

如果设置为 true,则日志级别将设为 DEBUG,而不是默认的 INFO 级别。

default_log_levels = ['amqp=WARN', 'amqplib=WARN', 'boto=WARN', 'qpid=WARN', 'sqlalchemy=WARN', 'suds=INFO', 'oslo.messaging=INFO', 'oslo_messaging=INFO', 'iso8601=WARN', 'requests.packages.urllib3.connectionpool=WARN', 'urllib3.connectionpool=WARN', 'websocket=WARN', 'requests.packages.urllib3.util.retry=WARN', 'urllib3.util.retry=WARN', 'keystonemiddleware=WARN', 'routes.middleware=WARN', 'stevedore=WARN', 'taskflow=WARN', 'keystoneauth=WARN', 'oslo.cache=INFO', 'oslo_policy=INFO', 'dogpile.core.dogpile=INFO']

列出值

以 logger=LEVEL 的形式列出软件包日志级别列表。如果设置了 log_config_append,则忽略这个选项。

default_publisher_id = None

字符串值

用于传出通知的默认 publisher_id。如果未定义,Keystone 将默认为使用服务器的主机名。

executor_thread_pool_size = 64

整数值

当 executor 为 threading 或 eventle 时,executor 线程池的大小。

fatal_deprecations = False

布尔值

启用或禁用弃用的严重状态。

insecure_debug = False

布尔值

如果设置为 true,则服务器将返回 HTTP 响应中的信息,以允许未经身份验证的或经过身份验证的用户获取比正常身份验证的更多信息,例如有关身份验证失败的原因的更多详情。这对调试可能很有用,但不安全。

`instance_format = [instance: %(uuid)s] `

字符串值

通过日志消息传递的实例格式。

`instance_uuid_format = [instance: %(uuid)s] `

字符串值

通过日志消息传递的实例 UUID 格式。

list_limit = None

整数值

集合中返回的最大实体数。然后,可以通过在适当的部分(如 [assignment])中指定 list_limit 来覆盖这个全局限制。默认不设置任何限制。在大型部署中,建议您将其设置为合理的数字,以防止像列出所有用户和项目一样操作,从而给系统带来不必要的负载。

log-config-append = None

字符串值

日志配置文件的名称。此文件附加到任何现有日志记录配置文件中。有关日志记录配置文件的详情,请查看 Python 日志记录模块文档。请注意,当使用日志记录配置文件时,会在配置文件中设置所有日志记录配置,并忽略其他日志记录配置选项(例如 log-date-format)。

log-date-format = %Y-%m-%d %H:%M:%S

字符串值

在日志记录中定义 %%(asctime) s 的格式字符串。默认: %(default) s。如果设置了 log_config_append,则忽略这个选项。

log-dir = None

字符串值

(可选)用于相对 log_file 路径的基础目录。如果设置了 log_config_append,则忽略这个选项。

log-file = None

字符串值

(可选)要将日志输出发送到的日志文件名称。如果没有设置默认值,日志记录将进入由 use_stderr 定义的 stderr。如果设置了 log_config_append,则忽略这个选项。

log_rotate_interval = 1

整数值

轮转日志文件前的时间长度。除非 log_rotation_type 设为 "interval",否则此选项会被忽略。

log_rotate_interval_type = days

字符串值

轮转间隔类型。调度下一个轮转时使用上次文件更改(或服务启动时的时间)。

log_rotation_type = none

字符串值

日志轮转类型。

logging_context_format_string = %(asctime) s.%(msecs) 03d %(process) d %(levelname) s %(name) s [%(global_request_id) s %(request_id) s %(user_identity) s] %(instance) s%(message) s

字符串值

用于带有上下文的日志消息的格式字符串。由 oslo_log.formatters.ContextFormatter 使用

logging_debug_format_suffix = %(funcName)s %(pathname)s:%(lineno)d

字符串值

当消息的日志记录级别为 DEBUG 时,要附加到日志消息的额外数据。由 oslo_log.formatters.ContextFormatter 使用

logging_default_format_string = %(asctime) s.%(msecs) 03d %(process) d %(levelname) s %(name) s [-] %(instance) s%(message) s

字符串值

上下文未定义时用于日志消息的格式字符串。由 oslo_log.formatters.ContextFormatter 使用

logging_exception_prefix = %(asctime)s.%(msecs)03d %(process)d ERROR %(name)s %(instance)s

字符串值

使用这种格式为每行例外输出加上前缀。由 oslo_log.formatters.ContextFormatter 使用

logging_user_identity_format = %(user) s %(project) s %(system_scope) s %(user_domain) s %(project_domain) s

字符串值

定义 logging_context_format_string 中使用的 %(user_identity) s 格式字符串。由 oslo_log.formatters.ContextFormatter 使用

max_logfile_count = 30

整数值

轮转日志文件的最大数量。

max_logfile_size_mb = 200

整数值

日志文件的最大大小(以 MB 为单位)。如果 "log_rotation_type" 没有设置为 "size",则忽略这个选项。

max_param_size = 64

整数值

限制用户和项目 ID/名称的大小。

max_project_tree_depth = 5

整数值

项目层次结构的最大深度,不包括层次结构顶部的项目作为域。警告:将其设置为一个大的值可能会对性能造成负面影响。

max_token_size = 255

整数值

[DEFAULT] max_param_size 类似,但为令牌值提供例外。使用 Fernet 令牌时,这可设为 low,设为 255。

notification_format = cadf

字符串值

定义 identity 服务事件的通知格式。基本 通知仅包含有关正在操作的资源的信息。cadf 通知具有相同的信息,以及有关事件发起方的信息。cadf 选项与 基本选项完全向后兼容,但完全兼容 CADF,建议在审计用例中使用。

notification_opt_out = ['identity.authenticate.success', 'identity.authenticate.pending', 'identity.authenticate.failed']

多值

您可以通过显式选择不使用来减少通知 keystone 发出的数量。Keystone 不会发出与此列表中表达的模式匹配的通知。值应该采用 identity.<resource_type>.<operation&gt; 的形式。默认情况下,所有与身份验证相关的通知都会被自动禁止。此字段可多次设置,以便选择不使用多个通知主题。例如,以下会阻止通知描述用户创建或成功的身份验证事件: notification_opt_out=identity.user.create notification_opt_out=identity.authenticate.success

public_endpoint = None

URI 值

公告给客户端的 Keystone 的基本公共端点 URL (注意:这不会影响 Keystone 侦听连接的方式)。默认为请求的基本主机 URL。例如,如果 keystone 收到对 http://server:5000/v3/users 的请求,则此选项将自动被视为 http://server:5000。只有在基本 URL 的值包含 keystone 不自动推断的路径时,或者应该在不同主机上找到端点时,才需要设置选项。

publish_errors = False

布尔值

启用或禁用错误事件的发布。

rate_limit_burst = 0

整数值

每个 rate_limit_interval 的最大日志信息数。

rate_limit_except_level = CRITICAL

字符串值

通过速率限制使用的日志级别名称:CRITICAL、ERROR、INFO、WARNING、DEBUG 或空字符串。不过滤级别大于或等于 rate_limit_except_level 的日志。空字符串表示过滤所有级别。

rate_limit_interval = 0

整数值

日志速率限制的时间间隔、秒数。

rpc_conn_pool_size = 30

整数值

RPC 连接池的大小。

rpc_ping_enabled = False

布尔值

添加端点以回答 ping 调用。端点名为 oslo_rpc_server_ping

rpc_response_timeout = 60

整数值

等待来自调用的响应的秒数。

strict_password_check = False

布尔值

如果设置为 true,则对密码操作执行严格的密码长度检查。如果密码超过最大长度,则操作将失败,并显示 HTTP 403 Forbidden 错误。如果设置为 false,则密码会自动截断到最大长度。

syslog-log-facility = LOG_USER

字符串值

syslog 工具可接收日志行。如果设置了 log_config_append,则忽略这个选项。

transport_url = rabbit://

字符串值

用于连接到消息传递后端的网络地址和可选用户凭证,采用 URL 格式。预期的格式是:

driver://[user:pass@]host:port[,[userN:passN@]hostN:portN]/virtual_host?query

示例:rabbit://rabbitmq:password@127.0.0.1:5672//

有关 URL 中字段的详情,请查看 oslo_messaging.TransportURL 文档 https://docs.openstack.org/oslo.messaging/latest/reference/transport.html

use-journal = False

布尔值

为日志记录启用 journald。如果在 systemd 环境中运行,您可能需要启用日志支持。这样做将使用日志原生协议,该协议包括日志消息外的结构化元数据。如果设置了 log_config_append,则忽略此选项。

use-json = False

布尔值

使用 JSON 格式进行日志记录。如果设置了 log_config_append,则忽略这个选项。

use-syslog = False

布尔值

使用 syslog 进行日志记录。现有 syslog 格式为 DEPRECATED,稍后将更改为遵循 RFC5424。如果设置了 log_config_append,则忽略这个选项。

use_eventlog = False

布尔值

日志输出到 Windows 事件日志。

use_stderr = False

布尔值

将日志输出到标准错误。如果设置了 log_config_append,则忽略这个选项。

watch-log-file = False

布尔值

使用旨在监视文件系统的日志记录处理程序。当移动或删除日志文件时,此处理程序将立即打开具有指定路径的新日志文件。只有在指定了 log_file 选项并使用 Linux 平台时才有意义。如果设置了 log_config_append,则忽略这个选项。

7.1.2. application_credential

下表概述了 /etc/keystone/keystone.conf 文件中的 [application_credential] 组下可用的选项。

表 7.1. application_credential
配置选项 = 默认值类型Description

cache_time = None

整数值

快速缓存应用程序凭证数据的时间(以秒为单位)。除非启用了全局缓存,否则这无效。

caching = True

布尔值

为应用程序凭证缓存切换。除非启用了全局缓存,否则这无效。

driver = sql

字符串值

keystone.application_credential 命名空间中的应用程序凭证后端驱动程序的入口点。Keystone 仅提供 sql 驱动程序,因此除非提供了自定义入口点,否则无需更改此原因。

user_limit = -1

整数值

允许用户创建的最大应用程序凭证数。值 -1 表示无限。如果没有设置限制,用户会被允许创建应用程序凭证,这会导致在 keystone 数据库中滥用 keystone 数据库,或打开 keystone 进入 DoS 攻击。

7.1.3. 分配

下表概述了 /etc/keystone/keystone.conf 文件中的 [assignment] 组下可用的选项。

表 7.2. 分配
配置选项 = 默认值类型Description

driver = sql

字符串值

分配后端驱动程序的入口点(角色分配存储在 keystone.assignment 命名空间中)。keystone 本身仅提供 SQL 驱动程序。除非为 keystone 编写专有驱动程序,否则您不需要设置这个选项。

prohibited_implied_role = ['admin']

列出值

禁止成为含义的角色名称列表。

7.1.4. auth

下表概述了 /etc/keystone/keystone.conf 文件中的 [auth] 组下可用的选项。

表 7.3. auth
配置选项 = 默认值类型Description

application_credential = None

字符串值

keystone.auth.application_credential 命名空间中的 application_credential auth 插件模块的入口点。除非覆盖 keystone 自己的 application_credential 身份验证插件,否则您不需要设置它。

external = None

字符串值

keystone.auth.external 命名空间中的 external (REMOTE_USER) auth 插件模块的入口点。提供的驱动程序是 DefaultDomainDomain。默认驱动程序为 DefaultDomain,它假定默认域上下文中存在的 REMOTE_USER 变量中的 keystone 指定的用户名标识的所有用户。Domain 选项需要一个额外的环境变量 REMOTE_DOMAIN,其中包含 REMOTE_USER 的域名(如果没有设置 REMOTE_DOMAIN,则改为使用默认域)。除非使用"外部身份验证",否则您不需要设置此项,因为应用服务器(如 Apache)正在处理身份验证而不是 keystone。

mapped = None

字符串值

keystone.auth.mapped 命名空间中的映射 auth 插件模块的入口点。除非覆盖 keystone 自己的 映射 身份验证插件,否则您不需要设置它。

methods = ['external', 'password', 'token', 'oauth1', 'mapped', 'application_credential']

列出值

允许的身份验证方法.注意:如果您目前正在使用联邦,您应该禁用 外部 auth 方法。外部 auth 和 federation 使用 REMOTE_USER 变量。由于 map 和外部插件都被调用来验证请求环境中的属性,可能会导致冲突。

oauth1 = None

字符串值

keystone.auth.oauth1 命名空间中的 OAuth 1.0a auth 插件模块的入口点。除非覆盖 keystone 自己的 oauth1 身份验证插件,否则您不需要设置此项。

password = None

字符串值

keystone.auth.password 命名空间中的 password auth 插件模块的入口点。除非覆盖 keystone 自己的密码身份验证插件,否则您不需要设置它。

token = None

字符串值

keystone.auth.token 命名空间中令牌 auth 插件模块的入口点。除非覆盖 keystone 自己的令牌身份验证插件,否则您不需要设置它。

7.1.5. 缓存

下表概述了 /etc/keystone/keystone.conf 文件中的 [cache] 组下可用的选项。

表 7.4. 缓存
配置选项 = 默认值类型Description

backend = dogpile.cache.null

字符串值

缓存后端模块.对于基于事件线程服务器的或环境,建议使用带有池的 Memcache (oslo_cache.memcache_pool)。对于小于 100 个线程服务器的环境,建议使用 Memcached (dogpile.cache.memcached)或 Redis (dogpile.cache.redis)。带有单一服务器实例测试环境可以使用 dogpile.cache.memory 后端。

backend_argument = []

多值

提供给 backend 模块的参数。指定每个参数一次这个选项,以传递给 dogpile.cache 后端。示例格式:"<argname>:<value>"。

config_prefix = cache.oslo

字符串值

为缓存区域构建配置字典的前缀。除非存在具有相同配置名称的另一个 dogpile.cache 区域,否则不需要更改此设置。

dead_timeout = 60

浮点值

尝试将节点重新添加到 HashClient 内部机制中的池前的时间(以秒为单位)。

debug_cache_backend = False

布尔值

从缓存后端(缓存密钥、get/set/delete/etc 调用)进行额外的调试。只有在您需要使用键/值查看特定的 cache-backend get/set/delete 调用时,这才有用。通常,这应该设为 false。

enable_retry_client = False

布尔值

启用重试客户端机制来处理失败。这些机制可用于嵌套所有的 pymemcache 客户端。打包程序允许您定义在 attemots 之间等待多少次尝试和等待的时间。

enable_socket_keepalive = False

布尔值

dogpile 的 pymemcache backend 的 socket keepalive 的全局切换

enabled = True

布尔值

缓存的全局切换。

expiration_time = 600

整数值

dogpile.cache 区域中的任何缓存项目的默认 TTL (以秒为单位)。这适用于没有为其定义显式缓存过期时间的任何缓存方法。

hashclient_retry_attempts = 2

整数值

在客户端被标记为死状态并从 HashClient 内部机制中的池中移除客户端的次数。

hashclient_retry_delay = 1

浮点值

在 HashClient 内部机制中应在重试尝试之间传递的时间(以秒为单位)。

memcache_dead_retry = 300

整数值

在再次尝试前 memcached 服务器被视为死的秒数。(dogpile.cache.memcache 和 oslo_cache.memcache_pool 后端)。

`memcache_password = `

字符串值

启用 SASL 的 memcached 密码

memcache_pool_connection_get_timeout = 10

整数值

操作将等待进入 memcache 客户端连接的秒数。

memcache_pool_flush_on_reconnect = False

布尔值

如果 memcache 将在重新连接时清空,则全局切换。(仅限oslo_cache.memcache_pool 后端)。

memcache_pool_maxsize = 10

整数值

每个 memcached 服务器的最大打开连接数。(仅限oslo_cache.memcache_pool 后端)。

memcache_pool_unused_timeout = 60

整数值

在关闭之前,与 memcached 的连接在池中保持未使用的秒数。(仅限oslo_cache.memcache_pool 后端)。

memcache_sasl_enabled = False

布尔值

如果 SASL_enable 为 true,则启用 SASL (Simple Authentication and SecurityLayer),否则禁用。

memcache_servers = ['localhost:11211']

列出值

memcache 服务器的格式是 "host:port"。这由依赖 Memcached 的后端使用。如果 dogpile.cache.memcachedoslo_cache.memcache_pool 已使用,并且给定主机引用 IPv6 或给定域引用 IPv6,那么您应该为给定地址加上地址系列(inet6)添加前缀(inet6) (e.g inet6[::1]:11211,inet6:[fd12:3456:789a:1::1]:11211,inet6 [controller-0] 211:11211)使用。如果未指定地址系列,则这些后端将使用与 IPv4 对应的默认 inet 地址系列

memcache_socket_timeout = 1.0

浮点值

对每个对服务器调用的超时时间(dogpile.cache.memcache 和 oslo_cache.memcache_pool 后端)。

`memcache_username = `

字符串值

启用 SASL 的 memcached 的用户名

proxies = []

列出值

用于导入的代理类将影响 dogpile.cache 后端功能的方式。参阅 dogpile.cache 文档中有关 changing-backend-behavior 的文档。

retry_attempts = 2

整数值

失败前尝试操作的次数。

retry_delay = 0

浮点值

每次尝试之间休眠的秒数。

socket_keepalive_count = 1

整数值

丢弃连接前应发送的最大 keepalive 探测 TCP 数。应该是一个大于零的正整数。

socket_keepalive_idle = 1

整数值

在 TCP 开始发送 keepalive 探测前,连接需要保持闲置的时间(以秒为单位)。应该是一个大于零的正整数。

socket_keepalive_interval = 1

整数值

单个 keepalive 探测之间的时间(以秒为单位)。应该是一个大于零的正整数。

tls_allowed_ciphers = None

字符串值

为使用 TLS 上下文创建的套接字设置可用密码。它应该是 OpenSSL 密码列表格式的字符串。如果没有指定,则所有启用的 OpenSSL 密码都将可用。

tls_cafile = None

字符串值

以 PEM 格式串联的 CA 证书文件的路径,以建立缓存服务器的真实性。如果 tls_enabled 是 False,则忽略这个选项。

tls_certfile = None

字符串值

PEM 格式的单个文件的路径,其中包含客户端证书以及建立证书真实性所需的任意数量的 CA 证书。仅当需要客户端身份验证时,才需要此文件。如果 tls_enabled 是 False,则忽略这个选项。

tls_enabled = False

布尔值

与缓存服务器捆绑时,用于 TLS 使用的全局切换。

tls_keyfile = None

字符串值

到包含客户端私钥的单个文件的路径。否则,私钥将从 tls_certfile 中指定的文件中获取。如果 tls_enabled 是 False,则忽略这个选项。

7.1.6. catalog

下表概述了 /etc/keystone/keystone.conf 文件中的 [catalog] 组下可用的选项。

表 7.5. catalog
配置选项 = 默认值类型Description

cache_time = None

整数值

缓存目录数据的时间(以秒为单位)。除非同时启用了全局和目录缓存,否则这不起作用。目录数据(服务、端点等)通常不会频繁变化,因此可能需要更长的时间超过全局默认值。

caching = True

布尔值

目录缓存切换。除非启用了全局缓存,否则这无效。在典型的部署中,不需要禁用此功能。

driver = sql

字符串值

keystone.catalog 命名空间中的目录驱动程序的入口点。Keystone 提供 sql 选项(它支持通过 SQL 的基本 CRUD 操作)、模板 选项(从磁盘上的模板目录文件加载目录)和 endpoint_filter.sql 选项(它支持每个项目的任意服务目录)。

list_limit = None

整数值

在目录集合中返回的最大实体数。通常没有设置此功能的原因,因为部署会不常有足够的服务或端点超过合理的限制。

template_file = default_catalog.templates

字符串值

用于模板目录后端的文件的绝对路径。只有在 [catalog] 驱动程序 设置为 模板时,才会使用这个选项

7.1.7. CORS

下表概述了 /etc/keystone/keystone.conf 文件中的 [cors] 组下可用的选项。

表 7.6. CORS
配置选项 = 默认值类型Description

allow_credentials = True

布尔值

指明实际请求可以包含用户凭证

allow_headers = ['X-Auth-Token', 'X-Openstack-Request-Id', 'X-Subject-Token', 'X-Project-Id', 'X-Project-Name', 'X-Project-Domain-Id', 'X-Project-Domain-Name', 'X-Domain-Id', 'X-Domain-Name', 'Openstack-Auth-Receipt']

列出值

指定在实际请求过程中可以使用哪些标头字段名称。

allow_methods = ['GET', 'PUT', 'POST', 'DELETE', 'PATCH']

列出值

指明哪些方法可以在实际请求期间使用。

allowed_origin = None

列出值

指明此资源是否可以与请求"origin"标头中收到的域共享。格式:"<protocol>://<host>[:<port>]",没有结尾的斜杠。示例 :https://horizon.example.com

expose_headers = ['X-Auth-Token', 'X-Openstack-Request-Id', 'X-Subject-Token', 'Openstack-Auth-Receipt']

列出值

指明向 API 公开哪些标头是安全的。默认为 HTTP Simple Headers。

max_age = 3600

整数值

CORS preflight 请求的最大缓存期限。

7.1.8. credential

下表概述了 /etc/keystone/keystone.conf 文件中的 [credential] 组下可用的选项。

表 7.7. credential
配置选项 = 默认值类型Description

auth_ttl = 15

整数值

签名 EC2 或 S3 令牌请求从令牌请求中包含的时间戳有效的时间长度(以分钟为单位)。

cache_time = None

整数值

缓存凭证数据的时间(以秒为单位)。除非启用了全局缓存,否则这无效。

caching = True

布尔值

只在检索用户凭证时切换缓存。除非启用了全局缓存,否则这无效。

driver = sql

字符串值

keystone.credential 命名空间中的凭据后端驱动程序的入口点。Keystone 仅提供 sql 驱动程序,因此除非提供了自定义入口点,否则没有更改此原因。

key_repository = /etc/keystone/credential-keys/

字符串值

包含用于加密和解密存储在凭据后端中的 Fernet 密钥的目录。用于加密凭据的 Fernet 密钥与用于加密 Fernet 令牌的 Fernet 密钥没有关系。这两个密钥集合都应单独管理,并需要不同的轮转策略。不要与用于管理 Fernet 令牌密钥的存储库共享此存储库。

provider = fernet

字符串值

keystone.credential.provider 命名空间中的凭证加密和解密操作的入口点。Keystone 仅提供 fernet 驱动程序,因此除非提供了用于加密和解密凭据的自定义入口点,否则没有理由更改此原因。

user_limit = -1

整数值

允许用户创建的最大凭证数。值 -1 表示无限。如果没有设置限制,则允许用户在 中创建凭证,这可能会导致 keystone 数据库中出现问题或打开 keystone 进入 DoS 攻击。

7.1.9. database

下表概述了 /etc/keystone/keystone.conf 文件中的 [database] 组下可用的选项。

表 7.8. database
配置选项 = 默认值类型Description

backend = sqlalchemy

字符串值

用于数据库的后端。

connection = None

字符串值

用于连接到数据库的 SQLAlchemy 连接字符串。

connection_debug = 0

整数值

SQL 调试信息的详细程度:0=None, 100=Everything。

`connection_parameters = `

字符串值

在连接时附加到连接 URL 上的可选 URL 参数 ; 指定为 param1=value1&param2=value2&…​

connection_recycle_time = 3600

整数值

连接池中存在的连接的时间超过这个秒数,将在下次从池中签出时被替换为新的秒数。

connection_trace = False

布尔值

将 Python 堆栈跟踪作为注释字符串添加到 SQL 中。

db_inc_retry_interval = True

布尔值

如果为 True,将数据库操作重试间隔增加到 db_max_retry_interval。

db_max_retries = 20

整数值

在引发错误前,连接错误或死锁错误时的最大重试次数。设置为 -1 以指定无限重试计数。

db_max_retry_interval = 10

整数值

如果设置了 db_inc_retry_interval,则数据库操作重试之间的最大秒数。

db_retry_interval = 1

整数值

数据库事务重试之间的秒数。

max_overflow = 50

整数值

如果设置,请对带有 SQLAlchemy 的 max_overflow 使用这个值。

max_pool_size = 5

整数值

池中保持打开的最大 SQL 连接数。设置 0 表示没有限制。

max_retries = 10

整数值

在启动过程中重试数据库连接的最大数量。设置为 -1 以指定无限重试计数。

mysql_enable_ndb = False

布尔值

如果为 True,则透明地启用对处理 MySQL 集群(NDB)的支持。弃用自: 12.1.0

适用于 MySQL NDB 集群存储引擎的reason:*Support 已弃用,并将在以后的版本中删除。

mysql_sql_mode = TRADITIONAL

字符串值

用于 MySQL 会话的 SQL 模式。此选项包括默认设置,可覆盖任何 server-set SQL 模式。要使用服务器配置设置的任何 SQL 模式,请将其设置为 no 值。示例:mysql_sql_mode=

mysql_wsrep_sync_wait = None

整数值

对于 Galera,对新连接配置 wsrep_sync_wait 导致性检查。默认为 None,表示不配置任何设置。

pool_timeout = None

整数值

如果设置,请对带有 SQLAlchemy 的 pool_timeout 使用这个值。

retry_interval = 10

整数值

打开 SQL 连接之间的间隔。

slave_connection = None

字符串值

用于连接到从属数据库的 SQLAlchemy 连接字符串。

sqlite_synchronous = True

布尔值

如果为 True,则 SQLite 使用同步模式。

use_db_reconnect = False

布尔值

在连接丢失时启用数据库重新连接的实验性使用。

7.1.10. domain_config

下表概述了 /etc/keystone/keystone.conf 文件中的 [domain_config] 组下可用的选项。

表 7.9. domain_config
配置选项 = 默认值类型Description

cache_time = 300

整数值

生存时间(TTL,以秒为单位)来缓存域特定的配置数据。除非启用了 [domain_config] 缓存,否则这不起作用。

caching = True

布尔值

切换域特定配置后端的缓存。除非启用了全局缓存,否则这无效。通常没有理由禁用此操作。

driver = sql

字符串值

keystone.resource.domain_config 命名空间中的域特定配置驱动程序的入口点。keystone 只提供 sql 选项,因此除非您提供自定义入口点,否则没有设置这个原因。

7.1.11. endpoint_filter

下表概述了 /etc/keystone/keystone.conf 文件中的 [endpoint_filter] 组下可用的选项。

表 7.10. endpoint_filter
配置选项 = 默认值类型Description

driver = sql

字符串值

keystone.endpoint_filter 命名空间中的端点过滤器驱动程序的入口点。keystone 只提供 sql 选项,因此除非您提供自定义入口点,否则没有设置这个原因。

return_all_endpoints_if_no_filter = True

布尔值

如果配置的端点过滤器不会导致用户 + 项目对的任何端点(因此可能存在空服务目录),这将控制 keystone 的行为。如果设置为 true,则 keystone 将返回整个服务目录。如果设置为 false,则 keystone 将返回一个空服务目录。

7.1.12. endpoint_policy

下表概述了 /etc/keystone/keystone.conf 文件中的 [endpoint_policy] 组下可用的选项。

表 7.11. endpoint_policy
配置选项 = 默认值类型Description

driver = sql

字符串值

keystone.endpoint_policy 命名空间中的端点策略驱动程序的入口点。keystone 只提供 sql 驱动程序,因此除非您提供自定义入口点,否则没有设置这个原因。

7.1.13. eventlet_server

下表概述了 /etc/keystone/keystone.conf 文件中的 [eventlet_server] 组下可用的选项。

表 7.12. eventlet_server
配置选项 = 默认值类型Description

admin_bind_host = 0.0.0.0

主机地址值

要侦听的 admin 服务的网络接口的 IP 地址。弃用自: K

对于在 eventlet 下运行的 keystone,在 Newton 发行版本中删除了在 eventlet 下运行的 keystone。这些选项保持向后兼容性,因为它们用于 URL 替换。

admin_port = 35357

端口值

要侦听的 admin 服务的端口号。弃用自: K

对于在 eventlet 下运行的 keystone,在 Newton 发行版本中删除了在 eventlet 下运行的 keystone。这些选项保持向后兼容性,因为它们用于 URL 替换。

public_bind_host = 0.0.0.0

主机地址值

要侦听的公共服务的网络接口的 IP 地址。弃用自: K

对于在 eventlet 下运行的 keystone,在 Newton 发行版本中删除了在 eventlet 下运行的 keystone。这些选项保持向后兼容性,因为它们用于 URL 替换。

public_port = 5000

端口值

要侦听的公共服务的端口号。弃用自: K

对于在 eventlet 下运行的 keystone,在 Newton 发行版本中删除了在 eventlet 下运行的 keystone。这些选项保持向后兼容性,因为它们用于 URL 替换。

7.1.14. federation

下表概述了 /etc/keystone/keystone.conf 文件中的 [federation] 组下可用的选项。

表 7.13. federation
配置选项 = 默认值类型Description

`assertion_prefix = `

字符串值

在为联邦断言过滤环境变量名称时使用的前缀。匹配的变量传递到联邦映射引擎中。

caching = True

布尔值

切换联邦缓存。除非启用了全局缓存,否则这无效。通常没有原因来禁用此功能。

default_authorization_ttl = 0

整数值

从映射中执行组成员资格的有效性的默认时间(以分钟为单位)。默认值为 0,即禁用。

driver = sql

字符串值

keystone.federation 命名空间中的联邦后端驱动程序的入口点。Keystone 仅提供 sql 驱动程序,因此除非您提供自定义入口点,否则没有设置此选项。

federated_domain_name = Federated

字符串值

为允许联邦临时用户有一个域概念保留的任意域名。请注意,管理员将无法使用此名称创建域,或将现有域更新为此名称。除非真正需要,否则不建议更改这个值。弃用自: T

*reason:* this option 已被其身份提供程序域中的临时用户取代。

remote_id_attribute = None

字符串值

用于从环境中获取身份提供程序实体 ID 的所有协议的默认值。对于 mod_shib,这将是 Shib-Identity-Provider。对于 mod_auth_openidc,这可以是 HTTP_OIDC_ISS。对于 mod_auth_mellon,这可以是 MELLON_IDP。这可以通过使用 API 向联邦协议提供 remote_id_attribute 来覆盖每个协议。

sso_callback_template = /etc/keystone/sso_callback_template.html

字符串值

用作单点登录回调处理器的 HTML 文件的绝对路径。此页面应当通过将用户从 keystone 重定向到可信仪表板主机,方法是在 POST 请求中形成编码令牌。Keystone 的默认值应该足以满足大多数部署的情况。

trusted_dashboard = []

多值

可信仪表板主机列表。在接受 Single Sign-On 请求以返回令牌之前,原始主机必须是此列表的成员。对于多个值,可以重复此配置选项。您必须设置此项,才能使用基于 Web 的 SSO 流。例如: trusted_dashboard=https://acme.example.com/auth/websso trusted_dashboard=https://beta.example.com/auth/websso

7.1.15. fernet_receipts

下表概述了 /etc/keystone/keystone.conf 文件中的 [fernet_receipts] 组下可用的选项。

表 7.14. fernet_receipts
配置选项 = 默认值类型Description

key_repository = /etc/keystone/fernet-keys/

字符串值

包含 Fernet 重新密钥的目录。在第一次使用 keystone-manage fernet_setup 前这个目录需要已存在,则对于运行 keystone-manage fernet_setupkeystone-manage fernet_rotate 的用户是可写的,则对于 keystone 的服务器进程是可读的。存储库可能包含三个状态之一的密钥:一个用于接收验证的单个暂存密钥(始终索引 0)、单个主键(始终是最高索引)用于接收和验证,以及任何用于接收验证的二级密钥(始终索引值)。对于多个 keystone 节点,每个节点都必须共享相同的密钥存储库内容,但暂存的密钥(index 0)除外。在任意一个节点上运行 keystone-manage fernet_rotate 可以安全地将暂存的密钥(index 0)提升为新主节点(从上最高索引中减少),并生成一个新的 stage 密钥(带有索引 0 的新密钥);生成的存储库可以原子复制到其他节点,而无需任何竞争条件的风险(例如: 在主机 A 上运行 keystone-manage fernet_ rotate 可以安全地等待任何时间,在主机 A 上创建目录的 tarball,将其解压缩到临时位置,以原子方式移动(mv)到主机 B。在密钥存储库中运行 keystone-manage fernet_rotate 两次,而不同步其他节点会导致接收被所有节点验证。

max_active_keys = 3

整数值

这会在 keystone-manage fernet_rotate 轮转前控制在轮转密钥的数量,然后再丢弃它们。默认值 3 表示 keystone 维护一个暂存密钥(始终索引 0)、一个主键(最高数字索引),以及一个二级键(其他索引)。增加这个值意味着额外的二级键将保留在轮转中。

7.1.16. fernet_tokens

下表概述了 /etc/keystone/keystone.conf 文件中的 [fernet_tokens] 组下可用的选项。

表 7.15. fernet_tokens
配置选项 = 默认值类型Description

key_repository = /etc/keystone/fernet-keys/

字符串值

包含 Fernet 令牌密钥的目录。在第一次使用 keystone-manage fernet_setup 前这个目录需要已存在,则对于运行 keystone-manage fernet_setupkeystone-manage fernet_rotate 的用户是可写的,则对于 keystone 的服务器进程是可读的。存储库可能包含三个状态之一的密钥:一个用于令牌验证的暂存密钥(始终索引 0)、一个用于令牌创建和验证的单一主键(始终是最高索引),以及用于令牌验证的任意数量的次要密钥(所有其他索引值)。对于多个 keystone 节点,每个节点都必须共享相同的密钥存储库内容,但暂存的密钥(index 0)除外。在任意一个节点上运行 keystone-manage fernet_rotate 可以安全地将暂存的密钥(index 0)提升为新主节点(从上最高索引中减少),并生成一个新的 stage 密钥(带有索引 0 的新密钥);生成的存储库可以原子复制到其他节点,而无需任何竞争条件的风险(例如: 在主机 A 上运行 keystone-manage fernet_ rotate 可以安全地等待任何时间,在主机 A 上创建目录的 tarball,将其解压缩到临时位置,以原子方式移动(mv)到主机 B。在密钥存储库中运行 keystone-manage fernet_rotate 两次,而不同步其他节点会导致令牌不能被所有节点验证。

max_active_keys = 3

整数值

这会在 keystone-manage fernet_rotate 轮转前控制在轮转密钥的数量,然后再丢弃它们。默认值 3 表示 keystone 维护一个暂存密钥(始终索引 0)、一个主键(最高数字索引),以及一个二级键(其他索引)。增加这个值意味着额外的二级键将保留在轮转中。

7.1.17. healthcheck

下表概述了 /etc/keystone/keystone.conf 文件中的 [healthcheck] 组下可用的选项。

表 7.16. healthcheck
配置选项 = 默认值类型Description

backends = []

列出值

可以执行健康检查的额外后端,并报告信息作为请求的一部分。

detailed = False

布尔值

作为响应的一部分,显示更详细的信息。安全备注:启用此选项可能会公开有关被监控服务的敏感详情。务必验证它是否不会违反您的安全策略。

disable_by_file_path = None

字符串值

检查是否存在文件,以确定应用程序是否在端口上运行。由 DisableByFileHealthcheck 插件使用。

disable_by_file_paths = []

列出值

根据端口检查是否存在文件,以确定应用程序是否在端口上运行。需要一个字符串的 "port:path" 列表。由 DisableByFilesPortsHealthcheck 插件使用。

path = /healthcheck

字符串值

响应 healtcheck 请求的路径。

7.1.18. identity

下表概述了 /etc/keystone/keystone.conf 文件中的 [identity] 组下可用的选项。

表 7.17. identity
配置选项 = 默认值类型Description

cache_time = 600

整数值

缓存身份数据的时间(以秒为单位)。除非启用了全局和身份缓存,否则这将无效。

caching = True

布尔值

切换身份缓存。除非启用了全局缓存,否则这无效。通常没有原因来禁用此功能。

default_domain_id = default

字符串值

这将引用用于所有身份 API v2 请求的域(它们不知道域)。通过 keystone-manage bootstrap 可选择性地为您创建具有此 ID 的域。此 ID 引用的域无法在 v3 API 上删除,以防止意外破坏 v2 API。这个域没有什么特殊,但实际上必须存在它才能保持对 v2 客户端的支持。通常没有更改此值的原因。

domain_config_dir = /etc/keystone/domains

字符串值

keystone 应找到特定于域的 [identity] 配置文件的绝对路径。除非 [identity] domain_specific_drivers_enabled 设为 true,否则此选项无效。通常没有更改此值的原因。

domain_configurations_from_database = False

布尔值

默认情况下,特定于域的配置数据是从 [identity] domain_config_dir 标识的目录中的文件读取。启用此配置选项允许您通过 API 管理特定于域的配置,后者随后保留在后端(通常是 SQL 数据库),而不是使用磁盘上的配置文件。

domain_specific_drivers_enabled = False

布尔值

域的子集(或全部)可以有自己的身份驱动程序,每个选项都有自己的部分配置选项,存储在资源后端或域配置目录中的文件(取决于 [identity] domain_configurations_from_database的设置)。以这种方式仅需要指定特定于域的值。这个功能默认是禁用的,但在以后的发行版本中可能会默认启用;设置为 true 来启用。

driver = sql

字符串值

keystone.identity 命名空间中的身份后端驱动程序的入口点。Keystone 提供 sqlldap 驱动程序。如果 [identity] domain_specific_drivers_enabled 启用了 [identity] domain_specific_drivers_enabled,但没有为域选择的默认驱动程序选择(以及本节中的其他配置)。除非您的部署主要依赖于 ldap AND 不使用特定域的配置,否则通常应将此设置为 sql

list_limit = None

整数值

在身份集合中返回的最大实体数。

max_password_length = 4096

整数值

用户密码的最大允许长度。减少这个值以提高性能。更改此值不会影响现有密码。该值也可以通过某些哈希算法的最大允许长度覆盖,其优先于配置的值。bcrypt max_password_length 为 72 字节。

password_hash_algorithm = bcrypt

字符串值

用于 keystone 中存储的密码的密码哈希算法。

password_hash_rounds = None

整数值

这个选项代表了在安全性和性能之间权衡。数值越高,性能会较慢,但安全性更高。更改此选项将仅影响新创建的密码,因为现有密码哈希已应用了固定数量的循环,因此在正在运行的集群中调整此选项是安全的。bcrypt 的默认值为 12,必须在 4 到 31 之间,包括。scrypt 的默认值为 16,必须在 范围(1,32) 内。pbkdf_sha512 的默认值为 60000,必须在 范围(1,1<<32) WARNING 中:如果使用 scrypt,增加这个值会增加 BOTH 时间 AND 内存要求来哈希密码。

salt_bytesize = None

整数值

在 scrypt 和 pbkfd2_sha512 哈希 salt 中使用的字节数。scrypt 的默认值为 16 字节。对于 pbkfd2_sha512,默认为 16 字节。由于用于存储密码哈希的列的大小,因此限制为最多 96 字节。

scrypt_block_size = None

整数值

要传递给 scrypt 哈希函数的可选块大小( r 参数)。有助于调整 scrypt 以优化 CPU 架构的性能。只有在 password_hash_algorithm 选项设为 scrypt 时,才会使用这个选项。默认值为 8。

scrypt_parallelism = None

整数值

可选的并行性传递至 scrypt 哈希函数( p 参数)。只有在 password_hash_algorithm 选项设为 scrypt 时,才会使用这个选项。默认为 1。

7.1.19. identity_mapping

下表概述了 /etc/keystone/keystone.conf 文件中的 [identity_mapping] 组下可用的选项。

表 7.18. identity_mapping
配置选项 = 默认值类型Description

backward_compatible_ids = True

布尔值

在 Juno 中,不生成 UUID (如 LDAP)的后端更改用户和组 ID 格式,keystone 提供到 LDAP 中底层属性的哈希映射。默认情况下,此映射被禁用,这样可确保现有 ID 不会改变。即使使用域特定驱动程序([identity] domain_specific_drivers_enabled)启用映射时,LDAP 处理的默认域中的任何用户和组仍不会被映射,以确保其 ID 保持向后兼容性。将此值设置为 false 将为所有后端启用新映射,包括默认的 LDAP 驱动程序。如果您尚未从默认 LDAP 域分配用户和组,并且您认为 Keystone 可以接受与之前之前不同的客户端提供不同的 ID (API 中的现有 ID 将会突然更改)时,才能保证启用此选项。通常,您可以把这个值设置为 false 的唯一时间是在配置全新安装时,尽管这是推荐的值。

driver = sql

字符串值

keystone.identity.id_mapping 命名空间中的身份映射后端驱动程序的入口点。Keystone 仅提供 sql 驱动程序,因此除非提供了自定义入口点,否则无需更改此原因。

generator = sha256

字符串值

keystone.identity.id_generator 命名空间中用户和组实体的公共 ID 生成器的入口点。Keystone 身份映射程序仅支持生成 64 字节或更少的生成器。Keystone 仅提供 sha256 入口点,因此除非提供自定义入口点,否则没有理由更改此值。

7.1.20. jwt_tokens

下表概述了 /etc/keystone/keystone.conf 文件中的 [jwt_tokens] 组下可用的选项。

表 7.19. jwt_tokens
配置选项 = 默认值类型Description

jws_private_key_repository = /etc/keystone/jws-keys/private

字符串值

包含用于签名 JWS 令牌的私钥的目录。此目录必须存在,以便 keystone 的服务器进程启动。它还必须被 keystone 的服务器进程读取。它必须至少包含一个私钥,对应于 keystone.conf [jwt_tokens] jws_public_key_repository 中的公钥。如果此目录中有多个私钥,则 keystone 将使用名为 private.pem 的密钥为令牌签名。未来,keystone 可能支持使用多个私钥为令牌签名。现在,在此目录中只有名为 private.pem 的密钥才能发布 JWS 令牌。这个选项只适用于发布 JWS 令牌和设置 keystone.conf [token] provider = jws 的部署。

jws_public_key_repository = /etc/keystone/jws-keys/public

字符串值

包含用于验证 JWS 令牌签名的公钥的目录。此目录必须存在,以便 keystone 的服务器进程启动。它还必须被 keystone 的服务器进程读取。它必须至少包含一个与 keystone.conf [jwt_tokens] jws_private_key_repository 中与私钥对应的公钥。这个选项只适用于发布 JWS 令牌和设置 keystone.conf [token] provider = jws 的部署。

7.1.21. ldap

下表概述了 /etc/keystone/keystone.conf 文件中的 [ldap] 组下可用的选项。

表 7.20. ldap
配置选项 = 默认值类型Description

alias_dereferencing = default

字符串值

用于查询涉及别名的 LDAP 解引用选项。值 default 会返回使用 ldap.conf 配置的默认值解引用行为。值 永远不会 阻止所有别名被解引用。仅在名称解析后 搜索 解引用别名的值。仅在名称解析过程中 查找 别名的值。值 always 在所有情况下都会取消引用别名。

auth_pool_connection_lifetime = 60

整数值

LDAP 服务器的最大最终用户身份验证连接生命周期(以秒为单位)。超过此生命周期时,连接将不被绑定,并从连接池中移除。除非也启用了 [ldap] use_auth_pool,否则此选项无效。

auth_pool_size = 100

整数值

用于最终用户身份验证的连接池的大小。除非也启用了 [ldap] use_auth_pool,否则此选项无效。

chase_referrals = None

布尔值

设置 keystone 在目录分区间引用行为。如果未设置,则使用系统的默认行为。

connection_timeout = -1

整数值

与 LDAP 服务器一起使用的连接超时。值 -1 表示连接永远不会超时。

debug_level = None

整数值

为 LDAP 调用设置 LDAP 调试级别。值 0 表示没有启用调试。这个值是一个位掩码,请参考您的 LDAP 文档以了解可能的值。

group_ad_nesting = False

布尔值

如果启用,组查询将为嵌套组使用 Active Directory 特定的过滤器。

group_additional_attribute_mapping = []

列出值

用于将额外属性映射到 keystone 中的组的 LDAP 属性到 keystone 组属性对列表。预期的格式为 <ldap_attr>:<group_attr>,其中 ldap_attr 是 LDAP 对象和 group_attr 中的属性,它应当出现在身份 API 中。

group_attribute_ignore = []

列出值

要忽略的组群属性列表。或者是否应为 list 或 show group 过滤特定的组属性。

group_desc_attribute = description

字符串值

在 keystone 中映射到组描述的 LDAP 属性。

group_filter = None

字符串值

用于组的 LDAP 搜索过滤器。

group_id_attribute = cn

字符串值

在 keystone 中映射到组 ID 的 LDAP 属性。这不能是一个多值属性。组 ID 预期在 keystone 域和 URL 间需要全局唯一。

group_member_attribute = member

字符串值

用于表示用户是组的成员的 LDAP 属性。

group_members_are_ids = False

布尔值

如果组对象类的成员是 keystone 用户 ID 而不是 LDAP DN,则启用这个选项。在 Open Directory 中使用 posixGroup 作为组对象类时,这是这种情况。

group_name_attribute = ou

字符串值

在 keystone 中映射到组名称的 LDAP 属性。组名称应该只在 keystone 域中唯一,且不应该是 URL-safe。

group_objectclass = groupOfNames

字符串值

用于组的 LDAP 对象类。如果将此选项设置为 posixGroup,您可能还有兴趣启用 [ldap] group_members_are_ids 选项。

group_tree_dn = None

字符串值

用于组的搜索基础。默认为 ou=UserGroups,并附加了 [ldap] 后缀

page_size = 0

整数值

定义在列出对象时 keystone 应该从 LDAP 服务器请求的结果数上限。值为零(0)禁用分页。

password = None

字符串值

在查询 LDAP 服务器时,管理员绑定 DN 的密码(如果您的 LDAP 服务器需要它)。

pool_connection_lifetime = 600

整数值

LDAP 服务器的最大连接生命周期(以秒为单位)。超过此生命周期时,连接将不被绑定,并从连接池中移除。除非也启用了 [ldap] use_pool,否则此选项无效。

pool_connection_timeout = -1

整数值

池 LDAP 连接时使用的连接超时。值 -1 表示连接永远不会超时。除非也启用了 [ldap] use_pool,否则此选项无效。

pool_retry_delay = 0.1

浮点值

尝试重新连接 LDAP 服务器前要等待的秒数。除非也启用了 [ldap] use_pool,否则此选项无效。

pool_retry_max = 3

整数值

在中止前尝试连接到 LDAP 服务器的次数上限。值 one 只进行一个连接尝试。除非也启用了 [ldap] use_pool,否则此选项无效。

pool_size = 10

整数值

LDAP 连接池的大小。除非也启用了 [ldap] use_pool,否则此选项无效。

query_scope = one

字符串值

搜索范围定义在搜索基础中搜索程度。一个值 (代表 oneLevelsingleLevel)表示在基本对象下立即搜索对象,但不包括基本对象本身。sub (代表 子树 或整个 Subtree)的值表示搜索基本对象本身及其下面的整个子树。

randomize_urls = False

布尔值

随机化每个 keystone 进程中的 URL 顺序。这会使失败行为更加逐步,因为如果第一个服务器停机,进程/线程将等待指定的超时,然后再尝试到服务器的连接进一步关闭列表。对于向后兼容,默认为 False。

suffix = cn=example,cn=com

字符串值

如果没有通过 [ldap] user_tree_dn[ldap] group_tree_dn 定义 DN,则使用默认 LDAP 服务器后缀。

tls_cacertdir = None

字符串值

与 LDAP 服务器通信时要使用的 CA 证书目录的绝对路径。如果您还设置了 [ldap] tls_cacertfile,则没有设置这个选项的原因。

tls_cacertfile = None

字符串值

与 LDAP 服务器通信时要使用的 CA 证书文件的绝对路径。这个选项优先于 [ldap] tls_cacertdir,因此没有设置这两个选项。

tls_req_cert = demand

字符串值

指定要对传入 TLS 会话上的客户端证书执行的检查。如果设置为 require,则始终从 LDAP 服务器请求证书并需要证书。如果设置为 allow,则始终从 LDAP 服务器请求证书,但不要求提供证书。如果设置为 never,则不会请求证书。

url = ldap://localhost

字符串值

用于连接到 LDAP 服务器的 URL。可将多个 LDAP URL 指定为用逗号分开的字符串。要成功绑定的第一个 URL 用于连接。

use_auth_pool = True

布尔值

为最终用户身份验证启用 LDAP 连接池。通常没有原因来禁用此功能。

use_pool = True

布尔值

启用 LDAP 连接池以查询 LDAP 服务器。通常没有原因来禁用此功能。

use_tls = False

布尔值

在与 LDAP 服务器通信时启用 TLS。在使用此选项时,您还应设置 [ldap] tls_cacertfile[ldap] tls_cacertdir 选项。如果您通过 SSL (LDAPS)而不是 TLS 使用 LDAP,则不要设置这个选项。

user = None

字符串值

在查询 LDAP 服务器时要使用的管理员绑定 DN 的用户名(如果您的 LDAP 服务器需要它)。

user_additional_attribute_mapping = []

列出值

用于映射 keystone 中用户属性到用户属性的 LDAP 属性列表。预期的格式为 <ldap_attr>:<user_attrr>,其中 ldap_attr 是 LDAP 对象和 user_attr 中的属性,它应当出现在身份 API 中。

user_attribute_ignore = ['default_project_id']

列出值

要忽略的用户属性列表,或者是否应为 list 或 show user 过滤特定的用户属性。

user_default_project_id_attribute = None

字符串值

在 keystone 中映射到用户的 default_project_id 的 LDAP 属性。当 keystone 具有对 LDAP 的写访问权限时,这最常使用。

user_description_attribute = description

字符串值

在 keystone 中映射到用户描述的 LDAP 属性。

user_enabled_attribute = enabled

字符串值

映射到 keystone 中用户启用属性的 LDAP 属性。如果将此选项设置为 userAccountControl,那么您可能还有兴趣设置 [ldap] user_enabled_mask[ldap] user_enabled_default

user_enabled_default = True

字符串值

启用用户的默认值。如果 LDAP 服务器使用非布尔值(bitmask)值来指示用户是否启用或禁用,则这应匹配适当的整数值。如果这未设置为 True,则典型的值为 512。这通常在 [ldap] user_enabled_attribute = userAccountControl 时使用。

user_enabled_emulation = False

布尔值

如果启用,Keystone 使用替代方法来确定是否启用了用户或未通过检查 [ldap] user_enabled_emulation_dn 选项定义的组的成员来确定用户是否已启用。启用此选项会导致 keystone 忽略 [ldap] user_enabled_invert 的值。

user_enabled_emulation_dn = None

字符串值

使用启用模拟时用于存放启用的用户条目的 DN。除非同时启用了 [ldap] user_enabled_emulation,否则设置此选项无效。

user_enabled_emulation_use_group_config = False

布尔值

使用 [ldap] group_member_attribute[ldap] group_objectclass 设置来确定模拟启用组中的成员资格。启用此选项不会起作用,除非也启用了 [ldap] user_enabled_emulation

user_enabled_invert = False

布尔值

在逻辑上,对从 LDAP 服务器获取的 enabled 属性的布尔值相符。有些 LDAP 服务器使用布尔值锁定属性,其中 "true" 表示帐户被禁用。设置 [ldap] user_enabled_invert = true 将允许使用这些锁定属性。如果使用 [ldap] user_enabled_mask[ldap] user_enabled_emulation 选项,这个选项将无效。

user_enabled_mask = 0

整数值

位掩码整数,如果 LDAP 服务器代表"启用"作为整数而不是离散布尔值,则位代表启用的值。值 0 表示不使用掩码。如果这未设置为 0,则典型的值为 2这通常在 [ldap] user_enabled_attribute = userAccountControl 时使用。设置此选项可让 keystone 忽略 [ldap] user_enabled_invert 的值。

user_filter = None

字符串值

用于用户的 LDAP 搜索过滤器。

user_id_attribute = cn

字符串值

在 keystone 中映射到用户 ID 的 LDAP 属性。这不能是一个多值属性。用户 ID 预期在 keystone 域和 URL 安全之间需要全局唯一。

user_mail_attribute = mail

字符串值

在 keystone 中映射到用户电子邮件的 LDAP 属性。

user_name_attribute = sn

字符串值

在 keystone 中映射到用户名的 LDAP 属性。用户名应该只在 keystone 域中唯一,且不应该是 URL-safe。

user_objectclass = inetOrgPerson

字符串值

用于用户的 LDAP 对象类。

user_pass_attribute = userPassword

字符串值

映射到 keystone 中用户密码的 LDAP 属性。

user_tree_dn = None

字符串值

用于用户的搜索基础。默认为 ou=Users,并附加了 [ldap] 后缀

7.1.22. memcache

下表概述了 /etc/keystone/keystone.conf 文件中的 [memcache] 组下可用的选项。

表 7.21. memcache
配置选项 = 默认值类型Description

dead_retry = 300

整数值

在再次尝试前,memcached 服务器被视为停止的秒数。这供 key 值存储系统使用。弃用自: Y

*reason:* this option no effect。配置 ''keystone.conf [cache] memcache_dead_retry' 选项,以改为设置 dead_retry 设为 memcached。

pool_connection_get_timeout = 10

整数值

操作将等待进入 memcache 客户端连接的秒数。这供 key 值存储系统使用。弃用自: Y

*reason:* this option no effect。配置 ''keystone.conf [cache] memcache_pool_connection_get_timeout' 选项,以将 connection_get_timeout 设为 memcached。

pool_maxsize = 10

整数值

每个 memcached 服务器的最大开放连接数。这供 key 值存储系统使用。弃用自: Y

*reason:* this option no effect。配置 ''keystone.conf [cache] memcache_pool_maxsize' 选项,以将 pool_maxsize 设置为 memcached。

pool_unused_timeout = 60

整数值

到 memcached 的连接在关闭前已保持在池中未使用的秒数。这供 key 值存储系统使用。弃用自: Y

*reason:* this option no effect。配置 ''keystone.conf [cache] memcache_pool_unused_timeout' 选项,将 pool_unused_timeout 设为 memcached。

socket_timeout = 3

整数值

对每个对服务器调用的超时时间(以秒为单位)。这供 key 值存储系统使用。弃用自: T

*reason:* this option no effect。配置 ''keystone.conf [cache] memcache_socket_timeout' 选项,以将 socket_timeout 设为 memcached。

7.1.23. oauth1

下表概述了 /etc/keystone/keystone.conf 文件中的 [oauth1] 组下可用的选项。

表 7.22. oauth1
配置选项 = 默认值类型Description

access_token_duration = 86400

整数值

OAuth 访问令牌在创建后保持有效的秒数。这是消费者必须与服务提供商交互的时间(通常是 keystone)。将这个选项设置为零意味着访问令牌将持续存在。

driver = sql

字符串值

keystone.oauth1 命名空间中的 OAuth 后端驱动程序的入口点。通常,除非您提供自定义入口点,否则没有设置这个选项。

request_token_duration = 28800

整数值

OAuth 请求令牌在创建后保持有效的秒数。这是用户授权令牌的时间长度。将这个选项设置为零表示请求令牌将持续存在。

7.1.24. oauth2

下表概述了 /etc/keystone/keystone.conf 文件中的 [oauth2] 组下可用的选项。

表 7.23. oauth2
配置选项 = 默认值类型描述

oauth2_authn_methods = ['tls_client_auth', 'client_secret_basic']

列出值

当用户通过 OAuth2.0 令牌端点获取访问令牌时,系统支持的 OAuth2.0 验证方法。这个选项可以设置为 certificate 或 secret。如果没有设置选项,则默认值为 certificate。当选项设置为 secret 时,OAuth2.0 令牌端点使用 client_secret_basic 方法进行身份验证,否则使用 tls_client_auth 方法进行身份验证。

oauth2_cert_dn_mapping_id = oauth2_mapping

字符串值

用于定义映射规则 id。如果没有设置,则映射规则 id 是 oauth2_mapping。

7.1.25. oslo_messaging_amqp

下表概述了 /etc/keystone/keystone.conf 文件中的 [oslo_messaging_amqp] 组下可用的选项。

表 7.24. oslo_messaging_amqp
配置选项 = 默认值类型Description

addressing_mode = dynamic

字符串值

表示驱动程序使用的寻址模式。允许的值: legacy - 使用旧的不可路由寻址;routable - 使用可路由地址;dynamic - 如果消息总线不支持路由,使用 legacy,如果支持,使用 routable。

anycast_address = anycast

字符串值

在发送到一组消费者时,附加到地址前缀中。由消息总线使用来识别应以轮循方式传送的消息。

broadcast_prefix = broadcast

字符串值

广播到所有服务器时使用的地址前缀

connection_retry_backoff = 2

整数值

在每次失败故障转移尝试失败后,增加 connection_retry_interval。

connection_retry_interval = 1

整数值

在尝试重新连接前需要暂停的秒数。

connection_retry_interval_max = 30

整数值

connection_retry_interval + connection_retry_backoff 的最大限制

container_name = None

字符串值

AMQP 容器的名称。必须全局唯一。默认为生成的 UUID

default_notification_exchange = None

字符串值

通知地址中使用的交换名称。Exchange name resolution priority: Target.exchange if set else default_notification_exchange if set else control_exchange if set else notify

default_notify_timeout = 30

整数值

发送通知消息发送的截止时间。仅在调用者不提供超时到期时使用。

default_reply_retry = 0

整数值

因可恢复错误而重新发送失败的回复消息的最大尝试次数。

default_reply_timeout = 30

整数值

rpc 回复消息发送的截止时间。

default_rpc_exchange = None

字符串值

RPC 地址中使用的交换名称。Exchange name resolution priority: Target.exchange if set else default_rpc_exchange if set else control_exchange if set else rpc

default_send_timeout = 30

整数值

rpc cast 或调用消息发送的截止时间。仅在调用者不提供超时到期时使用。

default_sender_link_timeout = 600

整数值

调度闲置发送方链接的清除持续时间。在到期后分离链接。

group_request_prefix = unicast

字符串值

发送到组中任何服务器的地址前缀

idle_timeout = 0

整数值

不活跃连接的超时时间(以秒为单位)

link_retry_delay = 10

整数值

重新连接因为可恢复的错误而失败的 AMQP 1.0 链接之间暂停的时间。

multicast_address = multicast

字符串值

在发送 fanout 消息时附加到地址前缀中。由消息总线用来识别 fanout 消息。

notify_address_prefix = openstack.org/om/notify

字符串值

所有生成的通知地址的地址前缀

notify_server_credit = 100

整数值

传入通知消息的窗口大小

pre_settled = ['rpc-cast', 'rpc-reply']

多值

发送此类类型的消息。预先修改的消息将不会接收来自对等点的确认。注意:如果发送失败,则预先修改的消息可能会静默丢弃。允许的值: rpc-call - send RPC Calls pre-settled rpc-reply- send RPC Replies pre-settled rpc-cast - Send RPC Casts pre-settled notify - Send Notifications pre-settled

pseudo_vhost = True

布尔值

为那些不支持原生支持虚拟主机(如 qpidd)的消息总线启用虚拟主机支持。当设置为 true 时,虚拟主机名将添加到所有消息总线地址中,从而有效地为每个虚拟主机 创建专用子网。如果消息总线使用 AMQP 1.0 Open performative 作为虚拟主机名称中的 hostname 字段,则设置为 False。

reply_link_credit = 200

整数值

传入 RPC Reply 消息的窗口大小。

rpc_address_prefix = openstack.org/om/rpc

字符串值

所有生成的 RPC 地址的地址前缀

rpc_server_credit = 100

整数值

传入 RPC 请求消息的窗口大小

`sasl_config_dir = `

字符串值

包含 SASL 配置的目录路径

`sasl_config_name = `

字符串值

配置文件的名称(不带 .conf 后缀)

`sasl_default_realm = `

字符串值

如果用户名中没有域,则将使用 SASL 域

`sasl_mechanisms = `

字符串值

可接受的 SASL 机制的空格分隔列表

server_request_prefix = exclusive

字符串值

发送到特定服务器时使用的地址前缀

ssl = False

布尔值

尝试通过 SSL 连接。如果没有指定其他与 ssl 相关的参数,它将使用系统的 CA-bundle 来验证服务器证书。

`ssl_ca_file = `

字符串值

用于验证服务器证书的 CA 证书 PEM 文件

`ssl_cert_file = `

字符串值

自我识别用于客户端身份验证的证书 PEM 文件

`ssl_key_file = `

字符串值

用于为 ssl_cert_file 证书签名的私钥 PEM 文件(可选)

ssl_key_password = None

字符串值

用于解密 ssl_key_file 的密码(如果加密)

ssl_verify_vhost = False

布尔值

默认情况下,SSL 检查服务器证书中的名称是否与 transport_url 中的主机名匹配。在某些配置中,可能最好使用虚拟主机名,例如,如果服务器使用 Server Name Indication TLS 扩展(rfc6066)为每个虚拟主机提供证书。如果服务器的 SSL 证书使用虚拟主机名称而不是 DNS 名称,则将 ssl_verify_vhost 设置为 True。

trace = False

布尔值

debug:将 AMQP 帧转储到 stdout

unicast_address = unicast

字符串值

在发送到特定的 RPC/Notification 服务器时,附加到地址前缀中。由消息总线用来识别发送到单个目的地的消息。

7.1.26. oslo_messaging_kafka

下表概述了 /etc/keystone/keystone.conf 文件中的 [oslo_messaging_kafka] 组下可用的选项。

表 7.25. oslo_messaging_kafka
配置选项 = 默认值类型Description

compression_codec = none

字符串值

生成者生成的所有数据的压缩码c。如果没有设置,则不会使用压缩。请注意,这允许的值取决于 kafka 版本

conn_pool_min_size = 2

整数值

连接过期策略的池大小限制

conn_pool_ttl = 1200

整数值

池中闲置连接的生存时间

consumer_group = oslo_messaging_consumer

字符串值

Kafka 消费者的组 ID。一个组中的消费者将协调消息消耗

enable_auto_commit = False

布尔值

启用异步消费者提交

kafka_consumer_timeout = 1.0

浮点值

Kafka 用户的默认超时

kafka_max_fetch_bytes = 1048576

整数值

Kafka 使用者的最大获取字节数

max_poll_records = 500

整数值

轮询调用中返回的最大记录数

pool_size = 10

整数值

Kafka Consumers 的池大小

producer_batch_size = 16384

整数值

producer async 发送的批处理大小

producer_batch_timeout = 0.0

浮点值

KafkaProducer batching 的延迟上限(以秒为单位)

sasl_mechanism = PLAIN

字符串值

安全协议是 SASL 的机制

security_protocol = PLAINTEXT

字符串值

用于与代理通信的协议

`ssl_cafile = `

字符串值

用于验证服务器证书的 CA 证书 PEM 文件

`ssl_client_cert_file = `

字符串值

用于身份验证的客户端证书 PEM 文件。

`ssl_client_key_file = `

字符串值

用于身份验证的客户端密钥 PEM 文件。

`ssl_client_key_password = `

字符串值

用于身份验证的客户端密钥密码文件。

7.1.27. oslo_messaging_notifications

下表概述了 /etc/keystone/keystone.conf 文件中的 [oslo_messaging_notifications] 组下可用的选项。

表 7.26. oslo_messaging_notifications
配置选项 = 默认值类型Description

driver = []

多值

处理发送通知的驱动程序。可能的值有 messaging, messagingv2, routing, log, test, noop

retry = -1

整数值

因可恢复的错误而发送失败的通知消息的最大尝试次数。0 - no retry, -1 - indefinite

topics = ['notifications']

列出值

用于 OpenStack 通知的 AMQP 主题。

transport_url = None

字符串值

代表用于通知的消息传递驱动程序的 URL。如果没有设置,我们回退到用于 RPC 的同一配置。

7.1.28. oslo_messaging_rabbit

下表概述了 /etc/keystone/keystone.conf 文件中的 [oslo_messaging_rabbit] 组下可用的选项。

表 7.27. oslo_messaging_rabbit
配置选项 = 默认值类型Description

amqp_auto_delete = False

布尔值

AMQP 中的自动删除队列。

amqp_durable_queues = False

布尔值

在 AMQP 中使用持久队列。如果启用了 rabbit_quorum_queue,则队列将具有持久性,并且此值将被忽略。

direct_mandatory_flag = True

布尔值

(DEPRECATED)为直接发送启用/禁用 RabbitMQ 强制标记。直接发送用作回复,因此当客户端队列不存在时,会引发 MessageUndeliverable 异常。MessageUndeliverable 异常将用于对超时进行循环,以便发送者有机会恢复该标志,且无法停用此功能。

enable_cancel_on_failover = False

布尔值

启用 x-cancel-on-ha-failover 标志,rabbitmq 服务器将取消和通知消费者何时队列停机

heartbeat_in_pthread = False

布尔值

默认情况下,通过原生 python 线程运行健康检查心跳线程。如果此选项等于 False,则健康检查心跳将从父进程继承执行模型。例如,如果父进程使用 eventlet/greenlet 对 stdlib 进行补丁,则 heartbeat 将通过绿色线程运行。这个选项应只针对 wsgi 服务设置为 True。

heartbeat_rate = 2

整数值

heartbeat_timeout_threshold 中检查心跳的频率。

heartbeat_timeout_threshold = 60

整数值

如果 heartbeat 的 keep-alive 失败(0 禁用心跳)失败,则 Rabbit 代理被视为 down 的秒数。

kombu_compression = None

字符串值

EXPERIMENTAL:可能的值为 gzip, bz2。如果没有设置压缩,则不会使用。这个选项可能在以后的版本中不可用。

kombu_failover_strategy = round-robin

字符串值

确定在当前连接到的 RabbitMQ 节点不可用时如何选择下一个 RabbitMQ 节点。只有在配置中提供了多个 RabbitMQ 节点时,才会生效。

kombu_missing_consumer_retry_timeout = 60

整数值

在放弃向其回复发送之前,等待缺少客户端的时间。这个值不应超过 rpc_response_timeout。

kombu_reconnect_delay = 1.0

浮点值

在响应 AMQP 消费者取消通知前等待(以秒为单位)等待(以秒为单位)。

rabbit_ha_queues = False

布尔值

尝试在 RabbitMQ 中使用 HA 队列(x-ha-policy: all)。如果更改这个选项,您必须擦除 RabbitMQ 数据库。在 RabbitMQ 3.0 中,在声明队列时,x-ha-policy 参数不再控制队列镜像。如果您只想确保所有队列(除自动生成的名称除外)都已镜像到所有节点,请运行:"rabbitmqctl set_policy HA ^(?!amq\.) commands {"ha-mode": "all"} "

rabbit_interval_max = 30

整数值

RabbitMQ 连接重试的最大间隔。默认值为 30 秒。

rabbit_login_method = AMQPLAIN

字符串值

RabbitMQ 登录方法。

rabbit_qos_prefetch_count = 0

整数值

指定要预先抓取的消息数量。将 设为零可允许无限消息。

rabbit_quorum_delivery_limit = 0

整数值

每次消息被重新设计为消费者时,计数器都会递增。当重新传送计数超过交付限制后,消息将被丢弃或死信(如果配置了 DLX 交换)仅在启用 rabbit_quorum_queue 时使用,默认 0 代表没有设置限制。

rabbit_quorum_max_memory_bytes = 0

整数值

默认情况下,如果仲裁队列增加,则所有消息都会在内存中维护,这会给集群造成内存压力。这个选项可以限制仲裁队列使用的内存字节数。仅在启用 rabbit_quorum_queue 时使用,默认 0 代表 dont 设置限制。

rabbit_quorum_max_memory_length = 0

整数值

默认情况下,如果仲裁队列增加,则所有消息都会在内存中维护,这会给集群造成内存压力。这个选项可以限制仲裁队列中的消息数量。仅在启用 rabbit_quorum_queue 时使用,默认 0 代表 dont 设置限制。

rabbit_quorum_queue = False

布尔值

在 RabbitMQ 中使用仲裁队列(x-queue-type: quorum)。仲裁队列是基于 Raft 共识算法的 RabbitMQ 实施持久复制 FIFO 队列的现代队列类型。它从 RabbitMQ 3.8.0 开始提供。如果设置此选项将与 HA 队列(rabbit_ha_queues) aka 镜像队列冲突,换句话说,应该禁用 HA 队列,因此启用此选项时会忽略 amqp_durable_queues opion。

rabbit_retry_backoff = 2

整数值

连接到 RabbitMQ 时,在重试之间会多长时间进行 backoff。

rabbit_retry_interval = 1

整数值

使用 RabbitMQ 重试连接的频率。

rabbit_transient_queues_ttl = 1800

整数值

正整数,代表队列 TTL (x-expires)的持续时间(以秒为单位)。TTL 期间未使用的队列将自动删除。参数仅影响回复和 fanout 队列。

ssl = False

布尔值

通过 SSL 连接。

`ssl_ca_file = `

字符串值

SSL 证书颁发机构文件(仅在启用 SSL 时才评估)。

`ssl_cert_file = `

字符串值

SSL 证书文件(仅在启用 SSL 时才评估)。

ssl_enforce_fips_mode = False

布尔值

强制 OpenSSL FIPS 模式的全局切换。此功能需要 Python 支持。这在所有环境中的 Python 3.9 中都可用,并可能已向后移植到所选环境中的旧的 Python 版本。如果使用的 Python 可执行文件不支持 OpenSSL FIPS 模式,则会引发异常。

`ssl_key_file = `

字符串值

SSL 密钥文件(仅在启用 SSL 时才评估)。

`ssl_version = `

字符串值

要使用的 SSL 版本(仅在启用 SSL 时验证)。有效值为 TLSv1 和 SSLv23。在某些发行版中可能会提供 SSLv2、SSLv3、TLSv1_1 和 TLSv1_2。

7.1.29. oslo_middleware

下表概述了 /etc/keystone/keystone.conf 文件中的 [oslo_middleware] 组下可用的选项。

表 7.28. oslo_middleware
配置选项 = 默认值类型Description

enable_proxy_headers_parsing = False

布尔值

应用程序是否位于代理后面。这决定了中间件是否应该解析标头。

http_basic_auth_user_file = /etc/htpasswd

字符串值

HTTP 基本身份验证密码文件。

max_request_body_size = 114688

整数值

每个请求的最大正文大小,以字节为单位。

secure_proxy_ssl_header = X-Forwarded-Proto

字符串值

用于确定原始请求协议方案的 HTTP 标头,即使它已被 SSL 终止代理隐藏。

7.1.30. oslo_policy

下表概述了 /etc/keystone/keystone.conf 文件中的 [oslo_policy] 组下可用的选项。

表 7.29. oslo_policy
配置选项 = 默认值类型描述

enforce_new_defaults = False

布尔值

这个选项控制在评估策略时是否使用旧的已弃用默认值。如果为 True,则不会评估旧的已弃用默认值。这意味着,如果旧默认值允许任何现有令牌,但不允许使用新默认值。建议启用此标志以及 enforce_scope 标志,以便您可以将新默认值和 scope_type 的好处结合在一起。如果为 False,弃用的策略检查字符串在逻辑上或带有新策略检查字符串,允许在带有新策略的发行版本间进行安全升级体验,这是默认行为。

enforce_scope = False

布尔值

此选项控制在评估策略时是否强制执行范围。如果为 True,则请求中使用的令牌范围将与强制执行的策略的 scope_types 进行比较。如果范围不匹配,则会引发 InvalidScope 异常。如果为 False,则会记录一条信息,告知操作员使用了不匹配的范围调用策略。

policy_default_rule = default

字符串值

默认规则。未找到请求的规则时强制执行。

policy_dirs = ['policy.d']

多值

存储策略配置文件的目录。它们可以相对于 config_dir 选项定义的搜索路径中的任何目录,也可以是绝对路径。必须存在由 policy_file 定义的文件,才能搜索这些目录。缺失或空目录将被忽略。

policy_file = policy.yaml

字符串值

文件相对或绝对路径,用于将角色映射到给定服务的权限。必须根据配置文件设置此选项指定相对路径。

remote_content_type = application/x-www-form-urlencoded

字符串值

用于发送和接收基于 REST 策略检查的数据的内容类型

remote_ssl_ca_crt_file = None

字符串值

基于 REST 的策略检查的 ca 证书文件的绝对路径

remote_ssl_client_crt_file = None

字符串值

基于 REST 的策略检查的客户端证书的绝对路径

remote_ssl_client_key_file = None

字符串值

绝对路径客户端密钥文件 REST 基于策略检查

remote_ssl_verify_server_crt = False

布尔值

基于 REST 策略检查的服务器身份验证

7.1.31. policy

下表概述了 /etc/keystone/keystone.conf 文件中的 [policy] 组下可用的选项。

表 7.30. policy
配置选项 = 默认值类型Description

driver = sql

字符串值

keystone.policy 命名空间中的策略后端驱动程序的入口点。提供的驱动程序是 规则 (不支持 v3 策略 API 的任何 CRUD 操作)和 sql。通常,除非您提供自定义入口点,否则没有设置这个选项。

list_limit = None

整数值

政策集合中返回的最大实体数。

7.1.32. profiler

下表概述了 /etc/keystone/keystone.conf 文件中的 [profiler] 组下可用的选项。

表 7.31. profiler
配置选项 = 默认值类型Description

connection_string = messaging://

字符串值

通知程序后端的连接字符串。

默认值为 messaging://,它将通知程序设置为 oslo_messaging。

可能的值示例:

  • messaging:// - 使用 oslo_messaging 驱动程序来发送范围。
  • redis://127.0.0.1:6379 - 使用 redis 驱动程序来发送 span。
  • MongoDB://127.0.0.1:27017 - 使用 mongodb 驱动程序发送 span。
  • Elasticsearch://127.0.0.1:9200 - 使用 elasticsearch 驱动程序发送 span。
  • Jaeger://127.0.0.1:6831 - 使用 jaeger tracing 作为发送 span 的驱动程序。

enabled = False

布尔值

启用此节点上所有服务的性能分析。

默认值为 False (完全禁用性能分析功能)。

可能的值:

  • true :启用该功能
  • false :禁用该功能。该配置集无法通过此项目操作启动。如果分析由另一个项目触发,则此项目部分将为空。

es_doc_type = notification

字符串值

elasticsearch 中通知索引的文档类型。

es_scroll_size = 10000

整数值

Elasticsearch 批量分割大型请求。此参数定义每个批处理的最大大小(例如: es_scroll_size=10000)。

es_scroll_time = 2m

字符串值

此参数是一个时间值参数(例如: es_scroll_time=2m),指定参与搜索的节点将保持相关资源的时间长度,以便继续和支持它。

filter_error_trace = False

布尔值

启用包含 error/exception 到分开的位置的过滤器追踪。

默认值为 False。

可能的值:

  • true :启用包含 error/exception 的过滤器追踪。
  • false :禁用过滤器。

hmac_keys = SECRET_KEY

字符串值

用于加密性能分析上下文数据的 secret 密钥。

这个字符串值应该具有以下格式: <key1>[,<key2>,…​<keyn>],其中每个键是一些随机字符串。通过 REST API 触发性能分析的用户必须在 REST API 调用的标头中设置其中一个密钥,以包含此特定项目的此节点的性能分析结果。

"enabled"标志和"hmac_keys"配置选项都应设置为启用性能分析。此外,要在所有服务中生成正确的性能分析信息,至少需要在 OpenStack 项目之间保持一致。这样可确保可以从客户端使用它来生成 trace,其中包含来自所有可能的资源的信息。

sentinel_service_name = mymaster

字符串值

Redissentinel 使用服务名称来识别 master redis 服务。此参数定义名称(例如: send inal_service_name=mymaster)。

socket_timeout = 0.1

浮点值

Redissentinel 在连接上提供了一个 timeout 选项。此参数定义该超时(例如: socket_timeout=0.1)。

trace_sqlalchemy = False

布尔值

在服务中启用 SQL 请求性能分析。

默认值为 False (SQL 请求不会被追踪)。

可能的值:

  • true :启用 SQL 请求配置集。每个 SQL 查询都将是 trace 的一部分,可以通过花费多少时间进行分析。
  • false :禁用 SQL 请求配置集。花费的时间仅显示在更高级别的操作上。无法以这种方式分析单个 SQL 查询。

7.1.33. receipt

下表概述了 /etc/keystone/keystone.conf 文件中的 [receipt] 组下可用的选项。

表 7.32. receipt
配置选项 = 默认值类型Description

cache_on_issue = True

布尔值

启用存储发布的接收数据以接收验证缓存,以便第一次接收验证不会实际造成完整的验证周期。除非启用了全局缓存和接收缓存,否则此选项无效。

cache_time = 300

整数值

缓存接收创建和验证数据的秒数。除非启用了全局和 [receipt] 缓存,否则这无效。

caching = True

布尔值

切换缓存接收创建和验证数据。除非启用了全局缓存,或者禁用了 cache_on_issue,或者禁用了 cache_on_issue,否则这无效。

expiration = 300

整数值

重新接收的时间应保持有效(以秒为单位)。这个值应该始终比较短,因为它代表了在缺少 auth 方法时,用户需要重新尝试 auth 方法的时长。

provider = fernet

字符串值

keystone.receipt.provider 命名空间中接收供应商的入口点。receipt 供应商控制接收的结构和验证操作。Keystone 仅包含 fernet receipt 提供程序。fernet receipts 并不需要保留,但要求您运行 keystone-manage fernet_setup (也请参阅 keystone-manage fernet_rotate 命令)。

7.1.34. resource

下表概述了 /etc/keystone/keystone.conf 文件中的 [resource] 组下可用的选项。

表 7.33. resource
配置选项 = 默认值类型Description

admin_project_domain_name = None

字符串值

拥有 admin_project_name 的域名。如果保留未设置,则没有 admin 项目。[resource] admin_project_name 还必须设置为使用这个选项。

admin_project_name = None

字符串值

这是一个特殊的项目,代表服务间的云级管理员特权。特定于此项目的令牌将包含一个 true is_admin_project 属性,以指示该特定项目的角色分配应该在每个项目中同样应用。如果保留未设置,则没有 admin 项目,因此没有明确的跨项目角色分配方法。[resource] admin_project_domain_name 还必须设置为使用这个选项。

cache_time = None

整数值

以秒为单位缓存资源数据的时间。除非启用了全局缓存,否则这无效。

caching = True

布尔值

资源缓存的切换。除非启用了全局缓存,否则这无效。

domain_name_url_safe = off

字符串值

这控制了域的名称是否限制为包含 URL-reserved 字符。如果设置为 new,则尝试使用 URL-unsafe 名称创建或更新域将失败。如果设置为 strict,则尝试将带有 URL-unsafe 域名的令牌的范围将失败,从而强制所有域名更新为 URL-safe。

driver = sql

字符串值

keystone.resource 命名空间中的资源驱动程序的入口点。keystone 只提供 sql 驱动程序。除非为 keystone 编写专有驱动程序,否则您不需要设置这个选项。

list_limit = None

整数值

在资源集合中返回的最大实体数。

project_name_url_safe = off

字符串值

这控制项目名称是否仅限于包含 URL-reserved 字符。如果设置为 new,请尝试使用 URL-unsafe 名称创建或更新项目会失败。如果设置为 strict,则尝试限制具有 URL-unsafe 项目名称的令牌会失败,从而强制将所有项目名称更新为 URL-safe。

7.1.35. revoke

下表概述了 /etc/keystone/keystone.conf 文件中的 [revoke] 组下可用的选项。

表 7.34. revoke
配置选项 = 默认值类型Description

cache_time = 3600

整数值

缓存撤销列表和吊销事件的时间(以秒为单位)。除非同时启用了全局和 [revoke] 缓存,否则这无效。

caching = True

布尔值

切换撤销事件缓存。除非启用了全局缓存,否则这无效。

driver = sql

字符串值

keystone.revoke 命名空间中的令牌撤销后端驱动程序的入口点。Keystone 仅提供 sql 驱动程序,因此除非您提供自定义入口点,否则没有设置此选项。

expiration_buffer = 1800

整数值

令牌过期后的秒数,然后可能会从后端清除对应的撤销事件。

7.1.36. role

下表概述了 /etc/keystone/keystone.conf 文件中的 [role] 组下可用的选项。

表 7.35. role
配置选项 = 默认值类型Description

cache_time = None

整数值

缓存角色数据的时间(以秒为单位)。除非启用了全局缓存和 [role] 缓存,否则这不起作用。

caching = True

布尔值

切换角色缓存。除非启用了全局缓存,否则这无效。在典型的部署中,不需要禁用此功能。

driver = None

字符串值

keystone.role 命名空间中的角色后端驱动程序的入口点。Keystone 仅提供 sql 驱动程序,因此除非提供了自定义入口点,否则没有更改此原因。

list_limit = None

整数值

角色集合中返回的最大实体数。如果您在部署中有大量离散角色,这可能非常有用。

7.1.37. saml

下表概述了 /etc/keystone/keystone.conf 文件中的 [saml] 组下可用的选项。

表 7.36. saml
配置选项 = 默认值类型Description

assertion_expiration_time = 3600

整数值

使用 NotOnOrAfter 属性确定 keystone 生成的任何 SAML 断言的生命周期。

certfile = /etc/keystone/ssl/certs/signing_cert.pem

字符串值

用于 SAML 签名的公共证书文件的绝对路径。该值不能包含逗号()。

idp_contact_company = Example, Inc.

字符串值

这是身份提供程序联系人员的公司名称。

idp_contact_email = support@example.com

字符串值

这是身份提供程序联系人员的电子邮件地址。

idp_contact_name = SAML Identity Provider Support

字符串值

这是身份提供程序联系人的指定名称。

idp_contact_surname = Support

字符串值

这是身份提供程序联系人员的姓氏。

idp_contact_telephone = +1 800 555 0100

字符串值

这是身份提供程序联系人的电话号码。

idp_contact_type = other

字符串值

这是最能描述身份提供程序的联系人类型。

idp_entity_id = None

URI 值

这是生成 SAML 断言时使用的身份提供程序(keystone)的唯一实体标识符。生成身份提供程序元数据需要这个值,且必须是 URI (建议 URL)。例如: https://keystone.example.com/v3/OS-FEDERATION/saml2/idp

idp_lang = en

字符串值

这是身份提供程序的组织使用的语言。

idp_metadata_path = /etc/keystone/saml2_idp_metadata.xml

字符串值

身份提供程序元数据文件的绝对路径。此文件应使用 keystone-manage saml_idp_metadata 命令生成。通常没有更改此值的原因。

idp_organization_display_name = OpenStack SAML Identity Provider

字符串值

这是要显示的身份提供程序的组织的名称。

idp_organization_name = SAML Identity Provider

字符串值

这是身份提供程序的组织的名称。

idp_organization_url = https://example.com/

URI 值

这是身份提供程序机构的 URL。这里引用的 URL 对于人类有用。

idp_sso_endpoint = None

URI 值

这是接受 HTTP POST 请求的身份提供程序的单点登录(SSO)服务位置。生成身份提供程序元数据需要一个值。例如: https://keystone.example.com/v3/OS-FEDERATION/saml2/sso

keyfile = /etc/keystone/ssl/private/signing_key.pem

字符串值

用于 SAML 签名的私钥文件的绝对路径。该值不能包含逗号()。

relay_state_prefix = ss:mem:

字符串值

生成增强客户端和代理(ECP)断言时使用的 RelayState SAML 属性的前缀。在典型的部署中,不需要更改此值。

xmlsec1_binary = xmlsec1

字符串值

到 XML 签名的二进制文件的名称或绝对路径。虽然只支持 XML 安全库(xmlsec1),但系统上可能有一个非标准名称或路径。如果 keystone 无法找到二进制本身,您可能需要安装适当的软件包,使用此选项指定绝对路径,或者调整 keystone 的 PATH 环境变量。

7.1.38. security_compliance

下表概述了 /etc/keystone/keystone.conf 文件中的 [security_compliance] 组下可用的选项。

表 7.37. security_compliance
配置选项 = 默认值类型Description

change_password_upon_first_use = False

布尔值

启用此选项要求用户在创建用户时或管理重置时更改密码。在访问任何服务之前,受影响的用户必须更改其密码。要忽略特定用户(如服务用户)的这个要求,请通过更新用户 API 为所需的用户设置 options 属性 ignore_change_password_upon_first_use 设置为 True。此功能默认为禁用。这个功能只适用于 [identity] 驱动程序的 sql 后端。

disable_user_account_days_inactive = None

整数值

在被视为"主动"并自动禁用(锁定)前,用户可以经过验证的最大天数。此功能默认为禁用;将任何值设置为启用它。此功能取决于 [identity] 驱动程序的 sql 后端。当用户超过这个阈值且被视为"不活跃"时,HTTP API 中的用户 enabled 属性可能与 user 表中用户 启用 列的值不匹配。

lockout_duration = 1800

整数值

超过用户帐户的最大失败尝试次数(如 [security_compliance] lockout_failure_attempts指定)的最大数量时,将锁定用户帐户。设置此选项将无效,除非您也将 [security_compliance] lockout_failure_attempts 设置为非零值。此功能取决于 [identity] 驱动程序的 sql 后端。

lockout_failure_attempts = None

整数值

在用户帐户被 [security_compliance] lockout_duration 指定的秒数内,用户可以在用户帐户锁定前验证的次数上限。此功能默认为禁用。如果启用了这个功能,并且未设置 [security_compliance] lockout_duration,则用户可能会无限期锁定,直到用户通过 API 显式启用为止。此功能取决于 [identity] 驱动程序的 sql 后端。

minimum_password_age = 0

整数值

在用户可以更改密码之前必须使用密码的天数。这可防止用户立即更改密码,以擦除密码历史记录并重复使用旧密码。此功能不会阻止管理员手动重置密码。它默认为禁用,并允许立即更改密码。此功能取决于 [identity] 驱动程序的 sql 后端。注意:如果设置了 [security_compliance] password_expires_days,则此选项的值应小于 password_expires_days

password_expires_days = None

整数值

在要求更改密码之前,密码被视为有效的天数。此功能默认为禁用。如果启用,新密码更改将具有过期日期,但现有密码不会受到影响。此功能取决于 [identity] 驱动程序的 sql 后端。

password_regex = None

字符串值

用于验证密码强度要求的正则表达式。默认情况下,正则表达式将匹配任何密码。以下是一个模式示例,它至少需要 1 个字母(1 位),且最小长度为 7 个字符: ^(?=.\\d) (?=.[a-zA-Z]).{7,}$ 此功能依赖于 [identity] 驱动程序的 sql 后端。

password_regex_description = None

字符串值

以人员使用的语言描述您的密码正则表达式。如果密码无法与正则表达式匹配,则此配置变量的内容将返回到用户,以解释其请求的密码不足的原因。

unique_last_password_count = 0

整数值

这将控制在历史记录中保留的之前用户密码迭代的数量,以便强制新创建的密码是唯一的。包含新密码的总数不应大于或等于这个值。将值设为 0 (默认值)将禁用此功能。因此,要启用此功能,值必须大于 0。此功能取决于 [identity] 驱动程序的 sql 后端。

7.1.39. shadow_users

下表概述了 /etc/keystone/keystone.conf 文件中的 [shadow_users] 组下可用的选项。

表 7.38. shadow_users
配置选项 = 默认值类型Description

driver = sql

字符串值

keystone. identity.shadow_users 命名空间中的 shadow 用户后端驱动程序的入口点。此驱动程序用于持久保留对外部管理的身份(通过联邦、LDAP 等)的本地用户引用。Keystone 仅提供 sql 驱动程序,因此除非您提供自定义入口点,否则无需更改此选项。

7.1.40. token

下表概述了 /etc/keystone/keystone.conf 文件中的 [token] 组下可用的选项。

表 7.39. token
配置选项 = 默认值类型Description

allow_expired_window = 172800

整数值

这控制了检索令牌超出内置过期时间的秒数。这允许长时间运行的操作成功。默认为 2 天。

allow_rescope_scoped_token = True

布尔值

这会切换有作用域令牌是否可以到新项目或域,从而防止用户为任何其他令牌交换有作用域令牌(包括具有默认项目范围)。这会强制用户对无作用域令牌进行身份验证(稍后交换具有更具体范围的令牌的无作用域令牌)或者为每个令牌提供凭证,以避免完全被重新处理。

cache_on_issue = True

布尔值

启用将发布的令牌数据存储到令牌验证缓存中,以便第一个令牌验证实际上不会造成完整的验证周期。除非启用了全局缓存,否则此选项无效,即使 [token] caching = False 也会有缓存令牌。弃用自: S

*reason:*Keystone 已公开一个用于缓存令牌的配置选项。在签发令牌时,使用单独的配置选项缓存令牌,并不必要复杂,如果令牌缓存被禁用,则误导,因为令牌在发布时仍会被预缓存。在发出时,预缓存令牌的功能将完全依赖 ''keystone.conf [token] cache' 选项。

cache_time = None

整数值

缓存令牌创建和验证数据的秒数。除非启用了 global 和 [token] 缓存,否则这无效。

caching = True

布尔值

切换缓存令牌创建和验证数据。除非启用了全局缓存,否则这无效。

expiration = 3600

整数值

令牌应保持有效的时间(以秒为单位)。大幅降低这个值可能会破坏涉及多个服务协调的"长时间运行"操作,并强制用户更频繁地使用 keystone 进行身份验证。显著增加这个值将增加同时有效的令牌数量。Keystone 令牌也是 bearer 令牌,因此较短的持续时间也会降低已入侵令牌的潜在安全影响。

provider = fernet

字符串值

keystone.token.provider 命名空间中的令牌提供程序的入口点。令牌提供程序控制令牌构建、验证和撤销操作。支持的上游提供程序有 fernetjwsfernetjws 令牌都不需要持久性,且两者都需要额外的设置。如果使用 fernet,则需要运行 keystone-manage fernet_setup,这将创建用于加密令牌的对称密钥。如果使用 jws,则需要使用 SHA-256 哈希算法签名和验证令牌来生成 ECDSA 密钥对,该令牌可以使用 keystone-manage create_jws_keypair 来完成。请注意,fernet 令牌加密,jws 令牌仅会被签名。如果您的部署对生成令牌 ID 的有效负载内容有安全要求,请确保考虑这一点。

revoke_by_id = True

布尔值

这会切换支持根据令牌标识符撤销单个令牌,因此各种令牌枚举操作(如列出向特定用户发布的所有令牌)。这些操作用于确定要考虑撤销的令牌列表。如果您使用 kvs [revoke] 驱动程序,则不要禁用这个选项。

7.1.41. tokenless_auth

下表概述了 /etc/keystone/keystone.conf 文件中的 [tokenless_auth] 组下可用的选项。

表 7.40. tokenless_auth
配置选项 = 默认值类型Description

issuer_attribute = SSL_CLIENT_I_DN

字符串值

用于将客户端证书签发者传递给 keystone 的 WSGI 环境变量名称。此属性用作 X.509 无令牌授权的身份提供程序 ID 以及协议来查找其对应的映射。在典型的部署中,不需要更改此值。

protocol = x509

字符串值

用于代表 X.509 无令牌授权的联邦协议 ID。这与 [tokenless_auth] issuer_attribute 的值结合使用,以查找对应的联邦映射。在典型的部署中,不需要更改此值。

trusted_issuer = []

多值

识别允许使用 X.509 无令牌授权的客户端证书可信签发者的列表。如果没有该选项,则不被允许证书。可区分名称(DN)的值的格式必须用逗号分开,且不包含空格。此外,由于单个 DN 可能包含逗号,因此此配置选项可能会重复多次来代表多个值。例如,keystone.conf 将包含两个连续行,以信任两个不同的 DN,如 trusted_issuer = CN=john,OU=keystone,O=openstacktrusted_issuer = CN=mary,OU=eng,O=abc

7.1.42. totp

下表概述了 /etc/keystone/keystone.conf 文件中的 [totp] 组下可用的选项。

表 7.41. totp
配置选项 = 默认值类型Description

included_previous_windows = 1

整数值

处理 TOTP 透传码时要检查的前一个窗口数量。

7.1.43. trust

下表概述了 /etc/keystone/keystone.conf 文件中的 [trust] 组下可用的选项。

表 7.42. trust
配置选项 = 默认值类型Description

allow_redelegation = False

布尔值

允许从一个用户将授权重新分配给另一个用户,从而有效地将信任链接在一起。禁用后,信任的 remaining_uses 属性限制为零。

driver = sql

字符串值

keystone.trust 命名空间中的信任后端驱动程序的入口点。Keystone 仅提供 sql 驱动程序,因此除非提供了自定义入口点,否则无需更改此原因。

max_redelegation_count = 3

整数值

在信任链中,授权可以从一个用户重新分配给另一个用户的最大次数。对于特定信任,可以进一步减少这个数量。

7.1.44. unified_limit

下表概述了 /etc/keystone/keystone.conf 文件中的 [unified_limit] 组下可用的选项。

表 7.43. unified_limit
配置选项 = 默认值类型Description

cache_time = None

整数值

缓存统一限制数据的时间(以秒为单位)。除非启用了全局缓存和 [unified_limit] 缓存,否则这无效。

caching = True

布尔值

为统一限制缓存切换。除非启用了全局缓存,否则这无效。在典型的部署中,不需要禁用此功能。

driver = sql

字符串值

keystone.unified_limit 命名空间中的统一限制后端驱动程序的入口点。Keystone 仅提供 sql 驱动程序,因此除非提供了自定义入口点,否则没有更改此原因。

enforcement_model = flat

字符串值

验证与项目关联的限制时使用的强制模型。强制模型根据现有限制的不同而有所不同,这可能会导致在运行的部署中切换模型时向后兼容的更改。

list_limit = None

整数值

在统一限制集合中返回的最大实体数。如果您在部署中有大量统一限制,这可能非常有用。

7.1.45. wsgi

下表概述了 /etc/keystone/keystone.conf 文件中的 [wsgi] 组下可用的选项。

表 7.44. wsgi
配置选项 = 默认值类型Description

debug_middleware = False

布尔值

如果设置为 true,这将在 Keystone 中启用 oslo 调试中间件。此中间件打印有关请求和响应的大量信息。它可用于获取线(解码)上数据并传递给 WSGI 应用程序管道。此中间件对配置文件的 [DEFAULT] 部分中的"调试"设置没有影响,或者将 Keystone 的日志级别设置为"DEBUG";它专门用于调试 WSGI 数据,因为它输入并保留了 Keystone (特定的请求相关的数据)。此选项用于在 web 服务器(apache、nginx 等)和 Keystone 之间在请求和响应数据上内省。此中间件插入为中间件链中的第一个元素,并将显示与线线最接近的数据。警告:不应在生产环境中使用。此中间件可以并发出敏感/特权数据。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.