API 参考
文档版本 48
发布日期 2021-11-15
版权所有 © 华为技术有限公司 2022。 保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传 播。
商标声明
和其他华为商标均为华为技术有限公司的商标。
本文档提及的其他所有商标或注册商标,由各自的所有人拥有。
注意
您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或 特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或暗示的声 明或保证。
由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文 档中的所有陈述、信息和建议不构成任何明示或暗示的担保。
目 录
1 使用前必读... 1
1.1 概述... 1
1.2 调用说明...1
1.3 终端节点...1
1.4 约束与限制... 3
1.5 参数说明...3
1.6 基本概念...4
2 API 概览... 6
3 如何调用 API... 15
3.1 构造请求... 15
3.2 认证鉴权... 17
3.3 返回结果... 19
4 快速入门...21
4.1 密钥定期自动化轮换... 21
4.2 企业管理华为云上多租户的联邦认证... 23
4.3 对 IAM 用户的权限进行安全审计... 26
5 API...31
5.1 Token 管理... 31
5.1.1 获取 IAM 用户 Token(使用密码)...31
5.1.2 获取 IAM 用户 Token(使用密码+虚拟 MFA)...41
5.1.3 获取委托 Token... 53
5.1.4 校验 Token 的有效性... 63
5.2 访问密钥管理...69
5.2.1 通过委托获取临时访问密钥和 securitytoken... 69
5.2.2 通过 token 获取临时访问密钥和 securitytoken...74
5.2.3 创建永久访问密钥... 80
5.2.4 查询所有永久访问密钥...82
5.2.5 查询指定永久访问密钥...85
5.2.6 修改指定永久访问密钥...87
5.2.7 删除指定永久访问密钥...90
5.3 区域管理... 91
5.3.2 查询区域详情... 94
5.4 项目管理... 97
5.4.1 查询指定条件下的项目列表... 97
5.4.2 查询指定 IAM 用户的项目列表...101
5.4.3 查询 IAM 用户可以访问的项目列表... 104
5.4.4 创建项目... 106
5.4.5 修改项目信息...109
5.4.6 查询项目详情...112
5.4.7 设置项目状态...115
5.4.8 查询项目详情与状态...117
5.4.9 查询项目配额...119
5.5 帐号管理... 122
5.5.1 查询 IAM 用户可以访问的帐号详情... 122
5.5.2 查询帐号密码强度策略... 124
5.5.3 按条件查询帐号密码强度策略... 126
5.5.4 查询帐号配额...129
5.6 IAM 用户管理...133
5.6.1 管理员查询 IAM 用户列表... 133
5.6.2 查询 IAM 用户详情(推荐)... 137
5.6.3 查询 IAM 用户详情... 140
5.6.4 查询 IAM 用户所属用户组... 143
5.6.5 管理员查询用户组所包含的 IAM 用户...146
5.6.6 管理员创建 IAM 用户(推荐)...149
5.6.7 管理员创建 IAM 用户... 154
5.6.8 修改 IAM 用户密码... 157
5.6.9 修改 IAM 用户信息(推荐)... 159
5.6.10 管理员修改 IAM 用户信息(推荐)...161
5.6.11 管理员修改 IAM 用户信息... 166
5.6.12 管理员删除 IAM 用户...170
5.7 用户组管理... 172
5.7.1 查询用户组列表... 172
5.7.2 查询用户组详情... 175
5.7.3 创建用户组... 177
5.7.4 更新用户组... 180
5.7.5 删除用户组... 182
5.7.6 查询 IAM 用户是否在用户组中...184
5.7.7 添加 IAM 用户到用户组...185
5.7.8 移除用户组中的 IAM 用户... 187
5.8 权限管理... 188
5.8.1 查询权限列表...188
5.8.2 查询权限详情...195
5.8.3 查询全局服务中的用户组权限... 200
5.8.4 查询项目服务中的用户组权限... 205
5.8.5 为用户组授予全局服务权限...210
5.8.6 为用户组授予项目服务权限...211
5.8.7 查询用户组是否拥有全局服务权限...213
5.8.8 查询用户组是否拥有项目服务权限...214
5.8.9 查询用户组的所有项目权限列表... 216
5.8.10 查询用户组是否拥有所有项目指定权限... 221
5.8.11 移除用户组的所有项目服务权限...222
5.8.12 移除用户组的全局服务权限... 224
5.8.13 移除用户组的项目服务权限... 226
5.8.14 为用户组授予所有项目服务权限...227
5.9 自定义策略管理...229
5.9.1 查询自定义策略列表...229
5.9.2 查询自定义策略详情...234
5.9.3 创建云服务自定义策略... 238
5.9.4 创建委托自定义策略...245
5.9.5 修改云服务自定义策略... 251
5.9.6 修改委托自定义策略...257
5.9.7 删除自定义策略... 263
5.10 委托管理... 264
5.10.1 查询指定条件下的委托列表... 264
5.10.2 查询委托详情... 267
5.10.3 创建委托... 269
5.10.4 修改委托... 272
5.10.5 删除委托... 275
5.10.6 查询全局服务中的委托权限... 277
5.10.7 查询项目服务中的委托权限... 282
5.10.8 为委托授予全局服务权限...286
5.10.9 为委托授予项目服务权限...288
5.10.10 查询委托是否拥有全局服务权限... 290
5.10.11 查询委托是否拥有项目服务权限... 291
5.10.12 移除委托的全局服务权限... 293
5.10.13 移除委托的项目服务权限... 294
5.10.14 查询委托下的所有项目服务权限列表... 296
5.10.15 为委托授予所有项目服务权限... 298
5.10.16 检查委托下是否具有所有项目服务权限... 300
5.10.17 移除委托下的所有项目服务权限... 301
5.11 企业项目管理...303
5.11.1 查询企业项目关联的用户组... 303
5.11.2 查询企业项目关联用户组的权限...305
5.11.3 基于用户组为企业项目授权... 309
5.11.5 查询用户组关联的企业项目... 313
5.11.6 查询用户直接关联的企业项目... 314
5.11.7 查询企业项目直接关联用户... 316
5.11.8 查询企业项目直接关联用户的权限... 318
5.11.9 基于用户为企业项目授权...322
5.11.10 删除企业项目直接关联用户的权限...324
5.12 安全设置... 325
5.12.1 修改帐号操作保护策略... 325
5.12.2 查询帐号操作保护策略... 328
5.12.3 修改帐号密码策略...330
5.12.4 查询帐号密码策略...334
5.12.5 修改帐号登录策略...337
5.12.6 查询帐号登录策略...341
5.12.7 修改帐号控制台访问策略...343
5.12.8 查询帐号控制台访问策略...347
5.12.9 修改帐号接口访问策略... 350
5.12.10 查询帐号接口访问策略... 354
5.12.11 查询 IAM 用户的 MFA 绑定信息列表...357
5.12.12 查询指定 IAM 用户的 MFA 绑定信息...359
5.12.13 查询 IAM 用户的登录保护状态信息列表... 362
5.12.14 查询指定 IAM 用户的登录保护状态信息... 364
5.12.15 修改 IAM 用户的登录保护状态信息... 367
5.12.16 绑定 MFA 设备... 369
5.12.17 解绑 MFA 设备... 371
5.12.18 创建 MFA 设备... 372
5.12.19 删除 MFA 设备... 374
5.13 联邦身份认证管理... 376
5.13.1 通过联邦认证获取 token... 376
5.13.1.1 SP initiated 方式...376
5.13.1.2 IdP initiated 方式... 379
5.13.2 身份提供商...385
5.13.2.1 查询身份提供商列表... 385
5.13.2.2 查询身份提供商详情... 388
5.13.2.3 创建身份提供商... 391
5.13.2.4 修改 SAML 身份提供商配置... 394
5.13.2.5 删除 SAML 身份提供商... 397
5.13.2.6 创建 OpenID Connect 身份提供商配置... 398
5.13.2.7 修改 OpenID Connect 身份提供商配置... 404
5.13.2.8 查询 OpenID Connect 身份提供商配置... 409
5.13.3 映射...412
5.13.3.1 查询映射列表... 412
5.13.3.2 查询映射详情... 415
5.13.3.3 注册映射... 419
5.13.3.4 更新映射... 424
5.13.3.5 删除映射... 429
5.13.4 协议...431
5.13.4.1 查询协议列表... 431
5.13.4.2 查询协议详情... 434
5.13.4.3 注册协议... 436
5.13.4.4 更新协议... 439
5.13.4.5 删除协议... 441
5.13.5 Metadata... 443
5.13.5.1 查询 Metadata 文件... 443
5.13.5.2 查询 Keystone 的 Metadata 文件...445
5.13.5.3 导入 Metadata 文件... 447
5.13.6 Token...449
5.13.6.1 获取联邦认证 unscoped token(IdP initiated)... 449
5.13.6.2 获取联邦认证 scoped token...453
5.13.6.3 获取联邦认证 token(OpenID Connect ID token 方式)... 461
5.13.6.4 获取联邦认证 unscoped token(OpenID Connect ID token 方式)... 468
5.13.7 查询联邦用户可以访问的帐号列表... 473
5.14 自定义身份代理... 475
5.14.1 获取自定义身份代理登录票据... 475
5.15 版本信息管理...480
5.15.1 查询 Keystone API 的版本信息... 480
5.15.2 查询 Keystone API 的 3.0 版本信息... 483
5.16 服务和终端节点... 485
5.16.1 查询服务列表... 485
5.16.2 查询服务详情... 488
5.16.3 查询服务目录... 490
5.16.4 查询终端节点列表...493
5.16.5 查询终端节点详情...496
6 历史 API... 499
6.1 查询企业项目关联的用户组... 499
6.2 查询企业项目已关联用户组的权限... 501
6.3 基于用户组为企业项目授权... 504
6.4 删除企业项目关联的用户组权限... 506
7 权限及授权项...508
7.1 权限及授权项说明... 508
7.2 授权项... 509
8 附录... 523
8.1 状态码... 523
8.3 获取帐号、IAM 用户、项目、用户组、区域、委托的名称和 ID... 538
A 修订记录... 541
1 使用前必读
1.1 概述
欢迎使用统一身份认证(Identity and Access Management,简称IAM)。IAM是提 供用户身份认证、权限分配、访问控制等功能的身份管理服务,可以帮助您安全地控 制对华为云资源的访问。您可以使用IAM创建以及管理用户,并使用权限来允许或拒 绝他们对华为云资源的访问。
IAM除了支持界面控制台操作外,还提供API供您调用,您可以使用本文档提供的API 对IAM进行相关操作,如创建用户、创建用户组、获取Token等。在调用IAM的API之 前,请确保已经充分了解IAM的相关概念,详细信息请参见:IAM 产品介绍。
1.2 调用说明
统一身份认证服务提供了REST(Representational State Transfer)风格API,支持您 通过HTTPS请求调用,调用方法请参见如何调用API。
同时统一身份认证服务还提供多种编程语言的SDK供您使用,SDK的使用方法请参见 SDK中心。
1.3 终端节点
终端节点即调用API的请求地址,不同服务在不同区域的终端节点不同,您可以从地区 和终端节点中查询IAM的终端节点。
IAM的终端节点如表1所示,IAM是全局级服务,数据全局一份,在全局项目中存储,
IAM所有的API都可以使用全局服务的Endpoint调用;除了全局区域外,为了配合其他 区域级云服务的API/CLI访问,IAM在其他区域(除全局服务外的所有区域)提供部分 API,请您根据约束与限制,选择对应区域的终端节点调用API。
表1-1 IAM 的终端节点
区域名称 区域 终端节点(Endpoint)
区域名称 区域 终端节点(Endpoint)
华北-北京一 cn-north-1 iam.cn-
north-1.myhuaweicloud.c om
华北-北京二 cn-north-2 iam.cn-
north-2.myhuaweicloud.c om
华北-北京四 cn-north-4 iam.cn-
north-4.myhuaweicloud.c om
华东-上海一 cn-east-3 iam.cn-
east-3.myhuaweicloud.co m
华东-上海二 cn-east-2 iam.cn-
east-2.myhuaweicloud.co m
华南-广州 cn-south-1 iam.cn-
south-1.myhuaweicloud.c om
华南-深圳 cn-south-2 iam.cn-
south-2.myhuaweicloud.c om
西南-贵阳一 cn-southwest-2 iam.cn-
southwest-2.myhuaweicl oud.com
中国-香港 ap-southeast-1 iam.ap-
southeast-1.myhuaweiclo ud.com
亚太-曼谷 ap-southeast-2 iam.ap-
southeast-2.myhuaweiclo ud.com
亚太-新加坡 ap-southeast-3 iam.ap-
southeast-3.myhuaweiclo ud.com
非洲-约翰内斯堡 af-south-1 iam.af-
south-1.myhuaweicloud.c om
拉美-圣地亚哥 la-south-2 iam.la-
south-2.myhuaweicloud.c om
1.4 约束与限制
IAM的API调用有区域限制。
使用IAM其他区域的域名获取的token和临时ak/sk,不能跨region使用,即在A区域生 成的token或者ak/sk仅能调用A区域的服务接口。
1.5 参数说明
使用IAM API涉及的参数对应在控制台名称及如何获取,如表1所示。
表1-2 参数说明
API参数名称 控制台中
文名称
控制台英文名 称
如何从控制台获取
domain 帐号 Account 获取帐号名称和ID domain_id/租户
ID 帐号ID Account ID domain_name/租
户名
帐号名 Account name
user IAM用户 IAM user 获取IAM用户名称和ID user_id IAM用户
ID IAM user ID user_name IAM用户
名 IAM user name
group 用户组 User group 获取用户组名称和ID group_id 用户组ID User group ID
group_name 用户组名
称 User group name
project 项目 Project 获取项目名称和ID project_id 项目ID Project ID
project_name 项目名称 Project Name
agency 委托 Agency 获取委托名称和ID agency_id 委托ID Agency ID
agency_name 委托名称 Agency Name
1.6 基本概念
使用IAM API涉及的常用概念
● 帐号
用户注册华为云时的帐号,帐号对其所拥有的资源及云服务具有完全的访问权 限,可以重置用户密码、分配用户权限等。由于帐号是付费主体,为了确保帐号 安全,建议您不要直接使用帐号进行日常管理工作,而是创建用户并使用他们进 行日常管理工作。
● 用户
由帐号在IAM中创建的用户,是云服务的使用人员,具有身份凭证(密码和访问 密钥)。
在我的凭证下,您可以查看帐号ID和用户ID。通常在调用API的鉴权过程中,您需 要用到帐号、用户和密码等信息。
● 区域(Region)
从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象 存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属 Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只 承载同一类业务或只面向特定租户提供业务服务的专用Region。
详情请参见区域和可用区。
● 可用区(AZ,Availability Zone)
AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计 算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤 相连,以满足用户跨AZ构建高可用性系统的需求。
● 项目
华为云的区域默认对应一个项目,这个项目由系统预置,用来隔离物理区域间的 资源(计算资源、存储资源和网络资源),以默认项目为单位进行授权,用户可 以访问您帐号中该区域的所有资源。如果您希望进行更加精细的权限控制,可以 在区域默认的项目中创建子项目,并在子项目中购买资源,然后以子项目为单位 进行授权,使得用户仅能访问特定子项目中资源,使得资源的权限控制更加精 确。
图1-1 项目隔离模型
同样在我的凭证下,您可以查看项目ID。
● 企业项目
企业项目是项目的升级版,针对企业不同项目间资源的分组和管理,是逻辑隔 离。企业项目中可以包含多个区域的资源,且项目中的资源可以迁入迁出。
关于企业项目ID的获取及企业项目特性的详细信息,请参见《企业管理服务用户 指南》。
2 API 概览
Token 管理
接口 说明
获取IAM用户Token
(使用密码)
该接口可以用于通过用户名/密码的方式进行认证来获取IAM 用户Token。
获取IAM用户Token
(使用密码+虚拟 MFA)
该接口可以用于在IAM用户开启了登录保护功能,并选择通 过虚拟MFA验证时,通过用户名/密码+虚拟MFA的方式进行 认证来获取IAM用户token。
获取委托Token 该接口可以用于获取委托方的token。
校验Token的有效性 该接口可以用于管理员校验本帐号中IAM用户token的有效
性,或IAM用户校验自己token的有效性
访问密钥管理
接口 说明
通过委托获取临时访 问密钥和securitytoken
该接口可以用于通过委托来获取临时访问密钥(临时 AK/SK)和securitytoken。
通过token获取临时 访问密钥和
securitytoken
该接口可以用于通过token来获取临时AK/SK和 securitytoken。
创建永久访问密钥 该接口可以用于管理员给IAM用户创建永久访问密钥,或
IAM用户给自己创建永久访问密钥。
查询所有永久访问密
钥 该接口可以用于管理员查询IAM用户的所有永久访问密钥,
或IAM用户查询自己的所有永久访问密钥。
查询指定永久访问密
钥 该接口可以用于管理员查询IAM用户的指定永久访问密钥,
或IAM用户查询自己的指定永久访问密钥。
接口 说明 修改指定永久访问密
钥 该接口可以用于管理员修改IAM用户的指定永久访问密钥,
或IAM用户修改自己的指定永久访问密钥。
删除指定永久访问密
钥 该接口可以用于管理员删除IAM用户的指定永久访问密钥,
或IAM用户删除自己的指定永久访问密钥。
区域管理
接口 说明
查询区域列表 该接口可以用于查询区域列表。
查询区域详情 该接口可以用于查询区域详情。
项目管理
接口 说明
查询指定条件下的项 目列表
该接口可以用于查询指定条件下的项目列表。
查询指定IAM用户的
项目列表 该接口可以用于管理员查询指定IAM用户的项目列表,或 IAM用户查询自己的项目列表。
查询IAM用户可以访 问的项目列表
该接口可以用于查询IAM用户可以访问的项目列表。
创建项目 该接口可以用于管理员创建项目。
修改项目信息 该接口可以用于管理员修改指定项目信息。
查询项目详情 该接口可以用于查询指定项目详情。
设置项目状态 该接口可以用于管理员设置指定项目状态。项目状态包
括:正常、冻结。
查询项目详情与状态 该接口可以用于管理员查询指定项目详情与状态。
查询项目配额 该接口可以用于查询指定项目配额。
帐号管理
接口 说明
查询IAM用户可以访
问的帐号详情 该接口可以用于查询IAM用户可以访问的帐号详情。
接口 说明 查询帐号密码强度策
略
该接口可以用于查询帐号密码强度策略,查询结果包括密 码强度策略的正则表达式及其描述。
按条件查询帐号密码 强度策略
该接口可以用于按条件查询帐号密码强度策略,查询结果 包括密码强度策略的正则表达式及其描述。
查询帐号配额 该接口可以用于查询帐号配额。
IAM 用户管理
接口 说明
管理员查询IAM用户 列表
该接口可以用于管理员查询IAM用户列表。
查询IAM用户详情
(推荐)
该接口可以用于管理员查询IAM用户详情,或IAM用户查询 自己的用户详情。(可以查询手机号、邮箱)
查询IAM用户详情 该接口可以用于管理员查询IAM用户详情,或IAM用户查询
自己的用户详情。(不可以查询手机号、邮箱)
查询IAM用户所属用
户组 该接口可以用于管理员查询IAM用户所属用户组,或IAM用
户查询自己所属用户组。
管理员查询用户组所
包含的IAM用户 该接口可以用于管理员查询用户组中所包含的IAM用户。
管理员创建IAM用户
(推荐) 该接口可以用于管理员创建IAM用户。
管理员创建IAM用户 该接口可以用于管理员创建IAM用户。
修改IAM用户密码 该接口可以用于IAM用户修改自己的密码。
修改IAM用户信息
(推荐) 该接口可以用于IAM用户修改自己的用户信息。
管理员修改IAM用户
信息(推荐) 该接口可以用于管理员修改IAM用户信息 。
管理员修改IAM用户
信息 该接口可以用于管理员修改IAM用户信息。
管理员删除IAM用户 该接口可以用于管理员删除指定IAM用户。
查询IAM用户的MFA
绑定信息列表 该接口可以用于管理员查询IAM用户的MFA绑定信息列
表。
查询指定IAM用户的
MFA绑定信息 该接口可以用于管理员查询指定IAM用户的MFA绑定信
息,或IAM用户查询自己的MFA绑定信息。
查询IAM用户的登录
保护状态信息列表 该接口可以用于管理员查询IAM用户的登录保护状态列表。
接口 说明 查询指定IAM用户的
登录保护状态信息 该接口可以用于管理员查询指定IAM用户的登录保护状态信
息,或IAM用户查询自己的登录保护状态信息。
修改IAM用户的登录
保护状态信息 该接口可以用于管理员修改IAM用户的登录保护状态信息。
绑定MFA设备 该接口可以用于IAM用户绑定MFA设备。
解绑MFA设备 该接口可以用于IAM用户解绑MFA设备。
创建MFA设备 接口可以用于IAM用户创建MFA设备。
删除MFA设备 该接口可以用于管理员删除MFA设备。
用户组管理
接口 说明
查询用户组列表 该接口可以用于管理员查询用户组列表。
查询用户组详情 该接口可以用于管理员查询用户组详情。
创建用户组 该接口可以用于管理员创建用户组。
更新用户组 该接口可以用于管理员更新用户组信息。
删除用户组 该接口可以用于管理员删除用户组。
查询IAM用户是否在用
户组中 该接口可以用于管理员查询IAM用户是否在用户组中。
添加IAM用户到用户组 该接口可以用于管理员添加IAM用户到用户组。
移除用户组中的IAM用
户 该接口可以用于管理员移除用户组中的IAM用户。
权限管理
接口 说明
查询权限列表 该接口可以用于管理员查询权限列表。
查询权限详情 该接口可以用于管理员查询权限详情。
查询全局服务中的用户 组权限
该接口可以用于管理员查询全局服务中的用户组权限。
查询项目服务中的用户 组权限
该接口可以用于管理员查询项目服务中的用户组权限。
为用户组授予全局服务 该接口可以用于管理员为用户组授予全局服务权限。
接口 说明 为用户组授予项目服务 权限
该接口可以用于管理员为用户组授予项目服务权限。
查询用户组是否拥有全 局服务权限
该接口可以用于管理员查询用户组是否拥有全局服务权 限。
查询用户组是否拥有项 目服务权限
该接口可以用于管理员查询用户组是否拥有项目服务权 限。
查询用户组的所有项目 权限列表
该接口可以用于管理员查询用户组所有项目服务权限列 表。
查询用户组是否拥有所 有项目指定权限
该接口可以用于管理员查询用户组是否拥有所有项目指定 权限。
移除用户组的所有项目 服务权限
该接口可以用于管理员移除用户组的所有项目服务权限。
移除用户组的全局服务 权限
该接口可以用于管理员移除用户组的全局服务权限。
移除用户组的项目服务 权限
该接口可以用于管理员移除用户组的项目服务权限。
为用户组授予所有项目 服务权限
该接口可以用于管理员为用户组授予所有项目服务权限。
自定义策略管理
接口 说明
查询自定义策略列表 该接口可以用于管理员查询自定义策略列表。
查询自定义策略详情 该接口可以用于管理员查询自定义策略详情。
创建云服务自定义策略 该接口可以用于管理员创建云服务自定义策略。
创建委托自定义策略 该接口可以用于管理员创建委托自定义策略。
修改云服务自定义策略 该接口可以用于管理员修改云服务自定义策略。
修改委托自定义策略 该接口可以用于管理员修改委托自定义策略。
删除自定义策略 该接口可以用于管理员删除自定义策略。
委托管理
接口 说明
查询指定条件下的委托 列表
该接口可以用于管理员查询指定条件下的委托列表。
接口 说明
查询委托详情 该接口可以用于管理员查询委托详情。
创建委托 该接口可以用于管理员创建委托。
修改委托 该接口可以用于管理员修改委托。
删除委托 该接口可以用于管理员删除委托。
查询全局服务中的委托
权限 该接口可以用于管理员查询全局服务中的委托权限。
查询项目服务中的委托
权限 该接口可以用于管理员查询项目服务中的委托权限。
为委托授予全局服务权 限
该接口可以用于管理员为委托授予全局服务权限。
为委托授予项目服务权 限
该接口可以用于管理员为委托授予项目服务权限。
查询委托是否拥有全局 服务权限
该接口可以用于管理员查询委托是否拥有全局服务权限。
查询委托是否拥有项目 服务权限
该接口可以用于管理员查询委托是否拥有项目服务权限。
移除委托的全局服务权 限
该接口可以用于管理员移除委托的全局服务权限。
移除委托的项目服务权 限
该接口可以用于管理员移除委托的项目服务权限。
查询委托下的所有项目 服务权限列表
该接口可以用于管理员查询委托所有项目服务权限列表。
为委托授予所有项目服 务权限
该接口可以用于管理员为委托授予所有项目服务权限。
检查委托下是否具有所 有项目服务权限
该接口可以用于管理员检查委托是否具有所有项目服务权 限。
移除委托下的所有项目 服务权限
该接口可以用于管理员移除委托的所有项目服务权限。
企业项目管理
接口 说明
查询企业项目关联的用户组 该接口用于查询指定ID的企业项目所关联的用户组。
查询企业项目关联用户组的
权限 该接口用于查询指定ID的企业项目所关联用户组的权限,适用于待查询
的企业项目已关联了用户组。
接口 说明
基于用户组为企业项目授权 该接口用于给指定ID的企业项目授权,建立企业项目、用户组和权限的
绑定关系。
删除企业项目关联用户组的 权限
该接口提供删除某个企业项目关联的用户组权限。
查询用户组关联的企业项目 该接口可用于查询用户组所关联的企业项目。
查询用户直接关联的企业项 目
该接口可用于查询用户所关联的企业项目。
查询企业项目直接关联用户 该接口可用于查询企业项目直接关联用户。
查询企业项目直接关联用户 的权限
该接口可用于查询企业项目直接关联用户的权限。
基于用户为企业项目授权 该接口可用于基于用户为企业项目授权。
删除企业项目直接关联用户 的权限
该接口可用于删除企业项目直接关联用户的权限,
安全设置
接口 说明
修改帐号操作保护策略 该接口可以用于管理员修改帐号操作保护策略。
查询帐号操作保护策略 该接口可以用于查询帐号操作保护策略。
修改帐号密码策略 该接口可以用于管理员修改帐号密码策略。
查询帐号密码策略 该接口可以用于查询帐号密码策略。
修改帐号登录策略 该接口可以用于管理员修改帐号登录策略。
查询帐号登录策略 该接口可以用于查询帐号登录策略。
修改帐号控制台访问策 略
该接口可以用于管理员修改帐号控制台访问策略。
查询帐号控制台访问策
略 该接口可以用于查询帐号控制台访问控制策略。
修改帐号接口访问策略 该接口可以用于管理员修改帐号接口访问策略。
查询帐号接口访问策略 该接口可以用于查询帐号接口访问控制策略。
联邦身份认证管理
接口 说明
通过联邦认证获取 Token(SP initiated方 式)
通过Openstack Client和ShibbolethECP Client获取联邦 认证Token。
通过联邦认证获取 Token(IdP initiated 方式)
以“Client4ShibbolethIdP”脚本为例,介绍IdP initiated 方式获取联邦认证Token的方法。
查询身份提供商列表 该接口可以用于查询身份提供商列表。
查询身份提供商详情 该接口可以用于查询身份提供商详情。
创建身份提供商 该接口可以用于管理员注册身份提供商。
修改SAML身份提供商 配置
该接口可以用于管理员更新身份提供商。
删除SAML身份提供商 该接口可以用于管理员 删除身份提供商。
查询映射列表 该接口可以用于查询映射列表。
查询映射详情 该接口可以用于查询映射详情。
注册映射 该接口可以用于管理员注册映射。
更新映射 该接口可以用于管理员更新映射。
删除映射 该接口可以用于管理员删除映射。
查询协议列表 该接口可以用于查询协议列表。
查询协议详情 该接口可以用于查询协议详情。
注册协议 该接口可以用于管理员注册协议(将协议关联到某一身份
提供商)。
更新协议 该接口可以用于管理员更新协议。
删除协议 该接口可以用于管理员删除协议。
查询Metadata文件 该接口可以用于管理员查询身份提供商导入到IAM中的
Metadata文件。
查询Keystone的
Metadata文件 该接口可以用于查询keystone的Metadata文件。
导入Metadata文件 该接口可以用于管理员导入Metadata文件。
获取联邦认证unscoped
token(IdP initiated) 该接口可以用于通过IdP initiated的联邦认证方式获取 unscoped token。
获取联邦认证scoped
token 该接口可以用于通过联邦认证方式获取scoped token。
接口 说明 获取联邦认证
token(OpenID Connect ID token方 式)
该接口可以用于通过OpenID Connect ID token方式获取 联邦认证token。
获取联邦认证unscoped token(OpenID
Connect ID token方 式)
该接口可以用于通过OpenID Connect ID token方式获取 联邦认证unscoped token。
查询联邦用户可以访问 的帐号列表
该接口用于查询联邦用户可以访问的帐号列表。
自定义身份代理
接口 说明
获取自定义身份代理登
录票据 该接口用于获取自定义身份代理登录票据logintoken。
版本信息管理
接口 说明
查询Keystone API的版
本信息 该接口用于查询Keystone API的版本信息。
查询Keystone API的3.0
版本信息 该接口用于查询Keystone API的3.0版本的信息。
服务和终端节点
接口 说明
查询服务列表 该接口可以用于查询服务列表。
查询服务详情 该接口可以用于查询服务详情。
查询服务目录 该接口可以用于查询请求头中X-Auth-Token对应的服务
目录。
查询终端节点列表 该接口可以用于查询终端节点列表。
查询终端节点详情 该接口可以用于查询终端节点详情。
3 如何调用 API
3.1 构造请求
本节介绍REST API请求的组成,以调用获取IAM用户Token(使用密码)接口说明如 何调用API,该API获取用户的Token,Token是用户的访问令牌,承载身份与权限信 息,Token可以用于调用其他API时鉴权。
您还可以通过这个视频教程了解如何构造请求调用API:https://
bbs.huaweicloud.com/videos/102987 。
请求 URI
请求URI由如下部分组成。
{URI-scheme} :// {Endpoint} / {resource-path} ? {query-string}
表3-1 请求 URL
参数 说明
URI-scheme 传输请求的协议,当前所有API均采用HTTPS协议。
Endpoint 承载REST服务端点的服务器域名或IP,不同服务在不同区域,
Endpoint不同,可以从使用前必读中获取。例如IAM服务在“华北- 北京一”区域的Endpoint为“iam.cn-
north-1.myhuaweicloud.com”。
resource-
path 资源路径,即API访问路径。从具体API的URI模块获取,例如“获取 用户Token”API的resource-path为“/v3/auth/tokens”。
query-string 查询参数,可选,查询参数前面需要带一个“?”,形式为“参数 名=参数取值”,例如“limit=10”,表示查询不超过10条数据。
例如您需要获取“华北-北京一”区域的Token,则需使用“华北-北京一”区域的 Endpoint(iam.cn-north-1.myhuaweicloud.com),并在获取IAM用户Token(使用
https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens
图3-1 URI 示意图
说明
为查看方便,每个具体API的URI,只给出resource-path部分,并将请求方法写在一起。这是因 为URI-scheme都是HTTPS,而Endpoint在同一个区域也相同,所以简洁起见将这两部分省略。
请求方法
HTTP请求方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。
● GET:请求服务器返回指定资源。
● PUT:请求服务器更新指定资源。
● POST:请求服务器新增资源或执行特殊操作。
● DELETE:请求服务器删除指定资源,如删除对象等。
● HEAD:请求服务器资源头部。
● PATCH:请求服务器更新资源的部分内容。当资源不存在的时候,PATCH可能会
去创建一个新的资源。
在获取IAM用户Token(使用密码)的URI部分,您可以看到其请求方法为
“POST”,则其请求为:
POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens
请求消息头
附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请 求头“Content-Type”,请求鉴权信息等。
如下公共消息头需要添加到请求中。
● Content-Type:消息体的类型(格式),必选,默认取值为“application/
json”。
● X-Auth-Token:用户Token,可选,当使用Token方式认证时,必须填充该字 段。X-Auth-Token是调用获取IAM用户Token(使用密码)接口返回的响应值,
该接口功能为获取Token,因此调用该接口时,不用填写本字段。
说明
公有云API同时支持使用AK/SK认证,AK/SK认证是使用SDK对请求进行签名,签名过程会 自动往请求中添加Authorization(签名认证信息)和X-Sdk-Date(请求发送的时间)请求 头。AK/SK认证的详细说明请参见:AK/SK认证。
对于获取IAM用户Token(使用密码)接口,由于不需要认证,所以只添加
“Content-Type”即可,添加消息头后的请求如下所示。
POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json
请求消息体
请求消息体通常以结构化格式发出,与请求消息头中Content-type对应,传递除请求 消息头之外的内容。若请求消息体中参数支持中文,则中文字符必须为UTF-8编码。
每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消 息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根 据具体接口而定。
对于获取IAM用户Token(使用密码)接口,您可以从接口的请求部分看到所需的请 求参数及参数说明。将消息体加入后的请求如下所示,加粗的斜体字段需要根据实际 值填写,其中
username
为用户名,********
为用户的登录密码,domianname为用户 所属的帐号名称,如果是帐号本身获取token,username
和domianname
填为一致,xxxxxxxxxxxxxxxxxx
为project的ID,获取方法请参见获取帐号、IAM用户、项目、用 户组、区域、委托的名称和ID。说明
scope参数定义了Token的作用范围,取值为project或domain,示例中取值为project,表示获取 的Token仅能访问指定project下的资源,取值为domainname时,表示获取的token可以访问指 定帐号下所有资源,scope参数的详细说明,请参见:获取IAM用户Token(使用密码)。
POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json
{ "auth": { "identity": { "methods": [ "password"
],
"password": { "user": {
"name": "username", "password": "********", "domain": {
"name": "domianname"
} } } }, "scope": { "project": {
"id": "xxxxxxxxxxxxxxxxxx"
} } } }
到这里为止这个请求需要的内容就具备齐全了,您可以使用curl、Postman或直接编 写代码等方式发送请求调用API。对于获取IAM用户Token(使用密码)接口,返回的 响应消息头中“x-subject-token”就是需要获取的用户Token。有了Token之后,您就 可以使用Token认证调用其他API。
3.2 认证鉴权
● Token认证:通过Token认证通用请求。
● AK/SK认证:通过AK(Access Key ID)/SK(Secret Access Key)加密调用请求。
Token 认证
说明
Token的有效期为24小时,需要使用同一个Token鉴权时,可以缓存起来,避免频繁调用。
Token在计算机系统中代表令牌(临时)的意思,拥有Token就代表拥有某种权限。
Token认证就是在调用API的时候将Token加到请求消息头,从而通过身份认证,获得 操作API的权限。
Token可通过调用获取IAM用户Token(使用密码)接口获取,调用本服务API需要全 局级别的Token,即调用获取IAM用户Token(使用密码)接口时,请求body中 auth.scope的取值需要选择domain,如下所示。
{ "auth": { "identity": { "methods": [ "password"
],
"password": { "user": { "domain": {
"name": "IAMDomain"
},
"name": "IAMUser", "password": "IAMPassword"
} } }, "scope": { "domain": {
"name": "IAMDomain"
} } } }
获取Token后,再调用其他接口时,您需要在请求消息头中添加“X-Auth-Token”,
其值即为获取到的Token。例如Token值为“ABCDEFJ....”,则调用接口时将“X- Auth-Token: ABCDEFJ....”加到请求消息头即可,如下所示。
GET https://iam.cn-north-1.myhuaweicloud.com/v3/auth/projects Content-Type: application/json
X-Auth-Token: ABCDEFJ....
您还可以通过这个视频教程了解如何使用Token认证:https://
bbs.huaweicloud.com/videos/101333 。
AK/SK 认证
说明
AK/SK签名认证方式仅支持消息体大小12M以内,12M以上的请求请使用Token认证。
AK/SK认证就是使用AK/SK对请求进行签名,在请求时将签名信息添加到消息头,从而 通过身份认证。
● AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥 ID和私有访问密钥一起使用,对请求进行加密签名。
● SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签名,
可标识发送方,并防止请求被修改。
使用AK/SK认证时,您可以基于签名算法使用AK/SK对请求进行签名,也可以使用专门 的签名SDK对请求进行签名。详细的签名方法和SDK使用方法请参见:API签名指南。
须知
签名SDK只提供签名功能,与服务提供的SDK不同,使用时请注意。
3.3 返回结果
状态码
请求发送以后,您会收到响应,包含状态码、响应消息头和消息体。
状态码是一组从1xx到5xx的数字代码,状态码表示了请求响应的状态,完整的状态码 列表请参见状态码。
对于获取IAM用户Token(使用密码)接口,如果调用后返回状态码为“201”,则表 示请求成功。
响应消息头
对应请求消息头,响应同样也有消息头,如“Content-type”。
对于获取IAM用户Token(使用密码)接口,返回如图1所示的消息头,其中“x- subject-token”就是需要获取的用户Token。有了Token之后,您就可以使用Token认 证调用其他API。
图3-2 获取用户 Token 响应消息头
响应消息体
响应消息体通常以结构化格式返回,与响应消息头中Content-type对应,传递除响应 消息头之外的内容。
对于获取IAM用户Token(使用密码)接口,返回如下消息体。为篇幅起见,这里只 展示部分内容。
{ "token": {
"expires_at": "2019-02-13T06:52:13.855000Z", "methods": [
"password"
],
"catalog": [ {
"endpoints": [ {
"region_id": "cn-north-1", ...
当接口调用出错时,会返回错误码及错误信息说明,错误响应的Body体格式如下所 示。
{ "error_msg": "The format of message is error", "error_code": "AS.0001"
}
其中,error_code表示错误码,error_msg表示错误描述信息。
4 快速入门
4.1 密钥定期自动化轮换
场景描述
企业用户通常都会使用访问密钥(AK/SK)的方式对云上资源的进行API访问,但是访 问密钥需要做到定期的自动轮换,以降低密钥泄露等潜在的安全风险。
本章节指导用户如何使用API调用的方式轮换访问密钥,您可进一步通过编程手段完成 定期自动轮换工作。
前提条件
帐号管理员操作其他IAM用户的访问密钥时,需要拥有Security Administrator权限,
IAM用户操作自己的访问密钥无需任何权限。
总体思路
定期轮换访问密钥(AK/SK)时,步骤如下:
1. 创建AK/SK;
2. 查询您所有AK/SK的创建时间(或指定AK/SK的创建时间),判断使用时间是否需 要轮换;
3. 删除需要轮换的AK/SK;
4. 更换新的AK/SK。
涉及的接口如下:
● 创建永久访问密钥
● 查询所有永久访问密钥
● 查询指定永久访问密钥
● 删除指定永久访问密钥
步骤 1:创建永久 AK/SK
API文档详情请参见:创建永久访问密钥
API Explorer在线调试请参见:创建永久访问密钥
● 请求示例
POST https://iam.myhuaweicloud.com/v3.0/OS-CREDENTIAL/credentials { "credential": {
"description": "IAMDescription",
"user_id": "07609fb9358010e21f7bc003751..."
} }
● 响应示例
{ "credential": {
"access": "P83EVBZJMXCYTMUII...",
"create_time": "2020-01-08T06:25:19.014028Z", "user_id": "07609fb9358010e21f7bc003751...", "description": "IAMDescription",
"secret": "TTqAHPbhWorg9ozx8Dv9MUyzYnOKDppxzHt...", "status": "active"
}
步骤 2:查询 AK/SK 的创建时间(或查询指定 AK/SK 的创建时间)
● 查询所有AK/SK的创建时间。
URI:GET /v3.0/OS-CREDENTIAL/credentials API文档详情请参见:查询所有永久访问密钥
API Explorer在线调试请参见: 查询所有永久访问密钥 – 请求示例
1) IAM用户查询自己所有AK/SK的创建时间。
GET https://iam.myhuaweicloud.com/v3.0/OS-CREDENTIAL/credentials
2) 管理员查询IAM用户所有AK/SK的创建时间。(待查询的用户ID为:076…)
GET https://iam.myhuaweicloud.com/v3.0/OS-CREDENTIAL/credentials?user_id=076...
– 响应示例
{ "credentials": [ {
"access": "LOSZM4YRVLKOY9E8X...",
"create_time": "2020-01-08T06:26:08.123059Z", "user_id": "07609fb9358010e21f7bc0037...", "description": "",
"status": "active"
}, {
"access": "P83EVBZJMXCYTMU...",
"create_time": "2020-01-08T06:25:19.014028Z", "user_id": "07609fb9358010e21f7bc003751...", "description": "",
"status": "active"
} ] }
● 查询指定AK/SK的创建时间。
URI:GET /v3.0/OS-CREDENTIAL/credentials/{access_key}
API文档详情请参见:查询指定永久访问密钥
API Explorer在线调试请参见:查询指定永久访问密钥
– 请求示例
GET https://iam.myhuaweicloud.com/v3.0/OS-CREDENTIAL/credentials/{access_key}
– 响应示例
{ "credential": {
"last_use_time": "2020-01-08T06:26:08.123059Z", "access": "LOSZM4YRVLKOY9E8...",
"create_time": "2020-01-08T06:26:08.123059Z", "user_id": "07609fb9358010e21f7bc00375....", "description": "",
"status": "active"
} }
步骤 3:删除需要轮换的 AK/SK
URI:DELETE /v3.0/OS-CREDENTIAL/credentials/{access_key}
API文档详情请参见:删除指定永久访问密钥
API Explorer在线调试请参见:删除指定永久访问密钥
● 请求示例
DELETE https://iam.myhuaweicloud.com/v3.0/OS-CREDENTIAL/credentials/{access_key}
● 响应示例
该接口无返回体,状态码为204表示删除成功。
步骤 4:更换新的 AK/SK
更换新的AK/SK,请重复步骤1 创建永久AK/SK。
4.2 企业管理华为云上多租户的联邦认证
场景描述
部分企业级用户在公有云上存在多帐号,并且通过企业级IDP系统联邦登录至公有云对 不同帐号进行操作,需要提前通过API自动配置联邦认证。
本章节指导用户如何使用API调用的方式自动配置联邦认证。
前提条件
帐号进行注册或导入操作需要拥有Security Administrator权限。
总体思路
进行华为云上多租户的联邦认证,步骤如下:
1. 注册身份提供商;
2. 注册映射;
3. 注册协议;
4. 导入Metadata文件;
5. 联邦登录。
● 注册身份提供商
● 注册映射
● 注册协议
● 导入Metadata文件
步骤 1:注册身份提供商
URI:PUT /v3/OS-FEDERATION/identity_providers/{id}
API文档详情请参见: 创建身份提供商
API Explorer在线调试请参见:注册身份提供商
● 请求示例
PUT https://iam.myhuaweicloud.com/v3/OS-FEDERATION/identity_providers/{id}
{ "identity_provider":{
"description":"Stores ACME identities.", "enabled":true
} }
● 响应示例
{ "identity_provider": { "remote_ids": [], "enabled": true, "id": "ACME", "links": {
"self": "https://iam.myhuaweicloud.com/v3/OS-FEDERATION/identity_providers/ACME", "protocols": "https://iam.myhuaweicloud.com/v3/OS-FEDERATION/identity_providers/ACME/
protocols"
},
"description": "Stores ACME identities."
} }
步骤 2:注册映射
URI: PUT /v3/OS-FEDERATION/mappings/{id}
API文档详情请参见:注册映射
API Explorer在线调试请参见:注册映射
● 请求示例
PUT https://iam.myhuaweicloud.com/v3/OS-FEDERATION/mappings/{id}
{ "mapping":{
"rules":[
{
"local":[
{
"user":{
"name":"LocalUser"
} }, {
"group":{
"name":"LocalGroup"
} }
], "remote":[
{
"type":"UserName"
}, {
"not_any_of":[
"Contractor", "Guest"
],
"type":"orgPersonType"
} ] } ] } }
● 响应示例
{ "mapping":{
"id":"ACME", "links":{
"self":"https://iam.myhuaweicloud.com/v3/OS-FEDERATION/mappings/ACME"
}, "rules":[
{
"local":[
{
"user":{
"name":"LocalUser"
} }, {
"group":{
"name":"LocalGroup"
} } ], "remote":[
{
"type":"UserName"
}, {
"not_any_of":[
"Contractor", "Guest"
],
"type":"orgPersonType"
} ] } ] } }
步骤 3:注册协议
URI:PUT /v3/OS-FEDERATION/identity_providers/{idp_id}/protocols/{protocol_id}
API文档详情请参见:注册协议
API Explorer在线调试请参见:注册协议
● 请求示例
PUT https://iam.myhuaweicloud.com/v3/OS-FEDERATION/identity_providers/{idp_id}/protocols/
{protocol_id}
"mapping_id":"ACME"
} }
● 响应示例
{ "protocol":{
"id":"saml", "links":{
"identity_provider":"https://iam.myhuaweicloud.com/v3/OS-FEDERATION/identity_providers/
ACME",
"self":"https://iam.myhuaweicloud.com/v3/OS-FEDERATION/identity_providers/ACME/
protocols/saml"
},
"mapping_id":"ACME"
} }
步骤 4:导入 metadata 文件
URI:POST /v3-ext/OS-FEDERATION/identity_providers/{idp_id}/protocols/
{protocol_id}/metadata
API文档详情请参见:导入Metadata文件
API Explorer在线调试请参见:导入Metadata文件
● 请求示例
POST https://iam.myhuaweicloud.com/v3-ext/OS-FEDERATION/identity_providers/{idp_id}/protocols/
{protocol_id}/metadata
{ "domain_id":"d78cbac186b744899480f25bd022....", "metadata":"$metadataContent",
"xaccount_type":""
}
● 响应示例
{ "message":"Import metadata successful"
}
步骤 5:联邦登录
完成云上多租户联邦认证配置。联邦登录详情参考:身份提供商。
4.3 对 IAM 用户的权限进行安全审计
场景描述
企业级用户通常需要对公有云上IAM用户的权限定期进行安全审计,以确定IAM用户的 权限未超出规定的范围。例如:除帐号和审计员用户以外的所有IAM用户都不应该具 有任何IAM的管理权限。此安全审计往往是系统定期自动检查,所以需要使用API来完 成。
本章节指导用户如何使用API调用的方式对IAM用户的权限进行安全审计,您可进一步 通过编程手段完成定期安全审计工作。
前提条件
审计员对IAM用户的权限进行安全审计时,需要拥有IAM ReadOnlyAccess(推荐)或 Security Administrator权限。
总体思路
对IAM用户的权限进行安全审计,步骤如下:
1. 查询用户组列表;
2. 查询全局服务中的用户组权限;
3. 查询项目服务中的用户组权限;
4. 确定需要审计的权限,查询用户组中的IAM用户,进行安全审计。
涉及的接口如下:
● 查询用户组列表
● 查询全局服务中的用户组权限
● 查询项目服务中的用户组权限
● 管理员查询用户组所包含的IAM用户
步骤 1:查询用户组列表
URI:GET /v3/groups
API文档详情请参见:查询用户组列表
API Explorer在线调试请参见:查询用户组列表
● 请求示例
GET https://iam.myhuaweicloud.com/v3/groups
● 响应示例
{ "groups":[
{
"create_time":1536293929624, "description":"IAMDescription",
"domain_id":"d78cbac186b744899480f25bd022....", "id":"5b050baea9db472c88cbae67e8d6....", "links":{
"self":"https://iam.myhuaweicloud.com/v3/groups/5b050baea9db472c88cbae67e8d6...."
},
"name":"IAMGroupA"
}, {
"create_time":1578107542861, "description":"IAMDescription",
"domain_id":"d78cbac186b744899480f25bd022....", "id":"07609e7eb200250a3f7dc003cb7a....", "links":{
"self":"https://iam.myhuaweicloud.com/v3/groups/07609e7eb200250a3f7dc003cb7a...."
},
"name":"IAMGroupB"
} ], "links":{
"self":"https://iam.myhuaweicloud.com/v3/groups"
} }
步骤 2:查询全局服务中的用户组权限
URI:GET /v3/domains/{domain_id}/groups/{group_id}/roles
API Explorer在线调试请参见:查询全局服务中的用户组权限
● 请求示例
GET https://iam.myhuaweicloud.com/v3/domains/{domain_id}/groups/{group_id}/roles
● 响应示例
{ "links":{
"self":"https://iam.myhuaweicloud.com/v3/domains/d78cbac186b744899480f25bd022f468/
groups/077d71374b8025173f61c003ea0a11ac/roles"
}, "roles":[
{
"catalog":"CDN",
"description":"Allow Query Domains", "description_cn":"查询域名信息", "display_name":"CDN Domain Viewer", "flag":"fine_grained",
"id":"db4259cce0ce47c9903dfdc195eb....", "links":{
"self":"https://iam.myhuaweicloud.com/v3/roles/db4259cce0ce47c9903dfdc195eb...."
},
"name":"system_all_11", "policy":{
"Statement":[
{
"Action":[
"cdn:configuration:queryDomains", "cdn:configuration:queryOriginServerInfo", "cdn:configuration:queryOriginConfInfo", "cdn:configuration:queryHttpsConf", "cdn:configuration:queryCacheRule", "cdn:configuration:queryReferConf", "cdn:configuration:queryChargeMode", "cdn:configuration:queryCacheHistoryTask", "cdn:configuration:queryIpAcl",
"cdn:configuration:queryResponseHeaderList"
],
"Effect":"Allow"
} ],
"Version":"1.1"
},
"type":"AX"
} ] }
步骤 3:查询项目服务中的用户组权限
URI:GET /v3/projects/{project_id}/groups/{group_id}/roles API文档详情请参见:查询项目服务中的用户组权限
API Explorer在线调试请参见:查询项目服务中的用户组权限
● 请求示例
GET https://iam.myhuaweicloud.com/v3/projects/{project_id}/groups/{group_id}/roles
● 响应示例
{ "links":{
"self":"https://iam.myhuaweicloud.com/v3/projects/065a7c66da0010992ff7c0031e5a..../groups/
077d71374b8025173f61c003ea0a..../roles"
}, "roles":[
{
"catalog":"AOM",
"description":"AOM read only",
"description_cn":"应用运维管理服务只读权限", "display_name":"AOM Viewer",
"flag":"fine_grained",
"id":"75cfe22af2b3498d82b655fbb39d....", "links":{
"self":"https://iam.myhuaweicloud.com/v3/roles/75cfe22af2b3498d82b655fbb39d...."
},
"name":"system_all_30", "policy":{
"Statement":[
{
"Action":[
"aom:*:list", "aom:*:get", "apm:*:list", "apm:*:get"
],
"Effect":"Allow"
} ],
"Version":"1.1"
},
"type":"XA"
} ] }
步骤 4:确定需要审计的权限,查询用户组中的 IAM 用户,进行安全审计
URI:GET /v3/groups/{group_id}/users
API文档详情请参见:管理员查询用户组所包含的IAM用户
API Explorer在线调试请参见:管理员查询用户组所包含的IAM用户
● 请求示例
GET https://iam.myhuaweicloud.com/v3/groups/{group_id}/users
● 响应示例
{ "links":{
"self":"https://iam.myhuaweicloud.com/v3/groups/07609e7eb200250a3f7dc003cb7a..../users"
}, "users":[
{
"description":"--",
"domain_id":"d78cbac186b744899480f25bd022....", "enabled":true,
"id":"07609fb9358010e21f7bc003751c....",
"last_project_id":"065a7c66da0010992ff7c0031e5a....", "links":{
"self":"https://iam.myhuaweicloud.com/v3/users/07609fb9358010e21f7bc003751c...."
},
"name":"IAMUserA", "pwd_status":true },
{
"description":"",
"domain_id":"d78cbac186b744899480f25bd022....", "enabled":true,
"id":"076837351e80251c1f0fc003afe4....",
"last_project_id":"065a7c66da0010992ff7c0031e5a....", "links":{
"self":"https://iam.myhuaweicloud.com/v3/users/076837351e80251c1f0fc003afe4...."
},
} ] }
5 API
5.1 Token 管理
5.1.1 获取 IAM 用户 Token(使用密码)
功能介绍
该接口可以用于通过用户名/密码的方式进行认证来获取IAM用户Token。Token是系统 颁发给IAM用户的访问令牌,承载用户的身份、权限等信息。调用IAM以及其他云服务 的接口时,可以使用本接口获取的IAM用户Token进行鉴权。
该接口可以使用全局区域的Endpoint和其他区域的Endpoint调用。IAM的Endpoint请 参见:地区和终端节点。
● Token的有效期
Token的有效期为24小时。建议进行缓存,避免频繁调用。使用Token前请确保 Token离过期有足够的时间,防止调用API的过程中Token过期导致调用API失败。
重新获取Token,不影响已有Token有效性。如果在Token有效期内进行如下操 作,当前Token将立即失效:
– 删除/停用IAM用户。
– 修改IAM用户密码、访问密钥。
– IAM用户权限发生变化(如帐号欠费无法访问访问云服务、申请公测通过、
IAM用户权限被修改等)。
● 非华为云帐号获取Token
– 如果您的华为云帐号已升级为华为帐号,将不支持获取帐号Token,建议您为 自己创建一个IAM用户,授予该用户必要的权限,获取IAM用户Token。
– 如果您是第三方系统用户,直接使用联邦认证的用户名和密码获取Token,系 统会提示密码错误。请先在华为云的登录页面,通过“忘记密码”功能,设 置华为云帐号密码。
● 相关操作
– 如果您开启了登录保护并设置登录保护为MFA验证,请参考获取IAM用户
– 如果需要获取具有Security Administrator权限的Token,请参见:如何获取 Security Administrator权限的Token。
– 通过Postman获取用户Token示例请参见:如何通过Postman获取用户 Token。
– 您还可以通过视频教程了解如何使用Token认证:IAM视频帮助 。
调试
您可以在API Explorer中调试该接口。
URI
POST /v3/auth/tokens
表5-1 Query 参数
参数 是否
必选
参数类型 描述
nocatalog 否 String 如果设置该参数,返回的响应体中将不 显示catalog信息。任何非空字符串都将 解释为true,并使该字段生效。
请求参数
表5-2 请求 Header 参数
参数 是否
必选
参数类型 描述
Content-Type 是 String 该字段内容填为“application/
json;charset=utf8”。
表5-3 请求 Body 参数
参数 是否
必选
参数类型 描述
auth 是 Object 认证信息。
表5-4 auth
参数 是否
必选
参数类型 描述
identity 是 Object 认证参数。
参数 是否 必选
参数类型 描述
scope 否 Object Token的使用范围,取值为project或 domain,二选一即可。
说明
● 如果您将scope设置为domain,该Token 适用于全局级服务;如果将scope设置为 project,该Token适用于项目级服务。
● 如果您将scope同时设置为project和 domain,将以project参数为准,获取到 项目级服务的Token。
● 如果您将scope置空,将获取到全局级服 务的Token。建议您按需要填写Token使 用范围。
表5-5 auth.identity
参数 是否
必选
参数类型 描述
methods 是 Array of
strings 认证方法,该字段内容为 ["password"]。
password 是 Object IAM用户密码认证信息。
说明
● user.name和user.domain.name可以在界 面控制台“我的凭证”中查看,具体获取 方法请参见:获取帐号、IAM用户、项 目、用户组、区域、委托的名称和ID。
● 该接口提供了锁定机制用于防止暴力破 解,调用时,请确保用户名密码正确,输 错一定次数(管理员可设置该规则,方法 请参见:帐号锁定策略)将被锁定。
表5-6 auth.identity.password
参数 是否
必选
参数类型 描述
user 是 Object 需要获取Token的IAM用户信息。
表5-7 auth.identity.password.user
参数 是否
必选
参数类型 描述
domain 是 Object IAM用户所属帐号信息。了解帐号与IAM
用户的关系。
name 是 String IAM用户名。
password 是 String IAM用户的登录密码。
说明
● 务必保证密码输入正确,避免获取Token 失败。
● 如果您的华为云帐号已升级为华为帐号,
将不支持获取帐号Token,建议您为自己 创建一个IAM用户,授予该用户必要的权 限,获取IAM用户Token。
● 如果您是第三方系统用户,直接使用联邦 认证的用户名和密码获取Token,系统会 提示密码错误。请在华为云的登录页面,
通过“忘记密码”功能,设置华为云帐号 密码,并在password中输入新设置的密 码。
表5-8 auth.identity.password.user.domain
参数 是否
必选
参数类型 描述
name 是 String IAM用户所属帐号名称,获取方式请参 见:获取帐号、IAM用户、项目、用户 组、区域、委托的名称和ID。
表5-9 auth.scope
参数 是否
必选
参数类型 描述
domain 否 Object 取值为domain时,表示获取的Token可 以作用于全局服务,全局服务不区分项 目或区域,如OBS服务。如需了解服务 作用范围,请参考系统权限。domain支 持id和name,二选一即可,建议选择
“domain_id”。
project 否 Object 取值为project时,表示获取的Token可以 作用于项目级服务,仅能访问指定 project下的资源,如ECS服务。如需了解 服务作用范围,请参考系统权限。
project支持id和name,二选一即可。
表5-10 auth.scope.domain
参数 是否
必选
参数类型 描述
id 否 String IAM用户所属帐号ID,获取方式请参 见:获取帐号、IAM用户、项目、用户 组、区域、委托的名称和ID。id和 name,二选一即可。
name 否 String IAM用户所属帐号名称,获取方式请参 见:获取帐号、IAM用户、项目、用户 组、区域、委托的名称和ID。id和 name,二选一即可。
表5-11 auth.scope.project
参数 是否
必选
参数类型 描述
id 否 String IAM用户所属帐号的项目ID,获取方式 请参见:获取帐号、IAM用户、项目、
用户组、区域、委托的名称和ID。id和 name,二选一即可。
name 否 String IAM用户所属帐号的项目名称,获取方式 请参见:获取帐号、IAM用户、项目、
用户组、区域、委托的名称和ID。id和 name,二选一即可。
请求示例
● 获取IAM用户名为“IAMUser”,IAM用户密码为“IAMPassword”,所属帐号名 为“IAMDomain”,作用范围为项目“cn-north-1”,且返回的响应体中将不显 示catalog信息的Token。
POST https://iam.myhuaweicloud.com/v3/auth/tokens?nocatalog=true { "auth": {
"identity": { "methods": [ "password"
],
"password": { "user": { "domain": {
"name": "IAMDomain" //IAM用户所属帐号名 },
"name": "IAMUser", //IAM用户名 "password": "IAMPassword" //IAM用户密码 }
} }, "scope": { "project": {
"name": "cn-north-1" //项目名称