分类: 系统运维
2016-12-13 14:42:37
selection | key | 默认值 | 可选取值 | 说明 |
From keystone keystone 基本配置 | ||||
DEFAULT | admin_token | None |
管理员token,使用这个token的就是管理员,通过[filter:admin_token_auth]实现 新安装的时候数据库里没管理员,所以没法登陆 设置这个管理员token,那么以这个token登陆的都是管理员 |
|
DEFAULT | public_endpoint |
比如你站点配置不在根目录,使用了下级目录的时候 需要配置这两个值指向下级目录 例如 |
||
DEFAULT | admin_endpoint | |||
DEFAULT | max_project_tree_depth | 5 | int | 项目深度,子项目下面还有子项目 |
DEFAULT | max_param_size | 64 | int | 最大id长度 |
DEFAULT | max_token_size | 8192 | int | token最大长度 |
DEFAULT | member_role_id | 9fe2ff9ee4384b1894a90878d3e92bab |
add_user_to_project函数会调用member_role_id 如果数据库里找不到对应的member_role_id会用配置文件里的id和name去创建一个 dashboard里会配置OPENSTACK_KEYSTONE_DEFAULT_ROLE需要与这个相同 member_role_id最好使用一个md5形式的字符串以便统一 |
|
DEFAULT | member_role_name | _member_ | ||
DEFAULT | crypt_strength | 10000 | 1000~100000 | 加密字符串的长度,越长加密消耗的性能越多 |
DEFAULT | list_limit | None | int | 全局list长度,默认为无限制,各个selection中的以自己的list_limit为准 |
DEFAULT | domain_id_immutable | TRUE | true false | 是否允许切换domain 即将移除的配置 |
DEFAULT | strict_password_check | FALSE | true false | 设置为false的时候,自动截断超过长度的password |
DEFAULT | secure_proxy_ssl_header | HTTP_X_FORWARDED_PROTO | ssl有关 估计对应的http服务里要带入的http head | |
DEFAULT | insecure_debug | FALSE | true false | 和调试有关 |
From keystone.notifications
对外通知配置,比如配置notification_opt_out=identity.user.created 那么当创建用户的时候,就会发送一个对外通知 这个是走ampq的, publisher_id就是注册的publisher, 接收者要自己弄一个, 这个东西是用来做keystone审计用的 |
||||
DEFAULT | default_publisher_id | socket.gethostname() | 默认为None, 代码中会自动使用socket.gethostname() | |
DEFAULT | notification_format | basic | basic, cadf | cadf是basic的扩展, 比basic多了发起者的信息 |
DEFAULT | notification_opt_out | [] |
例如identity.user.created identity.authenticate.success |
可以通过重复配置这个key来支持多个notification_opt_out 默认空列也就是不对外发送消息 |
From oslo.log log配置相关 里面的配置说明比较清晰,就不再这里列出了 | ||||
From oslo.messaging rpc通信的配置,
因为只使用rabbit,所以和rabbit没关系的都不列出 这里可以看出配置还是有点乱 为了兼容以前的还保留了好多字段, zmq的所有配置都还在default里, 后面oslo_messaging_rabbit部分还有大量rabbit配置 |
||||
DEFAULT | rpc_backend | rabbit | amqp zmq rabbit |
rpc通信的方式,
看代码里好像还有fake kafka pika等方式 rabbit驱动就是对kombu的再次封装,其实都是pika的封装 |
DEFAULT | transport_url |
不要配置这个,
这个直接在rabbit里面配置就好,之前应该是没有rpc_backend 直接通过transport_url解析出用那个backend和对应链接信息 |
||
DEFAULT | rpc_conn_pool_size | 30 | int |
连接池大小,不建议在DEFAULT中配置(过时配置) 建议配置到oslo_messaging_rabbit.rpc_conn_pool_size(用rabbit) |
DEFAULT | rpc_response_timeout | 60 | int | rpc send的的timeout |
DEFAULT | executor_thread_pool_size | 64 | int |
取代[DEFAULT]/rpc_thread_pool_size,keystone的executor用 默认也就是eventlet的工作"线程"数 |
DEFAULT | control_exchange | keystone | amqp的交换机名字 | |
From oslo.service.service 守护进程相关配置 | ||||
DEFAULT | backdoor_port | 0 | 为0随机端口,没有IP配置是因为之监听本地IP | |
DEFAULT | backdoor_socket |
用unix
sock方式 这个和backdoor_port应该是二选一的 应该是用于通知keystone进程关闭重启之类的后门操作的接口 实际测试建议不要unix sock eventlet有代码print出host和端口,用这个日志里会有一条错误记录 |
||
DEFAULT | log_options | TRUE | true false | 是否记录日志 |
DEFAULT | graceful_shutdown_timeout | 60 | int | 关闭超时时间 |
From keystone
[assignment]
keystone.assignment.backends.sql:Assignment __tablename__ = 'assignment' 这个就是给role分配权限的和处理user和role关系的,里面有诸如add_grant delete_grant add_role_to_user_and_project 之类的方法 |
||||
assignment | driver | sql |
只支持sql,
不指定的话将使用[identity]/driver中的配置 从代码里看,不配置的时候从identity里强制返回sql,而且代码中有注明 今后使用非sql的时候必须指定而不能从identity中继承 |
|
assignment | prohibited_implied_role | admin | 禁止implied的角色,这个具体看下面翻译文档 | |
From keystone [auth] key的auth配置 这个应该对应v3 的 auth | ||||
auth | methods | external,password,token,oauth1 | 允许使用的验证方式 | |
auth | password | Password | keystone.auth.password中的namespace(也就是指向的类名,不用设置) | |
auth | token | Token | keystone.auth.token中的namespace(也就是指向的类名,不用设置) | |
auth | external | DefaultDomain | keystone.auth.external中的namespace(也就是指向的类名,不用设置) | |
auth | oauth1 | Oauth1 | keystone.auth.oauth1中的namespace(也就是指向的类名,不用设置) | |
From oslo.cache
[cache] 全局缓存配置,
这里的memcache服务器与[memcache]中的memcache区别是 这里的memcache是作为cache的memcache,所有的只要启用了cache就会用上这个, [memcache]的memcache是作为store的的, 其实目前也就只有token用memcache作store而已,token使用memcache作为backend的情况下,token就不需要再启用cache了 |
||||
cache | config_prefix | cache.oslo | 缓存key的前缀 | |
cache | expiration_time | 600 | 超时时间 | |
cache | backend | dogpile.cache.null |
dogpile.cache.memcache oslo_cache.memcache_pool |
缓存驱动,默认的null不知道是什么缓存方式 |
cache | backend_argument | 驱动的参数,我们用oslo_cache.memcache_pool不需要参数 | ||
cache | proxies | dogpile.cache的配置,我们用oslo_cache.memcache_pool可以不用管 | ||
cache | enabled | FALSE | true false | 是否启用全局缓存, 若全局缓存没启用,其他selection里的cache启用了也无效 |
cache | debug_cache_backend | FALSE | true false | 缓存 get set delete的日志开关 |
cache | memcache_servers | localhost:11211 |
memcache服务器连接信息
backend配置为memcache相关的时候才有效 注意,这里和后面[memcache]中的memcache服务器是没关系的 不过这两个地方配置为同一个memcahe也没问题,因为都有自己的prefix oslo_cache.memcache_pool实际使用的时候会把参数前面的memcache去掉 比如memcache_pool_maxsize在oslo_cache.memcache_pool中是pool_maxsize memcache_socket_timeout用于soeckt.settimeout() |
|
cache | memcache_dead_retry | 300 | ||
cache | memcache_socket_timeout | 3 | ||
cache | memcache_pool_maxsize | 10 | oslo_cache.memcache_pool专有参数, 连接池大小 | |
cache | memcache_pool_unused_timeout | 60 | oslo_cache.memcache_pool专有参数, 空闲链接时间 | |
cache | memcache_pool_connection_get_timeout | 10 |
从memcache的pool中获取一个链接的超时时间 这个时间和socket无关,最终是queue的get超时时间 也就是说超时socket的相关超时时间由memcache_socket_timeout控制 |
|
From keystone [catalog] | ||||
catalog | template_file | default_catalog.templates | 模板文件位置,当driver配置为templated时这个参数才有效 | |
catalog | driver | sql |
kvs,
sql, templated endpoint_filter.sql |
驱动方式 |
catalog | caching | TRUE | true false | 是否使用缓存,如果使用kvs和templated估计可以不用cache |
catalog | list_limit | 返回列表长度限制 | ||
From oslo.middleware
[cors] COR就是跨域资源共享,
这里的配置自然就是处理跨域的,和http服务器的跨域配置是一个东西,没有需求可以不配置,这个是filter,而且是第一个filter 跨域的内容可以参考http://netsecurity.51cto.com/art/201311/419179.htm w3c文档 |
||||
cors | allowed_origin | 对应nginx配置Access-Control-Allow-Origin 允许的跨域的url | ||
cors | allow_credentials | TRUE | true false | 对应nginx配置Access-Control-Allow-Credentials 是否允许请求带有验证信息 |
cors | expose_headers |
X-Auth-Token,X-Openstack-Request-Id X-Subject-Token |
对应nginx配置Access-Control-Expose-Headers 允许脚本访问的返回头,请求成功后,脚本可以在XMLHttpRequest中访问这些头的信息 | |
cors | max_age | 3600 | 对应nginx配置Access-Control-Max-Age 缓存此次请求的秒数 | |
cors | allow_methods |
GET,PUT,POST DELETE,PATCH |
对应nginx配置Access-Control-Allow-Methods 允许的跨域的methods | |
cors | 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 |
对应nginx配置r Access-Control-Allow-Headers 允许自定义的头部 | |
From oslo.middleware
[cors.subdomain]
这里的配置和上面是一样的,这里的subdomain是你自己的域名,比如aaa.com, 配置头就写cors.aaa.com,
指定的域配置覆盖上层配置 代码里专门看了下,"cors."后面的的字符串可以随便写,代码中实际使用的是的allowed_origin,"cors."后面配置得和allowed_origin一样是为了方便看而已 |
||||
cors.subdomain | allowed_origin | 与cors配置相同 | ||
cors.subdomain | allow_credentials | |||
cors.subdomain | expose_headers | |||
cors.subdomain | max_age | |||
cors.subdomain | allow_methods | |||
cors.subdomain | allow_headers | |||
From keystone
[credential] 只支持sql,
这玩意我现在还没看明白是干嘛的 好像也是v2的时候才有的东西,现在都直接在auth_routers通过authenticate_for_token登陆了,好像都用不到credential了 |
||||
credential | driver | sql | ||
From oslo.db [database] 数据库连接信息 | ||||
database | sqlite_db | 用mysql就不用管这个 | ||
database | sqlite_synchronous | 用mysql就不用管这个 | ||
database | db_backend | sqlalchemy | sqlalchemy是通用的数据库框架 这个配置取代了[DEFAULT]/db_backend | |
database | connection | 取代[DEFAULT]/sql_connection [DATABASE]/sql_connection [sql]/connection | ||
database | slave_connection | 以前没有的 新加的从库连接, 现在支持读写分离? | ||
database | mysql_sql_mode | TRADITIONAL | mysql独有配置 | |
database | sql_idle_timeout | 3600 | 取代[DEFAULT]/sql_idle_timeout [DATABASE]/sql_idle_timeout [sql]/idle_timeout | |
database | min_pool_size | 1 | 取代[DEFAULT]/sql_min_pool_size [DATABASE]/sql_min_pool_size | |
database | max_pool_size | 取代[DEFAULT]/sql_max_pool_size [DATABASE]/sql_max_pool_size | ||
database | max_retries | 10 | ||
database | retry_interval | 10 | ||
database | max_overflow | 50 | ||
database | connection_debug | 0 | 0=None, 100=Everything | |
database | connection_trace | FALSE | true false | |
database | pool_timeout | |||
database | use_db_reconnect | FALSE | true false | |
database | db_retry_interval | 1 | int |
Seconds
between retries of a database transaction. 应该是语句执行出错重试,前面的重试是链接不通的重试 |
database | db_inc_retry_interval | TRUE | true false |
是否增长重试时间,每重试出错一次,重试间隔时间加1 下面的参数就是增加到的间隔上限 |
database | db_max_retry_interval | 10 | int | 重试间隔时间上限 |
database | db_max_retries | 20 | 重试到达这个次数就报错 设置-1不报错 | |
From keystone [domain_config] | ||||
domain_config | driver | sql | ||
domain_config | caching | TRUE | true false | |
domain_config | cache_time | 300 | int | |
From keystone [endpoint_filter] | ||||
endpoint_filter | driver | sql |
sql指向keystone.catalog.backends.sql:Catalog 这个和catalog用的一个驱动 |
|
endpoint_filter | return_all_endpoints_if_no_filter | TRUE | true false | 代码里只有一个地方用了这个参数,估计也是兼容v2用的 |
From keystone [endpoint_policy] 获取终点的policy | ||||
endpoint_policy | enabled | TRUE | true false |
这个参数已经过时,下个版本会默认启用不再允许禁止 M版中,启用endpoint_policy会增加一个routes |
endpoint_policy | driver | sql | ||
From keystone [eventlet_server] keystone守护进程相关配置 以eventlet_server(也就是通过keystone-all)来启动keystone已经是不推荐的设置,所以这里的配置都可以不关注了 现在建议直接使用uwsgi的方式启动keystone,具体看uwsgi启动keystone的部分 |
||||
eventlet_server | public_workers | cpu 个数 | int | 公共api app的进程数量 |
eventlet_server | admin_workers | cpu 个数 | int | admin api app的进程数量 |
eventlet_server | public_bind_host | 0.0.0.0 | 取代[DEFAULT]/bind_host [DEFAULT]/public_bind_host | |
eventlet_server | public_port | 5000 | 取代[DEFAULT]/public_port | |
eventlet_server | admin_bind_host | 0.0.0.0 | ||
eventlet_server | admin_port | 35357 | ||
eventlet_server | wsgi_keep_alive | TRUE | true false | http 1.1支持的http长连接是否开启, 也就是respoen后是否close socket |
eventlet_server | client_socket_timeout | 900 | int | 取0 永不超时, 代码里是accetp到socket后调用socket.settimeout |
eventlet_server | tcp_keepalive | FALSE | int |
取代[DEFAULT]/tcp_keepalive,代码里accpect后设置socket.SO_KEEPALIVE 设置这个就表示操作系统来检查连接是否已经断开(心跳) |
eventlet_server | tcp_keepidle | 设置了上面参数后,设置设个参数做心跳检查间隔 | ||
From keystone [eventlet_server_ssl] 暂时不启用ssl,先不理会这里的配置 | ||||
From keystone [federation] 联合身份认证,现在用不上,不用配置,用于外部认证用户,这类用户信息不存放在keystone中, 联合的api将外部user添加一个映射,并将用户映射到一个 Keystone 组 参考http://www.ibm.com/developerworks/cn/cloud/library/cl-keystone-tfim/ |
||||
From keystone
[fernet_tokens]
这个是对应[token]里的provider配置
一般用uuid 或者pki、pkiz,所以不关注这个配置先 看文档这个tokens方式的性能比uuid和pik都要好好很多 |
||||
From keystone [identity]
__tablename__ = 'user'
auth中authenticate是通过identity_api来验证用户的,identity就出处理用户信息的 user 的get delete update add之类都是通过identity |
||||
identity | default_domain_id | default | v2 没有domain的概念, 给v2 api指定一个domain | |
identity | domain_specific_drivers_enabled | FALSE | true false |
子domain或者全部domain的配置通过resource的backend获取 false
(新版推荐设置) 子domain或者全部domain的配置通过下面domain_configurations_from_database指定 true 参考1:https://www.ibm.com/developerworks/cn/cloud/library/cl-configure-keystone-ldap-and-active-directory/ ------------------------------------------------------------------------- 参考2:http://docs.openstack.org/developer/keystone/configuration.html Setting domain_specific_drivers_enabled to True will enable this feature, causing Keystone to look in the domain_config_dir for config files of the form: keystone. |
identity | domain_configurations_from_database | FALSE | true false |
domain配置通过resource的backend中获取 true domain配置从文件读取 false 也就是说在domain_specific_drivers_enabled为true的情况下 要使用resource的backend, 需要手动指定为true 新版建议配置domain_configurations_from_database为false,也就是让这个配置无效 |
identity | domain_config_dir | /etc/keystone/domains |
当domain_specific_drivers_enabled设置为true且domain_configurations_from_database为false的时候 获取子domain配置文件的文件夹 也就是说当domain_specific_drivers_enabled为false或者 domain_specific_drivers_enabled/domain_configurations_from_database双true的话这里就无效 |
|
identity | driver | sql | identity 的 backend | |
identity | caching | TRUE | true false | |
identity | cache_time | 600 | int | |
identity | max_password_length | 4096 | 最长用户密码 | |
identity | list_limit | |||
From keystone identity_mapping [identity_mapping] 也是兼容用的 | ||||
identity_mapping | driver | sql | ||
identity_mapping | generator | sha256 | ||
identity_mapping | backward_compatible_ids | FALSE | true false |
整个keystone数据是新的建议设置为false 有老数据设置为true |
From keystone
[kvs] cache的配置,如果有使用kvs这里就必须配置 可以使用kvs的有 catalog token revoke, kvs在token中还不可以禁止revoke_by_id cache都使用memcache,所以这里的配置也不看了 |
||||
From keystone [ldap] 不使用ldap认真,不看配置先 | ||||
From oslo.messaging [matchmaker_redis] 使用zmq的时候要用到redis,我们使用rabbit不用管这里的配置 | ||||
From keystone [memcache] 用到memcache的只有token(注意和cache里的memcache区别) | ||||
memcache | servers | localhost:11211 | ||
memcache | dead_retry | 300 | ||
memcache | socket_timeout | 3 | ||
memcache | pool_maxsize | 10 | ||
memcache | pool_unused_timeout | 60 | ||
memcache | pool_connection_get_timeout | 10 | ||
From keystone [oauth1] | ||||
oauth1 | driver | sql | ||
oauth1 | request_token_duration | 28800 | ||
oauth1 | access_token_duration | 86400 | ||
From keystone [os_inherit] 用户继承 | ||||
os_inherit | enabled | TRUE | true false | 即将过时参数,今后会默认启用 |
From keystone [oslo_messaging_amqp] 我们使用rabbit,这里的配置不用看 | ||||
From oslo.messaging [oslo_messaging_notifications] | ||||
oslo_messaging_notifications | driver |
messaging,
messagingv2 routing, log, test, noop |
通过配置多次支持多个driver 不使用messaging/messagingv2 transport_url和topics可以不用配置 |
|
oslo_messaging_notifications | transport_url | 不配置这个的话,使用默认的rpc配置(就是使用keystone的rpc) | ||
oslo_messaging_notifications | topics | notifications | 是个列表 | |
From oslo.messaging [oslo_messaging_rabbit] rabbit配置 | ||||
oslo_messaging_rabbit | amqp_durable_queues | FALSE | true false |
取代[DEFAULT]/amqp_durable_queues [DEFAULT]/rabbit_durable_queues ampq里的持久化queue, 就是Consumer注册的时候的durable设置 |
oslo_messaging_rabbit | amqp_auto_delete | FALSE | true false |
取代[DEFAULT]/amqp_auto_delete 是否自动删除exchange |
oslo_messaging_rabbit | kombu_ssl_version |
取代[DEFAULT]/kombu_ssl_version 不用ssl 可以不用配置 |
||
oslo_messaging_rabbit | kombu_ssl_keyfile | 取代[DEFAULT]/kombu_ssl_keyfile | ||
oslo_messaging_rabbit | kombu_ssl_certfile | 取代[DEFAULT]/kombu_ssl_certfile | ||
oslo_messaging_rabbit | kombu_ssl_ca_certs | 取代[DEFAULT]/kombu_ssl_ca_certs | ||
oslo_messaging_rabbit | kombu_reconnect_delay | 1 | float |
取代[DEFAULT]/kombu_reconnect_delay 重连延迟 |
oslo_messaging_rabbit | kombu_compression | gzip, bz2 | 是否启用数据压缩,默认不启用 | |
oslo_messaging_rabbit | kombu_missing_consumer_retry_timeout | 60 | int |
取代[DEFAULT]/kombu_reconnect_timeout,必须比rpc_response_timeout长 consumer重连重试时间 |
oslo_messaging_rabbit | kombu_failover_strategy | round-robin | round-robin, shuffle | failover方式 |
oslo_messaging_rabbit | rabbit_host | localhost |
取代[DEFAULT]/rabbit_host rabbit 的host,这个配置代码中部使用,只有配置文件中将他和port合并为rabbit_hosts |
|
oslo_messaging_rabbit | rabbit_port | 5672 |
取代[DEFAULT]/rabbit_port 端口,下面的配了这也可以不配, |
|
oslo_messaging_rabbit | rabbit_hosts | $rabbit_host:$rabbit_port |
取代[DEFAULT]/rabbit_hosts 可以配置为列表 |
|
oslo_messaging_rabbit | rabbit_use_ssl | FALSE | true false | 取代[DEFAULT]/rabbit_use_ssl |
oslo_messaging_rabbit | rabbit_userid | guest |
取代[DEFAULT]/rabbit_userid rabbit登陆账号 |
|
oslo_messaging_rabbit | rabbit_password | guest | 取代[DEFAULT]/rabbit_password | |
oslo_messaging_rabbit | rabbit_login_method | AMQPLAIN | 取代[DEFAULT]/rabbit_login_method | |
oslo_messaging_rabbit | rabbit_virtual_host | / |
取代[DEFAULT]/rabbit_virtual_host 自己建过专用的vhost的话前面不需要带上/ 例如/openstack就是错的 |
|
oslo_messaging_rabbit | rabbit_retry_interval | |||
oslo_messaging_rabbit | rabbit_retry_backoff | |||
oslo_messaging_rabbit | rabbit_interval_max | |||
oslo_messaging_rabbit | rabbit_max_retries | |||
oslo_messaging_rabbit | rabbit_ha_queues | |||
oslo_messaging_rabbit | rabbit_transient_queues_ttl | |||
oslo_messaging_rabbit | rabbit_qos_prefetch_count | 0 |
rabbit的prefetch_count 设置为0就是无限制 |
|
oslo_messaging_rabbit | heartbeat_timeout_threshold | 60 | ||
oslo_messaging_rabbit | heartbeat_rate | 2 | ||
oslo_messaging_rabbit | fake_rabbit | FALSE | true false | |
oslo_messaging_rabbit | channel_max | |||
oslo_messaging_rabbit | frame_max | ampq的最大帧字节限制 | ||
oslo_messaging_rabbit | heartbeat_interval | 1 | ||
oslo_messaging_rabbit | ssl | |||
oslo_messaging_rabbit | ssl_options | |||
oslo_messaging_rabbit | socket_timeout | 0.25 | float | |
oslo_messaging_rabbit | tcp_user_timeout | 0.25 | float | |
oslo_messaging_rabbit | host_connection_reconnect_delay | 0.25 | float | |
oslo_messaging_rabbit | pool_max_size | 10 | int | |
oslo_messaging_rabbit | pool_max_overflow | 0 | int | |
oslo_messaging_rabbit | pool_timeout | 30 | int | |
oslo_messaging_rabbit | pool_recycle | 600 | int | |
oslo_messaging_rabbit | pool_stale | 60 | int | |
oslo_messaging_rabbit | notification_persistence | FALSE | true false | |
oslo_messaging_rabbit | default_notification_exchange | ${control_exchange}_notification | ||
oslo_messaging_rabbit | notification_listener_prefetch_count | 100 | ||
oslo_messaging_rabbit | default_notification_retry_attempts | -1 | -1 means infinite retry | |
oslo_messaging_rabbit | notification_retry_delay | 0.25 | ||
oslo_messaging_rabbit | rpc_queue_expiration | 60 | ||
oslo_messaging_rabbit | rpc_reply_exchange | ${control_exchange}_rpc_reply | ||
oslo_messaging_rabbit | rpc_listener_prefetch_count | 100 | ||
oslo_messaging_rabbit | rpc_reply_listener_prefetch_count | 100 | ||
oslo_messaging_rabbit | rpc_reply_retry_attempts | -1 | -1 means infinite retry during rpc_timeout | |
oslo_messaging_rabbit | rpc_reply_retry_delay | 0.25 | float | |
oslo_messaging_rabbit | default_rpc_retry_attempts | -1 | -1 means infinite retry | |
oslo_messaging_rabbit | rpc_retry_delay | 0.25 | float | |
From oslo.middleware [oslo_middleware] 一些通用配置 | ||||
oslo_middleware | max_request_body_size | 114688 | int | wsgi的最大请求大小,后端通过content_length来比较 |
oslo_middleware | secure_proxy_ssl_header | X-Forwarded-Proto | ssl proxy头,不用ssl不用管 | |
From oslo.policy [oslo_policy] | ||||
oslo_policy | policy_file | 取代[DEFAULT]/policy_file | ||
oslo_policy | policy_default_rule | 取代[DEFAULT]/policy_default_rule | ||
oslo_policy | policy_dirs | 取代[DEFAULT]/policy_dirs | ||
From keystone [paste_deploy] wsgi服务器启动的时候 urlmap映射调用的配置 | ||||
paste_deploy | config_file | keystone-paste.ini | paste deploy的配置文件位置 | |
From keystone [policy] | ||||
policy | driver | sql | ||
policy | list_limit | |||
From keystone
[resource]
resource就是操作project的(list add
delete update 之类), 从配置文件的取代可以看出和assignment(也就是role)的关系, project通过role来检查权限 代码里通过装饰器@controller.filterprotected 和@controller.protected来验证policy 参考 protected/filterprotected 最终会调用 /keystone/openstack/common/policy.py 中的 enforce 方法 keystone 与 openstack 其它component 中的 RBAC 实现的不同之处在于 keystone 中有时候需要做 token 验证再做 policy 检查。 Volume/Backup/ConsistencyGroup 等 API 类中的接口函数上的 @wrap_check_policy 或者在函数体内显式调用 check_policy(context, 'get', volume) 来判断调用用户的 role 是否满足 policy.json 中定义的要求。比如 /volume/api.py 中的 delete 方法: |
||||
resource | driver | 如果这里不配置,则继承[assignment]/driver | ||
resource | caching | 取代[assignment]/caching | ||
resource | cache_time | 取代[assignment]/cache_time | ||
resource | list_limit | 取代[assignment]/list_limit | ||
resource | admin_project_domain_name |
在keystone里相关代码只有下面部分 if (project['name'] == r.admin_project_name and project['domain']['name'] == r.admin_project_domain_name): token_data['is_admin_project'] = True |
||
resource | admin_project_name | |||
resource | project_name_url_safe | off | off, new, strict |
strict 严格检查url,不允许url中包含特定字符 new create的时候相当于strict, 不是create的时候就相当于off off 不检查url的的特殊字符 新的一套openstack直接用strict就好,估计也是为了兼容 |
resource | domain_name_url_safe | off | off, new, strict | |
From keystone
[revoke] revoke我的理解是 因为受控是延迟收到命令的,执行前还要先去请求确认当前指令是否已经revoke(撤销)或者过时 |
||||
revoke | driver | |||
revoke | expiration_buffer | 1800 |
通过当前时间减去token的超时时间加上这个expiration_buffer计算得到oldest 在外部访问list_revoke_events的时候把所有revoked_at时间小于oldest的记录都删除 确保要超过revoked_at时间点 expiration_buffer + tonek expiration那么多的时间才删除 |
|
revoke | caching | |||
revoke | cache_time | 取代[token]/revocation_cache_time | ||
From keystone
[role] sql =
keystone.assignment.role_backends.sql:Role assignment是给role分配权限的, 这里是对role进行add get delete update操作的 |
||||
role | driver | sql | 目前只支持sql | |
role | caching | TRUE | true false | |
role | cache_time | |||
role | list_limit | |||
From keystone [saml] 这玩意看代码好像就只是和federation联合授权相关 暂时不看 | ||||
From keystone [shadow_users] 这玩意看代码好像也是和federation联合授权相关 暂时不看 | ||||
From keystone [signing] ssl相关 暂时不看 | ||||
From keystone [ssl] ssl相关 暂时不看 | ||||
From keystone [token] token相关 | ||||
token | bind |
这两都是扩展认证的,
bind里只看见了对kerberos执行了追加验证 估计其他的追加认证要自己对authenticate函数做修改 |
||
token | enforce_token_bind | permissive | disabled, permissive, strict | |
token | expiration | 3600 | int | |
token | provider | uuid | fernet,pkiz,pki,uuid | fernet是最新的,性能好像最好 |
token | driver | sql |
kvs,
memcache memcache_pool, sql |
我们这里直接用memcached_pool |
token | caching | TRUE | 我们用了memcached,这里就可以关了,当然想做二级缓存也可以 | |
token | cache_time | |||
token | revoke_by_id | TRUE | true false |
是否允许有token认证的identifier撤销这个token 除非使用kvs存储,否则建议设置为true |
token | allow_rescope_scoped_token | TRUE | true false | 为true的话,允许调用authenticate的时候,token中包含有project和domain的scope |
token | hash_algorithm | md5 | PKI tokens用的参数,即将过时参数,不用管 | |
token | infer_roles | TRUE | true false |
看说明感觉是临时性将role链接到其他role 这样就不用显示的增加role, implied_role相关,参考后面implied_role的部分 |