API 配置选项

配置

身份服务在 /etc/keystone/keystone.conf 文件中配置。

以下表格提供了身份服务选项的完整列表。

有关示例配置文件,请参阅 keystone.conf

默认值

debug
类型:

布尔值

默认值:

False

可变:

此选项可以在不重启的情况下更改。

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

log_config_append
类型:

字符串

默认值:

<None>

可变:

此选项可以在不重启的情况下更改。

日志配置文件的名称。此文件将附加到任何现有的日志配置文件。有关日志配置文件的详细信息,请参阅 Python 日志模块文档。请注意,当使用日志配置文件时,所有日志配置都设置在配置文件中,并且其他日志配置选项将被忽略(例如,log-date-format)。

已弃用的变体

Group

名称

DEFAULT

log-config

DEFAULT

log_config

log_date_format
类型:

字符串

默认值:

%Y-%m-%d %H:%M:%S

定义日志记录中的 %(asctime)s 的格式字符串。默认值:上述值。如果设置了 log_config_append,则此选项将被忽略。

log_file
类型:

字符串

默认值:

<None>

(可选) 将日志输出发送到的日志文件名。如果没有设置默认值,日志将输出到 stderr,如 use_stderr 中定义的那样。如果设置了 log_config_append,则此选项将被忽略。

已弃用的变体

Group

名称

DEFAULT

logfile

log_dir
类型:

字符串

默认值:

<None>

(可选) 用于相对 log_file 路径的基本目录。如果设置了 log_config_append,则此选项将被忽略。

已弃用的变体

Group

名称

DEFAULT

logdir

watch_log_file
类型:

布尔值

默认值:

False

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

警告

此选项已弃用,将来可能会被静默忽略。

原因:

已知此功能长期存在问题,并且依赖于未维护的库

use_syslog
类型:

布尔值

默认值:

False

使用 syslog 进行日志记录。现有的 syslog 格式已弃用,以后将更改为符合 RFC5424。如果设置了 log_config_append,则此选项将被忽略。

use_journal
类型:

布尔值

默认值:

False

启用 journald 进行日志记录。如果正在 systemd 环境中运行,您可能希望启用 journal 支持。这样做将使用 journal 本机协议,其中包括结构化元数据以及日志消息。如果设置了 log_config_append,则此选项将被忽略。

syslog_log_facility
类型:

字符串

默认值:

LOG_USER

接收日志行的 syslog facility。如果设置了 log_config_append,则此选项将被忽略。

use_json
类型:

布尔值

默认值:

False

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

use_stderr
类型:

布尔值

默认值:

False

将日志输出记录到标准错误。如果设置了 log_config_append,则此选项将被忽略。

log_color
类型:

布尔值

默认值:

False

(可选) 根据日志级别设置“color”键。此选项仅在将日志记录到 stderr 或 stdout 时生效。如果设置了 log_config_append,则此选项将被忽略。

log_rotate_interval
类型:

整数

默认值:

1

日志文件轮换前的时间量。如果未设置 log_rotation_type 为“interval”,则此选项将被忽略。

log_rotate_interval_type
类型:

字符串

默认值:

days

有效值:

秒、分钟、小时、天、星期几、午夜

轮换间隔类型。在安排下一次轮换时,使用上次文件更改时间(或服务启动时间)。

max_logfile_count
类型:

整数

默认值:

30

最大轮换日志文件数。

max_logfile_size_mb
类型:

整数

默认值:

200

日志文件最大大小(MB)。如果“log_rotation_type”未设置为“size”,则此选项将被忽略。

log_rotation_type
类型:

字符串

默认值:

none

有效值:

interval, size, none

日志轮换类型。

可能的值

interval

以预定义的时间间隔轮换日志。

size

当日志达到预定义的大小后轮换日志。

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_default_format_string
类型:

字符串

默认值:

%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)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_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 %(domain)s %(system_scope)s %(user_domain)s %(project_domain)s

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

default_log_levels
类型:

列表

默认值:

INFO

包日志级别列表,格式为 logger=LEVEL 对。如果设置了 log_config_append,则此选项将被忽略。

publish_errors
类型:

布尔值

默认值:

False

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

instance_format
类型:

字符串

默认值:

"[instance: %(uuid)s] "

与日志消息一起传递的实例的格式。

instance_uuid_format
类型:

字符串

默认值:

"[instance: %(uuid)s] "

与日志消息一起传递的实例 UUID 的格式。

rate_limit_interval
类型:

整数

默认值:

0

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

rate_limit_burst
类型:

整数

默认值:

0

每 rate_limit_interval 允许记录的最大消息数。

rate_limit_except_level
类型:

字符串

默认值:

CRITICAL

有效值:

CRITICAL, ERROR, INFO, WARNING, DEBUG, ‘’

速率限制使用的日志级别。日志级别大于或等于 rate_limit_except_level 的日志不会被过滤。空字符串表示所有级别都不会被过滤。

fatal_deprecations
类型:

布尔值

默认值:

False

启用或禁用弃用信息的致命状态。

admin_token
类型:

字符串

默认值:

<None>

不建议使用此功能。请改用 keystone-manage bootstrap 命令。此选项的值被视为可以通过 API 引导 Keystone 的“共享密钥”。此“令牌”不代表用户(它没有身份),也不携带明确的授权(它有效地绕过大多数授权检查)。如果设置为 None,则该值将被忽略,并且 admin_token 中间件将被有效地禁用。

public_endpoint
类型:

URI

默认值:

<None>

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

max_project_tree_depth
类型:

整数

默认值:

5

项目层次结构的深度上限,不包括作为层次结构顶部的域的项目。警告:将其设置为较大的值可能会对性能产生不利影响。

max_param_size
类型:

整数

默认值:

64

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

警告

此选项自 2025.1 起已弃用,未来可能会被静默忽略。

原因:

此选项没有效果。

max_token_size
类型:

整数

默认值:

255

类似于 [DEFAULT] max_param_size,但为令牌值提供了一个例外。对于 Fernet 令牌,可以将其设置为低至 255。

list_limit
类型:

整数

默认值:

<None>

集合中返回的实体数量上限。此全局限制然后可以被特定驱动程序覆盖,方法是在适当的部分中指定 list_limit(例如,[assignment])。默认情况下不设置限制。在大型部署中,建议将其设置为合理的值,以防止列出所有用户和项目等操作给系统带来不必要的负载。

max_db_limit
类型:

整数

默认值:

1000

最小值:

0

由于查询可能会返回数千个项目,因此可以通过设置此选项来限制单个响应中的项目最大数量。虽然 list_limit 用于设置默认页面大小,但此参数设置了不能超过的全局最大值。

strict_password_check
类型:

布尔值

默认值:

False

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

insecure_debug
类型:

布尔值

默认值:

False

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

default_publisher_id
类型:

字符串

默认值:

<None>

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

notification_format
类型:

字符串

默认值:

cadf

有效值:

basic, cadf

定义身份服务事件的通知格式。 basic 通知仅包含有关正在操作的资源的信息。 cadf 通知具有相同的信息,以及有关事件发起者的信息。 cadf 选项与 basic 选项完全向后兼容,并且推荐用于审计用例。

notification_opt_out
类型:

多值

默认值:

identity.authenticate.success

默认值:

identity.authenticate.pending

您可以减少 keystone 发出的通知数量,方法是显式退出。Keystone 不会发出与此列表中模式匹配的通知。期望值为 identity.<resource_type>.<operation> 的形式。默认情况下,所有与身份验证相关的通知都会自动被抑制。可以多次设置此字段,以退出多个通知主题。例如,以下内容会抑制描述用户创建或成功身份验证事件的通知:notification_opt_out=identity.user.create notification_opt_out=identity.authenticate.success

executor_thread_pool_size
类型:

整数

默认值:

64

当 executor 是 threading 或 eventlet 时,executor 线程池的大小。

已弃用的变体

Group

名称

DEFAULT

rpc_thread_pool_size

rpc_response_timeout
类型:

整数

默认值:

60

等待调用响应的秒数。

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/2025.2/reference/transport.html

control_exchange
类型:

字符串

默认值:

keystone

主题的作用域所在的默认交换机。可以通过 transport_url 选项中指定的交换机名称覆盖。

rpc_ping_enabled
类型:

布尔值

默认值:

False

添加一个端点来响应 ping 调用。端点命名为 oslo_rpc_server_ping

api

response_validation
类型:

字符串

默认值:

warn

有效值:

error, warn, ignore

配置 API 响应的验证。 warn 是生产环境的当前推荐设置。如果您发现有必要启用 ignore 选项,请向 Keystone 团队报告您看到的问题,以便我们改进我们的模式。 error 不应在生产环境中使用。这是因为模式验证发生在生成响应体之后,这意味着任何副作用仍然会发生,并且即使用户收到 HTTP 500 错误,调用也可能不是幂等的。

可能的值

error

对验证失败的响应引发 HTTP 500(服务器错误)

warn

对验证失败的响应记录警告

ignore

忽略模式验证失败

application_credential

driver
类型:

字符串

默认值:

sql

keystone.application_credential 命名空间中,应用程序凭据后端驱动程序的入口点。Keystone 仅提供 sql 驱动程序,因此除非您提供自定义入口点,否则没有理由更改此设置。

caching
类型:

布尔值

默认值:

True

应用程序凭据缓存的切换开关。这只有在启用全局缓存时才有效。

cache_time
类型:

整数

默认值:

<None>

以秒为单位缓存应用程序凭据数据的时间。这只有在启用全局缓存时才有效。

user_limit
类型:

整数

默认值:

-1

用户允许创建的应用程序凭据的最大数量。值为 -1 表示无限制。如果未设置限制,则允许用户随意创建应用程序凭据,这可能会导致 keystone 数据库膨胀或使 keystone 容易受到 DoS 攻击。

assignment

driver
类型:

字符串

默认值:

sql

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

prohibited_implied_role
类型:

列表

默认值:

['admin']

禁止作为隐式角色的角色名称列表。

auth

methods
类型:

列表

默认值:

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

允许的身份验证方法。注意:如果您当前正在使用联合身份验证,则应禁用 external 身份验证方法。外部身份验证和联合身份验证都使用 REMOTE_USER 变量。由于映射插件和外部插件都被调用以验证请求环境中的属性,因此可能会导致冲突。

password
类型:

字符串

默认值:

<None>

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

token
类型:

字符串

默认值:

<None>

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

external
类型:

字符串

默认值:

<None>

keystone.auth.external 命名空间中,外部(REMOTE_USER)身份验证插件模块的入口点。提供的驱动程序是 DefaultDomainDomain。默认驱动程序是 DefaultDomain,它假定由 keystone 中 REMOTE_USER 变量指定的用户名标识的所有用户都存在于默认域的上下文中。 Domain 选项期望向 keystone 呈现额外的环境变量,REMOTE_DOMAIN,其中包含 REMOTE_USER 的域名称(如果未设置 REMOTE_DOMAIN,则将使用默认域)。除非您正在利用“外部身份验证”,在这种情况下,应用程序服务器(例如 Apache)正在处理身份验证而不是 keystone,否则您不需要设置此选项。

oauth1
类型:

字符串

默认值:

<None>

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

mapped
类型:

字符串

默认值:

<None>

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

application_credential
类型:

字符串

默认值:

<None>

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

cache

config_prefix
类型:

字符串

默认值:

cache.oslo

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

expiration_time
类型:

整数

默认值:

600

最小值:

1

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

backend_expiration_time
类型:

整数

默认值:

<None>

最小值:

1

在缓存后端中自动清除过期记录的过期时间。此值应大于 expiration_time 和所有 cache_time 选项

backend
类型:

字符串

默认值:

dogpile.cache.null

有效值:

oslo_cache.memcache_pool, oslo_cache.dict, oslo_cache.mongo, oslo_cache.etcd3gw, dogpile.cache.pymemcache, dogpile.cache.memcached, dogpile.cache.pylibmc, dogpile.cache.bmemcached, dogpile.cache.dbm, dogpile.cache.redis, dogpile.cache.redis_sentinel, dogpile.cache.memory, dogpile.cache.memory_pickle, dogpile.cache.null

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

backend_argument
类型:

多值

默认值:

''

传递给后端模块的参数。对于要传递给 dogpile.cache 后端的每个参数,指定此选项一次。示例格式:“<argname>:<value>”。

proxies
类型:

列表

默认值:

[]

要导入的代理类,它们会影响 dogpile.cache 后端的运作方式。请参阅 dogpile.cache 文档中关于 changing-backend-behavior 的内容。

enabled
类型:

布尔值

默认值:

True

全局缓存开关。

debug_cache_backend
类型:

布尔值

默认值:

False

来自缓存后端的额外调试信息(缓存键、get/set/delete/等调用)。只有在需要查看带有键/值的特定缓存后端 get/set/delete 调用时,此选项才真正有用。通常应将其设置为 false。

memcache_servers
类型:

列表

默认值:

['localhost:11211']

Memcache 服务器的格式为“host:port”。这由依赖于 Memcached 的后端使用。如果使用 dogpile.cache.memcachedoslo_cache.memcache_pool,并且给定的主机引用 IPv6 或给定的域引用 IPv6,则应使用地址族(inet6)前缀给定的地址(例如 inet6:[::1]:11211inet6:[fd12:3456:789a:1::1]:11211inet6:[controller-0.internalapi]:11211)。如果未给出地址族,则这些后端将使用默认 inet 地址族,该地址族对应于 IPv4

memcache_dead_retry
类型:

整数

默认值:

300

在再次尝试之前,Memcached 服务器被认为已死的时间(秒)。(仅适用于 dogpile.cache.memcache 和 oslo_cache.memcache_pool 后端)。

memcache_socket_timeout
类型:

浮点数

默认值:

1.0

每次调用服务器的超时时间(秒)。(仅适用于 dogpile.cache.memcache 和 oslo_cache.memcache_pool 后端)。

memcache_pool_maxsize
类型:

整数

默认值:

10

每个 Memcached 服务器的最大开放连接数。(仅适用于 oslo_cache.memcache_pool 后端)。

memcache_pool_unused_timeout
类型:

整数

默认值:

60

连接在池中未被使用之前保持打开状态的秒数。(仅适用于 oslo_cache.memcache_pool 后端)。

memcache_pool_connection_get_timeout
类型:

整数

默认值:

10

获取 Memcache 客户端连接的操作等待的秒数。

memcache_pool_flush_on_reconnect
类型:

布尔值

默认值:

False

全局切换,确定是否在重新连接时刷新 Memcache。(仅适用于 oslo_cache.memcache_pool 后端)。

memcache_sasl_enabled
类型:

布尔值

默认值:

False

如果 SASL_enable 为 true,则启用 SASL(简单身份验证和安全层),否则禁用。

memcache_username
类型:

字符串

默认值:

<None>

启用 SASL 的 Memcached 的用户名

memcache_password
类型:

字符串

默认值:

<None>

启用 SASL 的 Memcached 的密码

redis_server
类型:

字符串

默认值:

localhost:6379

Redis 服务器的格式为“host:port”

redis_db
类型:

整数

默认值:

0

最小值:

0

Redis 服务器中的数据库 ID

redis_username
类型:

字符串

默认值:

<None>

redis 的用户名

redis_password
类型:

字符串

默认值:

<None>

redis 的密码

redis_sentinels
类型:

列表

默认值:

['localhost:26379']

Redis sentinel 服务器的格式为“host:port”

redis_socket_timeout
类型:

浮点数

默认值:

1.0

每次调用服务器的超时时间(秒)。(仅适用于 dogpile.cache.redis 和 dogpile.cache.redis_sentinel 后端)。

redis_sentinel_service_name
类型:

字符串

默认值:

mymaster

Redis sentinel 集群的服务名称。

tls_enabled
类型:

布尔值

默认值:

False

与缓存服务器通信时使用 TLS 的全局切换。目前受 dogpile.cache.bmemcachedogpile.cache.pymemcacheoslo_cache.memcache_pooldogpile.cache.redisdogpile.cache.redis_sentinel 支持。

tls_cafile
类型:

字符串

默认值:

<None>

建立缓存服务器身份验证所需的 PEM 格式的串联 CA 证书的文件路径。如果 tls_enabled 为 False,则忽略此选项。

tls_certfile
类型:

字符串

默认值:

<None>

包含客户端证书以及建立证书身份验证所需的任何数量的 CA 证书的单个 PEM 格式的文件。只有在需要客户端身份验证时才需要此文件。如果 tls_enabled 为 False,则忽略此选项。

tls_keyfile
类型:

字符串

默认值:

<None>

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

tls_allowed_ciphers
类型:

字符串

默认值:

<None>

设置使用 TLS 上下文创建的套接字的可用密码。它应该是 OpenSSL 密码列表格式的字符串。如果未指定,将提供所有 OpenSSL 启用的密码。目前受 dogpile.cache.bmemcachedogpile.cache.pymemcacheoslo_cache.memcache_pool 支持。

enable_socket_keepalive
类型:

布尔值

默认值:

False

dogpile 的 pymemcache 后端的套接字保活的全局切换

socket_keepalive_idle
类型:

整数

默认值:

1

最小值:

0

连接在开始发送保活探测之前需要保持空闲的时间(秒)。应该是一个大于零的正整数。

socket_keepalive_interval
类型:

整数

默认值:

1

最小值:

0

各个保活探测之间的时间(秒)。应该是一个大于零的正整数。

socket_keepalive_count
类型:

整数

默认值:

1

最小值:

0

TCP 在放弃连接之前应该发送的最大保活探测次数。应该是一个大于零的正整数。

enable_retry_client
类型:

布尔值

默认值:

False

启用重试客户端机制以处理故障。这些机制可用于包装所有类型的 pymemcache 客户端。该包装器允许您定义重试次数以及尝试之间的等待时间。

retry_attempts
类型:

整数

默认值:

2

最小值:

1

在失败之前尝试操作的次数。

retry_delay
类型:

浮点数

默认值:

0

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

hashclient_retry_attempts
类型:

整数

默认值:

2

最小值:

1

在 HashClient 的内部机制中,客户端应该尝试的次数,然后将其标记为已死并从池中删除。

hashclient_retry_delay
类型:

浮点数

默认值:

1

HashClient 的内部机制中,重试尝试之间应该经过的秒数。

dead_timeout
类型:

浮点数

默认值:

60

在 HashClient 的内部机制中,在尝试将节点放回池中之前应该经过的时间(秒)。

enforce_fips_mode
类型:

布尔值

默认值:

False

全局切换,用于强制 OpenSSL FIPS 模式。此功能需要 Python 支持。在所有环境中的 Python 3.9 中可用,并且可能已回溯到较旧的 Python 版本。如果使用的 Python 可执行文件不支持 OpenSSL FIPS 模式,将引发异常。目前受 dogpile.cache.bmemcachedogpile.cache.pymemcacheoslo_cache.memcache_pool 支持。

catalog

driver
类型:

字符串

默认值:

sql

keystone.catalog 命名空间中,目录驱动程序的入口点。Keystone 提供 sql 选项(支持通过 SQL 进行基本的 CRUD 操作)和 endpoint_filter.sql 选项(支持每个项目的任意服务目录)。

caching
类型:

布尔值

默认值:

True

目录缓存的切换开关。这只有在启用全局缓存时才有效。在典型的部署中,没有理由禁用此选项。

cache_time
类型:

整数

默认值:

<None>

缓存目录数据的时间(以秒为单位)。这只有在同时启用了全局缓存和目录缓存时才有效。目录数据(服务、端点等)通常不会频繁更改,因此比全局默认值更长的持续时间可能更可取。

list_limit
类型:

整数

默认值:

<None>

目录集合中返回的实体最大数量。通常没有理由设置此值,因为部署的服务或端点数量不太可能超过合理的限制。

cors

allowed_origin
类型:

列表

默认值:

<None>

指示是否允许与请求“origin”标头中接收到的域共享此资源。格式:“<protocol>://<host>[:<port>]”,不带尾部斜杠。示例:https://horizon.example.com

allow_credentials
类型:

布尔值

默认值:

True

指示实际请求是否可以包含用户凭据

expose_headers
类型:

列表

默认值:

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

指示哪些标头可以安全地暴露给 API。默认值为 HTTP 简单标头。

max_age
类型:

整数

默认值:

3600

CORS 预检请求的最大缓存时间。

allow_methods
类型:

列表

默认值:

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

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

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']

指示实际请求期间可以使用哪些标头字段名称。

credential

driver
类型:

字符串

默认值:

sql

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

provider
类型:

字符串

默认值:

fernet

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

key_repository
类型:

字符串

默认值:

/etc/keystone/credential-keys/

包含用于加密和解密存储在凭据后端中的凭据的 Fernet 密钥的目录。用于加密凭据的 Fernet 密钥与用于加密 Fernet 令牌的 Fernet 密钥无关。这两组密钥应分别管理并需要不同的轮换策略。不要与用于管理 Fernet 令牌密钥的存储库共享此存储库。

caching
类型:

布尔值

默认值:

True

仅在检索用户凭据时启用缓存的开关。除非全局缓存已启用,否则此设置无效。

cache_time
类型:

整数

默认值:

<None>

缓存凭据数据的秒数。除非全局缓存已启用,否则此设置无效。

auth_ttl
类型:

整数

默认值:

15

包含在令牌请求中的时间戳起,签名 EC2 或 S3 令牌请求有效的分钟数。

user_limit
类型:

整数

默认值:

-1

允许用户创建的凭据的最大数量。值为 -1 表示无限制。如果未设置限制,用户可以随意创建凭据,这可能会导致 keystone 数据库膨胀或使 keystone 容易受到 DoS 攻击。

database

sqlite_synchronous
类型:

布尔值

默认值:

True

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

backend
类型:

字符串

默认值:

sqlalchemy

用于数据库的后端。

connection
类型:

字符串

默认值:

<None>

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

slave_connection
类型:

字符串

默认值:

<None>

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

asyncio_connection
类型:

字符串

默认值:

<None>

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

asyncio_slave_connection
类型:

字符串

默认值:

<None>

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

mysql_sql_mode
类型:

字符串

默认值:

TRADITIONAL

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

mysql_wsrep_sync_wait
类型:

整数

默认值:

<None>

仅适用于 Galera,配置新连接上的 wsrep_sync_wait 因果关系检查。默认值为 None,表示不配置任何设置。

connection_recycle_time
类型:

整数

默认值:

3600

连接在连接池中存在的时间超过此秒数后,将在下次从池中检出时替换为新的连接。

max_pool_size
类型:

整数

默认值:

5

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

max_retries
类型:

整数

默认值:

10

启动期间打开数据库连接的最大重试次数。设置为 -1 表示无限重试次数。

retry_interval
类型:

整数

默认值:

10

重试打开 SQL 连接的间隔时间。

max_overflow
类型:

整数

默认值:

50

如果设置,则使用此值作为 SQLAlchemy 的 max_overflow。

connection_debug
类型:

整数

默认值:

0

最小值:

0

最大值:

100

SQL 调试信息的详细程度:0=无,100=全部。

connection_trace
类型:

布尔值

默认值:

False

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

pool_timeout
类型:

整数

默认值:

<None>

如果设置,则使用此值作为 SQLAlchemy 的 pool_timeout。

use_db_reconnect
类型:

布尔值

默认值:

False

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

db_retry_interval
类型:

整数

默认值:

1

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

db_inc_retry_interval
类型:

布尔值

默认值:

True

如果为 True,则增加数据库操作重试之间的间隔,直到达到 db_max_retry_interval。

db_max_retry_interval
类型:

整数

默认值:

10

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

db_max_retries
类型:

整数

默认值:

20

在出现连接错误或死锁错误之前,数据库重试的最大次数。设置为 -1 表示无限重试次数。

connection_parameters
类型:

字符串

默认值:

''

可选的 URL 参数,用于在连接时附加到连接 URL,格式为 param1=value1&param2=value2&…

domain_config

driver
类型:

字符串

默认值:

sql

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

caching
类型:

布尔值

默认值:

True

特定于域的配置后端的缓存开关。除非全局缓存已启用,否则此设置无效。通常没有理由禁用此设置。

cache_time
类型:

整数

默认值:

300

缓存特定于域的配置数据的生存时间 (TTL,以秒为单位)。除非启用了 [domain_config] caching,否则此设置无效。

additional_whitelisted_options
类型:

未知类型

默认值:

<None>

用于树外驱动程序的其他允许的特定于域的选项。这是一个字典列表,键是组名,值是组选项列表。

additional_sensitive_options
类型:

未知类型

默认值:

<None>

用于树外驱动程序的其他敏感的特定于域的选项。这是一个字典列表,键是组名,值是组选项列表。

endpoint_filter

driver
类型:

字符串

默认值:

sql

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

return_all_endpoints_if_no_filter
类型:

布尔值

默认值:

True

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

endpoint_policy

driver
类型:

字符串

默认值:

sql

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

federation

driver
类型:

字符串

默认值:

sql

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

assertion_prefix
类型:

字符串

默认值:

''

用于过滤用于联合断言的环境变量名称的前缀。匹配的变量将传递到联合映射引擎。

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 来覆盖每个协议的值。

federated_domain_name
类型:

字符串

默认值:

Federated

一个任意的域名,用于允许联合临时用户拥有域的概念。请注意,管理员无法创建具有此名称的域或更新现有的域为此名称。除非您真的需要,否则不建议更改此值。

警告

此选项自 T 起已弃用,未来可能会被静默忽略。

原因:

此选项已被身份提供商域中的临时用户所取代。

trusted_dashboard
类型:

多值

默认值:

''

受信任的仪表板主机列表。在接受单点登录请求以返回令牌之前,源主机必须是此列表的成员。您必须设置此选项才能使用基于 Web 的 SSO 流程。例如:trusted_dashboard=https://acme.example.com/auth/websso trusted_dashboard=https://beta.example.com/auth/websso

sso_callback_template
类型:

字符串

默认值:

/etc/keystone/sso_callback_template.html

用作单点登录回调处理程序的 HTML 文件的绝对路径。此页面预计会将用户从 keystone 重定向回受信任的仪表板主机,通过表单编码令牌进行 POST 请求。Keystone 的默认值对于大多数部署应该足够了。

caching
类型:

布尔值

默认值:

True

联合缓存的开关。除非全局缓存已启用,否则此设置无效。通常没有理由禁用此设置。

default_authorization_ttl
类型:

整数

默认值:

0

从映射中携带的组成员资格的有效分钟数。默认值为 0,表示禁用。

attribute_mapping_default_schema_version
类型:

字符串

默认值:

1.0

如果注册的属性映射没有模式版本,则要使用的属性映射默认模式版本。必须注意的是,更改此值不会影响先前应用了其他默认值时注册的属性映射。注册后,需要通过更新 API 更新属性映射模式才能更改属性映射模式版本。

fernet_receipts

key_repository
类型:

字符串

默认值:

/etc/keystone/fernet-keys/

包含 Fernet 收据密钥的目录。在使用 keystone-manage fernet_setup 首次使用之前,此目录必须存在,必须可由运行 keystone-manage fernet_setupkeystone-manage fernet_rotate 的用户写入,并且当然必须可由 keystone 的服务器进程读取。存储库可能包含三种状态的密钥:一个用于收据验证的单个暂定密钥(始终为索引 0),一个用于收据创建和验证的单个主密钥(始终为最高索引),以及任何数量的辅助密钥(所有其他索引值)用于收据验证。对于多个 keystone 节点,每个节点必须共享相同的密钥存储库内容,但暂定密钥(索引 0)除外。安全地在任何一个节点上运行 keystone-manage fernet_rotate 一次,以将暂定密钥(索引 0)提升为新的主密钥(从先前的最高索引递增),并生成一个新的暂定密钥(一个具有索引 0 的新密钥);然后可以将结果存储库原子地复制到其他节点,而无需担心竞争条件(例如,安全地在主机 A 上运行 keystone-manage fernet_rotate,等待任意时间,创建主机 A 上目录的 tarball,将其解包到主机 B 上的临时位置,并原子地移动 (mv) 目录到主机 B)。在不同步其他节点的情况下,在密钥存储库上两次运行 keystone-manage fernet_rotate 将导致所有节点都无法验证的收据。

max_active_keys
类型:

整数

默认值:

3

最小值:

1

这控制着 keystone-manage fernet_rotate 在丢弃密钥之前保持轮换中的密钥数量。默认值为 3,这意味着 keystone 将维护一个暂定密钥(始终为索引 0),一个主密钥(最高的数字索引)和一个辅助密钥(所有其他索引值)。增加此值意味着将保留更多的辅助密钥在轮换中。

fernet_tokens

key_repository
类型:

字符串

默认值:

/etc/keystone/fernet-keys/

包含 Fernet 令牌密钥的目录。在使用 keystone-manage fernet_setup 首次使用之前,此目录必须存在,必须可由运行 keystone-manage fernet_setupkeystone-manage fernet_rotate 的用户写入,并且当然必须可由 keystone 的服务器进程读取。存储库可能包含三种状态的密钥:一个用于令牌验证的单个暂定密钥(始终为索引 0),一个用于令牌创建和验证的单个主密钥(始终为最高索引),以及任何数量的辅助密钥(所有其他索引值)用于令牌验证。对于多个 keystone 节点,每个节点必须共享相同的密钥存储库内容,但暂定密钥(索引 0)除外。安全地在任何一个节点上运行 keystone-manage fernet_rotate 一次,以将暂定密钥(索引 0)提升为新的主密钥(从先前的最高索引递增),并生成一个新的暂定密钥(一个具有索引 0 的新密钥);然后可以将结果存储库原子地复制到其他节点,而无需担心竞争条件(例如,安全地在主机 A 上运行 keystone-manage fernet_rotate,等待任意时间,创建主机 A 上目录的 tarball,将其解包到主机 B 上的临时位置,并原子地移动 (mv) 目录到主机 B)。在不同步其他节点的情况下,在密钥存储库上两次运行 keystone-manage fernet_rotate 将导致所有节点都无法验证的令牌。

max_active_keys
类型:

整数

默认值:

3

最小值:

1

这控制着 keystone-manage fernet_rotate 在丢弃密钥之前保持轮换中的密钥数量。默认值为 3,这意味着 keystone 将维护一个暂定密钥(始终为索引 0),一个主密钥(最高的数字索引)和一个辅助密钥(所有其他索引值)。增加此值意味着将保留更多的辅助密钥在轮换中。

healthcheck

path
类型:

字符串

默认值:

/healthcheck

响应 healthcheck 请求的路径。

警告

此选项已弃用,将来可能会被静默忽略。

detailed
类型:

布尔值

默认值:

False

在响应中显示更多详细信息。安全说明:启用此选项可能会暴露有关正在监视的服务敏感详细信息。请确保验证它不会违反您的安全策略。

backends
类型:

列表

默认值:

[]

可以执行 healthcheck 并将该信息作为请求的一部分返回的其他后端。

allowed_source_ranges
类型:

列表

默认值:

[]

用于限制允许访问 healthcheck 信息的源 IP 的网络地址列表。来自这些网络地址之外的任何请求将被忽略。

ignore_proxied_requests
类型:

布尔值

默认值:

False

忽略带有代理标头的请求。

disable_by_file_path
类型:

字符串

默认值:

<None>

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

disable_by_file_paths
类型:

列表

默认值:

[]

检查基于端口的文件是否存在情况,以确定应用程序是否正在端口上运行。期望一个“port:path”字符串列表。由 DisableByFilesPortsHealthcheck 插件使用。

enable_by_file_paths
类型:

列表

默认值:

[]

检查文件的存在情况。由 EnableByFilesHealthcheck 插件使用。

identity

default_domain_id
类型:

字符串

默认值:

default

此项引用了用于所有 Identity API v2 请求的域(这些请求不感知域)。可以通过 keystone-manage bootstrap 为您创建一个具有此 ID 的域。为了防止意外破坏 v2 API,不能在 v3 API 上删除由此 ID 引用域。除了必须存在以维持对 v2 客户端的支持外,此域没有任何特殊之处。通常没有理由更改此值。

domain_specific_drivers_enabled
类型:

布尔值

默认值:

False

可以为所有域或部分域配置各自的身份驱动程序,每个驱动程序都有自己的部分配置选项,存储在资源后端或域配置目录中的文件中(具体取决于 [identity] domain_configurations_from_database 的设置)。只需要在此方式中指定特定于域的值。默认情况下,此功能已禁用,但将来可能会默认启用;设置为 true 以启用。

domain_configurations_from_database
类型:

布尔值

默认值:

False

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

domain_config_dir
类型:

字符串

默认值:

/etc/keystone/domains

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

driver
类型:

字符串

默认值:

sql

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

caching
类型:

布尔值

默认值:

True

身份缓存的开关。除非启用了全局缓存,否则此项无效。通常没有理由禁用此项。

cache_time
类型:

整数

默认值:

600

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

max_password_length
类型:

整数

默认值:

4096

最大值:

4096

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

list_limit
类型:

整数

默认值:

<None>

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

password_hash_algorithm
类型:

字符串

默认值:

bcrypt

有效值:

bcrypt, bcrypt_sha256, scrypt, pbkdf2_sha512

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

password_hash_rounds
类型:

整数

默认值:

<None>

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

scrypt_block_size
类型:

整数

默认值:

<None>

可选的块大小,传递给 scrypt 哈希函数(r 参数)。用于将 scrypt 调整到 CPU 架构的最佳性能。只有当 password_hash_algorithm 选项设置为 scrypt 时,此选项才使用。默认值为 8。

scrypt_parallelism
类型:

整数

默认值:

<None>

可选的并行度,传递给 scrypt 哈希函数(p 参数)。只有当 password_hash_algorithm 选项设置为 scrypt 时,此选项才使用。默认值为 1。

salt_bytesize
类型:

整数

默认值:

<None>

最小值:

0

最大值:

96

用于 scrypt 和 pbkfd2_sha512 哈希盐的字节数。scrypt 的默认值为 16 字节。pbkfd2_sha512 的默认值为 16 字节。由于用于存储密码哈希的列的大小,限制为最多 96 字节。

identity_mapping

driver
类型:

字符串

默认值:

sql

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

generator
类型:

字符串

默认值:

sha256

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

backward_compatible_ids
类型:

布尔值

默认值:

True

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

jwt_tokens

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 的部署。

jws_private_key_repository
类型:

字符串

默认值:

/etc/keystone/jws-keys/private

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

ldap

url
类型:

字符串

默认值:

ldap://

用于连接到 LDAP 服务器的 URL。可以指定多个 LDAP URL,以逗号分隔的字符串形式。第一个成功绑定的 URL 用于连接。

randomize_urls
类型:

布尔值

默认值:

False

随机化每个 Keystone 进程中 URL 的顺序。这使得故障行为更加渐进,因为如果第一个服务器宕机,进程/线程将等待指定的超时时间,然后再尝试连接到列表中的后续服务器。默认值为 False,为了向后兼容。

user
类型:

字符串

默认值:

<None>

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

password
类型:

字符串

默认值:

<None>

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

suffix
类型:

字符串

默认值:

cn=example,cn=com

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

query_scope
类型:

字符串

默认值:

one

有效值:

one, sub

搜索范围,定义在搜索基数中搜索的深度。值为 one(代表 oneLevelsingleLevel)表示搜索直接位于基数对象下方的对象,但不包括基数对象本身。值为 sub(代表 subtreewholeSubtree)表示搜索基数对象本身和其下方的整个子树。

page_size
类型:

整数

默认值:

0

最小值:

0

定义 Keystone 应从 LDAP 服务器请求的每页的最大结果数。值为零 (0) 会禁用分页。

alias_dereferencing
类型:

字符串

默认值:

default

有效值:

never, searching, always, finding, default

用于涉及别名的查询的 LDAP 取消引用选项。值为 default 将回退到使用 ldap.conf 中配置的默认取消引用行为。值为 never 会阻止取消引用别名。值为 searching 仅在名称解析后取消引用别名。值为 finding 仅在名称解析期间取消引用别名。值为 always 在所有情况下都会取消引用别名。

debug_level
类型:

整数

默认值:

<None>

最小值:

-1

设置 LDAP 调用中的 LDAP 调试级别。值为 0 表示未启用调试。此值是一个位掩码,请参阅您的 LDAP 文档以获取可能的值。

chase_referrals
类型:

布尔值

默认值:

<None>

设置 Keystone 在目录分区中追逐引用的行为。如果未设置,将使用系统的默认行为。

user_tree_dn
类型:

字符串

默认值:

<None>

用于用户的搜索基数。默认值为 ou=Users,并附加 [ldap] suffix

user_filter
类型:

字符串

默认值:

<None>

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

user_objectclass
类型:

字符串

默认值:

inetOrgPerson

用于用户的 LDAP 对象类。

user_id_attribute
类型:

字符串

默认值:

cn

映射到 keystone 中用户 ID 的 LDAP 属性。 这不应是多值属性。 预计用户 ID 在 keystone 域和 URL 中全局唯一且安全。

user_name_attribute
类型:

字符串

默认值:

sn

映射到 keystone 中用户名的 LDAP 属性。 预计用户名仅在 keystone 域内唯一,并且预计不安全用于 URL。

user_description_attribute
类型:

字符串

默认值:

description

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

user_mail_attribute
类型:

字符串

默认值:

mail

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

user_pass_attribute
类型:

字符串

默认值:

userPassword

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

user_enabled_attribute
类型:

字符串

默认值:

enabled

映射到 keystone 中用户启用属性的 LDAP 属性。 如果将此选项设置为 userAccountControl,则您可能需要设置 [ldap] user_enabled_mask[ldap] user_enabled_default

user_enabled_invert
类型:

布尔值

默认值:

False

逻辑上否定从 LDAP 服务器获取的启用属性的布尔值。 某些 LDAP 服务器使用布尔锁定属性,其中“true”表示帐户已禁用。 将 [ldap] user_enabled_invert = true 允许使用这些锁定属性。 如果使用 [ldap] user_enabled_mask[ldap] user_enabled_emulation 选项,则此选项将不起作用。

user_enabled_mask
类型:

整数

默认值:

0

最小值:

0

如果 LDAP 服务器将“启用”表示为整数上的位而不是离散的布尔值,则用于选择指示启用值位的位掩码整数。 值 0 表示未使用掩码。 如果未设置为 0,则典型值为 2。 这通常在 [ldap] user_enabled_attribute = userAccountControl 时使用。 设置此选项会导致 keystone 忽略 [ldap] user_enabled_invert 的值。

user_enabled_default
类型:

字符串

默认值:

True

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

user_attribute_ignore
类型:

列表

默认值:

['default_project_id']

在创建和更新时要忽略的用户属性列表,或者是否应为列出或显示用户过滤特定的用户属性。

user_default_project_id_attribute
类型:

字符串

默认值:

<None>

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

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_additional_attribute_mapping
类型:

列表

默认值:

[]

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

group_tree_dn
类型:

字符串

默认值:

<None>

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

group_filter
类型:

字符串

默认值:

<None>

用于组的 LDAP 搜索过滤器。

group_objectclass
类型:

字符串

默认值:

groupOfNames

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

group_id_attribute
类型:

字符串

默认值:

cn

映射到 keystone 中组 ID 的 LDAP 属性。 这不应是多值属性。 预计组 ID 在 keystone 域和 URL 中全局唯一且安全。

group_name_attribute
类型:

字符串

默认值:

ou

映射到 keystone 中组名称的 LDAP 属性。 预计组名称仅在 keystone 域内唯一,并且预计不安全用于 URL。

group_member_attribute
类型:

字符串

默认值:

member(成员)

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

group_members_are_ids
类型:

布尔值

默认值:

False

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

group_desc_attribute
类型:

字符串

默认值:

description

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

group_attribute_ignore
类型:

列表

默认值:

[]

在创建和更新时要忽略的组属性列表,或者是否应为列出或显示组过滤特定的组属性。

group_additional_attribute_mapping
类型:

列表

默认值:

[]

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

group_ad_nesting
类型:

布尔值

默认值:

False

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

tls_cacertfile
类型:

字符串

默认值:

<None>

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

tls_cacertdir
类型:

字符串

默认值:

<None>

用于与 LDAP 服务器通信时要使用的 CA 证书目录的绝对路径。 如果也设置了 [ldap] tls_cacertfile,则没有理由设置此选项。

use_tls
类型:

布尔值

默认值:

False

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

tls_req_cert
类型:

字符串

默认值:

demand

有效值:

demand, never, allow

指定对传入 TLS 会话中的客户端证书执行哪些检查。 如果设置为 demand,则始终需要从 LDAP 服务器请求证书并需要证书。 如果设置为 allow,则始终请求证书,但不需要来自 LDAP 服务器的证书。 如果设置为 never,则永远不会请求证书。

connection_timeout
类型:

整数

默认值:

-1

最小值:

-1

与 LDAP 服务器通信的连接超时时间。 值 -1 表示连接永远不会超时。

use_pool
类型:

布尔值

默认值:

True

为与 LDAP 服务器的查询启用 LDAP 连接池。 通常没有理由禁用此选项。

pool_size
类型:

整数

默认值:

10

最小值:

1

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

pool_retry_max
类型:

整数

默认值:

3

最小值:

1

在放弃之前尝试连接到 LDAP 服务器的最大次数。 值为 1 表示仅进行一次连接尝试。 除非也启用了 [ldap] use_pool,否则此选项无效。

pool_retry_delay
类型:

浮点数

默认值:

0.1

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

pool_connection_timeout
类型:

整数

默认值:

-1

最小值:

-1

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

pool_connection_lifetime
类型:

整数

默认值:

600

最小值:

1

与 LDAP 服务器的连接的最大生存期(秒)。 当超过此生存期时,连接将被取消绑定并从连接池中删除。 除非也启用了 [ldap] use_pool,否则此选项无效。

use_auth_pool
类型:

布尔值

默认值:

True

为最终用户身份验证启用 LDAP 连接池。 通常没有理由禁用此选项。

auth_pool_size
类型:

整数

默认值:

100

最小值:

1

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

auth_pool_connection_lifetime
类型:

整数

默认值:

60

最小值:

1

与 LDAP 服务器的最终用户身份验证连接的最大生存期(秒)。 当超过此生存期时,连接将被取消绑定并从连接池中删除。 除非也启用了 [ldap] use_auth_pool,否则此选项无效。

oauth1

driver
类型:

字符串

默认值:

sql

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

request_token_duration
类型:

整数

默认值:

28800

最小值:

0

OAuth 请求令牌在创建后保持有效的时间(秒)。 这是用户授权令牌的时间。 将此选项设置为零表示请求令牌将永久有效。

access_token_duration
类型:

整数

默认值:

86400

最小值:

0

OAuth 访问令牌在创建后保持有效的时间(秒)。 这是消费者与服务提供商(通常是 keystone)交互的时间。 将此选项设置为零表示访问令牌将永久有效。

oauth2

oauth2_authn_methods
类型:

列表

默认值:

['tls_client_auth', 'client_secret_basic']

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

oauth2_cert_dn_mapping_id
类型:

字符串

默认值:

oauth2_mapping

用于定义映射规则 ID。 如果未设置,则映射规则 ID 为 oauth2_mapping。

oslo_messaging_kafka

kafka_max_fetch_bytes
类型:

整数

默认值:

1048576

Kafka 消费者最大获取字节数

kafka_consumer_timeout
类型:

浮点数

默认值:

1.0

Kafka 消费者的默认超时时间(秒)

consumer_group
类型:

字符串

默认值:

oslo_messaging_consumer

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

producer_batch_timeout
类型:

浮点数

默认值:

0.0

KafkaProducer 批量处理延迟的上限(秒)

producer_batch_size
类型:

整数

默认值:

16384

生产者异步发送的批处理大小

compression_codec
类型:

字符串

默认值:

none

有效值:

none, gzip, snappy, lz4, zstd

生产者生成的所有数据的压缩编解码器。如果未设置,则不使用压缩。请注意,允许的值取决于 kafka 版本

enable_auto_commit
类型:

布尔值

默认值:

False

启用异步消费者提交

max_poll_records
类型:

整数

默认值:

500

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

security_protocol
类型:

字符串

默认值:

PLAINTEXT

有效值:

PLAINTEXT, SASL_PLAINTEXT, SSL, SASL_SSL

用于与代理通信的协议

sasl_mechanism
类型:

字符串

默认值:

PLAIN

安全协议为 SASL 时的机制

ssl_cafile
类型:

字符串

默认值:

''

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

ssl_client_cert_file
类型:

字符串

默认值:

''

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

ssl_client_key_file
类型:

字符串

默认值:

''

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

ssl_client_key_password
类型:

字符串

默认值:

''

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

oslo_messaging_notifications

driver
类型:

多值

默认值:

''

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

transport_url
类型:

字符串

默认值:

<None>

用于通知的消息驱动程序的 URL。如果未设置,我们将回退到用于 RPC 的相同配置。

topics
类型:

列表

默认值:

['notifications']

用于 OpenStack 通知 AMQP 主题。

retry
类型:

整数

默认值:

-1

由于可恢复错误而未能传递的通知消息重试的最大次数。0 - 不重试,-1 - 无限

oslo_messaging_rabbit

amqp_durable_queues
类型:

布尔值

默认值:

False

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

amqp_auto_delete
类型:

布尔值

默认值:

False

在 AMQP 中自动删除队列。

rpc_conn_pool_size
类型:

整数

默认值:

30

最小值:

1

RPC 连接池的大小。

conn_pool_min_size
类型:

整数

默认值:

2

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

conn_pool_ttl
类型:

整数

默认值:

1200

池中空闲连接的生存时间(秒)

ssl
类型:

布尔值

默认值:

False

通过 SSL 连接。

ssl_version
类型:

字符串

默认值:

''

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

ssl_key_file
类型:

字符串

默认值:

''

SSL 密钥文件(仅在启用 SSL 时有效)。

ssl_cert_file
类型:

字符串

默认值:

''

SSL 证书文件(仅在启用 SSL 时有效)。

ssl_ca_file
类型:

字符串

默认值:

''

用于验证服务器证书的 SSL 证书颁发机构文件(仅在启用 SSL 时有效)。

ssl_enforce_fips_mode
类型:

布尔值

默认值:

False

全局切换以强制执行 OpenSSL FIPS 模式。此功能需要 Python 支持。这在所有环境中的 Python 3.9 中可用,并且可能已回溯到旧版本的 Python。如果使用的 Python 可执行文件不支持 OpenSSL FIPS 模式,将引发异常。

heartbeat_in_pthread
类型:

布尔值

默认值:

False

(已弃用) 建议不再使用此选项。默认情况下,通过本机 python 线程运行健康检查心跳线程。如果此选项等于 False,则心跳将继承父进程的执行模型。例如,如果父进程通过使用 eventlet/greenlet 猴子补丁了 stdlib,则心跳将通过绿色线程运行。仅当使用 eventlet 作为核心服务框架的服务时,才应将此选项设置为 True。

警告

此选项已弃用,将来可能会被静默忽略。

原因:

该选项与即将删除的 Eventlet 相关。此外,这从未像预期那样与使用 eventlet 作为核心服务框架的服务一起工作。

kombu_reconnect_delay
类型:

浮点数

默认值:

1.0

最小值:

0.0

最大值:

4.5

响应 AMQP 消费者取消通知后重新连接的等待时间(秒)。

kombu_reconnect_splay
类型:

浮点数

默认值:

0.0

最小值:

0.0

响应 AMQP 消费者取消通知后重新连接时随机等待时间。

kombu_compression
类型:

字符串

默认值:

<None>

实验性:可能的值是:gzip、bz2。如果未设置,则不使用压缩。此选项可能在未来版本中不可用。

kombu_missing_consumer_retry_timeout
类型:

整数

默认值:

60

在放弃向其发送回复之前等待缺失客户端的时间。此值不应大于 rpc_response_timeout。

已弃用的变体

Group

名称

oslo_messaging_rabbit

kombu_reconnect_timeout

kombu_failover_strategy
类型:

字符串

默认值:

round-robin

有效值:

round-robin, shuffle

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

rabbit_login_method
类型:

字符串

默认值:

AMQPLAIN

有效值:

PLAIN, AMQPLAIN, EXTERNAL, RABBIT-CR-DEMO

RabbitMQ 登录方法。

rabbit_retry_interval
类型:

整数

默认值:

1

最小值:

1

与 RabbitMQ 重新连接的频率。

rabbit_retry_backoff
类型:

整数

默认值:

2

最小值:

0

在连接到 RabbitMQ 时重试之间的回退时间。

rabbit_interval_max
类型:

整数

默认值:

30

最小值:

1

RabbitMQ 连接重试的最大间隔。

rabbit_ha_queues
类型:

布尔值

默认值:

False

尝试在 RabbitMQ 中使用 HA 队列(x-ha-policy:all)。如果您更改此选项,则必须擦除 RabbitMQ 数据库。在 RabbitMQ 3.0 中,队列镜像不再由声明队列时的 x-ha-policy 参数控制。如果您只想确保所有队列(不包括具有自动生成名称的队列)在所有节点上镜像,请运行:“rabbitmqctl set_policy HA ‘^(?!amq.).*’ ‘{“ha-mode”: “all”}’ “

rabbit_quorum_queue
类型:

布尔值

默认值:

False

在 RabbitMQ 中使用 quorum 队列(x-queue-type:quorum)。quorum 队列是 RabbitMQ 的一种现代队列类型,它实现了一个基于 Raft 共识算法的持久、复制的 FIFO 队列。它从 RabbitMQ 3.8.0 开始可用。如果设置此选项,它将与 HA 队列(rabbit_ha_queues)即镜像队列冲突,换句话说,应禁用 HA 队列。Quorum 队列默认情况下也是持久的,因此启用此选项时会忽略 amqp_durable_queues 选项。

rabbit_transient_quorum_queue
类型:

布尔值

默认值:

False

在 RabbitMQ 中为瞬态队列使用 quorum 队列。启用此选项将确保这些队列也使用 quorum 类型的 rabbit 队列,这些队列默认情况下是 HA。

rabbit_quorum_delivery_limit
类型:

整数

默认值:

0

每次将消息重新传递给消费者时,都会递增计数器。一旦重新传递计数超过传递限制,该消息将被丢弃或死信(如果配置了 DLX 交换机)。仅当启用 rabbit_quorum_queue 时使用,默认值为 0,表示不设置限制。

rabbit_quorum_max_memory_length
类型:

整数

默认值:

0

默认情况下,所有消息都保存在内存中。如果 quorum 队列增长,可能会给集群带来内存压力。此选项可以限制 quorum 队列中的消息数量。仅当启用 rabbit_quorum_queue 时使用,默认值为 0,表示不设置限制。

rabbit_quorum_max_memory_bytes
类型:

整数

默认值:

0

默认情况下,所有消息都保存在内存中。如果 quorum 队列增长,可能会给集群带来内存压力。此选项可以限制 quorum 队列使用的内存字节数。仅在启用 rabbit_quorum_queue 时使用,默认值为 0,表示不设置限制。

rabbit_transient_queues_ttl
类型:

整数

默认值:

1800

最小值:

0

表示队列 TTL(x-expires)的秒数(正整数)。对于达到 TTL 持续时间的未使用的队列,将自动删除。该参数仅影响回复和扇出队列。将值设置为 0 将禁用 x-expires。如果这样做,请确保您拥有一个 rabbitmq 策略来删除队列,否则您的部署会随着时间的推移创建无限数量的队列。如果将 rabbit_stream_fanout 设置为 True,此选项将控制扇出队列中消息的数据保留策略(x-max-age),而不是队列持续时间本身。因此,一旦达到 TTL,流队列中最旧的数据将被丢弃。将设置为 0 将禁用流的 x-max-age,从而使流无限增长并填满磁盘空间

rabbit_qos_prefetch_count
类型:

整数

默认值:

0

指定要预取的消息数量。设置为零允许无限数量的消息。

heartbeat_timeout_threshold
类型:

整数

默认值:

60

如果心跳的 keep-alive 失败,则 Rabbit broker 被认为已关闭的时间(秒)。(0 禁用心跳)。

heartbeat_rate
类型:

整数

默认值:

3

在 heartbeat_timeout_threshold 期间检查心跳的频率。

direct_mandatory_flag
类型:

布尔值

默认值:

True

(已弃用)启用/禁用直接发送的 RabbitMQ mandatory 标志。直接发送用作回复,因此如果客户端队列不存在,则会引发 MessageUndeliverable 异常。MessageUndeliverable 异常将用于超时循环,以便让发送者有机会恢复。此标志已弃用,并且不再可以禁用此功能

警告

此选项已弃用,将来可能会被静默忽略。

原因:

Mandatory 标志不再可以禁用。

enable_cancel_on_failover
类型:

布尔值

默认值:

False

启用 x-cancel-on-ha-failover 标志,以便 rabbitmq 服务器在队列关闭时取消并通知消费者

use_queue_manager
类型:

布尔值

默认值:

False

我们应该使用一致的队列名称还是随机名称

hostname
类型:

字符串

默认值:

node1.example.com

此选项有一个示例默认值,这意味着其实际默认值可能与上述文档值不同。

队列管理器使用的主机名。默认值为 socket.gethostname() 返回的值。

processname
类型:

字符串

默认值:

nova-api

此选项有一个示例默认值,这意味着其实际默认值可能与上述文档值不同。

队列管理器使用的进程名称

rabbit_stream_fanout
类型:

布尔值

默认值:

False

在 RabbitMQ 中使用流队列(x-queue-type: stream)。流是 RabbitMQ 3.9.0 及更高版本中一种新的持久化和复制的数据结构(“队列类型”),它模拟了一个仅追加日志,具有非破坏性消费者语义。如果设置此选项,将用单个流队列替换所有扇出队列。

oslo_middleware

max_request_body_size
类型:

整数

默认值:

114688

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

enable_proxy_headers_parsing
类型:

布尔值

默认值:

False

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

http_basic_auth_user_file
类型:

字符串

默认值:

/etc/htpasswd

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

oslo_policy

enforce_scope
类型:

布尔值

默认值:

True

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

警告

此选项已弃用,将来可能会被静默忽略。

原因:

此配置是临时添加的,旨在促进顺利过渡到新的 RBAC。OpenStack 将始终强制执行范围检查。此配置选项已被弃用,将在 2025.2 版本周期中删除。

enforce_new_defaults
类型:

布尔值

默认值:

True

此选项控制在评估策略时是否使用旧的弃用默认值。如果为 True,则不会评估旧的弃用默认值。这意味着,如果任何现有的令牌允许使用旧的默认值,但对于新的默认值不允许,则将被禁止。鼓励启用此标志以及 enforce_scope 标志,以便同时获得新默认值和 scope_type 的好处。如果为 False,则逻辑上将弃用策略检查字符串与新的策略检查字符串进行 OR 运算,从而允许在具有新策略的发布版本之间实现平滑的升级体验,这是默认行为。

policy_file
类型:

字符串

默认值:

policy.yaml

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

policy_default_rule
类型:

字符串

默认值:

default

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

policy_dirs
类型:

多值

默认值:

policy.d

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

remote_content_type
类型:

字符串

默认值:

application/x-www-form-urlencoded

有效值:

application/x-www-form-urlencoded, application/json

用于基于 REST 的策略检查发送和接收数据的 Content Type

remote_ssl_verify_server_crt
类型:

布尔值

默认值:

False

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

remote_ssl_ca_crt_file
类型:

字符串

默认值:

<None>

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

remote_ssl_client_crt_file
类型:

字符串

默认值:

<None>

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

remote_ssl_client_key_file
类型:

字符串

默认值:

<None>

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

remote_timeout
类型:

浮点数

默认值:

60

最小值:

0

基于 REST 的策略检查的超时时间(秒)

policy

driver
类型:

字符串

默认值:

sql

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

list_limit
类型:

整数

默认值:

<None>

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

profiler

enabled
类型:

布尔值

默认值:

False

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

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

可能的值

  • True:启用该功能

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

已弃用的变体

Group

名称

profiler

profiler_enabled

trace_sqlalchemy
类型:

布尔值

默认值:

False

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

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

可能的值

  • True:启用 SQL 请求分析。每个 SQL 查询都将成为跟踪的一部分,并可以分析花费的时间。

  • False:禁用 SQL 请求分析。花费的时间仅在较高层次的操作上显示。无法以这种方式分析单个 SQL 查询。

trace_requests
类型:

布尔值

默认值:

False

启用 python requests 包分析。

支持的驱动程序:jaeger+otlp

默认值为 False。

可能的值

  • True:启用请求分析。

  • False:禁用请求分析。

hmac_keys
类型:

字符串

默认值:

SECRET_KEY

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

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

应设置“enabled”标志和“hmac_keys”配置选项才能启用分析。此外,为了生成所有服务之间的正确分析信息,至少有一个密钥需要在 OpenStack 项目之间保持一致。这确保了客户端可以使用它来生成包含所有可能资源的跟踪。

connection_string
类型:

字符串

默认值:

messaging://

通知后端连接字符串。

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

可能的示例值

  • messaging:// - 使用 oslo_messaging 驱动程序发送跨度。

  • redis://127.0.0.1:6379 - 使用 redis 驱动程序发送跨度。

  • mongodb://127.0.0.1:27017 - 使用 mongodb 驱动程序发送跨度。

  • elasticsearch://127.0.0.1:9200 - 使用 elasticsearch 驱动程序发送跨度。

  • jaeger://127.0.0.1:6831 - 使用 jaeger 跟踪作为驱动程序发送跨度。

es_doc_type
类型:

字符串

默认值:

notification

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

es_scroll_time
类型:

字符串

默认值:

2m

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

es_scroll_size
类型:

整数

默认值:

10000

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

socket_timeout
类型:

浮点数

默认值:

0.1

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

sentinel_service_name
类型:

字符串

默认值:

mymaster

Redissentinel 使用服务名称来标识主 redis 服务。此参数定义该名称(例如:sentinal_service_name=mymaster)。

filter_error_trace
类型:

布尔值

默认值:

False

启用将包含错误/异常的跟踪过滤到单独的位置。

默认值为 False。

可能的值

  • True:启用过滤包含错误/异常的跟踪。

  • False:禁用过滤器。

profiler_jaeger

service_name_prefix
类型:

字符串

默认值:

<None>

将服务名称前缀设置为 Jaeger 服务名称。

process_tags
类型:

dict

默认值:

{}

设置进程跟踪器标签。

profiler_otlp

service_name_prefix
类型:

字符串

默认值:

<None>

将服务名称前缀设置为 OTLP 导出器。

凭证

expiration
类型:

整数

默认值:

300

最小值:

0

最大值:

86400

凭证应保持有效的时间长度(以秒为单位)。此值应始终非常短,因为它代表用户重新尝试使用缺失的身份验证方法的时间。

provider
类型:

字符串

默认值:

fernet

keystone.receipt.provider 命名空间中的凭证提供程序入口点。凭证提供程序控制凭证的构建和验证操作。Keystone 目前仅包含 fernet 凭证提供程序。fernet 凭证无需持久化,但需要运行 keystone-manage fernet_setup(另请参阅 keystone-manage fernet_rotate 命令)。

caching
类型:

布尔值

默认值:

True

切换凭证创建和验证数据的缓存。除非启用全局缓存,或者如果禁用 `cache_on_issue`,否则此选项无效,因为我们仅在颁发凭证时缓存凭证。

cache_time
类型:

整数

默认值:

300

最小值:

0

缓存凭证创建和验证数据的秒数。除非同时启用了全局缓存和 [凭证] 缓存,否则此选项无效。

cache_on_issue
类型:

布尔值

默认值:

True

启用将已颁发的凭证数据存储到凭证验证缓存中,以便首次凭证验证不会导致完整的验证周期。除非同时启用了全局缓存和凭证缓存,否则此选项无效。

资源

driver
类型:

字符串

默认值:

sql

keystone.resource 命名空间中的资源驱动程序入口点。Keystone 仅提供 sql 驱动程序,除非您正在为 Keystone 编写专有驱动程序,否则无需设置此选项。

caching
类型:

布尔值

默认值:

True

切换资源缓存。除非启用全局缓存,否则此选项无效。

已弃用的变体

Group

名称

分配

缓存

cache_time
类型:

整数

默认值:

<None>

缓存资源数据的秒数。除非启用全局缓存,否则此选项无效。

已弃用的变体

Group

名称

分配

缓存时间

list_limit
类型:

整数

默认值:

<None>

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

已弃用的变体

Group

名称

分配

列表限制

admin_project_domain_name
类型:

字符串

默认值:

<None>

拥有 admin_project_name 的域的名称。如果未设置,则没有管理项目。[资源] admin_project_name 必须设置为使用此选项。

admin_project_name
类型:

字符串

默认值:

<None>

这是一个特殊的项目,代表跨服务的云级别管理员权限。作用域限定为此项目的令牌将包含一个 true is_admin_project 属性,以指示策略系统该特定项目上的角色分配应平等地应用于每个项目。如果未设置,则没有管理项目,因此没有明确的跨项目角色分配方式。[资源] admin_project_domain_name 必须设置为使用此选项。

project_name_url_safe
类型:

字符串

默认值:

关闭

有效值:

关闭,新,严格

这控制着项目名称是否限制包含 URL 保留字符。如果设置为 ,则尝试创建或更新包含 URL 不安全名称的项目将失败。如果设置为 严格,则尝试使用 URL 不安全的域名来限定令牌将失败,从而强制所有项目名称更新为 URL 安全。

domain_name_url_safe
类型:

字符串

默认值:

关闭

有效值:

关闭,新,严格

这控制着域名是否限制包含 URL 保留字符。如果设置为 ,则尝试创建或更新包含 URL 不安全名称的域名将失败。如果设置为 严格,则尝试使用 URL 不安全的域名来限定令牌将失败,从而强制所有域名更新为 URL 安全。

撤销

driver
类型:

字符串

默认值:

sql

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

expiration_buffer
类型:

整数

默认值:

1800

最小值:

0

令牌过期后,后端可以清除相应撤销事件的秒数。

caching
类型:

布尔值

默认值:

True

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

cache_time
类型:

整数

默认值:

3600

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

已弃用的变体

Group

名称

令牌

撤销缓存时间

角色

driver
类型:

字符串

默认值:

<None>

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

caching
类型:

布尔值

默认值:

True

切换角色缓存。除非启用全局缓存,否则此选项无效。在典型的部署中,没有理由禁用此选项。

cache_time
类型:

整数

默认值:

<None>

缓存角色数据的秒数。除非同时启用了全局缓存和 [角色] 缓存,否则此选项无效。

list_limit
类型:

整数

默认值:

<None>

角色集合中返回的最大实体数。如果您的部署中有大量离散角色,则可能需要调整此值。

SAML

assertion_expiration_time
类型:

整数

默认值:

3600

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

xmlsec1_binary
类型:

字符串

默认值:

xmlsec1

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

certfile
类型:

字符串

默认值:

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

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

keyfile
类型:

字符串

默认值:

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

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

idp_entity_id
类型:

URI

默认值:

<None>

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

idp_sso_endpoint
类型:

URI

默认值:

<None>

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

idp_lang
类型:

字符串

默认值:

en

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

idp_organization_name
类型:

字符串

默认值:

SAML 身份 提供程序

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

idp_organization_display_name
类型:

字符串

默认值:

OpenStack SAML 身份 提供程序

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

idp_organization_url
类型:

URI

默认值:

https://example.com/

这是身份提供程序的组织的 URL。此处引用的 URL 应对人类有用。

idp_contact_company
类型:

字符串

默认值:

示例, 公司

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

idp_contact_name
类型:

字符串

默认值:

SAML 身份 提供程序 支持

这是身份提供程序联系人的名字。

idp_contact_surname
类型:

字符串

默认值:

支持

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

idp_contact_email
类型:

字符串

默认值:

support@example.com

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

idp_contact_telephone
类型:

字符串

默认值:

+1 800 555 0100

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

idp_contact_type
类型:

字符串

默认值:

其他

有效值:

技术,支持,管理,账单,其他

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

idp_metadata_path
类型:

字符串

默认值:

/etc/keystone/saml2_idp_metadata.xml

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

relay_state_prefix
类型:

字符串

默认值:

ss:mem

用于生成增强型客户端和代理 (ECP) 断言的 RelayState SAML 属性的前缀。在典型的部署中,没有理由更改此值。

安全合规性

disable_user_account_days_inactive
类型:

整数

默认值:

<None>

最小值:

1

用户在被视为“不活动”并自动禁用(锁定)之前,可以不进行身份验证的最大天数。默认情况下禁用此功能;设置任何值以启用它。此功能取决于 sql 后端用于 [身份] 驱动程序。当用户超过此阈值并被视为“不活动”时,用户在 HTTP API 中的 enabled 属性可能与用户表中 enabled 列的值不匹配。

lockout_failure_attempts
类型:

整数

默认值:

<None>

最小值:

1

用户在帐户被锁定指定秒数(由 [安全合规性] lockout_duration 指定)之前,可以尝试身份验证失败的最大次数。默认情况下禁用此功能。如果启用此功能并且未设置 [安全合规性] lockout_duration,则用户可能会被无限期锁定,直到通过 API 显式启用用户为止。此功能取决于 sql 后端用于 [身份] 驱动程序

lockout_duration
类型:

整数

默认值:

1800

最小值:

1

当超过身份验证失败的最大次数(由 [安全合规性] lockout_failure_attempts 指定)时,用户帐户将被锁定的秒数。设置此选项只有在您还将 [安全合规性] lockout_failure_attempts 设置为非零值时才会生效。此功能取决于 sql 后端用于 [身份] 驱动程序

password_expires_days
类型:

整数

默认值:

<None>

最小值:

1

密码在需要更改之前有效的天数。默认情况下禁用此功能。如果启用,新的密码更改将具有到期日期,但是现有密码不受影响。此功能取决于 sql 后端用于 [身份] 驱动程序

unique_last_password_count
类型:

整数

默认值:

0

最小值:

0

此选项控制为了强制新创建的密码唯一性,需要保留的先前用户密码迭代次数的历史记录。包括新密码在内的总数不应大于或等于此值。将值设置为零(默认值)会禁用此功能。因此,要启用此功能,值必须大于 0。此功能依赖于 sql 后端用于 [identity] 驱动程序

minimum_password_age
类型:

整数

默认值:

0

最小值:

0

密码必须使用多少天后,用户才能更改它。这可以防止用户立即更改密码,以清除他们的密码历史记录并重用旧密码。此功能不会阻止管理员手动重置密码。默认情况下禁用此功能,允许立即更改密码。此功能依赖于 sql 后端用于 [identity] 驱动程序。注意:如果设置了 [security_compliance] password_expires_days,则此选项的值应小于 password_expires_days

password_regex
类型:

字符串

默认值:

<None>

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

password_regex_description
类型:

字符串

默认值:

<None>

用人类可理解的语言在此处描述您的密码正则表达式。如果密码与正则表达式不匹配,此配置变量的内容将返回给用户,以解释他们请求的密码不足的原因。

change_password_upon_first_use
类型:

布尔值

默认值:

False

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

report_invalid_password_hash
类型:

列表

默认值:

事件

此选项有一个示例默认值,这意味着其实际默认值可能与上述文档值不同。

配置后,会将无效密码的哈希值添加到相应的输出通道,以便进一步用于区分暴力破解攻击与例如外部用户自动化(由于未及时更新轮换密码)通过分析哈希值的可变性。可以使用其他 invalid_password_hash_* 配置条目提供其他配置参数,这些参数仅在激活此选项时生效。

invalid_password_hash_secret_key
类型:

字符串

默认值:

<None>

如果配置了 report_invalid_password_hash,则在生成密码哈希时使用提供的密钥,使其与任何其他 Keystone 安装不同。应为当前安装的特定秘密静态值(在与相同的后端一起工作的分布式安装中应使用相同的值,以便它们为相同的无效密码生成相同的哈希值)。建议使用 16 字节(128 位)或更多。

invalid_password_hash_function
类型:

字符串

默认值:

sha256

如果配置了 report_invalid_password_hash,则定义 HMAC 使用的哈希函数。可能的值适合于 hashlib.new() - https://docs.pythonlang.cn/3/library/hashlib.html#hashlib.new

invalid_password_hash_max_chars
类型:

整数

默认值:

5

最小值:

1

此选项有一个示例默认值,这意味着其实际默认值可能与上述文档值不同。

如果配置了 report_invalid_password_hash,则定义要返回的无效密码哈希值的字符数。如果未指定,则返回完整的哈希值。其长度取决于实现和 invalid_password_hash_function 配置,但通常为 16+ 个字符。但是,建议使用最合理的价值 - 这是保护哈希值的最有效措施。

shadow_users

driver
类型:

字符串

默认值:

sql

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

令牌

expiration
类型:

整数

默认值:

3600

最小值:

0

最大值:

9223372036854775807

令牌应保持有效的时长(以秒为单位)。大幅减少此值可能会破坏涉及多个服务协同工作的“长期运行”操作,并会强制用户更频繁地使用 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 的有效负载内容有安全要求。

caching
类型:

布尔值

默认值:

True

切换令牌创建和验证数据的缓存。如果未启用全局缓存,则此选项无效。

cache_time
类型:

整数

默认值:

<None>

最小值:

0

最大值:

9223372036854775807

缓存令牌创建和验证数据的秒数。除非同时启用了全局缓存和 [token] caching,否则此选项无效。

revoke_by_id
类型:

布尔值

默认值:

True

此选项切换对通过令牌标识符撤销单个令牌的支持,从而实现各种令牌枚举操作(例如列出颁发给特定用户的所有令牌)。这些操作用于确定要撤销的令牌列表。如果您正在使用 kvs [revoke] 驱动程序,请勿禁用此选项。

allow_rescope_scoped_token
类型:

布尔值

默认值:

True

此选项切换是否可以将作用域令牌重新作用域到新的项目或域,从而防止用户将作用域令牌(包括具有默认项目作用域的令牌)交换为任何其他令牌。这迫使用户要么为未作用域的令牌进行身份验证(然后将该未作用域的令牌交换为具有更具体作用域的令牌),要么为作用域令牌提供他们的凭据以避免重新作用域。

cache_on_issue
类型:

布尔值

默认值:

True

启用将已颁发的令牌数据存储到令牌验证缓存中,以便首次令牌验证实际上不会导致完整的验证周期。如果启用了全局缓存,则此选项无效,即使 [token] caching = False,也会缓存令牌。

警告

此选项已弃用,将来可能会被删除。

原因:

Keystone 已经公开了一个用于缓存令牌的配置选项。有一个单独的配置选项来在颁发令牌时缓存令牌是多余的、不必要的复杂,并且如果由于令牌缓存被禁用而令牌将默认被预缓存,则具有误导性。未来,令牌预缓存的能力将完全依赖于 keystone.conf [token] caching 选项。

allow_expired_window
类型:

整数

默认值:

172800

这控制了令牌可以在内置到期时间之外检索的时间(以秒为单位)。这允许长期运行的操作成功。默认值为两天。

tokenless_auth

trusted_issuer
类型:

多值

默认值:

''

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

protocol
类型:

字符串

默认值:

x509

用于表示 X.509 无令牌授权的联合身份验证协议 ID。与 [tokenless_auth] issuer_attribute 的值结合使用,以查找相应的联合映射。在典型的部署中,没有理由更改此值。

issuer_attribute
类型:

字符串

默认值:

SSL_CLIENT_I_DN

用于将客户端证书的颁发者传递给 Keystone 的 WSGI 环境变量的名称。此属性与协议一起用作 X.509 无令牌授权的身份提供商 ID,以查找其相应的映射。在典型的部署中,没有理由更改此值。

totp

included_previous_windows
类型:

整数

默认值:

1

最小值:

0

最大值:

10

在处理 TOTP 密码时要检查的先前窗口数。

trust

allow_redelegation
类型:

布尔值

默认值:

False

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

max_redelegation_count
类型:

整数

默认值:

3

授权从一个用户到另一个用户在信任链中可以重新委托的最大次数。此数字可以进一步减少到特定的信任。

driver
类型:

字符串

默认值:

sql

keystone.trust 命名空间中,信任后端驱动程序的入口点。Keystone 仅提供 sql 驱动程序,因此除非您提供自定义入口点,否则没有理由更改此设置。

unified_limit

driver
类型:

字符串

默认值:

sql

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

caching
类型:

布尔值

默认值:

True

切换统一限制缓存。如果未启用全局缓存,则此选项无效。在典型的部署中,没有理由禁用此选项。

cache_time
类型:

整数

默认值:

<None>

缓存统一限制数据的秒数。除非同时启用了全局缓存和 [unified_limit] caching,否则此选项无效。

list_limit
类型:

整数

默认值:

<None>

将返回统一限制集合中的实体最大数量。如果您在部署中有很多统一限制,这可能对调整很有用。

enforcement_model
类型:

字符串

默认值:

flat

有效值:

flat, strict_two_level

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

wsgi

debug_middleware
类型:

布尔值

默认值:

False

如果设置为 true,这将启用 Keystone 中的 oslo 调试中间件。此中间件会打印大量关于请求和响应的信息。它对于获取有关通过电线(已解码)传递的数据以及传递到 WSGI 应用程序管道的数据的信息很有用。此中间件对 [DEFAULT] 部分的配置文件的“debug”设置或将 Keystone 的日志级别设置为“DEBUG”没有影响;它专门用于调试 Keystone 进入和离开的数据(特定于请求的数据)。此选项用于内省 Web 服务器(apache、nginx 等)和 Keystone 之间的请求和响应数据。此中间件作为中间件链中的第一个元素插入,并将显示最接近电线的数据。警告:不打算在生产中使用。此中间件可以并且会发出敏感/特权数据。

Domain-specific Identity drivers

身份服务支持安装在 SQL 或 LDAP 后端上的特定领域身份驱动程序,并支持特定领域的身份配置选项,这些选项存储在特定领域的配置文件中。有关更多信息,请参阅 特定领域配置