大学生对校园网站建设的需求是什么意思,wordpress后台加速,wordpress 博客主机,百度电商平台app1.keystone介绍 keystone 是OpenStack的组件之一#xff0c;用于为OpenStack家族中的其它组件成员提供统一的认证服务#xff0c;包括身份验证、令牌的发放和校验、服务列表、用户权限的定义等等。云环境中所有的服务之间的授权和认证都需要经过 keystone. 因此 keystone 是云…1.keystone介绍 keystone 是OpenStack的组件之一用于为OpenStack家族中的其它组件成员提供统一的认证服务包括身份验证、令牌的发放和校验、服务列表、用户权限的定义等等。云环境中所有的服务之间的授权和认证都需要经过 keystone. 因此 keystone 是云平台中第一个即需要安装的服务。 作为 OpenStack 的基础支持服务Keystone 做下面这几件事情 1管理用户及其权限 2维护 OpenStack Services 的 Endpoint 3Authentication认证和 Authorization鉴权 2.keystone中的几个概念 1User User指任何可以使用OpenStack的实体可以是真正的用户可以是其他系统或服务。 User访问OpenStack时keystone会对其进行验证。 adminopenstack平台的超级管理员负责openstack服务的管理和访问权限 demo 常规非管理任务应该使用无特权的项目和用户所有要创建 demo 项目和 demo 用户。 除了admin和demoOpenStack也为nova、cinder、glance、neutron服务创建了相应的User。 2Credentials Credentials是User用来证明自己身份的信息可以是 1用户名/密码 2Token 3API Key 4其他高级方式 3Authentication Authentication 是 Keystone 验证 User 身份的过程。User 访问 OpenStack 时向 Keystone 提交用户名和密码形式的 CredentialsKeystone 验证通过后会给 User 签发一个 Token 作为后续访问的 Credential。 4Token Token 是由数字和字母组成的字符串User 成功 Authentication 后 Keystone 生成 Token 并分配给 User。 1Token 用做访问 Service 的 Credential 2Service 会通过 Keystone 验证 Token 的有效性 3Token 的有效期默认是 24 小时 5Project Project 用于将 OpenStack 的资源计算、存储和网络进行分组和隔离。根据 OpenStack 服务的对象不同Project 可以是一个客户公有云也叫租户、部门或者项目组私有云。 注意 1资源的所有权是属于 Project 的而不是 User。 2在 OpenStack 的界面和文档中Tenant / Project / Account 这几个术语是通用的但长期看会倾向使用 Project 3每个 User包括 admin必须挂在 Project 里才能访问该 Project 的资源。 一个User可以属于多个 Project。 4admin 相当于 root 用户具有最高权限 6Service OpenStack 的 Service 包括 Compute (Nova)、Block Storage (Cinder)、Object Storage (Swift)、Image Service (Glance) 、Networking Service (Neutron) 等。每个 Service 都会提供若干个 EndpointUser 通过 Endpoint 访问资源和执行操作。 7Endpoint Endpoint 是一个网络上可访问的地址通常是一个 URL。Service 通过 Endpoint 暴露自己的 API。 Keystone 负责管理和维护每个 Service 的 Endpoint。 可以使用如下命令查看Endpoint openstack catalog list[rootnode1 ~]# openstack catalog list-------------------------------------------------------| Name | Type | Endpoints |-------------------------------------------------------| keystone | identity | RegionOne || | | admin: http://node1:35357/v3/ || | | RegionOne || | | public: http://node1:5000/v3/ || | | RegionOne || | | internal: http://node1:5000/v3/ || | | |------------------------------------------------------- 8Role 安全包含两部分Authentication认证和 Authorization鉴权 Authentication 解决的是“你是谁”的问题 Authorization 解决的是“你能干什么”的问题 Keystone 借助 Role 实现 Authorization Keystone定义Role 可以为 User 分配一个或多个 RoleService 决定每个 Role 能做什么事情 Service 通过各自的 policy.json 文件对 Role 进行访问控制。 下面是 Nova 服务 /etc/nova/policy.json 中的示例 上面配置的含义是对于 create、attach_network 和 attach_volume 操作任何Role的 User 都可以执行 但只有 admin 这个 Role 的 User 才能执行 forced_host 操作。 OpenStack 默认配置只区分 admin 和非 admin Role。 如果需要对特定的 Role 进行授权可以修改 policy.json。 Openstack对User的验证除了身份验证还需要鉴别 User 对某个Service是否有访问权限。Policy用来定义什么角色对应什么权限。对Keystone来说Policy其实是一个JSON文件默认是 /etc/keystone/policy.json 。通过PolicyKeystone实现了对User的权限管理。 3.准备OpenStack环境 1安装openstack环境 yum install python-openstackclientyum install openstack-selinux 2准备数据库 yum install mariadb mariadb-server python2-PyMySQLvim /etc/my.cnf.d/openstack.cnf[mysqld]bind-address 192.168.52.101default-storage-engine innodbinnodb_file_per_table onmax_connections 4096collation-server utf8_general_cicharacter-set-server utf8systemctl enable mariadb.servicesystemctl start mariadb.servicemysql_secure_installation #进行数据库初始化 3搭建消息队列服务 yum install rabbitmq-serversystemctl restart rabbitmq-server.servicesystemctl enable rabbitmq-server.service创建openstack用户rabbitmqctl add_user openstack openstackrabbitmqctl set_permissions openstack .* .* .* 4创建缓存服务 yum install memcached python-memcachedvim /etc/sysconfig/memcachedOPTIONS-l 127.0.0.1,::1,controller,node1systemctl restart memcached.servicesystemctl enable memcached.service 4.部署Keystone服务 1安装和配置 1登录数据库 mysql -uroot -pMariaDB [(none)] create database keystone; #创建keystone数据库MariaDB [(none)] grant all privileges on keystone.* to keystonelocalhost identified by KEYSTONE_DBPASS; #授予用户权限并设置密码允许在本机登录grant all privileges on keystone.* to keystone% identified by KEYSTONE_DBPASS; #授予用户权限并设置密码允许在任意主机登录 2安装keystone包并进行配置 yum install openstack-keystone httpd mod_wsgivim /etc/keystone/keystone.conf[database]connection mysqlpymysql://keystone:KEYSTONE_DBPASSnode1/keystone[token]provider fernet 或者按照下列方法进行设置 cp /etc/keystone/keystone.conf /etc/keystone/keystone.conf.bak -a #备份配置文件
vim /etc/keystone/keystone.conf #将配置文件中的内容全部删除并添加以下内容
[DEFAULT][assignment][auth][cache][catalog][cors][cors.subdomain][credential][database]connection mysqlpymysql://keystone:KEYSTONE_DBPASScontroller/keystone[domain_config][endpoint_filter][endpoint_policy][eventlet_server][federation][fernet_tokens][healthcheck][identity][identity_mapping][kvs][ldap][matchmaker_redis][memcache][oauth1][oslo_messaging_amqp][oslo_messaging_kafka][oslo_messaging_notifications][oslo_messaging_rabbit][oslo_messaging_zmq][oslo_middleware][oslo_policy][paste_deploy][policy][profiler][resource][revoke][role][saml][security_compliance][shadow_users][signing][token]provider fernet[tokenless_auth][trust] View Code 3加载数据到数据库 su -s /bin/sh -c keystone-manage db_sync keystone 4初始化fernet秘钥存储库 keystone-manage fernet_setup --keystone-user keystone --keystone-group keystonekeystone-manage credential_setup --keystone-user keystone --keystone-group keystone 5引导认证服务 keystone-manage bootstrap --bootstrap-password admin \ --bootstrap-admin-url http://node1:35357/v3/ \ --bootstrap-internal-url http://node1:5000/v3/ \ --bootstrap-public-url http://node1:5000/v3/ \ --bootstrap-region-id RegionOne 6配置httpd服务 vim /etc/httpd/conf/httpd.confServerName node1 #只修改此处
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/ #创建软链接
[rootnode1 ~]# cd /etc/httpd/conf.d[rootnode1 conf.d]# ls -l总用量 16-rw-r--r-- 1 root root 2926 11月 5 2018 autoindex.conf-rw-r--r-- 1 root root 366 11月 5 2018 README-rw-r--r-- 1 root root 1252 10月 30 2018 userdir.conf-rw-r--r-- 1 root root 824 10月 30 2018 welcome.conflrwxrwxrwx 1 root root 38 7月 29 14:47 wsgi-keystone.conf - /usr/share/keystone/wsgi-keystone.confsystemctl restart httpd.servicesystemctl enable httpd.service 7设置登录信息 vim openrcexport OS_USERNAMEadminexport OS_PASSWORDadminexport OS_PROJECT_NAMEadminexport OS_USER_DOMAIN_NAMEDefaultexport OS_PROJECT_DOMAIN_NAMEDefaultexport OS_AUTH_URLhttp://node1:35357/v3export OS_IDENTITY_API_VERSION3source openrc在命令行模式下登入openstack 2创建域、项目、用户、角色 创建service项目openstack project create --domain default --description Service Project service-----------------------------------------------| Field | Value |-----------------------------------------------| description | Service Project || domain_id | default || enabled | True || id | a1710fdff32a4605a8ab549f8680dd45 || is_domain | False || name | service || parent_id | default |-----------------------------------------------创建demo项目openstack project create --domain default --description Demo Project demo-----------------------------------------------| Field | Value |-----------------------------------------------| description | Demo Project || domain_id | default || enabled | True || id | 9f4f23f099bb4da3bc41c99f7a8a4f20 || is_domain | False || name | demo || parent_id | default |-----------------------------------------------查看项目openstack project list-------------------------------------------| ID | Name |-------------------------------------------| 7d3f0cd56a104c60a36196675f62428e | admin || 9f4f23f099bb4da3bc41c99f7a8a4f20 | demo || a1710fdff32a4605a8ab549f8680dd45 | service |------------------------------------------- 2创建用户demo并设置密码 openstack user create --domain default --password-prompt demo手动输入密码或openstack user create --domain default --passworddemo demo-------------------------------------------------------| Field | Value |-------------------------------------------------------| domain_id | default || enabled | True || id | e880cc125bb541128c9bc47233d91732 || name | demo || options | {} || password_expires_at | None |-------------------------------------------------------查看用户openstack user list-----------------------------------------| ID | Name |-----------------------------------------| cd9ce1eb589b445e9b98c53a36bdc8d8 | admin || e880cc125bb541128c9bc47233d91732 | demo |----------------------------------------- 3创建角色user openstack role create user---------------------------------------------| Field | Value |---------------------------------------------| domain_id | None || id | 348324e7aee745229551eb412fd96a18 || name | user |---------------------------------------------查看角色openstack role list--------------------------------------------| ID | Name |--------------------------------------------| 348324e7aee745229551eb412fd96a18 | user || 9fe2ff9ee4384b1894a90878d3e92bab | _member_ || c6b4ab1a75d041e298f59570bd7dd46e | admin |-------------------------------------------- 4将demo项目下的demo用户设置为user角色 openstack role add --project demo --user demo user 3验证登录信息 1取消环境变量值 unset OS_AUTH_URL OS_PASSWORD 2输入admin用户登录信息登录 openstack --os-auth-url http://node1:35357/v3 \ --os-project-domain-name default \ --os-user-domain-name default \ --os-project-name admin \ --os-username admin token issuePassword:-------------------------------------------------------------------------------------------------------| Field | Value |-------------------------------------------------------------------------------------------------------| expires | 2019-07-29T09:44:060000 || id | gAAAAABdPrHWXAwrKHKnU3CMr5odqMjYwK90C5bD6rdPEfoJzTuAh-G3YZcb0SHzr8ek8qaS5zgN4haULRxpgcrli || | XJ32hhKvmN8UZTSRgW58l_Nu1e1l4gjDjxXyUS25a4krWJ46brr4qpq3AvUu40_B9ccw9Z_7vjiDA_- || | FTKpmqFnRNrAH-k || project_id | 7d3f0cd56a104c60a36196675f62428e || user_id | cd9ce1eb589b445e9b98c53a36bdc8d8 |------------------------------------------------------------------------------------------------------- 5.Troubleshoot OpenStack排查问题的方法主要靠日志每个service都有自己的日志文件。 Keystone主要有两个日志keystone.log 和 keystone_access.log保存在 /var/log/keystone 与 /var/log/httpd/ 目录中。 vim /var/log/keystone/keystone.log 2019-07-29 14:36:47.607 43150 INFO migrate.versioning.api [-] 66 - 67...2019-07-29 14:36:48.060 43150 INFO migrate.versioning.api [-] done2019-07-29 14:36:48.060 43150 INFO migrate.versioning.api [-] 67 - 68...2019-07-29 14:36:48.065 43150 INFO migrate.versioning.api [-] done2019-07-29 14:36:48.065 43150 INFO migrate.versioning.api [-] 68 - 69...2019-07-29 14:36:48.069 43150 INFO migrate.versioning.api [-] done2019-07-29 14:36:48.069 43150 INFO migrate.versioning.api [-] 69 - 70...2019-07-29 14:36:48.073 43150 INFO migrate.versioning.api [-] done vim /var/log/httpd/keystone_access.log192.168.52.101 - - [29/Jul/2019:15:01:40 0800] GET /v3 HTTP/1.1 200 245 - osc-lib/1.3.1 keystoneauth1/2.18.0 python-requests/2.11.1 CPython/2.7.5192.168.52.101 - - [29/Jul/2019:15:01:42 0800] POST /v3/auth/tokens HTTP/1.1 201 1082 - osc-lib/1.3.1 keystoneauth1/2.18.0 python-requests/2.11.1 CPython/2.7.5192.168.52.101 - - [29/Jul/2019:15:02:21 0800] GET /v3 HTTP/1.1 200 245 - osc-lib/1.3.1 keystoneauth1/2.18.0 python-requests/2.11.1 CPython/2.7.5192.168.52.101 - - [29/Jul/2019:15:02:23 0800] POST /v3/auth/tokens HTTP/1.1 201 1082 - osc-lib/1.3.1 keystoneauth1/2.18.0 python-requests/2.11.1 CPython/2.7.5 如果需要得到详细的日志信息可以将配置文件中的debug选项打开 vim /etc/keystone/keystone.conf[DEFAULT]debugTrue 转载于:https://www.cnblogs.com/Agnostida-Trilobita/p/11263074.html