搜索

第 8 章 应用程序凭证

download PDF

使用 应用凭据 来避免将用户帐户凭据嵌入到配置文件中。相反,用户会创建一个 Application Credential,它接收委派对单个项目的访问权限,并具有自己的不同的机密。用户也可以将委派的特权限制为该项目中的单个角色。这样,您可以采用最小特权的原则,其中经过身份验证的用户只能获得一个项目以及需要正常工作的角色,而不是所有项目和角色。

您可以使用这种方法来消耗 API,而不显示用户凭据,应用可以在不需要嵌入的用户凭据的情况下向 Keystone 进行身份验证。

您可以使用应用程序凭证为应用程序生成令牌并配置 keystone_authtoken 设置。以下部分描述了这些用例。

注意

Application Credential 依赖于创建它的用户帐户,因此当该帐户被删除或丢失对相关角色的访问权限时,它将终止。

8.1. 使用应用程序凭证生成令牌

应用程序凭据在仪表板中作为自助服务功能提供给用户使用。本例演示了用户如何创建应用凭据,然后使用它生成令牌。

  1. 创建测试项目并测试用户帐户:

    1. 创建名为 AppCreds 的项目:

      $ openstack project create AppCreds
    2. 创建名为 AppCredsUser 的用户:

      $ openstack user create --project AppCreds --password-prompt AppCredsUser
    3. AppCreds 项目授予 member 角色的 AppCredsUser 访问权限:

      $ openstack role add --user AppCredsUser --project AppCreds member
  2. AppCredsUser 身份登录仪表板并创建应用程序凭证:

    概述 Identity Application Credentials +Create Application Credential

    注意

    确保您下载 clouds.yaml 文件内容,因为在关闭了 Your Application Credential 的弹出窗口后,您无法再次访问它。

  3. 使用 CLI 创建名为 /home/stack/.config/openstack/clouds.yaml 的文件,并粘贴 clouds.yaml 文件的内容。

    # This is a clouds.yaml file, which can be used by OpenStack tools as a source
    # of configuration on how to connect to a cloud. If this is your only cloud,
    # just put this file in ~/.config/openstack/clouds.yaml and tools like
    # python-openstackclient will just work with no further config. (You will need
    # to add your password to the auth section)
    # If you have more than one cloud account, add the cloud entry to the clouds
    # section of your existing file and you can refer to them by name with
    # OS_CLOUD=openstack or --os-cloud=openstack
    clouds:
      openstack:
        auth:
          auth_url: http://10.0.0.10:5000/v3
          application_credential_id: "6d141f23732b498e99db8186136c611b"
          application_credential_secret: "<example secret value>"
        region_name: "regionOne"
        interface: "public"
        identity_api_version: 3
        auth_type: "v3applicationcredential"
    注意

    您的部署这些值将有所不同。

  4. 使用 Application Credential 来生成令牌。使用以下命令时,不得作为任何特定用户提供,且必须与 clouds.yaml 文件位于同一个目录中。

    [stack@undercloud-0 openstack]$ openstack --os-cloud=openstack token issue
    +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | Field      | Value                                                                                                                                                                                                        |
    +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | expires    | 2018-08-29T05:37:29+0000                                                                                                                                                                                     |
    | id         | gAAAAABbhiMJ4TxxFlTMdsYJpfStsGotPrns0lnpvJq9ILtdi-NKqisWBeNiJlUXwmnoGQDh2CMyK9OeTsuEXnJNmFfKjxiHWmcQVYzAhMKo6_QMUtu_Qm6mtpzYYHBrUGboa_Ay0LBuFDtsjtgtvJ-r8G3TsJMowbKF-yo--O_XLhERU_QQVl3hl8zmMRdmLh_P9Cbhuolt |
    | project_id | 1a74eabbf05c41baadd716179bb9e1da                                                                                                                                                                             |
    | user_id    | ef679eeddfd14f8b86becfd7e1dc84f2                                                                                                                                                                             |
    +------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
注意

如果您收到与 init()类似的错误,则获取 unexpected 关键字参数 'application_credential_secret',则您可能仍会 source 到前面的凭证。对于全新的环境,请运行 sudo su - 堆栈

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.