第 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 命令。此选项的值被视为"共享机密",可用于通过 API 引导 Keystone。此"token"不代表用户(没有身份),也没有明确授权(它会有效地绕过大多数授权检查)。如果设置为 None,则忽略该值,并且 admin_token 中间件被有效地禁用。

conn_pool_min_size = 2

整数值

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

conn_pool_ttl = 1200

整数值

池中闲置连接的时间为 sec

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', 'iso8601=WARN', 'suds=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', 'stevedore=WARN', 'urllib3.util.retry=WARN', 'keystonemiddleware=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

整数值

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

log-config-append = None

字符串值

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

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

字符串值

在日志记录中定义 %%(asctime)的格式字符串。默认:%(默认)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 [%(request_id) s %(user_identity) s] %(instance) s%(message)

字符串值

用于具有上下文的日志消息的格式字符串。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%(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 %(tenant) s %(domain) s %(user_domain) s %(project_domain) s %(project_domain) s %(project_domain)

字符串值

定义 logging_context_format_string 中使用的 %(user_identity)的格式字符串。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 令牌,它可以设置为 255。使用 UUID 令牌时,这应该设为 32。

notification_format = cadf

字符串值

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

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

多值

您可以通过明确选择,减少 keystone 发出的通知数量。Keystone 不会发出与此列表中表示的模式匹配的通知。值的格式应为 identity.<resource_type>.<operation>。默认情况下,所有与身份验证相关的通知都会被自动禁止。此字段可以多次设置,以选择不使用多个通知主题。例如,以下命令会阻止描述用户创建或成功身份验证事件的通知: 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 不会自动推断(/prefix/v3)的路径时,才需要设置选项,或者是否应该在不同主机上找到端点。

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_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

整数值

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

cache = True

布尔值

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

driver = sql

字符串值

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

user_limit = -1

整数值

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

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 选项要求为 keystone 提供一个额外的环境变量 REMOTE_DOMAIN,其中包含 REMOTE_USER 的域名(如果未设置 REMOTE_DOMAIN,则将改为使用默认域)。除非您正在使用"外部身份验证",否则您不需要设置此设置,其中应用服务器(如 Apache)正在处理身份验证而不是 keystone。

mapped = None

字符串值

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

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

列出值

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

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

字符串值

缓存后端模块。对于基于 eventlet 或具有数百个线程服务器的环境,建议使用池(oslo_cache.memcache_pool)的 Memcache。对于小于 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 区域,否则这不需要更改。

debug_cache_backend = False

布尔值

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

enabled = True

布尔值

缓存的全局切换。

expiration_time = 600

整数值

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

memcache_dead_retry = 300

整数值

重新尝试前 memcached 服务器被视为死的秒数。(仅限dog.cache.memcache 和 oslo_cache.memcache_pool 后端)。

memcache_pool_connection_get_timeout = 10

整数值

操作要等待 memcache 客户端连接的秒数。

memcache_pool_maxsize = 10

整数值

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

memcache_pool_unused_timeout = 60

整数值

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

memcache_servers = ['localhost:11211']

列出值

memcache 服务器格式为 "host:port". (dogpile.cache.memcache 和 oslo_cache.memcache_pool backend)。

memcache_socket_timeout = 1.0

浮点值

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

proxies = []

列出值

要导入的代理类,这会影响 dogpile.cache 后端函数的方式。请参阅有关 change-backend-behavior 的 dogpile.cache 文档。

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

整数值

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

cache = True

布尔值

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

driver = sql

字符串值

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

list_limit = None

整数值

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

template_file = default_catalog.templates

字符串值

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

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

整数值

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

cache = 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 驱动程序,因此除非提供用于加密和解密凭据的自定义入口点,否则不需要更改此设置。

7.1.9. 数据库

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

表 7.8. 数据库
配置选项 = 默认值类型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)的支持。

mysql_sql_mode = TRADITIONAL

字符串值

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

pool_timeout = None

整数值

如果设置,则使用带有 SQLAlchemy 的 pool_timeout 的值。

retry_interval = 10

整数值

打开 SQL 连接的重试间隔。

slave_connection = None

字符串值

用于连接到 slave 数据库的 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] 缓存,否则这无效。

cache = 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

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

admin_port = 35357

端口值

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

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

public_bind_host = 0.0.0.0

主机地址值

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

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

public_port = 5000

端口值

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

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

7.1.14. federation

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

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

`assertion_prefix = `

字符串值

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

cache = True

布尔值

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

driver = sql

字符串值

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

federated_domain_name = Federated

字符串值

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

Danreason :选项已被其身份提供程序域中已存在的临时用户取代。

remote_id_attribute = None

字符串值

用于从环境中获取身份提供程序的所有协议的默认值。对于 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 = []

多值

可信仪表板主机列表。在接受单点登录请求返回令牌之前,原始主机必须是此列表的成员。对于多个值,可以重复此配置选项。您必须设置此项才能使用基于 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 一次是安全的,将暂存密钥(索引 0)提升为新的主(从上最高索引中减少),并生成一个新的暂存密钥(带有索引 0 的新密钥);生成的存储库可以原子地复制到其他节点,而不会出现任何竞争条件的风险(例如: 安全地在主机 A 上运行 keystone-manage fernet_rotate,等待任何时间,在主机 A 上创建目录的 tarball,将其解包到一个临时位置,以及原子地移动(mv)在主机 B 上放置。在不同步其他节点的情况下,在密钥仓库中运行 keystone-manage fernet_rotate 两次,从而导致无法被所有节点验证。

max_active_keys = 3

整数值

这将控制 keystone-manage fernet_rotate 在轮转中的密钥被丢弃前保留多少密钥。默认值 3 表示 keystone 将维护一个 stage 键(始终索引 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 一次是安全的,将暂存密钥(索引 0)提升为新的主(从上最高索引中减少),并生成一个新的暂存密钥(带有索引 0 的新密钥);生成的存储库可以原子地复制到其他节点,而不会出现任何竞争条件的风险(例如: 安全地在主机 A 上运行 keystone-manage fernet_rotate,等待任何时间,在主机 A 上创建目录的 tarball,将其解包到一个临时位置,以及原子地移动(mv)在主机 B 上放置。在不同步其他节点的情况下,在密钥仓库中运行 keystone-manage fernet_rotate 两次 会导致令牌无法被所有节点验证。

max_active_keys = 3

整数值

这将控制 keystone-manage fernet_rotate 在轮转中的密钥被丢弃前保留多少密钥。默认值 3 表示 keystone 将维护一个 stage 键(始终索引 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

整数值

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

cache = True

布尔值

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

default_domain_id = default

字符串值

这将引用用于所有 Identity 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,则此选项也用作默认驱动程序选择(以及本节中的其他配置变量),但没有为问题的域定义适用的配置。除非您的部署主要依赖于 ldap AND,否则您应该将此设置为 sql

list_limit = None

整数值

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

max_password_length = 4096

整数值

用户密码允许的最大长度。减少这个值以提高性能。更改此值不会影响现有的密码。

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

布尔值

对于不生成 UUID (如 LDAP)的后端,用户和组 ID 格式在 Juno 中有所变化,并带有 keystone 提供 LDAP 中底层属性的哈希映射。默认情况下禁用此映射,这样可确保现有 ID 不会改变。即使映射是使用特定于域的驱动程序([identity] domain_specific_drivers_enabled),但 LDAP 处理的默认域中的任何用户和组仍会映射,以确保其 ID 保持向后兼容。将此值设置为 false 将为所有后端启用新映射,包括默认的 LDAP 驱动程序。如果您还没有从默认 LDAP 域中为用户和组分配,并且您认为 Keystone 能被客户端提供与之前执行不同的 ID (API 中现有 ID)的不同 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 配置的默认解引用行为。值 never 会阻止完全解引用别名。搜索 值仅在名称解析后解引用别名。查找 仅在名称解析期间解引用别名的值。值 always 在所有情况下都会取消引用别名。

auth_pool_connection_lifetime = 60

整数值

最大最终用户身份验证连接生命周期(以秒为单位)。当超过此生命周期时,连接将不被绑定并从连接池中删除。除非也启用了 [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 = []

列出值

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

group_attribute_ignore = []

列出值

要在 create 和 update 时要忽略的组属性列表。或者是否应该为 list 或 show 组过滤特定的组属性。

group_desc_attribute = description

字符串值

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

group_filter = None

字符串值

用于组的 LDAP 搜索过滤器。

group_id_attribute = cn

字符串值

在 keystone 中映射到组 ID 的 LDAP 属性。这不能是一个多值属性。组 ID 应该在 keystone 域和 URL-safe 之间全局唯一。

group_member_attribute = member

字符串值

用于指示用户所属的 LDAP 属性。

group_members_are_ids = False

布尔值

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

group_name_attribute = ou

字符串值

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

group_objectclass = groupOfNames

字符串值

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

group_tree_dn = None

字符串值

用于组的搜索基础。默认为 [ldap] 后缀 值。

page_size = 0

整数值

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

password = None

字符串值

如果 LDAP 服务器需要,在查询 LDAP 服务器时要使用的管理员绑定 DN 密码。

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 服务器的次数上限。值为零可防止重试。除非也启用了 [ldap] use_pool,否则此选项无效。

pool_size = 10

整数值

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

query_scope = one

字符串值

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

suffix = cn=example,cn=com

字符串值

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

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 = []

列出值

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

user_attribute_ignore = ['default_project_id']

列出值

要在 create 和 update 时要忽略的用户属性列表,或者是否应该为 list 或 show 用户过滤特定用户属性。

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 服务器使用非布尔值(位掩码)值来指示用户是否启用或禁用,则这应该与适当的整数值匹配。如果这未设置为 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-safe 之间全局唯一。

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

字符串值

用于用户的搜索基础。默认为 [ldap] 后缀 值。

7.1.22. memcache

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

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

dead_retry = 300

整数值

重新尝试前 memcached 服务器被视为死的秒数。这供 key 值存储系统使用。

pool_connection_get_timeout = 10

整数值

操作要等待 memcache 客户端连接的秒数。这供 key 值存储系统使用。

pool_maxsize = 10

整数值

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

pool_unused_timeout = 60

整数值

到 memcached 的连接在关闭前在池中未使用的秒数。这供 key 值存储系统使用。

socket_timeout = 3

整数值

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

evincereason:使用 oslo.cache 复制此选项。配置 ''keystone.conf [cache] memcache_socket_timeout' 选项,以设置 memcached 的 socket_timeout。

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. oslo_messaging_amqp

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

表 7.23. 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,如果设置了其他 default_notification_exchange,如果设置了其他 control_exchange,则 Target.exchange

default_notify_timeout = 30

整数值

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

default_reply_retry = 0

整数值

重新发送因可恢复错误导致回复消息的最大尝试数。

default_reply_timeout = 30

整数值

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

default_rpc_exchange = None

字符串值

RPC 地址中使用的交换名称。Exchange name resolution priority: Target.exchange (如果设置了其他 default_ rpc_exchange,如果设置了其他 control_exchange,则 Target.exchange

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

多值

预设置此类型的消息。pre-settled 消息不会从 peer 接收确认。注:如果发送失败,可能会静默地丢弃预先设置的消息。允许的值: rpc-call - 发送 RPC 调用预设定的 rpc-reply- 发送 RPC Replies pre-settled rpc-cast - Send RPC Casts pre-settled notify - 发送通知预设置

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.25. oslo_messaging_kafka

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

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

compression_codec = none

字符串值

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

conn_pool_min_size = 2

整数值

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

conn_pool_ttl = 1200

整数值

池中闲置连接的时间为 sec

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 文件

7.1.26. oslo_messaging_notifications

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

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

driver = []

多值

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

retry = -1

整数值

重新发送通知消息的最大次数,该消息因为可恢复的错误而无法发送。0 - 无重试,-1 - indefinite

topics = ['notifications']

列出值

用于 OpenStack 通知的 AMQP 主题。

transport_url = None

字符串值

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

7.1.27. oslo_messaging_rabbit

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

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

amqp_auto_delete = False

布尔值

AMQP 中的自动删除队列。

amqp_durable_queues = False

布尔值

在 AMQP 中使用 durable 队列。

direct_mandatory_flag = True

布尔值

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

enable_cancel_on_failover = False

布尔值

启用 x-cancel-on-ha-failover 标志,以便 rabbitmq 服务器将取消并通知消费者的时间队列停机

heartbeat_in_pthread = False

布尔值

EXPERIMENTAL:通过原生 python 线程运行健康检查心跳线程。默认情况下,如果此选项未提供健康检查心跳,则来自父进程的执行模型。例如,如果父进程使用 eventlet/greenlet 对stdlib 进行补丁,则通过绿色线程运行 heartbeatwill。

heartbeat_rate = 2

整数值

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

heartbeat_timeout_threshold = 60

整数值

如果心跳的 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\.) VirtualMachine {"ha-mode": "all"} "

rabbit_interval_max = 30

整数值

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

rabbit_login_method = AMQPLAIN

字符串值

RabbitMQ 登录方法。

rabbit_qos_prefetch_count = 0

整数值

指定要 prefetch 的消息数。设置为零可允许无限消息。

rabbit_retry_backoff = 2

整数值

连接到 RabbitMQ 时重试之间的 backoff 时长。

rabbit_retry_interval = 1

整数值

重试与 RabbitMQ 连接的频率。

rabbit_transient_queues_ttl = 1800

整数值

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

ssl = False

布尔值

通过 SSL 连接。

`ssl_ca_file = `

字符串值

SSL 认证认证机构文件(仅在启用 SSL 时进行检查)。

`ssl_cert_file = `

字符串值

SSL 证书文件(仅在启用 SSL 时进行检查)。

`ssl_key_file = `

字符串值

SSL 密钥文件(仅在启用 SSL 时进行检查)。

`ssl_version = `

字符串值

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

7.1.28. oslo_middleware

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

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

enable_proxy_headers_parsing = False

布尔值

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

max_request_body_size = 114688

整数值

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

secure_proxy_ssl_header = X-Forwarded-Proto

字符串值

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

7.1.29. oslo_policy

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

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

enforce_scope = False

布尔值

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

policy_default_rule = default

字符串值

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

policy_dirs = ['policy.d']

多值

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

policy_file = policy.json

字符串值

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

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.30. policy

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

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

driver = sql

字符串值

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

list_limit = None

整数值

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

7.1.31. profiler

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

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

connection_string = messaging://

字符串值

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

默认值为 messaging://,它将 notifier 设置为 oslo_messaging。

可能的值示例:

  • messaging:// - 使用 oslo_messaging 驱动程序来发送 span。
  • 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

布尔值

启用包含与分隔位置的错误/删除的过滤跟踪。

默认值为 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.32. receipt

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

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

cache_on_issue = True

布尔值

启用存储发布的接收数据来接收验证缓存,以便首先接收验证不会实际导致完整的验证周期。除非启用了全局缓存和接收缓存,否则这个选项无效。

cache_time = 300

整数值

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

cache = True

布尔值

用于缓存接收创建和验证数据的切换。除非启用了全局缓存,否则这不起作用,或者因为只对问题缓存才会禁用 cache_on_issue。

expiration = 300

整数值

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

provider = fernet

字符串值

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

7.1.33. resource

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

表 7.32. 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

整数值

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

cache = True

布尔值

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

domain_name_url_safe = off

字符串值

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

driver = sql

字符串值

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

btrfsreason:ChelusNon-SQL 资源不能与 SQL 身份一起使用,并且自 Ocata 以来无法使用。SQL 资源后端是 Pike 的要求。设置此选项不再对 Keystone 操作方式产生影响。

list_limit = None

整数值

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

project_name_url_safe = off

字符串值

这将控制项目的名称是否受到 URL-reserved 字符的限制。如果设置为 new,请尝试使用 URL-unsafe 名称创建或更新项目将失败。如果设置为 strict,请尝试限制带有 URL-unsafe 项目名称的令牌将失败,因此强制更新所有项目名称为 URL-safe。

7.1.34. 撤销

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

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

cache_time = 3600

整数值

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

cache = True

布尔值

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

driver = sql

字符串值

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

expiration_buffer = 1800

整数值

令牌在从后端清除对应的撤销事件前过期的秒数。

7.1.35. role

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

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

cache_time = None

整数值

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

cache = True

布尔值

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

driver = None

字符串值

keystone.role 命名空间中的角色后端驱动程序的入口点。Keystone 只提供一个 sql 驱动程序,因此除非提供自定义入口点,否则不需要更改此操作。

list_limit = None

整数值

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

7.1.36. saml

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

表 7.35. 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 值

这是身份提供程序的单点登录(SSO)服务位置,接受 HTTP POST 请求。需要一个值来生成身份提供程序元数据。例如: 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.37. security_compliance

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

表 7.36. 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 属性可能与用户表中的启用列的值不匹配。

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,}$ this feature 取决于 [identity] 驱动程序的 sql 后端。

password_regex_description = None

字符串值

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

unique_last_password_count = 0

整数值

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

7.1.38. shadow_users

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

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

driver = sql

字符串值

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

7.1.39. token

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

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

allow_expired_window = 172800

整数值

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

allow_rescope_scoped_token = True

布尔值

这会切换范围令牌是否可以重新分配给新项目或域,从而防止用户为任何其他令牌交换有范围令牌(包括默认项目范围)。这会强制用户对无范围令牌进行身份验证(之后,这些令牌没有特定范围的令牌),或者在每个请求中为每个请求提供凭证以避免重新协调。

cache_on_issue = True

布尔值

启用将发布的令牌数据存储在令牌验证缓存中,以便第一个令牌验证实际上不会导致完整的验证周期。除非启用了全局缓存,否则此选项无效,并且仍然会缓存令牌,即使 [token] cache = False弃用自: S

Danreason:已经公开了一个用于缓存令牌的配置选项。在发出令牌时,使用单独的配置选项来缓存令牌是冗余的,不必要,如果令牌缓存被禁用,则误导,因为令牌缓存在签发时仍然会被默认预缓存。发布令牌时预缓存令牌的功能将完全依赖于 ''keystone.conf [token] cache'' 选项。

cache_time = None

整数值

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

cache = 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_rhcs 来完成。请注意,fernet 令牌是加密的,jws 令牌仅签名。如果您的部署对用于生成令牌 ID 的有效负载内容有安全要求,请务必考虑这一点。

revoke_by_id = True

布尔值

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

7.1.40. tokenless_auth

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

表 7.39. 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.41. TOTP

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

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

included_previous_windows = 1

整数值

处理 TOTP passcodes 时要检查的之前窗口数量。

7.1.42. trust

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

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

allow_redelegation = False

布尔值

允许将授权从一个用户恢复到另一个用户,有效将信任链接在一起。禁用后,信任的 remaining_uses 属性仅限于零。

driver = sql

字符串值

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

max_redelegation_count = 3

整数值

授权在一个信任链中被重新隔离到另一个用户的次数上限。对于特定信任,这个数字可以进一步减少。

7.1.43. unified_limit

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

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

cache_time = None

整数值

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

cache = True

布尔值

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

driver = sql

字符串值

keystone.unified_limit 命名空间中的统一限制后端驱动程序的入口点。Keystone 只提供一个 sql 驱动程序,因此除非提供自定义入口点,否则不需要更改此操作。

enforcement_model = flat

字符串值

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

list_limit = None

整数值

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

7.1.44. wsgi

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

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

debug_middleware = False

布尔值

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.