M2M应用(机器间权限管理)

机器间权限管理(M2M)是无需用户参与的应用间授权,由IDaaS进行授权,结合网关型产品进行鉴权,从而控制调用方应用对受保护资源的访问,防止越权访问。

使用场景

企业在数字化协作场景中,如果需要将部分业务系统能力开放给第三方合作伙伴(如外包团队)时,通常需要建立基于机器身份的自动化授权机制。在具体实施过程中,企业可采取以下方案:

  • 建立合作伙伴准入认证体系:通过预共享密钥或OAuth 2.0客户端凭证模式等技术手段,为每个合作方分配独立的机器身份标识。

  • 采用细粒度权限管理策略:在API访问控制层面,将非核心业务数据接口的访问权限与特定合作伙伴身份进行绑定。例如:可配置仅允许某开发团队调用数据可视化相关的接口服务。

这种基于M2M(机器对机器)通信的授权模式,既保证了自动化系统间的高效交互,又通过身份鉴权和权限隔离机制降低了数据安全风险,特别适用于开发协作、数据看板搭建等无需终端用户介入的系统对接场景。

功能概述

机器间权限管理(M2M)是无需用户参与的应用间授权,由IDaaS进行授权,结合网关型产品进行鉴权,从而控制调用方应用对受保护资源的访问,防止越权访问。

image.png

典型场景

  • 企业将内部API对外开放给外包/供应商系统调用,需要精细化控制其调用权限。

  • 企业在非云厂商环境内访问云厂商资源(如多云环境)。

典型客户

  • 需要结合API网关对外暴露API的客户。

  • 所有需要无AK访问阿里云的客户,以及多云客户。IDaaS方案可以在阿里云无AK方案的基础上覆盖本地开发环境、多云环境场景的使用。

核心功能

  • 凭证管理:管理IDaaS中调用方应用的凭证,用于向IDaaS请求Access Token

  • 授权管理:定义调用方应用,并对其进行授权。

  • 预集成网关:在应用统一鉴权场景下,联动API网关进行鉴权。

基本概念

概念

说明

M2M应用(Machine-to-Machine)

用于机器间权限管理的应用,无需用户参与的授权和鉴权过程,可联动API网关实现API权限控制、联动RAM实现无AK访问。

说明

一个M2M应用既可以作为客户端,也可以作为服务端。

客户端

即调用方应用(对应OAuth中的Client),是一个发起向受保护资源访问的应用程序。

服务端

即被调用方应用或受保护资源(对应OAuth中的Resource Server),代表一个外部资源实体。

受众标识

对应Claim中的aud,表示Access Token的受众,即服务端的唯一标识。填写后不可修改。

配置流程

本文主要以API网关配置流程进行介绍。M2M应用既可以作为调用方身份(即Client),也可以作为被调用方身份(即Resource Server)。

说明

建议一个M2M应用只使用其中一种身份。

image.png

调用流程

  1. 调用方应用验证身份并请求Access Token

  2. IDaaS 返回Access Token(包含权限信息)。

  3. 调用方应用携带Access Token访问被调用方应用。

  4. 被调用方应用(或API网关、STS服务)验证Token有效性。

  5. 被调用方应用(或API 网关、STS服务)进行鉴权,放行或拦截操作。

  6. 返回响应。

image.png

应用配置

添加应用

  1. 登录IDaaS管理控制台,选择并进入您的 IDaaS 实例,进入对应实例的管理控制台。

    image

  2. 选择应用 > 添加应用 > M2M 应用 > 立即添加应用

    image

  3. 在弹出对话框中的应用名称一栏中填写您的应用名称,单击立即添加,系统将自动跳转至 M2M 应用详情配置页面。image

通用配置

  1. 基础信息

    • 应用ID‌:由系统自动生成的唯一标识,用于唯一识别该 M2M 应用。

    • 应用名称‌:可自定义填写,用于在管理界面中区分不同 M2M 应用。

  2. 凭证管理。M2M 应用支持多种凭证类型image

    1. Client Secret 凭证‌ 。您可通过单击添加 client_secret操作生成客户端凭据,该凭据用于客户端在调用服务端 API 时进行身份验证和鉴权请求。

      • ‌client_id‌:M2M 应用的唯一标识符,用于应用身份服务交互时的身份验证。

      • client_secret‌:M2M 应用的密钥,用于与应用身份服务交互时的权限校验。

        • 查看‌:单击查看,展示 client_secret 的完整内容。

        • 删除‌:删除当前 client_secret,删除后需重新添加新密钥。

        • 设置有效期‌:配置 client_secret 的有效期,到期后需重新生成密钥。

      说明

      需妥善保管 client_secret,若发生泄露,需立即删除旧密钥并添加新密钥以保障安全。

    2. 公私钥凭证。在公私钥凭证选项卡下,单击‌手动添加按钮,进入创建凭证页面。

      • 场景类型:默认PRIVATE_KEY_JWT认证。

      • 加密类型‌:默认 RSA-2048

      • 公钥‌:在文本框中粘贴公钥内容,需确保公钥格式以-----BEGIN PUBLIC KEY-----开头、-----END PUBLIC KEY-----结尾,格式不正确会导致验证失败。

    3. PCA、OIDC、PKCS#7 凭证类型配置,请参见:创建联邦凭证

  3. 网络范围限制。通过客户端网络范围配置,限制 M2M 应用的访问来源。 image

    • 任何网络范围‌:允许任意 IP 地址发起对 M2M 应用的调用。

    • 指定网络范围‌:仅允许特定 IP 地址(或 IP 段)发起调用,需在网络范围下拉框中选择已添加允许访问的网络范围。

  4. 应用配置信息。M2M 应用的 OAuth2 相关配置,包含以下关键信息。image

    • ‌Issuer‌:用于标识 Token 发放来源的唯一标识符,作为 OAuth2 相关接口的 BaseUrI 地址,确保身份验证流程中 Token 源头的可追溯性与唯一性。

    • OIDC 发现端点‌:公开可访问的端点,用于获取当前身份服务支持的 OIDC 协议端点信息、认证模式及参数规范。

    • ‌OAuth2 发现端点‌:公开可访问的端点,提供当前 IDaaS 支持的 OAuth2 授权端点信息及授权模式,为开发者配置 OAuth2 流程提供合规性依据。

    • 令牌端点‌:用于请求并获取 OAuth2 Token 的接口地址,支持通过授权码、客户端凭据等模式完成身份凭证的颁发。

    • 验证公钥端点:提供用于验证 Token 签名的公钥信息的接口,支持公钥动态轮转机制,确保 SSO 流程中 Token 验证的时效性与防篡改安全性。

服务端权限开放

开启服务端权限开放后,该M2M应用将作为被调用方(即 OAuth 中的资源服务器),可通过配置权限并授权调用方,实现对调用方权限的精细化控制。

说明

首次开启需添加受众标识,受众标识对应Claim中的aud,标识Access Token的受众,即持有受保护资源的服务。添加后不可修改。

  1. 权限应用。image

    • 受众标识对应Claim中的aud,标识Access Token的受众,即持有受保护资源的服务。

    • 服务端权限开放单击开启按钮在弹出的启用权限开放对话框受众标识输入框中,填写调用方的‌受保护资源服务地址‌(需与OAuth中的aud Claim对应,即调用方应用的资源服务器地址)。

    • 自定义主体开启自定义主体后,签发的 Access Token 将从(clientld) 变成 <clientld>:<client.activeSubjectUrn>,其中 client.activeSubjectUrn 在应用的联邦凭证的属性映射中设置。

  2. 权限管理。开启服务端权限开放后,可以向调用方应用添加或删除权限。image

    单击添加权限按钮,在添加权限页面填写以下关键信息:

    • 授权类型‌:选择机器权限(适用于机器间调用场景)。

    • 权限名称‌:输入权限在管理端的展示名称(如“用户读取权限”)。

    • 权限标识‌:输入权限的唯一标识(建议采用“资源:操作:限制条件”格式,如user:read:all,需确保应用内唯一)。

    说明
    • 资源:指被操作的具体对象,如用户、角色、文件、API等。示例:user 表示用户资源;file 表示文件资源。

    • 操作:指对资源执行的具体行为,如如读取、写入、删除等。示例:read 表示读取操作;write 表示写入操作。

    • 限制条件:指操作的范围或约束,如范围、时间、权限级别等。示例:all 表示所有用户;admin 表示管理员权限。

  3. 授权应用。您可在授权应用列表中,查看或管理被调用方应用的权限,如授权、收回权限等。image

客户端权限管理

单击应用 > 客户端权限管理可查看该应用被授予的权限。在被调用方应用的服务端权限开放中进行添加权限和授权。image

相关最佳实践