OpenStack 安装向导之配置identity服务

来源:互联网 发布:php软件开发工程师 编辑:程序博客网 时间:2024/06/05 19:44


OpenStack安装向导之配置identity服务(Jesse翻译,原文来自icehouse的OpenStack的文档)

 

Identity Service内容

        Identity服务执行以下功能:

                  用户管理,跟踪用户和他们的权限

                  服务目录,提供一个有效地服务目录(用他们的API

        为了更好的理解Identity服务,你必须理解以下内容:

        User——一个人,系统,或者服务的数字代表(使用OpenStack云服务)。识别服务验证接入请求(由用户发起的)。用户有一个login且被分派访问资源的令牌。用户可以直接特别的tenant,是否他们包含在tenant中。

        Credentials——验证用户的凭证数据。在identity服务中,例如用户名和密码,用户名和API key或者一个认证令牌(由identity服务)

        Authentication——identity服务通过验证系列的用户凭证来确认一个进入的请求。

        Token——一个随意bit文本被用于去访问资源。每一个令牌有一个范围(描述那个资源可以用它来访问)

        Tenant——一个用于分组和隔离资源和/或识别对象容器。依赖于服务操作者,一个tenant可以映射到一个客户,账户,组织或工程项目。

        Service——一个OpenStack服务,例如计算机,对象存储,或者image服务。提供一个或更多的endpoint(哪个用户可以访问资源和执行操作)

        Endpoint——一个网络访问地址,通常描述为url

        Role——一个用户去执行特定的操作集。

安装identity服务

  1. 在控制器节点上,安装OpenStack识别服务,一起安装python-keystneclient

    #yum install openstack-keystone python-keystoneclient

  2. 识别服务使用一个数据库去存储信息。指定配置文件中的数据库的位置。在这个向导中,我们在控制器节点上(用户名为keystone)使用MySQL数据库。用实际的数据库用户密码替代KEYSTONE_DBPASS.

    #openstack-config –set /etc/keystone/keystone.conf \

    Database connectmysql://keystone:KEYSTONE_DBPASS@controller/

    keystone

  3. 使用你先前设置的root密码登陆。创建一个keystone数据库用户。

    $ mysql-u root -p

    mysql>CREATE DATABASE keystone;

    mysql>GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \

    IDENTIFIEDBY 'KEYSTONE_DBPASS';

    mysql>GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \

    IDENTIFIEDBY 'KEYSTONE_DBPASS';

    mysql>exit

  4. identity服务创建数据库表

    #su –s /bin/sh –c “keystone-manage db_sync” keystone

  5. 定义一个授权令牌(作为一个共享密钥),在identity服务和其他Openstack服务之间通信所用的共享密钥。使用openssl去产生一个随机的令牌和存储它到配置文件中。

# ADMIN_TOKEN=$(openssl rand -hex 10)

# echo $ADMIN_TOKEN

# openstack-config --set /etc/keystone/keystone.confDEFAULT \

admin_token $ADMIN_TOKEN

  1. 默认,keystone使用PKI令牌。创建签名key和认证和授权的访问到产生的数据中

# keystone-manage pki_setup --keystone-user keystone--keystone-group

keystone

# chown -R keystone:keystone /etc/keystone/ssl

# chmod -R o-rwx /etc/keystone/ssl

  1. 启动识别服务和设置为自启动

    #service openstack-keystone start

    #chkconfig openstack-keystone on

  2. 默认,识别服务存储过期的令牌到数据库中(不定期的)。我们推荐配置一个周期任务使用cron去清除过期的令牌(以小时计)。

    运行以下命令去清空过期的令牌每小时,且记录输出到/var/log/keystone/keystone-tokenflush.log

    #(crontab –l –u keystone 2>&1 | grep –q token-flush)|| \

echo '@hourly /usr/bin/keystone-manage token_flush>/var/log/keystone/

keystone-tokenflush.log 2>&1' >>/var/spool/cron/keystone

 

 

定义用户,tenants和角色

        安装identity服务之后,设置userstenants,角色去认证。这些被用于去允许访问服务。

        一般情况下,你将需要一个用户和密码去认证identity服务。如果你没有创建任何用户,你将不得不使用认证令牌(前步中创建的令牌)。你也可以使用—os-token选项跳过或者设置OS_SERVICE_TOKEN环境变量。

$export OS_SERVICE_TOKEN=ADMIN_TOKEN

$exportOS_SERVICE_ENDPOINT=http://controller:35357/v2.0

 

创建一个管理员

        使用以下步骤去创建一个管理员用户,角色和tenant。你将使用这个账户来与OpenStack云进行管理交互操作。

 

        默认,识别服务创建一个特别的_member_角色。OpenStack仪表板自动授权访问给具有这个角色的用户。你可以给admin用户把该角色给其他的admin角色。

 

注意:你创建的任何角色必须映射给指定的角色(在policy.json文件中)包含在每一个OpenStack服务中。大多数的服务的默认的策略文件授权管理员访问给admin角色。

  1. 创建admin用户

$ keystone user-create --name=admin--pass=ADMIN_PASS --email=ADMIN_EMAIL

用实际的密码和email替代对应的ADMIN_PASS,ADMIN_EMAIL

 

  1. 创建admin角色

$ keystone role-create --name=admin

 

  1. 创建admin tenant

$ keystone tenant-create --name=admin--description="Admin Tenant"

 

  1. 你必须使用user-role-addadmin用户,角色,tenant链接在一起

$ keystone user-role-add --user=admin--tenant=admin --role=admin

 

  1. 连接admin用户,_member_角色,admin tenant

$ keystone user-role-add --user=admin--role=_member_ --tenant=admin

 

创建一个普通用户

 

        使用以下步骤去创建一个普通用户,tenant,连接他们打哦特定的_member_角色。你将使用这个账户进行日常非管理的交互操作(与云)。你也可以使用这个步骤去创建其他的云用户(使用不同的用户名和密码)。当创建这些用户的时候提过tenant创建步骤。

 

  1. 创建demo用户

    $ keystone user-create --name=demo--pass=DEMO_PASS--email=DEMO_EMAIL

  2. 创建demo tenant

    $ keystone tenant-create --name=demo--description="Demo Tenant"

  3. 连接demo用户,_member_角色和demo tenant

    $ keystone user-role-add --user=demo --role=_member_--tenant=demo

 

创建一个服务tenant

OpenStack服务在访问其他的OpenStack服务时,也要求一个用户名,tenant,角色。在基本的安装中,OpenStack服务通常共享一个service(名字叫service tenant。当然你也可以创建其他的用户名和角色(一旦你安装和配置每一个服务时)。

创建service tenant

$ keystonetenant-create --name=service --description="Service Tenant"

 

 

定义服务和API接口

为了Identity服务可以跟踪每个已安装的OpenStack服务,他们位于网络的位置,你必须注册在你OpenStack安装中的每个服务。为了注册服务,运行以下命令:

        Keystone service-create描述服务

        Keystone endpoint-create关联服务的API接口

你也必须注册identity服务本身。使用OS_SERVICE_TOKEN环境变量(与前面认证设置相同)。

  1. identity服务创建一个服务条目

$ keystoneservice-create --name=keystone --type=identity \

--description="OpenStackIdentity"

+-------------+----------------------------------+

| Property |Value |

+-------------+----------------------------------+

| description |OpenStack Identity |

| id |15c11a23667e427e91bc31335b45f4bd |

| name |keystone |

| type |identity |

 

 

 

  1. 通过使用返回的服务IDidentity服务指定一个API接口。当你制定一个接口,你提供URL给公共的API,内部的API和管理API。在这个向导中,controller主机名被使用。注意identity服务使用一个不同端口(为管理api

    $keystone endpoint-create \

    --service-id=$(keystoneservice-list | awk '/ identity / {print $2}') \

    --publicurl=http://controller:5000/v2.0\

    --internalurl=http://controller:5000/v2.0\

    --adminurl=http://controller:35357/v2.0

    +-------------+-----------------------------------+

    |Property | Value |

    +-------------+-----------------------------------+

    |adminurl | http://controller:35357/v2.0 |

    | id |11f9c625a3b94a3f8e66bf4e5de2679f |

    |internalurl | http://controller:5000/v2.0 |

    |publicurl | http://controller:5000/v2.0 |

    | region| regionOne |

    |service_id | 15c11a23667e427e91bc31335b45f4bd |

    +-------------+-----------------------------------+

        注意:你需要为每一个添加到你的OpenStack环境中的服务创建一个额外的接口。

 

验证Identity服务的安装

 

  1. 验证Identity服务是否正确的安装和配置,清空OS_SERVICE_TOKENOS_SERVICE_ENDPOINT环境变量:

    $unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT

    这些变量用于去注册identity服务,不再需要。

  2. 你现在可以使用合法的用户名的认证。

$ keystone --os-username=admin --os-password=ADMIN_PASS\

--os-auth-url=http://controller:35357/v2.0 token-get

在回应中,你接受到一个令牌对(对应你的用户ID),这验证了你的Identity服务运行在预期的接口上;你的用户账户被启用(用期望的凭证)

  1. 验证授权行为是预期的。在一个tenant上请求认证。

$ keystone --os-username=admin --os-password=ADMIN_PASS\

--os-tenant-name=admin --os-auth-url=http://controller:35357/v2.0 \

token-get

 

  1. 你也可以设置你的—os--*变量到你的环境变量中去简化命令行习惯。设置一个admin-openrc.sh文件(用admin凭证和admin接口)

export OS_USERNAME=admin

export OS_PASSWORD=ADMIN_PASS

export OS_TENANT_NAME=admin

export OS_AUTH_URL=http://controller:35357/v2.0

  1. Source环境变量

    Source admin-openrc.sh

  2. 验证你的admin-openrc.sh文件配置是正确的。运行相同的命令(不带—os-*)

    $ keystone token-get

  3. 验证你的admin账户有权限执行管理命令

    $keystone user-list

    +----------------------------------+-------+---------+-------------------+

    | id |name | enabled | email |

    +----------------------------------+-------+---------+-------------------+

    | afea5bde3be9413dbd60e479fddf9228 | admin | True |admin@example.com |

    |32aca1f9a47540c29d6988091f76c934 | demo | True | demo@example.com |

    +----------------------------------+-------+---------+-------------------

$ keystone user-role-list --user admin--tenant admin

+----------------------------------+----------+----------------------------------+----------------------------------+

| id | name | user_id

|tenant_id |

+----------------------------------+----------+----------------------------------+----------------------------------+

| 9fe2ff9ee4384b1894a90878d3e92bab |_member_ |

afea5bde3be9413dbd60e479fddf9228| e519b772cb43474582fa303da62559e5 |

| 5d3b60b66f1f438b80eaae41a77b5951 | admin|

afea5bde3be9413dbd60e479fddf9228 |e519b772cb43474582fa303da62559e5 |

+----------------------------------+----------+----------------------------------+----------------------------------+

keystone user-list命令的输出中的id匹配keystone user-role-list命令的user_id,列出的admin角色以及与之关联的tenant,这也就验证了你的用户账户有admin角色。

 

0 0