openstack的keystone模块有用户管理和服务管理这两大块内容。这篇文章,先分析下用户管理。

一、概念理解

在讲用户管理,一定要先理解这三个概念:

  • 用户(user):现实生活中的你、我,他。在通俗点,就是一个人的账号名和密码。

openstack/keystone user-creat --name=xiaoming  --pass=password --email=xiaoming@qq,com

  • 租户(tenant):一个项目,也叫一个组织。一个租户里面,可以有一个或者多个用户。一个用户也可以属于不同租户。

openstack/keystone tenant-creat --name=ABC  --description="test"

  • 角色(role):在给定租户中用户可以操作的权限范围。

openstack/keystone role-creat --name=admin/_member_(openstack里面member前后各有一个下划线,很搞笑)

一般情况下,需要将用户、租户和角色关联起来,这样才能定义好。下面这个命令就是用户xiaoming在项目ABC里面具有_member_的权限。

keystone user-role-add --user=xiaoming --role=ABC --role=_member_

之前一直困恼我有个问题,就是角色到底有几种?原谅我是个实际派。是用户可以自己设置,还是openstack资源池统一预先设置。结合部署好的环境,我自己理解是openstack资源池里会统一定义好几种role,这块属于规划设计阶段的内容,并不对用户开放。

二、配置理解:

先来看一版部署环境中的user、tenant和role的设置。因为是已有环境且在neutron节点上查看的,需要先关联一个用户的环境变量。

#!/bin/sh

export LC_ALL=C

export OS_NO_CACHE='true'

export OS_TENANT_NAME='租户名'

export OS_PROJECT_NAME='租户名'

export OS_USERNAME='用户名'

export OS_PASSWORD='用户密码'

export OS_AUTH_URL='http://keystone的IP:5000/v2.0/'

export OS_AUTH_STRATEGY='keystone'

export OS_REGION_NAME='RegionOne'

export CINDER_ENDPOINT_TYPE='internalURL'

export GLANCE_ENDPOINT_TYPE='internalURL'

export KEYSTONE_ENDPOINT_TYPE='internalURL'

export NOVA_ENDPOINT_TYPE='internalURL'

export NEUTRON_ENDPOINT_TYPE='internalURL'

export OS_ENDPOINT_TYPE='internalURL'

export OS_VOLUME_API_VERSION=2

分别输入role是admin的用户和普通用户,来查看下通过keytone查看到的内容。

1、用admin用户

(1)查看user信息。可以查看到openstack资源池中的全部user信息。

[root@testn-controller ~]# keystone user-list

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

|                id                |                      name                      | enabled |                email                 |

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

| 8a0d7901a32a45448cea64f60d0ec38b |               0000500022502500               |   True  |             [email protected]             |

| 62cdd9cd7f054327b684e5560d518f7c |               00010022002761-112               |   True  |          [email protected]          |

(2)查看tenant信息。可以查看到openstack资源池中的全部tenant信息。

[root@testn-controller ~]# keystone tenant-list

(3)查看role信息,可以发现有几个关键信息。

[root@testn-controller ~]# keystone role-list

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

|                id                |       name       |

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

| 9fe2ff9ee4384b1894awww78d3e92bab |     _member_     |

| 5d881fe3c6044357a9f09fa575fd6f5f |      admin       |

| ade7d991d9d740b0a8f540wwwb0296f | heat_stack_owner |

| 3f397a3d8c4940fd9fc9fff17d475fe8 | heat_stack_user  |

| 54a47b232bed4fceb52ff11c101206 |   tenant_admin   |

| ae48825c33f146ef9ffb30c4e5ef851a |       user       |

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

(4)查看当前用户user所对应的tenant和role。

[root@testn-controller ~]# keystone user-role-list

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

|                id                |  name |             user_id              |            tenant_id             |

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

| 5d881fe3c604435fffffa575fd6f5f | admin | 64a80237dc464848566699263c481b37 | 3bd89ba6f56d4049ab05rrrre4656 |

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

在上面的命令下,只能查看当前用户的role。若是admin用户下,可以查看普通用户的role,需要使用这个命令:

[root@testn-controller ~]#keystone user-role-list --user 000220157100100111 --tenant 00022015710010111

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

|                id                |     name     |             user_id              |            tenant_id             |

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

| 9fe2ff9ee4384b192bab |   _member_   | fd5d743c873b8c06134 | 1fbffabf30ed4ea998cfe65e |

| 44ee8a6ad387486825e533a6 | tenant_admin | fd5d743cba038c06134 | 1fbffabf30ed4ea7708fe65e |

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

查看用户所对应的tenant。

[root@testn-controller ~]# keystone user-get userID

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

| Property |              Value               |

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

|  email   |                                  |

| enabled  |               True               |

|    id    | 64a80237dc4648488a6299263c481b37 |

|   name   |            lbaas-user            |

| tenantId | 3bd89ba6f56d4049ab05b56fd8de4656 |

| username |            lbaas-user            |

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

(5)查看用户获取到的token

[root@nfjd-testn-controller ~]# keystone token-get

/usr/lib/python2.7/site-packages/keystoneclient/shell.py:65: DeprecationWarning: The keystone CLI is deprecated in favor of python-openstackclient. For a Python library, continue using python-keystoneclient.

  'python-keystoneclient.', DeprecationWarning)

+--

|  Property |                   Value   |

|  expires  |  2016-09-22T03:08:37Z                            |

|     id    | PKIZ_eJylWVl3qswSfe9fcd_P-lYYxMSH7wEFEWO3AZm63wQTZmPiwPDrbzWakznRe7OWa4mBprpq71274J9_4G-oGyb5zwgv-ME_CJumI1h0evvIzOQQEdWKRo_wW5WNRvp1b6Raeq056mwYF3GSx0NmYV2N9SpOzIdhnD-hJE-NQSUMh5URw4_W0DQX2mSbUp9kLCCtmW2uzbV9WErevvteFm0kewUbD5LVyOwjMzMr7NAd1vIdzqYu1sw-1uI-bqM9bqlMHFcy0yplQVItg2kRNWb_7TXoeBE-XbRa8pOXvpXO02kVGuOM-ckhNOwiSs0tRFKE5XjP73zfTHOIMENRWVQroziEKazMTyq9PfWnW8YXWdvNynfhtyI3s8cUO9OSafDJVIlIpkAMKiAq6Q1u9YZkdkJaqpB2ldAWp7PRFBYSC34hlRK482ZDfWW79Hvpw6JKaeDly8B-QEvf5okKzWIsWrJdrnRl7a43G5Z7o5WbrLFG5Jmrp0EgwBZIEa3ZhkqeRgM7CY3BGvGLYT9wB7sKpWK_muB0Xuwg2-M89Iu9500xj2I5sYVIezzMWl3Gaa8maY9Hvkcks_pzLZLno4GEFzxR04JJp5wUp-_5YM_4_0q4geE1kMjty8Lou5U_LXxKJC0hZwZuWEkV6uQSIlrUw5JZEW1YkFavsGbn1CEFPiayWkFFlj7x3LzipX1cTexqnt4csBM1s0yX0CwzW7zoSUR77JE26s1kWptrcQUXv8kLeQiNYr-Uu_zw_wn3wbCrEJSxFiMZgAL7Yw0PVUlC3-V3a9nfstXXHB9sMjwsfUXgaPRlDnd7B2VUvg3vFF2NHbfLB-H5SG9qXLIcPiXWqIxoZgksszPqwMmOKRFDl0mWy0QaZ7j5vSroY1m-qwp2dHGexTJprcMqMw8vsEZvcf0DrDdsxFmY5DQbZkyLW6y5CpS6QtjxEpZFPaLhGmdUxr4OJSUZZ2U08VLIfvZTdOin8M6JDj14wvZdicQBlE557kolcgLZSmR0Zc1CSaxWgV3w6CBvO0gkKFKpHFal_mOtvyq1k7NbeyS6yPaI66Si5giK6-YD2I23mGe5NHcoT17D_NUmlHr84sXxu3IXlm6X2BAUChQJkDf2Fg7PcpkIq4nanzWDuZ1v9Jlnj13Rns9ccucU9sIRamx7Zh8WV0h6JBjqpMqwWuLoNdO8fN5VgSUAKIlmLCWaVwKwRJLFkET1E8HQV_v6aVsfk45-yPqeBbYcytPnt1mHpBdQiYbnhSceXZL5r0iGOpaln1l2LsnQudr3rai-wpheDGOOBXRkmd4jvN8Zeg1aWDHHLlhpKVDCHLemTHwvZ-U4mxvT5CPJ0Hka8H1037a2c0nGgSSFIKyh70El3olqBhdAB57C79PBDDwDiGweGQPOgfbU0RLEDHETFh-5cFODtYAt0D3OcA21h-NO9hUu-7NMvVjSvmUleqHl16z8PRJ0ad2PZccNRy3N3AaBDvITM2bgHhdX7LstMwC6pd4S7XPdP5Ydfai7fKx7DnWH49Hv_ECvBJkOArAub0sVSPUmLHddyfj_VpOiOlLaTlbGGGwOKdA7roOpCmVWmGthe65rQd9DOG_mjvmrsKKLSug8KhgWfvWSJrQ235WZBmLhjxPcWgIkCMTUS7BEW7AxEtaKbO6oFeuM5lCkZb2h4uvN0K93-8WtoLd2ZemLCZPcdyaTSXUSluTbxKJz_SAktgcYaecaPWJkccQIulREP2ooulREP0aCXkI5O5IX564lOdNwDzHofDTDItFWGcwMEtMSWAgrcLcWvqdMoz8aTvS528Rg6XCvazZwDFsAW2txa1uRbAXN1i6JQRJebrBEIKpOBE0zkqkPAn6BQ2XGWKDeoAJ_MOiGKxDQ9XtikWRpjBu6-F5QuZ6iswTVeexhTa06H80FpvTWS3-w77yyezpwJKU4kkQRQMoBifW53Vmt8IeZABteShwqUodKtPQKYrgVDGIpaWNOsQz7Zo_PlSCunSr_OhO8N90vNzwqGDpPwsg2lHmDHTShPxa6_Z8Sjo4nJAUNrB2V2P4SOeNQR59npdNscIbV5_xB5xDo3aIvifZphdu8geYKkNTGANEEOJE3ANUCZyqMO2AunGGCtegiLkgcNFAe-VxYdw4FvAEHD1Qg-jAzexsYb3fgF2F6_xrS6AXT50IaopO6znxiKfqOpu9Y-gH_b-GP_hf8_zWnoGbof5EzUroNuHsFFCtHRLIqYpg9DB8quQonyty3RPCFBX-K8RtX0E_hnRMdutgbrNkhnHi7I5yVBL33hObFw9cXqnzkfDdon7ENdMmg_VX3-sGhxBXW-CSr_zgCoO-9YNRSR4dP3GPONKGZnWIJam8QoLLZYHBzc8PLEPW9swftr6K7yKl-NQKgb0a-Q1×××-hYQlS-F9E3Gvp_j33dkx8Ee_nUri7pVp8lTeN98LjoyQuCCXcblunQqUA3fFfAjiVwrSA-bRAM3tCudIH5pniU8s9e8GuFogKvBiKafvaABaFzfWyW_uvzRnT0gsqBSuRx-YsX-Eo30RfC2RIHPFPD5-le9VuC0aV6SJxTdz4tjk6ZrlnXmYYw-jBAXQRonOZzjRWk7Iw36J-XMUev6YdEozN6gXiyNxCNetETjA0zPNCAQrhfvJton1lQtCuD68R0gDq9g9knSruHzWIkdaJxwjzwwVeelv54z_viMaGDLXDkb59Ep0Z50gCz5pMbc7ACstXASFgR3-pBBxeZ7_Zoa0ngkyrSeuXLYogFLw7kb4gP0Gx3YK6aoDni4jWio0s5de5XIH315Jp3bGAljHd6Ol9v0yWEfWQpDF-ZyvXzEBpe2z2YNrOiZFxYsqJgjgVWHuTLiRVQXQUMOEiX1TInb2g5TnnofFtzbQzXkAw0URWIBsjjepepCit1ke-RaeDjfZoGgTh4cIyRSt0qjo2hGutDPK4qr9VnWM0NpIquDkZm5Hm41jIVD2PiwVl46Hl7qIiArV6lqVTzLGuiqZ4Xrkmx0vQ5ViuDX4tGcTX2fKVlgVUbmuofF8BYk1fyqlGKe2O8i4y6mJXkEFrmUP3wugTx9yXau3cs-nBoqXoc62rQ3gaiuu57wz8CNa_vtnWiPocjX05lUOkweNpeBWiX3vdGT_F1n_k7ocLLwZ_-XRaur-_zP9lyNo-A_cl8sRNzJ79fzhrdeKLXTV9YHp4P9cS4naD7vbg1U9nIb-jd3CbP9dOEhM8PxdXj0_yKWUNp2zbV8KlSHnZro324ax4DxcrDmWA-P61vyynKN8GsjSf-Tb3Uabar909_wu3CmdDBn-sr4WZFx6kx3bbalUhl199Xw6kWZsW1vmz2d1fCdo_aVawsWhzXlZz072a3nhmPZs0VoHBYp4sHW17I1_GkIGJwPYg1EVYIot1TeIvHjj5WFhK6u19IYTMOhq4ynzQ3yv5eThtVW_osiUb5xk9BmcSk3_eb7ULB8R9b_fdf1L3j0on2-r7rvwSZG9c= |

| tenant_id |     12fd2ff067b44f4ca231264a76977ac3   |

|  user_id  |      21117e39a227405d8dc5ee8c4678075f   

      

2、用普通用户

就用下面的这个用户来查询。这个用户是一个全局的_member_角色,也是对应这个tenant的admin角色。在云数据中心,一般用户估计都是这样的设置。

[root@testn-controller ~]#keystone user-role-list --user 000220157100100111 --tenant 00022015710010111

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

|                id                |     name     |             user_id              |            tenant_id             |

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

| 9fe2ff9ee4384b192bab |   _member_   | fd5d743c873b8c06134 | 1fbffabf30ed4ea998cfe65e |

| 44ee8a6ad387486825e533a6 | tenant_admin | fd5d743cba038c06134 | 1fbffabf30ed4ea7708fe65e |

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

若是关联user000220157100100111来进行user、tenant和role的信息,发现返回全部是空,并提示说没有权限可以查询。user可以用keystone token-get查看到自己所对应的token。


三、使用说明:

可以有以下几种方式去访问或者使用keystone。

1、直接使用token环境变量

openstack keystone 用户管理_第1张图片

这个token是配置在/etc/keystone/keystone.conf里面.

admin_token=secrete_token

2、使用用户名、密码和租户名称环境变量

openstack keystone 用户管理_第2张图片