文档首页/ 应用身份管理服务 OneAccess/ 最佳实践/ 集成企业应用/ 使用OneAcceess用户门户登录华为云/ 通过OneAccess免密登录多个华为云账号(SAML-虚拟用户SSO)
更新时间:2024-12-18 GMT+08:00
分享

通过OneAccess免密登录多个华为云账号(SAML-虚拟用户SSO)

本文以SAML协议为例介绍如何实现使用OneAccess免密登录多个华为云账号。如需了解华为云身份提供商详情,请参见身份提供商概述

在华为云上创建身份提供商

在华为云控制台创建身份提供商,配置身份提供商的元数据文件后,可以在华为云中建立对OneAccess的信任关系。

  1. 登录OneAccess管理门户,下载OneAccess系统的元数据文件(metadata文件)。

    1. 登录OneAccess管理门户。
    2. 在导航栏中,选择“设置 > 服务配置”。
    3. 在“服务配置”页面,单击“IDP配置”。
    4. 在弹出的IDP配置页面,单击右上角的“下载IDP元数据”,数据会自动保存。

  2. 参考在华为云上创建身份提供商创建身份提供商 ,其中“类型”选择“虚拟用户SSO”。

    • 身份提供商名称不能重复,建议以域名唯一标识命名。
    • 虚拟用户SSO定义可参考虚拟用户SSO与IAM用户SSO的适用场景
    • 一个华为云账号只能存在“IAM用户SSO”和“虚拟用户SSO”中的一种类型的身份提供商。

  3. 获取华为云登录链接中的domain_id和idp的值。

  4. 参考在华为云上配置元数据文件把OneAccess IdP的Metadata文件配置到华为云。
  5. 参考配置身份转换规则在华为云上配置身份转换规则,使得OneAccess用户拥有华为云访问云服务和资源的权限。

    以每个OneAccess用户都对应同一个IAM用户组,登录华为云之后,子用户名称显示为OneAccess用户名为例,转换规则配置如下:

    [
      {
        "remote": [
          {
            "type": "name"
          }
        ],
        "local": [
          {
            "user": {
              "name": "{0}"
            }
          },
          {
            "group": {
              "name": "admin"
            }
          }
        ]
      }
    ]

    其中,remote为OneAccess映射到IAM的信息,取其中的name字段,可取的映射字段可以参考2

    local为IAM本地的信息,其中user为IAM的用户信息,其中的name为展示的子用户名称,{0}取remote中的第一个字段。group为IAM的用户组信息,表示所有用户都映射到admin的用户组,拥有其所有权限。

    同理,也可以在remote中添加多个字段,将其中某个字段设置为用户组名称,来实现不同的用户对应不同的用户组。

    [
      {
        "remote": [
          {
            "type": "name"
          },
          {
            "type": "Roles"
          }
        ],
        "local": [
          {
            "user": {
              "name": "{0}"
            }
          },
          {
            "groups": "{1}"
          }
        ]
      }
    ]

    其中,remote为多映射一个Roles字段(可使用用户属性定义中的自定义字段,多值类型),可以为单值,也可以为多值。

    local为使用groups,可以映射到多个IAM用户组,取remote中的第二个Roles字段。

  6. 在其他华为云账号上面重复2~5进行配置。

建立OneAccess对华为云的信任关系

在OneAccess中配置华为云的元数据文件,以建立OneAccess对华为云的信任。

  1. 在OneAccess上添加华为云应用。

    1. 登录OneAccess管理门户,选择“资源 > 应用”。
    2. 在应用页面,单击“新增预集成应用”。
    3. 在新增预集成应用页面,单击“华为云”应用。
    4. 在弹出的添加应用页面,确认通用信息,单击“下一步”。
    5. 在认证参数配置页面,选择“导入SP应用元数据 > 选择文件”,选择获取的华为云元数据文件。系统会自动上传文件并提取元数据。
    6. 待“选取文件”变为“√”时,代表系统已提取元数据,单击“下一步”,成功添加华为云应用。
    7. 在认证集成页面,在“参数配置”页签,单击“编辑”,将“Single Logout URL”对应值中的“/saml/LogoutServiceHTTPRedirect”替换为“/logout”。

  2. 配置OneAccess与华为云之间的映射关系。

    1. 单击已添加的华为云应用,在应用信息页面,单击应用图标,进入应用详情页面。
    2. 选择“认证集成 > 映射配置”,单击“添加映射”,建立OneAccess与华为云之间的属性映射。参数详细说明可参考映射配置
    3. 选择“认证集成 > 映射配置”,单击“添加映射”,添加应用属性名为“IAM_SAML_Attributes_identityProviders”的映射,映射类型为“固定属性值”,值为“iam::{domain_id}:identityProvider:{idp_id}”,其中“{domain_id}”为步骤3中获取的domain_id,“{idp_id}”为步骤3中获取的idp_id,支持多个华为云账号的拼接,使用“;”进行分隔,实现跳转过程中选择某个华为云账号跳转,两个华为云账号时值举例如下:

      iam::657ba0e***********19fd684d8758c:identityProvider:SAML-IAM;iam::e35f949b3*********2b79ba14839c:identityProvider:SAML-OneAccess

    4. (可选)单击“添加映射”,添加应用属性名为“IAM_SAML_Attributes_redirect_url”的映射,映射类型为“固定属性值”,值为华为云Console中的特定业务页面(如果业务地址中带有“agencyId=***&”字段,需要将该字段删除),可以实现单点登录直接跳转至特定业务页面,如果不添加,默认跳转华为云主页面。

  3. 在OneAccess给用户授予华为云访问权限。

    在华为云应用详情页面,选择“授权管理 > 应用账号”,单击“添加账号”,按需勾选账号,单击“保存”,所选用户即可在OneAccess中免密访问华为云。

OneAccess用户登录验证

在OneAccess中授予华为云应用访问权限的用户,登录OneAccess用户门户,单击华为云应用,选择需要访问的身份提供商,即可进入华为云控制台首页访问云服务。

相关文档