• [ManageOne二...] 【华为云Stack ManageOne运维面北向对接】使用API查询CMDB资源的标签
    1 标签接口说明ManageOne 运维面提供了完整的标签管理功能,允许用户为云资源添加、查询、管理和删除标签,以实现对资源的分类、标识和组织管理。2 相关约束目前仅支持查询类接口,增删改标签需要在运维面页面上操作。HCS 8.5.1以上版本,如需同步运营面标签数据,可进入“OC首页-资源-资源管理-资源标签-设置”,配置“同步运营面标签”以及同步周期。3 参考文档《ManageOne 8.x运维面API参考.docx》->资源管理->查询资源关联的标签《ManageOne 8.x资源北向模型.xlsx》->获取系统支持的资源类型、关系类型、资源分类及属性列表4 使用方法注:调用该接口需要“查询标签”权限,归属权限组:运维中心>标签管理。步骤1 获取Token调用方法:PUT调用URL:https://{运维侧对外访问域名}/rest/plat/smapp/v1/oauth/token请求头:Accept:application/jsonContent-Type:application/json;charset=UTF-8请求body:{ "grantType": "password", "userName": "XXX", "value": "***"}响应示例:{ "accessSession": "xxxxxxxxxxxxxxx", "roaRand": "xxxxxxxxxxxxxxx", "expires": 1800, "additionalInfo": null}后面的步骤都需要在请求的header里面加上X-Auth-Token参数,accessSession的值即为token值,有效期为30分钟,多次获取不会导致之前获取的token失效。对接前需要创建第三方登陆账号(非本地用户),详情参考(8.3.1之前版本)cid:link_2、(8.3.1及之后版本)cid:link_0。运维面与运营面账号不可混用。步骤2 查询资源列表(以弹性云服务器为例)注:更多类型资源的查询方式参考:cid:link_1URLGET https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_VM?pageNo=1&pageSize=1000请求头Content-Type:application/json;charset=UTF-8 X-Auth-Token:xxxxxxxxxxxxxcurl示例(X-Auth-Token的值需要用步骤1的token替代)curl -k -X GET "https://{OC北向接口域名}/rest/tenant-resource/v1/instances/CLOUD_VM?pageNo=1&pageSize=1000" -H "X-Auth-Token: x-ftao5..."响应示例{  "objList": [       {            "ownerType": "compute",            "extraSpecs": "{\"cloud_image_nativeId\":\"6b462afb-7326-4f1b-b4b1-cca30ba9515a\",\"cloud_image_osVersion\":\"EulerOS 2.9 64bit\",\"ips\":\"@192.208.38.127@100.106.31.196@\",\"cpuCoreNum\":2,\"cloud_image_name\":\"FCD_image\",\"cloud_image_osType\":\"Linux\"}",            "tenantType": "business",            "resourcePoolNativeId": "FUSION_CLOUD_cn-global-192167230",            "privateIps": "@192.208.38.127@",            "ownerId": "7E8B7ED9B4A13B52BE8C611357ED6816",            "createdAt": "2022-02-18T12:03:17Z",            "powerState": "1",            "taskState": "",            "id": "2B24E998AB26380D8E1117498F2644A1",            "podId": "5D2AAE13F1EC3BE899DCF4500030F517",            "bizRegionId": "D47012ECCE2E3B3FA52FF3C680251530",            "imageId": "E3426FB4502D317EB6077C53FB69B1AA",            "floatingIp": "",            "ipAddress": "192.208.38.127",            "hostId": "2BBBB9D6A35F3C2D94C484985F7750E5",            "hypervisorType": "kvm",            "resId": "2B24E998AB26380D8E1117498F2644A1",            "tags": "[\"c455d771-ce0b-4c72-b454-daff9db8ff58\"]",            "is_Local": true,            "class_Name": "CLOUD_VM",            "azoneId": "8782559D919B3584BDF36467D8544FA2",            "physicalHostId": "2BBBB9D6A35F3C2D94C484985F7750E5",            "resourcePoolId": "17B76BC0B54F3DEB8E2C939966F8752F",            "flavorPerformanceType": "normal",            "name": "FCD_ecs_uzkd",            "projectName": "FCD_project_dqit",            "projectId": "e79d8840f6c24499a04cb05a95948c50",            "bizRegionName": "HCS资源池",            "status": "active",            "resourcePoolType": "FUSION_CLOUD",            "logicalRegionName": "HCS资源池",            "azoneName": "通用计算区",            "regionName": "Global",            "flavorRamSize": "2048",            "flavorId": "9C9C48C633493525B24B1BA43131FE00",            "flavorDiskSize": "0",            "clusterId": "259E9B98BF80344F90028F94DE563CE3",            "tenantName": "FCD_vdc01_VPC",            "osVersion": "EulerOS 2.9 64bit",            "clusterName": "kvm_aggr",            "osType": "Linux",            "last_Modified": 1645185841906,            "flavorVcpu": "2",            "vdcId": "2095403d-bf0b-4cfe-8506-61517056f5b2",            "unHexId": "KyTpmKsmOA2OERdJjyZEoQ==",            "userId": "152cbef3703642fdbc203296034a4366",            "resourcePoolName": "OpenStack_cn-global-192167230",            "bizRegionNativeId": "cn-global-192167230",            "logicalRegionId": "D47012ECCE2E3B3FA52FF3C680251530",            "regionId": "C4CA4238A0B933828DCC509A6F75849B",            "management": false,            "tenantId": "b729425ab51d41a8974c9c783fb79247",            "vdcName": "FCD_vdc01_VPC",            "nativeId": "925a7ffb-2597-412b-ab4d-23bd0cf821b6",            "launchedAt": "2022-02-18T12:03:33.000000",            "vmState": "active",            "cpuCoreNum": "2"       } ],  "totalNum": 47,  "pageSize": 1,  "totalPageNo": 47,  "currentPage": 1 }获取租户虚拟机的资源ID(resId字段)。此处为:"resId": "2B24E998AB26380D8E1117498F2644A1"步骤3 查询资源关联的标签URLGET https://{OC北向接口域名}/rest/cmdbtag/v1/resources-tags?resIds=["xxxxx"]其中,resIds为资源id列表,通过JSON数组格式传入。请求头Accept:application/jsonX-Auth-Token:x-xxxxxxxxxxx响应体示例{    "retCode": "00000000",    "errorMsg": null,    "datas": [       {            "resId": "2B24E998AB26380D8E1117498F2644A1",            "tags": [               {                    "key": "管理员",                    "value": "zhangsan",                    "id": "E5CA95334D69428692EF680EB7F3ED11",                    "source": "SC"               }           ]       }   ]}
  • [ManageOne二...] 【华为云Stack】使用API管理弹性云服务器标签
    1 标签介绍ManageOne通过标签对云资源进行分类和管理,支持为弹性云服务器等资源添加标签,以及上报标签关联资源。标签功能帮助用户更好地组织和管理云资源。2 约束条件标签约束:tag的长度不超过80个字符。tag不能以字符点'.'开头。tag不能包含字符斜杠'/'和字符逗号','。每个弹性云服务器支持的tag数有限制(默认值为50)。不支持创建空tag(空串)。弹性云服务器处于运行状态或者关机状态时,才允许更新tag。3 标签管理步骤1:获取管理员token请求URL:https://{IAM对外访问域名}/v3/auth/tokens请求方法:POST请求头:Accept:application/jsonContent-Type:application/json;charset=UTF-8请求体:{ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "domain": { "name": "租户名" }, "name": "用户名", "password": "用户名密码" } } }, "scope": { "project": { "name": "资源空间名" } } }}返回的token在响应头中,示例如下:HTTP/1.1 201 CreatedContent-Type: application/json; charset=utf-8Connection: keep-aliveX-Subject-Token: MIIECwYxxxxxxxxxxxxxxxxxxSQ3G2RAj89N+t9GECHGnnGUgkKj7vMesUZ2jEW6EiVYA==X-Subject-Token的值即为我们所需要的token。步骤2:为弹性云服务器添加标签注:使用该接口给云服务器添加tag,该tag不会立即出现在ManageOne运营面“资源-云资源列表”的弹性云服务器列表中,需要手动点击“同步资源”或等待自动同步(默认为02:00)后才会显示该标签。URLPUT https://{ECS北向接口域名}/v1/{projectId}/cloudservers/{server_id}/tags/action其中,projectId为资源空间id,server_id为云服务器ID路径参数:请求头Content-Type:application/jsonX-Auth-Token:x-xxxxxxxxxxx请求体(注:key的格式为"key.value",value固定填写""(空字符串)。如不按照此格式填写,该tag不会显示在ManageOne运营面虚拟机详情的标签页中。){  "action" : "create",  "tags" : [ {    "key" : "管理员.zhangsan",    "value" : "" }]}响应示例:无状态码:204-成功效果展示:其他接口:1.删除弹性云服务器指定标签注:使用该接口给云服务器添加tag,该tag不会立即应用在ManageOne运营面“资源-云资源列表”的弹性云服务器列表中,需要手动点击“同步资源”或等待自动同步(默认为02:00)后才会删除该标签。URLPUT https://{ECS北向接口域名}/v1/{projectId}/cloudservers/{server_id}/tags/action其中,projectId为资源空间id,server_id为云服务器ID路径参数:请求头Content-Type:application/jsonX-Auth-Token:x-xxxxxxxxxxx请求体(注:key的格式为"key.value",value固定填写""(空字符串)。如不按照此格式填写,该tag不会显示在ManageOne运营面虚拟机详情的标签页中。){  "action" : "delete",  "tags" : [ {    "key" : "管理员.zhangsan",    "value" : "" }]}响应示例:无状态码:204-成功2.查询指定弹性云服务器标签URLPUT https://{ECS北向接口域名}/v1/{projectId}/cloudservers/{server_id}/tags其中,projectId为资源空间id,server_id为云服务器ID路径参数:请求头Content-Type:application/jsonAccept:application/jsonX-Auth-Token:x-xxxxxxxxxxx请求体:无响应示例{    "tags": [       {            "key": "管理员.zhangsan",            "value": ""       }   ]}状态码:200-成功 
  • [ManageOne二...] 【华为云Stack ManageOne运营侧北向对接指导】通过API管理用户AK/SK
    1 AK/SK介绍AK/SK(Access Key ID/Secret Access Key),即访问密钥,调用API接口的身份凭证,不能登录控制台。访问密钥中具有验证身份的签名,通过加密签名验证可以确保机密性、完整性和请求双方身份的正确性。使用AK/SK调用API的指导,请参考:cid:link_0注:并非所有接口都支持AK/SK调用方式,具体请参考对应接口文档。2 约束条件本文适用于ManageOne 8.0.0及以上版本每个用户最多只能创建2个AK/SKSK只在第一次创建的时候可见,如果不慎丢失,需要删除原AK/SK后再重新创建用户只能管理自己的AK/SK,管理员用户无法管理其他用户的AK/SK3 管理AK/SK3.1 准备工作正式对接前,请参考如下步骤,获取对应的IP、用户:参考运营侧准备工作帖,获取对接所需要接口文档(主要参考,ManageOne运营面API参考)、运营侧北向接口对外域名:https://bbs.huaweicloud.com/forum/thread-41849-1-1.html联系项目中,华为交付工程师,获取可调用API的ManageOne账号、密码。3.2 获取管理员tokenURLPOST https://{IAM对外访问域名}/v3/auth/tokens请求头:Accept:application/jsonContent-Type:application/json;charset=UTF-8请求体:(注:运营管理员的domain name固定为mo_bss_admin,VDC管理员的domain name为租户名。){ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "domain": { "name": "租户名" }, "name": "用户名", "password": "XXXXXX" } } }, "scope": { "domain": { "name": "租户名" } } }}用户名和租户名可参考下图获取:curl命令参考curl -k -X POST "https://{IAM对外访问域名}/v3/auth/tokens" -H "Content-Type: application/json" -d '{ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "domain": { "name": "租户名" }, "name": "用户名", "password": "XXXXXX" } } }, "scope": { "domain": { "name": "租户名" } } }}'返回的token在响应头中,示例如下:HTTP/1.1 201 CreatedContent-Type: application/json; charset=utf-8Connection: keep-aliveX-Subject-Token: MIIECwYxxxxxxxxxxxxxxxxxxSQ3G2RAj89N+t9GECHGnnGUgkKj7vMesUZ2jEW6EiVYA==响应体示例如下:{ "token": { "expires_at": "2026-06-02T11:53:08.262000Z", "methods": [ "password" ], "catalog": [], "domain": { "name": "gsyh", "id": "93dd703146c44bbc86cd8b4e35020b2d" }, "roles": [.............], "issued_at": "2026-06-01T11:53:08.262000Z", "user": { "domain": { "name": "gsyh", "id": "93dd703146c44bbc86cd8b4e35020b2d" }, "name": "test-user", "id": "056b909a06ca4ee395b1f72fe4cdd4a2" } }}X-Subject-Token的值即为我们所需要的token,响应体的token.user.id为该用户的user_id。3.3 创建AK/SKURLPOST https://{SC北向接口域名}/rest/v3.0/aks/{user_id}其中,user_id为用户ID,可参考3.2章节获取请求头Content-Type:application/jsonX-Auth-Token:x-xxxxxxxxxxx请求体:无(不需要请求体)curl命令参考curl -k -X POST "https://{SC北向接口域名}/rest/v3.0/aks/{user_id}" -H "Content-Type: application/json" -H "X-Auth-Token: MIIFCwYJKoZIh......"响应体示例{ "credential": { "expires_at": "2027-05-27T12:12:52.661000Z", "access": "QYESIA8NBCYDL7JJMxxx", "create_time": "2026-06-01T12:12:52.661000Z", "user_id": "056b909a06ca4ee395b1f72fe4cdd4a2", "secret": "aZ22MxQCxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }} 3.4 查询AK/SK列表URLGET https://{SC北向接口域名}/rest/v3.0/aks/{user_id}其中,user_id为用户ID,可参考3.2章节获取请求头Content-Type:application/jsonX-Auth-Token:x-xxxxxxxxxxx请求体:无 curl -k -X GET "https://{SC北向接口域名}/rest/v3.0/aks/{user_id}" -H "Content-Type: application/json" -H "X-Auth-Token: MIIFCwYJKoZIh......"响应体示例{ "credentials": [ { "expires_at": "2027-05-27T12:12:52.766000Z", "access": "QYESIA8NBCYDL7JJMxxx", "create_time": "2026-06-01T12:12:52.661000Z", "user_id": "056b909a06ca4ee395b1f72fe4cdd4a2", "active": "Active", "finish": true, "id": "696b93f1e2f6b940849d4315bfb0ed3f78ca468bc08068eec32c069f39e0db35", "down_times": "0", "region_ids": [ "sa-fb-1", "sa-fb-2" ] } ]}3.5 删除指定AK/SKURLPOST https://{SC北向接口域名}/rest/v3.0/delete-ak请求头Content-Type:application/jsonX-Auth-Token:x-xxxxxxxxxxx请求体:{ "user_id": "056b909a06ca4ee395b1f72fe4cdd4a2", "id": "696b93f1e2f6b940849d4315bfb0ed3f78ca468bc08068eec32c069f39e0db35"}其中,user_id为用户ID,可参考3.2章节获取。id为AK/SK的id,参考3.4章节获取。curl命令参考curl -k -X POST "https://{SC北向接口域名}/rest/v3.0/delete-ak" -H "Content-Type: application/json" -H "X-Auth-Token: MIIFCwYJKoZIh......" -d '{ "user_id": "xxxxxx", "id": "xxxxx"}'响应体示例{ "delete_result": true} 
  • 从"续写机器"到"智能助手":一文讲透指令微调背后的魔法
    为什么大模型能写诗,却听不懂人话如果你曾经和早期的大语言模型有过深入的对话,你可能会有这样的体验:模型写出来的文章确实像模像样,句子通顺、逻辑清晰,但你让它"帮我总结这段内容",它却我行我素地续写下去;你让它"用中文回答",它可能还是用英文侃侃而谈。这种"我说我的,它做它的"的割裂感,曾经是大模型应用的普遍痛点。问题出在哪里?答案是:早期的语言模型本质上是一个"续写机器"。它的训练目标很简单——预测下一个最可能出现的token。至于用户到底想要什么、任务的具体要求是什么,它并不关心。这种"自我中心"的生成模式,使得模型在开放域对话中表现出色,但在面对明确的任务指令时,却常常"听不懂人话"。指令微调(Instruction Fine-tuning)的出现,正是为了解决这个根本性的问题。它的核心目标是:让模型从"自我中心的续写者"转变为"用户导向的助手"。经过指令微调的模型,不仅能够生成流畅的文本,更能够理解用户的意图,按照特定的要求完成任务。本文将从原理到实践,深入解析指令微调的技术内涵,帮助你理解这个关键技术为什么能够彻底改变大模型与人类的交互方式。预训练与指令微调:两个阶段的不同使命要理解指令微调,首先需要把它放到大模型训练的完整流程中来看待。大模型的训练通常分为两个主要阶段:预训练(Pre-training)和指令微调(Instruction Fine-tuning,有时也称为SFT,即Supervised Fine-Tuning)。预训练阶段是模型"知识积累"的时期。在这个阶段,模型在海量的文本数据上进行自监督学习,目标是预测下一个token。通过在数万亿token上的训练,模型学会了语言的统计规律、语法结构、世界知识甚至简单的推理能力。这个阶段训练出来的模型,通常被称为"基础模型"(Base Model)或"语言模型"(Language Model)。然而,基础模型有一个显著的特点:它擅长续写,但不擅长对话。如果你给基础模型一个用户消息,它大概率会把这个消息当作文本的开头,然后继续续写下去,而不是把它当作需要回答的问题。这就是为什么早期的GPT-3在对话场景下表现并不理想的原因之一。指令微调阶段是模型"能力对齐"的时期。在这个阶段,模型在"指令-响应对"数据上进行有监督学习。每一训练样本由两部分组成:用户的指令(Instruction)和模型应该给出的响应(Response)。模型的学习目标是:根据给定的指令,生成符合要求的响应。这个过程可以类比为人类的"职业教育"。预训练阶段像是在接受通识教育,学习语言的基本运用;指令微调阶段则像是在接受职业技能培训,学习如何根据具体任务要求来运用自己的知识。指令数据的结构:让模型理解任务的语言指令微调的效果在很大程度上取决于训练数据的质量。那么,什么样的数据才能让模型学会"听懂人话"呢?一个标准的指令微调数据样本通常包含三个部分:指令(Instruction)、输入(Input)和输出(Output)。指令是告诉模型"要做什么"的部分。比如"请把以下英文翻译成中文"“请总结这段文章的主要内容”“请用李白的风格写一首七言绝句”。指令的设计至关重要——清晰的指令能够让模型明确任务目标,从而给出更符合预期的响应。输入是任务的具体内容。比如翻译任务中的英文句子、总结任务中的待处理文章、写作任务中的主题要求。输入的存在使得同一个指令模板可以泛化到不同的具体任务。输出是模型应该给出的答案。这是模型学习的目标,直接决定了模型在推理时会生成什么样的内容。一个经典的指令微调数据集格式是Alpaca格式,它将上述三部分组织成JSON结构,便于程序处理和模型读取。Alpaca格式的流行,得益于斯坦福大学发布的Alpaca模型——一个基于LLaMA模型进行指令微调后得到的对话模型,它的表现在当时震惊了很多研究者,也引发了开源社区对指令微调技术的广泛关注。构建高质量的指令数据是一门艺术。好的指令数据应该具备以下特点:任务类型多样,覆盖各种常见的用户需求;指令表述清晰,避免歧义和模糊;输入输出匹配正确,符合真实的任务场景;数据规模适中,既能支撑模型学习,又不至于引入过多噪声。损失计算:为什么模型只学习"答案"部分了解指令微调的技术细节,你会发现一个有趣的设计:模型的损失函数只计算输出部分的误差,而指令和输入部分则被"mask"掉,不参与梯度计算。这是为什么呢?这个设计背后有深刻的逻辑。在推理时,模型接收的是完整的上下文(包括指令和输入),但模型真正需要学习的是"如何根据指令和输入来生成输出"。如果把指令和输入部分也纳入损失计算,模型可能会"偷懒"——直接记忆输入的内容,而不是学习生成响应的能力。举个简单的例子。假设训练样本的指令是"请翻译:Hello World",输入是"Hello World",输出是"你好世界"。如果模型在训练时计算所有位置的损失,它可能会学会直接复制输入到输出的"捷径",因为这样在训练集上的损失会很低。但这显然不是我们想要的效果——模型应该学会翻译的能力,而不是死记硬背。通过只对输出部分计算损失,模型被迫学习"从指令和输入到输出"的映射关系,而不是简单的复制。这种设计使得训练后的模型能够处理它从未见过的输入,真正具备泛化的能力。超越监督:RLHF与对齐技术指令微调虽然能够让模型学会按照指令响应,但这种学习是"模仿式"的——模型只是学会了模仿训练数据中的响应模式。训练数据中的响应质量,直接决定了模型输出质量的上限。如果训练数据中存在一些"不够好"的回答,模型也会照搬这些回答。为了突破这个限制,OpenAI等机构引入了RLHF(Reinforcement Learning from Human Feedback,基于人类反馈的强化学习)技术。RLHF的核心思想是:不再仅仅让模型模仿人类给出的答案,而是让模型学习"什么样的答案是人类认为好的"。RLHF的训练过程通常包括三个步骤:首先,通过指令微调得到一个初始模型;然后,收集人类对不同输出的偏好比较数据,训练一个奖励模型(Reward Model);最后,使用强化学习算法(比如PPO)来优化初始模型,使其生成的输出能够获得更高的奖励分数。这个过程可以类比为"名师指导"。指令微调阶段像是在学习"标准答案",而RLHF阶段则是在学习"什么样的答案会被老师打高分"。通过这种方式,模型的输出能够更好地符合人类的偏好和价值观。近年来,RLHF的一些替代方案也逐渐流行起来,比如DPO(Direct Preference Optimization,直接偏好优化)。DPO的思路更加直接:不再训练奖励模型,而是直接在偏好数据上优化策略,简化了训练流程,效果也相当不错。指令微调的实践:从数据准备到模型训练了解了指令微调的原理后,我们来看一下实际的操作流程。第一步是数据准备。这是最耗时也最关键的步骤。你需要收集或构建高质量的指令数据,包括多样化的任务类型、清晰的指令描述、准确的输出响应。数据量通常在几千到几万条不等,具体取决于任务的复杂度和数据质量。第二步是数据格式化。将收集到的数据转换为模型可以处理的格式,通常是JSON或CSV格式。每条数据需要包含指令、输入(可选)、输出等字段,并进行必要的数据清洗和验证。第三步是模型配置。选择合适的基础模型,设置训练超参数(学习率、批次大小、训练轮数等),配置优化器和学习率调度器。这些配置对最终效果有显著影响,通常需要根据具体任务进行调整。第四步是训练执行。在配置好的环境下运行训练脚本,监控训练过程中的损失变化和资源使用情况。训练可能需要数小时到数天不等,取决于数据规模和硬件配置。第五步是效果评估。在测试集上评估训练后模型的效果,可以通过人工评测或自动指标(如BLEU、ROUGE)来衡量。如果效果不理想,需要分析原因并调整训练策略。整个过程中,环境配置和数据准备往往是最耗时的环节。对于没有深厚机器学习背景的团队来说,这可能是一个不小的挑战。结语:让AI真正"听懂"人类指令微调的意义,远不止于让模型学会几个任务。它代表了一种范式的转变:从"模型生成什么就是什么"到"模型应该按照用户的要求来生成"。这种转变,使得大模型从实验室的概念验证,走向了真正有用的生产力工具。随着指令微调技术的不断成熟,开源社区涌现出了大量高质量的指令微调模型和工具。LLaMA-Factory Online这样的平台,将复杂的微调流程封装成简单易用的界面,让没有专业背景的开发者也能快速上手。从数据上传到训练启动,再到模型部署,整个流程都可以在浏览器中完成,大大降低了指令微调的技术门槛。大模型与人类的交互,正在因为指令微调而变得更加自然和高效。曾经"听不懂人话"的续写机器,已经成长为能够理解指令、完成任务的专业助手。而这一切的背后,正是指令微调这项关键技术在默默发挥作用。如果你也希望让AI真正"听懂"你的需求,不妨从指令微调开始探索。技术的门槛在不断降低,机会永远留给愿意尝试的人。
  • [ManageOne二...] cloudpods v3.11多云平台如何纳管ManageOne 8.0.3管理的HCSO产品
    cloudpods v3.11添加云账号需要AK/SK认证但是ManageOne 8.0.3管理的HCSO下面的租户没有AK/SK形式的认证,没有像公有云一样的我的凭证ManageOne 8.0.3只有系统、代维、租户三种用户请问这个问题能解决吗?现在的困境是运营面的租户没有生成AK/SK的地方
  • [低码编排] 【服务构建器系列课程】如何通过服务构建器实现云内外协同
    【服务构建器系列课程】如何通过服务构建器实现云内外协同   ~~~视频课程敬请期待~~~ 
  • [低码编排] 【服务构建器系列课程】如何通过服务构建器将零散的IT能力标准化-高阶能力
    【服务构建器系列课程】如何通过服务构建器将零散的IT能力标准化-高阶能力    ~~~视频课程敬请期待~~~  
  • [低码编排] 【服务构建器系列课程】如何通过服务构建器将零散的IT能力标准化-基础能力
    【服务构建器系列课程】如何通过服务构建器将零散的IT能力标准化-基础能力    ~~~视频课程敬请期待~~~
  • [低码编排] 【服务构建器系列课程】手把手教你重编一个弹性云服务器
    【服务构建器系列课程】手把手教你重编一个弹性云服务器   ~~~视频课程敬请期待~~~  
  • [低码编排] 【服务构建器系列课程】服务构建器基础入门
    【服务构建器系列课程】服务构建器基础入门   ~~~视频课程敬请期待~~~
  • [集成开发] 【ManageOne运营侧】代维管理
    1 场景说明本贴所写指导适用于华为云Stack ManageOne 6.5.x、8.x版本。从ManageOne的租户模型中,我们了解到一级VDC管理员只能管理其所在的VDC,不能跨VDC管理,如果现网项目中有多个一级VDC,就需要第三方系统保存多个一级VDC管理员账号,存在安全风险且维护困难;此时,可以通过代维管理员,将多个一级VDC加入到指定的代维管理员的代维租户列表,这样第三方系统就可以使用一个账号管理多个一级VDC了;代维管理员实际上是通过置换token的方式,获得对一级VDC的管理权限,一旦代维管理员获得了对一级VDC管理权限,就如同一级VDC管理员一样,可以对一级VDC内的子级VDC、project、用户进行管理,也可以在指定的project中申请资源;若使用代维管理员账号在指定VDC中申请云资源,会占用指定VDC的资源配额;若使用代维管理员账号在指定VDC中删除云资源,会释放指定VDC中占用的资源配额。本帖主要给出如何使用代维管理员账号获得指定VDC、project的管理权限(即指定VDC、project的token),对VDC、project、用户和云资源的管理2 准备工作2.1获取调用接口的IP和域名参考帖子:cid:link_0,获取APIGateway的浮动IP,IAM对外访问域名和运营面对外访问域名。2.2 获取运营管理员账号请联系项目中的华为服务工程师,获取ManageOne运营管理员账号密码。2.3 创建代维管理员(已创建可跳过)6.5.1版本参考如下步骤创建代维管理员:步骤1 使用运营管理员登录ManageOne运营面,依次点击“租户”-->“租户代维”,打开代维租户管理界面,点击“创建代维管理员”,如下图所示:步骤2 在创建代维管理员界面,填写用户名,密码,然后选择需要代维的租户列表,并点击“创建”,如下图所示:8.0版本,请参考如下步骤创建代维管理员步骤1 使用运营管理员登录ManageOne运营面,依次点击“系统”-->“权限管理”-->"用户",打开用户管理界面,点击“创建用户”,如下图所示:步骤2 在创建用户界面中,选择“代维”,填写用户名,密码,然后选择需要代维的租户列表,并点击“创建”,如下图所示:3 接口调用步骤代维管理员置换指定租户、project下的token流程如下:步骤1 获取代维管理员的租户名使用代维管理员用户登录ManageOne运营面,进入“选择代维租户和资源集”页面后,按“F12”(以Chrome浏览器为例),选择“网络”页签,然后刷新页面,在控制台获取到的链接列表中,找到“me”,然后在右侧“预览”页签中,找到“domainName”即代为管理员的租户名。(注:此租户名通常为“audn_”开头,与代维用户代管的租户名不相同)。步骤2 获取代维管理员token接口URI:https://{IAM对外访问域名}/v3/auth/tokens请求方法:POST请求头:Content-Type:application/json;charset=UTF-8Accept:application/json; charset=UTF-8请求体:{ "auth": { "identity": { "methods": ["password"], "password": { "user": { "domain": { "name": "audn_1f7af046-6567-4ec6-93a3-470" }, "name": "XXXXXX", "password": "XXXXXX" } } }, "scope": { "domain": { "name": "audn_1f7af046-6567-4ec6-93a3-470" } } }}这里domain name的值为代维管理员所属的domain的名称,由步骤1获得name和password分别为代维管理员的用户名和密码响应头(Header)示例:Transfer-Encoding →chunked Connection →keep-alive X-Subject-Token →MIIEJSDVVDFASKoZIhvXXXXXXXXXXXXXXXXXXXXXXXXXXXXXcNAQcCZzTOuAZ8这里我们从响应头中获得了代维管理员的token(X-Subject-Token)。响应体(Body)示例:{    "token": {        "expires_at": "2022-06-24T02:49:18.402000Z",        "methods": [            "password"        ],        "catalog": [],        "domain": {            "name": "audn_1f7af046-6567-4ec6-93a3-470",            "id": "095543b046514bdbab988d4ad3089a28"        },        "roles": [            {                "name": "te_admin",                "id": "985dc76053f94685a15eafc3cd9f5da2"            },            {                "name": "mo_agency",                "id": "8299bcd6d9464c55a6bf963f0d8e678c"            },            {                "name": "te_agency",                "id": "fc85d26a9db847f293265c8c46e19a2c"            },            {                "name": "secu_admin",                "id": "d9920b033be744f1996d1e84281c94e8"            },            {                "name": "vdc_adm",                "id": "4d0cd24102504767b33fd55d915c55e8"            }        ],        "issued_at": "2022-06-23T02:49:18.402000Z",        "user": {            "domain": {                "name": "audn_1f7af046-6567-4ec6-93a3-470",                "id": "095543b046514bdbab988d4ad3089a28"            },            "name": "hzp_dw",            "id": "ef5dbdcce2a047bb8b10fb69507a5bd1"        }    }}取响应体中的token.user.id为代为管理员的用户id,此环境为ef5dbdcce2a047bb8b10fb69507a5bd1。步骤3 查询代维管理员代维的租户列表这里我们查询代维管理员详情,获得该代维管理员代维的租户列表,为后续置换token做准备。接口URI:https://{运营侧北向接口对外域名}/rest/vdc/v3.0/agencies/users/{agency_user_id}(此处agency_user_id为步骤2中获得的代维管理员的用户ID)请求方法:GET请求头(这里的token为步骤1中获取的运营管理员token):Content-Type:application/json;charset=UTF-8Accept:application/json; charset=UTF-8X-Auth-Token:MIIEMQYJKoZIhvXXXXXXXXXXXXXXXXXXXXXXXXXXXXXcNAQcCZzTOuXR9请求体:NULL响应体(示例):{    "limit_access": "false",    "lock_period": null,    "login_config": null,    "whiteList": [],    "user": {        "resource_tenant_id": "",        "level": null,        "roles": [            {                "id": "00000000-0000-0000-0000-000000000004",                "name": "agencyManager",                "display_name": "Agency Admin",                "user_role_type": null,                "description": "role_role_view_para_desc_content_agencyMananger_value"            }        ],        "trust_vdc_list": [            {                "name": "hzp_vdc",                "id": "16ea1a6e341d44e385fb3cb077c3b63f",                "description": "",                "domain_id": "16ea1a6e341d44e385fb3cb077c3b63f",                "domain_name": "hzp_vdc",                "agency_name": "aN_101e3806-761e-4264-ad60-cfca0",                "agency_id": "3d65090751424616b93ded9068394e8c"            },            {                "name": "hzp_vdc_2",                "id": "3dd28cba7a28416cbab8b62bfe0f9e02",                "description": "",                "domain_id": "3dd28cba7a28416cbab8b62bfe0f9e02",                "domain_name": "hzp_vdc_2",                "agency_name": "aN_5a1067a9-f94d-4bcf-a8be-f9693",                "agency_id": "c31134a891bd45feb97861c5d732d1e7"            }        ],        "description": "",        "areacode": null,        "createAt": null,        "enabled": "true",        "vdc_id": null,        "domain_id": "095543b046514bdbab988d4ad3089a28",        "domain_name": "audn_1f7af046-6567-4ec6-93a3-470",        "user_type": "0",        "display_name": null,        "phone": "",        "name": "hzp_dw",        "id": "ef5dbdcce2a047bb8b10fb69507a5bd1",        "email": ""    }}trust_vdc_list中所列出的清单即为该代维管理员所代维的租户列表,这里我们需要获取被代维的租户的名称(trust_vdc_list中name的值),租户的ID(trust_vdc_list中domain_id的值)和代维名称(trust_vdc_list中agency_name的值),为后续置换token做准备。 步骤4 查询指定租户中的project列表(可选)若您不需要拥有指定的project中资源的管理权限,这一步可以跳过。接口URI:https://{运营侧北向接口对外域名}/rest/vdc/v3.1/agencies/projects?domain_id={domain_id}(domain_id为被代维的租户的domain ID,由步骤3获取trust_vdc_list中domain_id的值)这里需要使用代维管理员的token,由步骤4获取请求方法:GET请求头:Content-Type:application/json;charset=UTF-8Accept:application/json; charset=UTF-8X-Auth-Token:MIIEJSDVVDFASKoZIhvXXXXXXXXXXXXXXXXXXXXXXXXXXXXXcNAQcCZzTOuAZ8请求体:NULL响应体(示例):{    "total": 3,    "projects": [        {            "id": "6934bce513274fd9b20955c3db9728f0",            "name": "solution-advance-1_hzp_project",            "description": "",            "domain_id": "16ea1a6e341d44e385fb3cb077c3b63f",            "enabled": true,            "tenant_id": "d86c3636-c637-4ee6-93ca-16c34b38b5c0",            "is_shared": false,            "tenant_name": "hzp_vdc",            "create_user_name": "bss_admin",            "create_user_id": "9d30a3d12bac4d879e9e9fb4274b76ed",            "regions": [                {                    "region_id": "solution-advance-1",                    "region_name": {                        "zh_cn": "东莞",                        "en_us": "东莞"                    },                    "region_status": "normal"                }            ]        },        {            "id": "630b7dd529344d56bf38c0a6ecab4fc6",            "name": "solution-advance-1_hzp_project2",            "description": "",            "domain_id": "16ea1a6e341d44e385fb3cb077c3b63f",            "enabled": true,            "tenant_id": "bf588c5a-8d05-49bd-a93d-e937286893e5",            "is_shared": false,            "tenant_name": "hzp_vdc2",            "create_user_name": "hzp_admin",            "create_user_id": "d0cc23141778469f82854c5269d3d9ee",            "regions": [                {                    "region_id": "solution-advance-1",                    "region_name": {                        "zh_cn": "东莞",                        "en_us": "东莞"                    },                    "region_status": "normal"                }            ]        },        {            "id": "51792d0ec2624c98b316fde97956531e",            "name": "solution-advance-2_hzp_project",            "description": "",            "domain_id": "16ea1a6e341d44e385fb3cb077c3b63f",            "enabled": true,            "tenant_id": "d86c3636-c637-4ee6-93ca-16c34b38b5c0",            "is_shared": false,            "tenant_name": "hzp_vdc",            "create_user_name": "bss_admin",            "create_user_id": "9d30a3d12bac4d879e9e9fb4274b76ed",            "regions": [                {                    "region_id": "solution-advance-2",                    "region_name": {                        "zh_cn": "华南",                        "en_us": "华南"                    },                    "region_status": "normal"                }            ]        }    ]} 此处我们获得了指定租户下的project列表,我们需要取到project的ID步骤5 获取代维管理员在指定租户、指定project中的token获取代维管理员在指定租户中的token,我们需要用到步骤4中获得的代为管理员的token,步骤3中获得的被代维租户的租户名和代维名称。请求URL: https://{IAM对外访问域名}/v3/auth/tokens请求方法:POST请求头(请求头中token为步骤4中获得的代维管理员token):Accept:application/json Content-Type:application/json;charset=UTF-8 X-Auth-Token:MIIEJSDVVDFASKoZIhvXXXXXXXXXXXXXXXXXXXXXXXXXXXXXcNAQcCZzTOuAZ8请求体样例1(指定租户、指定projet):{    "auth": {        "identity": {            "methods": ["assume_role"],            "assume_role": {                "domain_name": "hzp_vdc",               "xrole_name": "aN_101e3806-761e-4264-ad60-cfca0"            }        },        "scope": {            "project": {                "domain": {                    "name": "hzp_vdc"                    },               "name": "solution-advance-1_hzp_project"            }        }    }}使用此请求体置换得到的token,可以对指定的租户中的VDC、用户和project进行管理,还可以管理指定的project中的资源(scope中指定的project)。请求体样例2(指定租户,不指定project):{ "auth": { "identity": { "methods": ["assume_role"], "assume_role": { "domain_name": "hzp_vdc", "xrole_name": "aN_101e3806-761e-4264-ad60-cfca0", "restrict": { "roles": ["secu_admin", "te_admin", "vdc_owner", "vdc_adm", "tag_adm"] } } }, "scope": {   "domain": { "name": "hzp_vdc" } } }}使用此请求体置换得到的token,可以对指定的租户中的VDC、用户和project进行管理,不能管理资源。请求体中参数说明如下:methods:获取token的方法,此处我们采用置换token方式,故而取值为:assume_roledomain_name:被代维的租户的租户名,从步骤3获取的trust_vdc_list中name的值xrole_name:代为管理员在指定租户中的代维名称,从步骤3获取的trust_vdc_list中agency_name的值restrict:置换所得的token所拥有的权限,参考样例填写即可scope中的project.domain.name:与domain_name取值相同scope中的project.id:需要代维的project的ID,由步骤4的响应体中获取响应头示例:Content-Type →application/json; charset=utf-8 Transfer-Encoding →chunked Connection →keep-alive X-Subject-Token →MIIFCAYJKoZIhvcNAQcCoIIE+TCCBPUXXXXXgSe63UKRXxi5AxhHv-0U=从响应头中,我们获得了置换的token。如果需要在不同的project中管理资源,需要再次置换token,获得目标project的权限 
  • [集成开发] 【ManageOne运营侧】查询资源集
    1 VDC模型介绍请参考此链接:cid:link_02 约束条件本文适用于ManageOne 6.5.0及以上版本。3 场景说明本文档用于指导开发者获取租户和用户信息,便于第三方系统同步ManageOne的组织架构以及用户信息(如用户名、电话、email等)。4 租户信息同步目录:4.1 准备工作 4.2 获取管理员token 4.3 Project(资源集/项目) 1. 查询VDC关联的Project 2. 查询用户关联的Project4.1 准备工作正式对接前,请参考如下步骤,获取对应的IP、用户:参考运营侧准备工作帖,获取对接所需要接口文档(主要参考,ManageOne运营面API参考)、运营侧北向接口对外域名:https://bbs.huaweicloud.com/forum/thread-41849-1-1.html联系项目中,华为交付工程师,获取运营管理员账号、密码,或使用已创建的VDC管理员账号。运营管理员可管理所有租户,VDC管理员可管理本级和子级VDC。4.2 获取管理员token请求URL:https://{IAM对外访问域名}/v3/auth/tokens请求方法:POST请求头:Accept:application/jsonContent-Type:application/json;charset=UTF-8请求体:(注:运营管理员的domain name固定为mo_bss_admin,VDC管理员的domain name为租户名。){ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "domain": { "name": "mo_bss_admin" }, "name": "XXXX", "password": "XXXXXX" } } }, "scope": { "domain": { "name": "mo_bss_admin" } } }}返回的token在响应头中,示例如下:HTTP/1.1 201 CreatedContent-Type: application/json; charset=utf-8Connection: keep-aliveX-Subject-Token: MIIECwYxxxxxxxxxxxxxxxxxxSQ3G2RAj89N+t9GECHGnnGUgkKj7vMesUZ2jEW6EiVYA==X-Subject-Token的值即为我们所需要的token 4.3 Project(资源集/项目)1. 查询VDC关联的ProjectURLGET https://{SC北向接口域名}/rest/vdc/v3.1/vdcs/{vdc_id}/projects?start=0&limit=100其中,start为分页查询的起始位置,取值在0-2147483647之间,默认从0开始, 默认值为0。分页查询时,start需要为limit的整数倍;limit限制每页显示的条目数量,取值在1-100之间,默认值为10。可包含如下查询条件:(下表包含部分查询条件,全部查询条件请参考《ManageOne 运营面API参考.docx》中”查询指定VDC中资源集集合“接口。)参数类型描述inheritboolean是否查询VDC下所有可见VDC关联的资源集。默认值:falsenamestring模糊搜索所使用的名称字段,长度在1-64之间。sort_dirstring排序方向,取值范围asc,desc。默认值:asc请求头Content-Type:application/json X-Auth-Token:x-xxxxxxxxxxx响应体示例{    "total": 1,    "projects": [       {            "id": "6aa4d449d6fe4ea68c7cacb1a9803959",            "name": "cn-global-205_hzp_project",            "description": "",            "domain_id": "e1fcb3ba48a64cb2acb5894bcd6d892d",            "enabled": true,            "tenant_id": "d8e2a487-843b-4309-9d14-e845f593411f",            "is_shared": false,            "tenant_name": "hzp_vdc",            "create_user_id": "b9fd4029af7a4b71a085048b9bbe9072",            "create_user_name": "bss_admin",            "regions": [               {                    "region_id": "cn-global-205",                    "region_name": {                        "zh_cn": "西安",                        "en_us": "西安"                   },                    "region_type": null,                    "region_status": "normal"               }           ]       }   ]}其中,id为project Id,name为project名称,domain_id为project所在的租户Id,tenant_id为project所属的VDC Id;tenant_name为project所属的VDC名称;description为project描述;regions为project关联的region信息。2. 查询用户关联的ProjectURLGET https://{SC北向接口域名}/rest/vdc/v3.1/users/{user_id}/projects?start=0&limit=100其中,start为分页查询的起始位置,取值在0-2147483647之间,默认从0开始, 默认值为0。分页查询时,start需要为limit的整数倍;limit限制每页显示的条目数量,取值在1-100之间,默认值为10。可包含如下查询条件:(下表包含部分查询条件,全部查询条件请参考《ManageOne 运营面API参考.docx》中”查询指定VDC中资源集集合“接口。)参数类型描述inheritboolean是否查询VDC下所有可见VDC关联的资源集。默认值:falsenamestring模糊搜索所使用的名称字段,长度在1-64之间。sort_dirstring排序方向,取值范围asc,desc。默认值:asc请求头Content-Type:application/json X-Auth-Token:x-xxxxxxxxxxx响应体示例{    "total": 1,    "projects": [       {            "regions": [               {                    "region_id": "cn-global-205",                    "region_status": "normal",                    "region_name": {                        "zh_cn": "西安",                        "en_us": "西安"                   }               }           ],            "id": "6aa4d449d6fe4ea68c7cacb1a9803959",            "name": "cn-global-205_hzp_project",            "iam_project_name": "cn-global-205_hzp_project",            "display_name": "cn-global-205_hzp_project",            "description": "",            "enabled": true,            "domain_id": "e1fcb3ba48a64cb2acb5894bcd6d892d",            "tenant_id": "d8e2a487-843b-4309-9d14-e845f593411f",            "tenant_name": "hzp_vdc",            "level": "1",            "role_id": null,            "role_name": null,            "is_shared": "false"       }   ]}其中,id为project Id,name为project名称,domain_id为project所在的租户Id,tenant_id为project所属的VDC Id;tenant_name为project所属的VDC名称;description为project描述;regions为project关联的region信息。
  • [集成开发] 【ManageOne运营侧】用户查询
    1 VDC模型介绍请参考此链接:cid:link_02 约束条件本文适用于ManageOne 6.5.0及以上版本。3 场景说明本文档用于指导开发者获取租户和用户信息,便于第三方系统同步ManageOne的组织架构以及用户信息(如用户名、电话、email等)。4 租户信息同步目录:4.1 准备工作 4.2 获取管理员token 4.3 用户 1. 查询用户列表 2. 查询用户详情  4.1 准备工作正式对接前,请参考如下步骤,获取对应的IP、用户:参考运营侧准备工作帖,获取对接所需要接口文档(主要参考,ManageOne运营面API参考)、运营侧北向接口对外域名:https://bbs.huaweicloud.com/forum/thread-41849-1-1.html联系项目中,华为交付工程师,获取运营管理员账号、密码,或使用已创建的VDC管理员账号。运营管理员可管理所有租户,VDC管理员可管理本级和子级VDC。4.2 获取管理员token请求URL:https://{IAM对外访问域名}/v3/auth/tokens请求方法:POST请求头:Accept:application/jsonContent-Type:application/json;charset=UTF-8请求体:(注:运营管理员的domain name固定为mo_bss_admin,VDC管理员的domain name为租户名。){ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "domain": { "name": "mo_bss_admin" }, "name": "XXXX", "password": "XXXXXX" } } }, "scope": { "domain": { "name": "mo_bss_admin" } } }}返回的token在响应头中,示例如下:HTTP/1.1 201 CreatedContent-Type: application/json; charset=utf-8Connection: keep-aliveX-Subject-Token: MIIECwYxxxxxxxxxxxxxxxxxxSQ3G2RAj89N+t9GECHGnnGUgkKj7vMesUZ2jEW6EiVYA==X-Subject-Token的值即为我们所需要的token 4.3 用户1. 查询用户列表接口约束:运营管理员token可查询全量用户。VDC管理员仅可查询本VDC以及子级VDC的用户。URLGET https://{SC北向接口域名}/rest/vdc/v3.0/users?limit=100&start=0URL常用参数:(完整参数请参考《ManageOne 运营面API参考》)start:分页查询的起始位置,最小值:0 ,最大值:2147483647 ,默认值:0。可选。limit:限制每页显示的条目数量,最小值:1,最大值:100 ,默认值:10。可选。tenant_id:用户归属的VDC ID。可选。name:按照名称或显示名字段模糊搜索。长度:1到128个字符。可选。exact:是否精确匹配,枚举值:true和false,默认值:false。可选。请求头Content-Type:application/json X-Auth-Token:x-xxxxxxxxxxx响应体示例{    "total": 1,    "users": [       {            "enabled": "true",            "description": "",            "email": "",            "areacode": "",            "phone": "",            "vdc_name": "hzp_vdc",            "resource_tenant_id": null,            "level": null,            "roles": [               {                    "id": "00000000-0000-0000-0000-000000000001",                    "name": "vdcServiceManager",                    "display_name": "VDC Admin",                    "user_role_type": "0"               }           ],            "display_name": "",            "vdc_id": "8c3e288e-49a5-4eab-90a0-47916dac8589",            "domain_id": "9b01faf18f454c59a6fd157f0c82e556",            "domain_name": "hzp_vdc",            "user_type": "0",            "name": "hzp_admin",            "login_at": "2022-04-18 01:24:27.0",            "id": "b7f8bc098f4f4891b93eeff5dcdfc6b5",            "create_at": "2022-02-23 06:55:53.0"       }   ]}其中,id为用户Id,name为用户名称,domain_id为租户Id,vdc_id为所属的VDC Id。2. 查询用户详情接口约束:运营管理员token可查询全量用户。VDC管理员仅可查询本VDC以及子级VDC的用户。URLGET https://{SC北向接口域名}/rest/vdc/v3.0/users/{user_id}其中,user_id为用户id。请求头Content-Type:application/json X-Auth-Token:x-xxxxxxxxxxx响应体示例{    "limit_access": "false",    "lock_period": null,    "login_config": null,    "whiteList": null,    "user": {        "enabled": "true",        "description": "",        "email": "",        "areacode": null,        "phone": "",        "projects": [],        "ldap_id": null,        "level": "1",        "resource_tenant_id": null,        "roles": [           {                "id": "00000000-0000-0000-0000-000000000001",                "name": "vdcServiceManager",                "display_name": "VDC Admin",                "user_role_type": null,                "description": "role_role_view_para_desc_content_vdcServiceManager_value"           }       ],        "groups": [           {                "id": "8afb852688194e408f4edf4bf8c8a690",                "name": "SC_289yUXfSpzD",                "description": "",                "domain_id": "7111b7a59bff48fa983a6309fae3d7f7",                "role_name": null,                "vdc_name": "SC_289OHFUVQdL",                "role_id": null,                "vdc_id": "bc0366f0-3b60-486f-a88e-2a38266dd444"           },           {                "id": "cdafab1cfe2e4c129d4878b13e171333",                "name": "admin_bc0366f0-3b60-486f-a88e-2a38266dd444",                "description": "Default VDC administrator group, having the permission to manage services in the VDC that the user group belongs to and its lower-level VDCs.",                "domain_id": "7111b7a59bff48fa983a6309fae3d7f7",                "role_name": "vdcServiceManager",                "vdc_name": "SC_289OHFUVQdL",                "role_id": "00000000-0000-0000-0000-000000000001",                "vdc_id": "bc0366f0-3b60-486f-a88e-2a38266dd444"           }       ],        "display_name": null,        "second_verify": "false",        "vdc_id": "bc0366f0-3b60-486f-a88e-2a38266dd444",        "domain_id": "7111b7a59bff48fa983a6309fae3d7f7",        "domain_name": "SC_289OHFUVQdL",        "user_type": "0",        "name": "SC_289yUXfSpzD",        "login_at": null,        "id": "b76fc5607bff4ec094891c930cf3b0de",        "tag": "vdc",        "top_vdc_id": "bc0366f0-3b60-486f-a88e-2a38266dd444",        "ldap_name": null   },    "federation_regions": []}其中,id为用户Id,name为用户名称,domain_id为租户Id,vdc_id为所属的VDC Id。groups为用户绑定的用户组。 
  • [集成开发] 【ManageOne运营侧】租户查询
    1 VDC模型介绍请参考此链接:cid:link_02 约束条件本文适用于ManageOne 6.5.0及以上版本。3 场景说明本文档用于指导开发者获取租户和用户信息,便于第三方系统同步ManageOne的组织架构以及用户信息(如用户名、电话、email等)。4 租户信息同步目录:4.1 准备工作 4.2 获取管理员token 4.3 租户/VDC 1. 查询VDC列表 2. 查询VDC详情  4.1 准备工作正式对接前,请参考如下步骤,获取对应的IP、用户:参考运营侧准备工作帖,获取对接所需要接口文档(主要参考,ManageOne运营面API参考)、运营侧北向接口对外域名:https://bbs.huaweicloud.com/forum/thread-41849-1-1.html联系项目中,华为交付工程师,获取运营管理员账号、密码,或使用已创建的VDC管理员账号。运营管理员可管理所有租户,VDC管理员可管理本级和子级VDC。4.2 获取管理员token请求URL:https://{IAM对外访问域名}/v3/auth/tokens请求方法:POST请求头:Accept:application/jsonContent-Type:application/json;charset=UTF-8请求体:(注:运营管理员的domain name固定为mo_bss_admin,VDC管理员的domain name为租户名。){ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "domain": { "name": "mo_bss_admin" }, "name": "XXXX", "password": "XXXXXX" } } }, "scope": { "domain": { "name": "mo_bss_admin" } } }}返回的token在响应头中,示例如下:HTTP/1.1 201 CreatedContent-Type: application/json; charset=utf-8Connection: keep-aliveX-Subject-Token: MIIECwYxxxxxxxxxxxxxxxxxxSQ3G2RAj89N+t9GECHGnnGUgkKj7vMesUZ2jEW6EiVYA==X-Subject-Token的值即为我们所需要的token4.3 租户/VDC1. 查询VDC列表URLGET https://{SC北向接口域名}/rest/vdc/v3.0/vdcs?start=0&limit=1000其中,start为分页查询的起始位置,取值在0-2147483647之间,默认从0开始, 默认值为0。分页查询时,start需要为limit的整数倍;limit限制每页显示的条目数量,取值在1-1000之间,默认值为20。可包含如下查询条件:(下表包含部分查询条件,全部查询条件请参考《ManageOne 运营面API参考.docx》中”查询VDC列表“接口。)参数类型描述namestringVDC名称,长度在0-128之间。upper_vdc_idstring上级VDC id。domain_idstring所属租户id。levelint32VDC级别,取值在1-5之间。sort_keystring排序字段,支持按create_at、name字段排序。默认值:name。sort_dirstring排序方向,取值范围asc,desc。默认值:asc。is_domainstring是否为租户,1代表是,0代表不是。query_namestring过滤字段。取值范围domainName,upperVdcName,extraquery_valuestring过滤字段值。请求头Content-Type:application/json X-Auth-Token:x-xxxxxxxxxxx请求体:无响应体示例{ "total": 4, "vdcs": [ { "id": "d86c3636-c637-4ee6-93ca-16c34b38b5c0", "name": "hzp_vdc", "tag": "vdc", "description": null, "upper_vdc_id": "0", "upper_vdc_name": null, "top_vdc_id": "d86c3636-c637-4ee6-93ca-16c34b38b5c0", "extra": "{\"manager\":\"\",\"phone\":\"\",\"email\":\"\"}", "project_count": 2, "enabled": true, "domain_id": "16ea1a6e341d44e385fb3cb077c3b63f", "level": 1, "create_user_id": "9d30a3d12bac4d879e9e9fb4274b76ed", "create_user_name": "bss_admin", "create_at": 1650350228000, "utc_create_at": "2022-04-19 06:37:08.0", "domain_name": "hzp_vdc", "ldap_id": null, "third_id": null, "idp_name": null, "third_type": "0", "region_id": null, "enterprise_id": null, "az_id": null, "enterprise_project_id": null }, { "id": "bf588c5a-8d05-49bd-a93d-e937286893e5", "name": "hzp_vdc2", "tag": "vdc", "description": "", "upper_vdc_id": "d86c3636-c637-4ee6-93ca-16c34b38b5c0", "upper_vdc_name": "hzp_vdc", "top_vdc_id": "d86c3636-c637-4ee6-93ca-16c34b38b5c0", "extra": "{\"manager\":\"\",\"phone\":\"\",\"email\":\"\"}", "project_count": 1, "enabled": true, "domain_id": "16ea1a6e341d44e385fb3cb077c3b63f", "level": 2, "create_user_id": "d0cc23141778469f82854c5269d3d9ee", "create_user_name": "hzp_admin", "create_at": 1651040610000, "utc_create_at": "2022-04-27 06:23:30.0", "domain_name": "hzp_vdc", "ldap_id": null, "third_id": null, "idp_name": null, "third_type": "0", "region_id": null, "enterprise_id": null, "az_id": null, "enterprise_project_id": null } ]}响应体字段说明如下:id:VDC idname:vdc名称level:vdc级别,取值在1-5之间。description:描述domain_id:租户iddomain_name:租户名create_at/utc_create_at:创建时间upper_vdc_id:上级VDC idupper_vdc_name:上级VDC 名称project_count:project数量top_vdc_id:所在的一级VDC id。2. 查询VDC详情URLGET https://{SC北向接口域名}/rest/vdc/v3.0/vdcs/{vdc_id}请求头Content-Type:application/json X-Auth-Token:x-xxxxxxxxxxx请求体:无响应体示例{    "vdc": {        "id": "d86c3636-c637-4ee6-93ca-16c34b38b5c0",        "name": "hzp_vdc",        "tag": "vdc",        "description": null,        "upper_vdc_id": "0",        "upper_vdc_name": null,        "top_vdc_id": "d86c3636-c637-4ee6-93ca-16c34b38b5c0",        "extra": "{\"manager\":\"\",\"phone\":\"\",\"email\":\"\"}",        "ecs_used": 0.0,        "evs_used": 0.0,        "project_count": 0,        "enabled": true,        "domain_id": "16ea1a6e341d44e385fb3cb077c3b63f",        "level": 1,        "create_user_id": "9d30a3d12bac4d879e9e9fb4274b76ed",        "create_user_name": "bss_admin",        "create_at": 1650321428000,        "utc_create_at": null,        "domain_name": "hzp_vdc",        "ldap_id": null,        "process_id": null,        "regions": [           {                "region_id": "solution-advance-1",                "region_name": "{\"zh_cn\":\"东莞\",\"en_us\":\"东莞\"}",                "region_type": "private_cloud",                "cloud_infras": [                   {                        "cloud_infra_id": "FUSION_CLOUD_solution-advance-1",                        "cloud_infra_name": "OpenStack_solution-advance-1",                        "cloud_infra_status": "normal",                        "cloud_infra_type": "FUSION_CLOUD",                        "azs": [                           {                                "available_zone": "az0.dc0",                                "az_name": "华为技术有限公司",                                "az_status": "normal",                                "extend_param": "{\"cloud_location\":\"localcloud\"}"                           }                       ]                   }               ]           }       ],        "third_type": null,        "enterprise_id": null,        "mfa_status": "0",        "enterprise_project_id": null,        "cloud_federation_rate": {},        "cloud_federation_status": false   }}响应体字段说明如下:id:VDC idname:vdc名称level:vdc级别,取值在1-5之间。description:描述domain_id:租户iddomain_name:租户名create_at/utc_create_at:创建时间upper_vdc_id:上级VDC idupper_vdc_name:上级VDC 名称project_count:project数量top_vdc_id:所在的一级VDC id。region:区域详情。类型:对象数组。region包含以下字段:region_id:区域idregion_name:区域名称region_type:区域类型cloud_infras:资源池详情。对象类型。cloud_infras包含以下字段:cloud_infra_id:资源池idcloud_infra_name:资源池名称cloud_infra_status:资源池状态cloud_infra_type:资源池类型azs:可用分区详情。类型:对象数组。azs包含以下字段:available_zone:可用分区idaz_name:可用分区名称az_status:可用分区状态。extend_param:拓展参数。 
  • [集成开发] 【ManageOne运维侧】用户管理
    1 接口说明从ManageOne 8.2.1版本起,IAM会对OC(运维面)用户进行纳管,第三方可通过SC接口对OC用户进行管理。可用于以下场景:1.客户有自己的统一密码管理系统,需要对OC用户的密码进行管理2.MO已对接第三方统一认证中心,并且有从第三方平台单点登录至OC的需求,此时需要在OC创建相应的用户。2 接口约束1. 支持ManageOne 8.2.1及以上版本2. 当前仅运营管理员(mo_bss_admin)租户下的用户添加OC权限,VDC管理员、代维管理员等其他角色不支持添加OC权限。3 使用指导3.1 准备工作正式对接前,请参考如下步骤,获取对应的IP、用户:参考运营侧准备工作帖,获取对接所需要接口文档(主要参考,ManageOne运营面API参考)、运营侧北向接口对外域名:https://bbs.huaweicloud.com/forum/thread-41849-1-1.html联系项目中,华为交付工程师,获取运营管理员账号、密码.3.2 调用步骤步骤0:获取运营管理员token请求URL:https://{IAM对外访问域名}/v3/auth/tokens请求方法:POST请求头:Accept:application/jsonContent-Type:application/json;charset=UTF-8请求体:(注:运营管理员的domain name固定为mo_bss_admin,以下请求体只需要替换用户名和密码即可。){ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "domain": { "name": "mo_bss_admin" }, "name": "XXXX", "password": "XXXXXX" } } }, "scope": { "domain": { "name": "mo_bss_admin" } } }}返回的token在响应头中,示例如下:HTTP/1.1 201 CreatedContent-Type: application/json; charset=utf-8Connection: keep-aliveX-Subject-Token: MIIECwYxxxxxxxxxxxxxxxxxxSQ3G2RAj89N+t9GECHGnnGUgkKj7vMesUZ2jEW6EiVYA==X-Subject-Token的值即为我们所需要的token步骤1:查询运营管理员所属的VDCURLGET https://{SC北向接口域名}/rest/vdc/v3.0/vdcs?name=mo_bss_admin请求头Content-Type:application/json X-Auth-Token:x-xxxxxxxxxxx请求体:无响应体示例{ "total": 1, "vdcs": [ { "id": "8ff07323-defd-4188-b5f7-7c09feb76ced", "name": "mo_bss_admin", "tag": "system", "description": "mo_bss_admin", "upper_vdc_id": "0", "upper_vdc_name": null, "top_vdc_id": "8ff07323-defd-4188-b5f7-7c09feb76ced", "extra": null, "ecs_used": 0.0, "evs_used": 0.0, "project_count": 0, "enabled": true, "domain_id": "09d95085ad7048dbb157d07fa22e9cd1", "level": 1, "create_user_id": "83cef006b4104f7084fc6ec2095004d7", "create_user_name": "bss_admin", "create_at": 1678128580000, "utc_create_at": "2023-03-06 18:49:40.0", "domain_name": "mo_bss_admin", "ldap_id": null, "third_id": null, "idp_name": null, "third_type": "0", "region_id": null, "enterprise_id": null, "az_id": null, "enterprise_project_id": null } ]}取id字段为mo_bss_admin的VDC id。 步骤2:创建不带权限的运营管理员用户URLPOST https://{SC北向接口域名}/rest/vdc/v3.2/vdcs/{vdc_id}/users其中,vdc_id通过步骤1获取。请求头Content-Type:application/json X-Auth-Token:x-xxxxxxxxxxx请求体示例{    "user": {        "name": "testuser123",        "password": "tT123456#"   }}user对象中可包含以下参数:name:用户名,只能由英文字母(区分大小写)、数字和特殊字符@._-组成,不能以“op_svc”、“paas_op”或\开头,且不能以\结尾,且不能命名为admin,power_user或guest。长度范围是4到32位。必选。display_name:用户别名,由除">"和"<"之外的字符组成,0-128个字符。可选。password:密码,包含以下四种字符的三种: 大写字母、小写字母、数字、特殊字符(除<和>字符),且必须包含特殊字符,不能包含名字正序或逆序。长度:8到32个字符 。可选。description:描述,不能包含<或者>字符。长度:0到255个字符。可选。email:邮箱,符合邮箱格式,长度:0到64个字符。可选。areacode:国际区号,只能为数字,长度:0到10个字符。可选。phone:手机号,只能为数字,长度:0到32个字符。可选。enabled:用户状态,枚举值:true和false,默认为true。为false时,表示用户处于停用状态。可选。auth_type:用户类型。枚举值:'0','1','2','4',默认值为'0'。为'0'表示本地认证,为'1'表示SAML认证,为'2'表示LDAP认证,为'4'表示OC的API用户。可选。ldap_id:ldap ID。auth_type为1或2时需要填写此参数。可选。响应体示例{    "user": {        "id": "a674600f05ad4cb086d5a60c6847e920",        "domain_id": "e1fcb3ba48a64cb2acb5894bcd6d892d",        "domain_name": "hzp_vdc",        "name": "testuser123",        "display_name": null,        "enabled": true,        "description": null,        "vdc_id": "d8e2a487-843b-4309-9d14-e845f593411f",        "vdc_name": "hzp_vdc",        "ldap_id": null,        "create_at": 1657358889000,        "login_at": 0,        "auth_type": "0",        "group_count": null,        "user_type": null   }}其中,取id字段为用户Id。步骤3:查询OC的用户组列表(创建API用户可跳过)URLGET https://{SC北向接口域名}/rest/vdc/v3.2/vdcs/{vdc_id}/groups?start=0&limit=100其中,vdc_id从步骤1获取,start为分页查询的起始位置,取值在0-2147483647之间,默认从0开始, 默认值为0。分页查询时,start需要为limit的整数倍;limit限制每页显示的条目数量,取值在1-100之间,默认值为10。可包含如下查询条件:参数类型描述namestring按照名称或显示名字段模糊搜索。长度:1到64个字符。sort_keystring排序字段。枚举值:name。默认值为name。sort_dirstring排序方向。枚举值:desc 和asc,默认值:asc。请求头Content-Type:application/json X-Auth-Token:x-xxxxxxxxxxx响应体示例{ "total": 6, "groups": [ { "domain_id": "09d95085ad7048dbb157d07fa22e9cd1", "domain_name": "mo_bss_admin", "vdc_id": "8ff07323-defd-4188-b5f7-7c09feb76ced", "vdc_name": "mo_bss_admin", "id": "279b2ca362cb4a3d99077eef7a386877", "name": "Administrators", "description": "Administrators", "create_at": 1678185136000, "type": "default", "tag": "all" }, { "domain_id": "09d95085ad7048dbb157d07fa22e9cd1", "domain_name": "mo_bss_admin", "vdc_id": "8ff07323-defd-4188-b5f7-7c09feb76ced", "vdc_name": "mo_bss_admin", "id": "e9dc8c8a27d34029aafd8f5fd432b795", "name": "AuditManagers", "description": "AuditManagers", "create_at": 1678185135000, "type": "default", "tag": "all" }, { "domain_id": "09d95085ad7048dbb157d07fa22e9cd1", "domain_name": "mo_bss_admin", "vdc_id": "8ff07323-defd-4188-b5f7-7c09feb76ced", "vdc_name": "mo_bss_admin", "id": "c11519130ea14e9dbb17e1f8ea42fd9d", "name": "NorthUserGroup", "description": "NorthUserGroup", "create_at": 1678185136000, "type": "default", "tag": "sys_adm" }, { "domain_id": "09d95085ad7048dbb157d07fa22e9cd1", "domain_name": "mo_bss_admin", "vdc_id": "8ff07323-defd-4188-b5f7-7c09feb76ced", "vdc_name": "mo_bss_admin", "id": "d30066372a8f40148d9406a7e94d76d7", "name": "ReadOnlyUserGroup", "description": "ReadOnlyUserGroup", "create_at": 1678185136000, "type": "default", "tag": "sys_adm" }, { "domain_id": "09d95085ad7048dbb157d07fa22e9cd1", "domain_name": "mo_bss_admin", "vdc_id": "8ff07323-defd-4188-b5f7-7c09feb76ced", "vdc_name": "mo_bss_admin", "id": "ec23408b124a4f0eb7fe1af69c8261f3", "name": "SecurityAdministrators", "description": "SecurityAdministrators", "create_at": 1678185135000, "type": "default", "tag": "all" }, { "domain_id": "09d95085ad7048dbb157d07fa22e9cd1", "domain_name": "mo_bss_admin", "vdc_id": "8ff07323-defd-4188-b5f7-7c09feb76ced", "vdc_name": "mo_bss_admin", "id": "417f9669e6e246ad9904283b45b508c3", "name": "admin_09d95085ad7048dbb157d07fa22e9cd1", "description": "admin_09d95085ad7048dbb157d07fa22e9cd1 description", "create_at": 1678128577000, "type": "default", "tag": "all" } ]}此处,我们根据“name”字段,过滤得到我们需要的用户组的ID。例如,根据“管理员”用户组的name“Administrators”,可查找到其对应的id为“279b2ca362cb4a3d99077eef7a386877”。ManageOne预置的OC角色请参考下表:角色接口名称(name)说明管理员Administrators拥有除“用户管理”、“查询安全日志”、“查看在线用户”和“查询个人安全日志”之外的所有权限。安全管理员组SecurityAdministrators拥有“用户管理”、“License管理”、“密码管理”、“查看在线用户”、“查询安全日志”和“更新ACL策略”的权限。安全审计员AuditManagers拥有所有日志的查询和管理权限,包括“系统管理 > 日志管理”的权限以及统一日志的“查询权限”和“管理权限”。只读用户组ReadOnlyUserGroup拥有界面查看权限,不具有操作权限。步骤4:将用户加入指定用户组(创建API用户可跳过)URLPUT https://{SC北向接口域名}/rest/vdc/v3.2/groups/{group_id}/users/{user_id}其中,user_id从步骤2获取,group_id通过步骤3获取。请求头Content-Type:application/json X-Auth-Token:x-xxxxxxxxxxx请求体:无状态码:204(成功)响应体:无至此,拥有OC操作权限的用户就创建完成了。
总条数:273 到第
上滑加载中