SuperAPI AI 工具集

alibabacloud-idaas-kubernetes-m2m-federated-credential

部署与运维

查看项目

更新于 10-29 09:17

技能介绍

用途

本技能实现 Kubernetes Pod 在无静态凭证(AccessKey)情况下获取阿里云访问令牌的端到端流程,基于 IDaaS EIAM 的 OIDC 联邦凭证能力。整体链路为:Kubernetes ServiceAccount OIDC Token → EIAM OIDC 联邦凭证提供方验签 → kubernetes 模式的应用联邦凭证校验 → 使用 client_credentials 签发 M2M Token → PAM 到 STS 的 SDK 接入。

架构:Kubernetes 集群(OIDC Issuer + ServiceAccount Token)→ IDaaS EIAM(OIDC 联邦凭证提供方 + M2M 应用 + 应用联邦凭证)→ PAM 功能权限 → M2M Token(id-token-bearer)。

主要能力

  • 支持三种 JWKS 来源模式,与控制台术语对应:Static Fill-in(static)、Issuer Address Resolution(dynamic_from_issuer)、JWKS URI Resolution(dynamic_from_jwks_uri)。
  • 提供脚本化流程,脚本位于 scripts/ 目录,使用 Python 3 标准库,通过 subprocess 调用 aliyun CLI(凭证需已配置);kubectl 为可选,先探测,不可用时降级为粘贴回传。
  • 覆盖凭证校验、权限指引、kubectl 探测、参数收集、实例与提供方列举、SA Token 解析、Issuer 公网可达性探测等环节。
  • 支持复用已有 OIDC 联邦凭证提供方,并检测 kid 是否过期。

使用方式

安装前置检查:

  • 要求 aliyun CLI 版本 >= 3.3.3,使用 aliyun version 校验。
  • 首次安装或大版本升级:/bin/bash -c "$(curl -fsSL --connect-timeout 10 --max-time 120 https://aliyuncli.alicdn.com/setup.sh)"
  • 常规更新(CLI >= 3.3.5):aliyun upgrade,优先使用内置自更新。
  • 插件更新:运行 aliyun configure set --auto-plugin-install true 开启自动插件安装,并运行 aliyun plugin update 确保插件最新。

凭证校验:

  • 使用 aliyun configure list 检查凭证状态,需存在有效 profile(AK、STS 或 OAuth 身份)。
  • 校验通过后运行 aliyun sts get-caller-identity 验证服务端访问,并记录返回的 AccountId。

权限要求:

  • 需要 EIAM 读写权限(推荐系统策略 AliyunEIAMFullAccess,或使用 references/ram-policies.md 中的最小自定义策略)。
  • 不需要 ECS 或 RAM 权限。
  • 集群侧前置条件(非 RAM):Kubernetes >= 1.21(Bound ServiceAccount Token)、API Server 配置 --service-account-issuer、业务 Pod 能访问 EIAM 实例公网端点。

脚本运行方式:在工作区根目录执行 python3 scripts/<script>.py。

主要参数(需用户确认):Region(支持 cn-hangzhou、cn-beijing、cn-hongkong、ap-southeast-1、ap-southeast-5、ap-northeast-2、eu-central-1,默认 cn-hangzhou)、IDaaS 实例 ID、Provider 名称(默认 k8s-oidc-trust)、JWKS 来源模式(默认 dynamic_from_issuer)、M2M 客户端应用名称(默认 k8s-m2m-client)、凭证名称(默认 k8s-oidc-credential,≤64 字符)、Namespace、ServiceAccount、信任条件(可选 DSL 表达式)、PodNamePrefix(可选)、Scope(默认 urn:cloud:idaas:pam|cloud_account_role:obtain_access_credential)。

流程分四轮收集参数:第一轮收集 Region 与集群产物(Issuer + SA Token);第二轮选择 IDaaS 实例与可选信任条件;第三轮选择提供方、JWKS 来源模式、M2M 客户端与凭证名称;第四轮确认凭证的 Namespace/ServiceAccount。

适用场景

适用于需要让 Kubernetes 工作负载在不使用静态 AccessKey 的前提下,通过 OIDC 联邦凭证获取阿里云访问令牌的场景,尤其是自建集群(私有 Issuer)与托管集群(公网 Issuer)两类环境。

限制与注意事项

  • 所有 aliyun CLI 云 API 命令必须携带 --user-agent 标志,本地工具命令(configure、plugin、version)除外。
  • 禁止读取、回显或打印 AK/SK 值;禁止要求用户在对话或命令行中直接输入 AK/SK;禁止使用字面凭证值执行 aliyun configure set;仅允许使用 aliyun configure list 检查凭证状态。
  • 临时文件(SA Token、JWKS、中间输出)文件名必须包含会话 ID,并在使用后删除。
  • 粘贴的 SA Token 属敏感信息,需保存到会话级临时文件并在展示时截断。
  • 用户侧命令须零依赖且唯一,仅使用 kubectl(必要时加 POSIX grep/awk),不得要求集群节点具备 python3/jq。
  • 私有 Issuer 场景下 JWKS 来源模式只能为 Static Fill-in。
  • 若 manifest.json 缺失、无效或版本字段异常,须停止并报告错误,不得臆造版本。
  • 本技能不得修改全局状态或其他技能的配置。

暂未提供

关于收费、价格、平台支持范围、实际效果指标等信息,资料中暂未提供。