• 沒有找到結果。

获取CBH实例列表_云堡垒机 CBH_API参考_API说明_华为云

N/A
N/A
Protected

Academic year: 2022

Share "获取CBH实例列表_云堡垒机 CBH_API参考_API说明_华为云"

Copied!
20
0
0

加載中.... (立即查看全文)

全文

(1)

云堡垒机

接口参考

文档版本 02

发布日期 2021-12-27

(2)

版权所有 © 华为技术有限公司 2021。 保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传 播。

商标声明

和其他华为商标均为华为技术有限公司的商标。

本文档提及的其他所有商标或注册商标,由各自的所有人拥有。

注意

您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或 特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或暗示的声 明或保证。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文 档中的所有陈述、信息和建议不构成任何明示或暗示的担保。

华为技术有限公司

地址: 深圳市龙岗区坂田华为总部办公楼 邮编:518129

网址:

https://www.huawei.com

客户服务邮箱:

[email protected]

客户服务电话:4008302118

(3)

目 录

1 使用前必读... 1

1.1 概述... 1

1.2 调用说明...1

1.3 终端节点...1

1.4 基本概念...1

1.5 API 版本选择建议... 2

2 如何调用 API...3

2.1 构造请求...3

2.2 认证鉴权...5

2.3 返回结果...7

3 API 说明... 9

3.1 获取 CBH 实例列表... 9

A 附录... 14

A.1 状态码... 14

A.2 错误码... 14

A.3 获取项目 ID... 15

B 修订记录... 17

接口参考 目 录

(4)

1 使用前必读

1.1 概述

欢迎使用云堡垒机(Cloud Bastion Host,CBH),云堡垒机是华为云的一款4A统一 安全管控平台,为企业提供集中的帐号(Account)、授权(Authorization)、认证

(Authentication)和审计(Audit)管理服务。

在调用云堡垒机API之前,请确保已经充分了解云堡垒机相关概念,详细信息请参见产

品介绍。

1.2 调用说明

云堡垒机服务提供了REST(Representational State Transfer)风格API,支持您通过 HTTPS请求调用,调用方法请参见如何调用API。

1.3 终端节点

终端节点(Endpoint)即调用API的请求地址,不同服务不同区域的终端节点不同,您 可以从地区和终端节点中查询服务的终端节点。

CBH的终端节点如表1-1所示。

1-1 云堡垒机的终端节点

区域名称 区域 终端节点(Endpoint) 协议类型 华北-北京

cn-north-4 cbh.cn-

north-4.myhuaweicloud.com HTTPS

1.4 基本概念

● 帐号

用户注册时的帐号,帐号对其所拥有的资源及云服务具有完全的访问权限,可以 重置用户密码、分配用户权限等。由于帐号是付费主体,为了确保帐号安全,建

(5)

议您不要直接使用帐号进行日常管理工作,而是创建用户并使用他们进行日常管 理工作。

● 用户

由帐号在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 项目隔离模型

1.5 API 版本选择建议

CBH仅提供了V1版本的API,供您使用。

接口参考 1 使用前必读

(6)

2 如何调用 API

2.1 构造请求

本节介绍如何构造REST API的请求,并以调用IAM服务的获取用户Token说明如何调 用API,该API获取用户的Token,Token可以用于调用其他API时鉴权。

您还可以通过这个视频教程了解如何构造请求调用API:https://

bbs.huaweicloud.com/videos/102987。

请求 URI

请求URI由如下部分组成。

{URI-scheme} :// {Endpoint} / {resource-path} ? {query-string}

尽管请求URI包含在请求消息头中,但大多数语言或框架都要求您从请求消息中单独传 递它,所以在此单独强调。

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:

查询参数,是可选部分,并不是每个API都有查询参数。查询参数前面需要带一个

“?”,形式为“参数名=参数取值”,例如“limit=10”,表示查询不超过10条 数据。

例如您需要获取IAM在“华北-北京一”区域的Token,则需使用“华北-北京一”区域 的Endpoint(iam.cn-north-1.myhuaweicloud.com),并在获取用户Token的URI部 分找到resource-path(/v3/auth/tokens),拼接起来如下所示。

(7)

https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens

2-1 URI 示意图

说明

为查看方便,在每个具体API的URI部分,只给出resource-path部分,并将请求方法写在一起。

这是因为URI-scheme都是HTTPS,同一个服务的Endpoint在同一个区域也相同,所以简洁起见 将这两部分省略。

请求方法

HTTP请求方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。

GET:请求服务器返回指定资源。

PUT:请求服务器更新指定资源。

POST:请求服务器新增资源或执行特殊操作。

DELETE:请求服务器删除指定资源,如删除对象等。

HEAD:请求服务器资源头部。

PATCH:请求服务器更新资源的部分内容。当资源不存在的时候,PATCH可能会 去创建一个新的资源。

在获取用户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方式认证时,必须填充该字 段。用户Token也就是调用获取用户Token接口的响应值,该接口是唯一不需要认 证的接口。

说明

API同时支持使用AK/SK认证,AK/SK认证是使用SDK对请求进行签名,签名过程会自动往 请求中添加Authorization(签名认证信息)和X-Sdk-Date(请求发送的时间)请求头。

AK/SK认证的详细说明请参见AK/SK认证。

对于获取用户Token接口,由于不需要认证,所以只添加“Content-Type”即可,添 加消息头后的请求如下所示。

接口参考 2 如何调用 API

(8)

POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json

请求消息体

请求消息体通常以结构化格式发出,与请求消息头中Content-type对应,传递除请求 消息头之外的内容。若请求消息体中参数支持中文,则中文字符必须为UTF-8编码。

每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消 息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根 据具体接口而定。

对于获取用户Token接口,您可以从接口的请求部分看到所需的请求参数及参数说 明。将消息体加入后的请求如下所示,加粗的斜体字段需要根据实际值填写,其中

username

为用户名,

domainname

为用户所属的账号名称,

********

为用户登录密 码,

xxxxxxxxxxxxxxxxxx

为project的名称,如“cn-north-1”,您可以从地区和终端

节点获取,对应地区和终端节点页面的“区域”字段的值。

说明

scope参数定义了Token的作用域,下面示例中获取的Token仅能访问project下的资源。您还可 以设置Token作用域为某个账号下所有资源或账号的某个project下的资源,详细定义请参见获取 用户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": "domainname"

} } } }, "scope": { "project": {

"name": "xxxxxxxxxxxxxxxxxx"

} } } }

到这里为止这个请求需要的内容就具备齐全了,您可以使用curl、Postman或直接编 写代码等方式发送请求调用API。对于获取用户Token接口,返回的响应消息头中“x- subject-token”就是需要获取的用户Token。有了Token之后,您就可以使用Token认 证调用其他API。

2.2 认证鉴权

调用接口有如下两种认证方式,您可以选择其中一种进行认证鉴权。

● Token认证:通过Token认证调用请求。

(9)

● AK/SK认证:通过AK(Access Key ID)/SK(Secret Access Key)加密调用请求。

推荐使用AK/SK认证,其安全性比Token认证要高。

Token 认证

说明

Token的有效期为24小时,需要使用一个Token鉴权时,可以先缓存起来,避免频繁调用。

Token在计算机系统中代表令牌(临时)的意思,拥有Token就代表拥有某种权限。

Token认证就是在调用API的时候将Token加到请求消息头,从而通过身份认证,获得 操作API的权限。

Token可通过调用获取用户Token接口获取,调用本服务API需要project级别的 Token,即调用获取用户Token接口时,请求body中auth.scope的取值需要选择 project,如下所示。

{ "auth": { "identity": { "methods": [ "password"

],

"password": { "user": {

"name": "username", "password": "********", "domain": {

"name": "domainname"

} } } }, "scope": { "project": {

"name": "xxxxxxxx"

} } } }

获取Token后,再调用其他接口时,您需要在请求消息头中添加“X-Auth-Token”,

其值即为Token。例如Token值为“ABCDEFJ....”,则调用接口时将“X-Auth-Token:

ABCDEFJ....”加到请求消息头即可,如下所示。

Content-Type: application/json X-Auth-Token: ABCDEFJ....

您还可以通过这个视频教程了解如何使用Token认证:https://

bbs.huaweicloud.com/videos/101333。

AK/SK 认证

说明

AK/SK签名认证方式仅支持消息体大小12MB以内,12MB以上的请求请使用Token认证。

AK/SK认证就是使用AK/SK对请求进行签名,在请求时将签名信息添加到消息头,从而 通过身份认证。

● AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥 ID和私有访问密钥一起使用,对请求进行加密签名。

接口参考 2 如何调用 API

(10)

● SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签名,

可标识发送方,并防止请求被修改。

使用AK/SK认证时,您可以基于签名算法使用AK/SK对请求进行签名,也可以使用专门 的签名SDK对请求进行签名。详细的签名方法和SDK使用方法请参见API签名指南。

须知

签名SDK只提供签名功能,与服务提供的SDK不同,使用时请注意。

2.3 返回结果

状态码

请求发送以后,您会收到响应,包含状态码、响应消息头和消息体。

状态码是一组从1xx到5xx的数字代码,状态码表示了请求响应的状态,完整的状态码 列表请参见状态码。

对于获取用户Token接口,如果调用后返回状态码为“201”,则表示请求成功。

响应消息头

对应请求消息头,响应同样也有消息头,如“Content-type”。

对于获取用户Token接口,返回如图2-2所示的消息头,其中“x-subject-token”就是 需要获取的用户Token。有了Token之后,您就可以使用Token认证调用其他API。

2-2 获取用户 Token 响应消息头

(11)

响应消息体(可选)

响应消息体通常以结构化格式返回,与响应消息头中Content-type对应,传递除响应 消息头之外的内容。

对于获取用户Token接口,返回如下消息体。为篇幅起见,这里只展示部分内容。

{ "token": {

"expires_at": "2019-02-13T06:52:13.855000Z", "methods": [

"password"

],

"catalog": [ {

"endpoints": [ {

"region_id": "xxxxxxxx", ...

当接口调用出错时,会返回错误码及错误信息说明,错误响应的Body体格式如下所 示。

{ "error": {

"message": "The request you have made requires authentication.", "title": "Unauthorized"

} }

其中,error_code表示错误码,error_msg表示错误描述信息。

接口参考 2 如何调用 API

(12)

3 API 说明

3.1 获取 CBH 实例列表

功能介绍

获取CBH实例列表

调试

您可以在API Explorer中调试该接口。

URI

GET /v1/{project_id}/cbs/instance/list

3-1 路径参数

参数 是否必选 参数类型 描述

project_id 是 String Tenant Project Id

请求参数

响应参数

状态码: 200

3-2 响应 Body 参数

参数 参数类型 描述

total Integer 实例总数

(13)

参数 参数类型 描述 quota_detail

QuotaDetail

object 当前租户CBH的配额信息 instance Array of

InstanceDeta il objects

实例列表

3-3 QuotaDetail

参数 参数类型 描述

zh_cn String 中文配额描述 en_us String 英文配额描述 remaining Integer 租户剩余配额数量

3-4 InstanceDetail

参数 参数类型 描述

publicip String 弹性ip exp_time String 过期时间 start_time String 开始时间 end_time String 结束时间 release_time String 释放时间 name String 实例名称 instance_id String 实例的server id private_ip String 实例私有ip

task_status String 实例当前的任务状态 status String 实例状态

created String 实例创建时间 region String 实例所在region zone String 实例所在可用区id availability_zo

ne_display String 实例所在可用区名称 vpc_id String 实例所在vpc的id subnet_id String 实例所在子网的id

接口参考 3 API 说明

(14)

参数 参数类型 描述 security_grou

p_id String 实例所属的安全组的id specification String 实例规格

update String 实例镜像是否可以升级 createinstance

_status String 在创建实例过程中的过程状态信息 fail_reason String 创建实例失败原因

instance_key String 实例ID order_id String 订单id

period_num String 租户购买的时长 resource_id String 实例的资源id bastion_type String 堡垒机类型

public_id String 实例绑定的弹性IP的id alter_permit String 前端是否显示扩容按钮 bastion_versio

n String 实例镜像当前版本号

new_bastion_

version String 实例镜像最新版本号 instance_statu

s String 实例状态

instance_desc

ription String 实例描述

状态码: 400

3-5 响应 Body 参数

参数 参数类型 描述

error_code String 错误码 error_descripti

on String 错误描述

状态码: 401

(15)

3-6 响应 Body 参数

参数 参数类型 描述

error_code String 错误码 error_descripti

on String 错误描述

状态码: 403

3-7 响应 Body 参数

参数 参数类型 描述

error_code String 错误码 error_descripti

on String 错误描述

状态码: 404

3-8 响应 Body 参数

参数 参数类型 描述

error_code String 错误码 error_descripti

on String 错误描述

请求示例

响应示例

状态码

状态码 描述

200 Cbh List Instance Success 400 Bad Request

401 Unauthorized

接口参考 3 API 说明

(16)

状态码 描述 403 Forbidden 404 Not Found

错误码

请参见错误码。

(17)

A 附录

A.1 状态码

状态码 编码 状态说明

200 OK 请求成功。

400 Bad Request 请求失败。

建议直接修改该请求,不要重试该请求。

401 Unauthorized 请求认证失败。

表明服务端指出客户端所提供的认证信息不正 确或非法。

403 Forbidden 请求被拒绝访问。

返回该状态码,表明请求能够到达服务端,且 服务端能够理解用户请求,但是拒绝做更多的 事情,因为该请求被设置为拒绝访问,建议直 接修改该请求,不要重试该请求。

404 NotFound 所请求的资源不存在。

建议直接修改该请求,不要重试该请求。

500 InternalServerErro

r 表明服务端能被请求访问到,但是不能理解用

户的请求。

A.2 错误码

当您调用API时,如果遇到“APIGW”开头的错误码,请参见API网关错误码进行处 理。

接口参考 A 附录

(18)

状态码 错误码 错误信息 描述 处理措施 400 CBH.

10020010 Request message param error.

请求消息体参 数错误!

请核对您的请求参 数。

401 CBH.

10020100 The IAM token is invalid.

无法通过IAM

校验! 请核对您的token 是否正确。

403 CBH.

10020002 Tenant has no

authority. 租户无权限! 该租户无权限,请 去IAM确认用户权 限。

500 CBH.

10020000 Unknown

error! 未知错误! 未知错误,请联系 华为技术人员处 理。

A.3 获取项目 ID

调用 API 获取项目 ID

项目ID可以通过调用查询指定条件下的项目信息API获取。

获取项目ID的接口为“GET https://{Endpoint}/v3/projects”,其中{Endpoint}为IAM 的终端节点,可以从地区和终端节点获取。接口的认证鉴权请参见认证鉴权。

响应示例如下,其中projects下的“id”即为项目ID。

{ "projects": [ {

"domain_id": "65382450e8f64ac0870cd180d14e684b", "is_domain": false,

"parent_id": "65382450e8f64ac0870cd180d14e684b", "name": "xxxxxxxx",

"description": "", "links": { "next": null, "previous": null,

"self": "https://www.example.com/v3/projects/a4a5d4098fb4474fa22cd05f897d6b99"

},

"id": "a4a5d4098fb4474fa22cd05f897d6b99", "enabled": true

} ], "links": { "next": null, "previous": null,

"self": "https://www.example.com/v3/projects"

} }

从控制台获取项目 ID

在调用接口的时候,部分URL中需要填入项目编号,所以需要获取到项目编号。项目 编号获取步骤如下:

(19)

1. 登录管理控制台。

2. 单击用户名,在下拉列表中单击“基本信息”。

3. 在基本信息页面单击“管理我的凭证”。

在“API凭证”页面的项目列表中查看项目ID。

A-1 查看项目 ID

接口参考 A 附录

(20)

B 修订记录

发布日期 修改说明

2021-12-27 第二次正式发布。

修改错误码描述信息。

2021-11-08 第一次正式发布。

數據

表 3-6 响应 Body 参数 参数 参数类型 描述 error_code String 错误码 error_descripti on String 错误描述 状态码: 403 表 3-7 响应 Body 参数 参数 参数类型 描述 error_code String 错误码 error_descripti on String 错误描述 状态码: 404 表 3-8 响应 Body 参数 参数 参数类型 描述 error_code String 错误码 error_descripti on String

參考文獻

相關文件

We further want to be able to embed our KK GUTs in string theory, as higher dimensional gauge theories are highly non-renormalisable.. This works beautifully in the heterotic

The principal chiral model has two conserved currents corresponding to the G × G symmetry of the action.. These currents are

introduction to continuum and matrix model formulation of non-critical string theory.. They typically describe strings in 1+0 or 1+1 dimensions with a

Hikami proposed a state integral model which gives a topological invariant for hyperbolic 3-manifold.. Saddle Point of

◆ Understand the time evolutions of the matrix model to reveal the time evolution of string/gravity. ◆ Study the GGE and consider the application to string and

It should be stressed that the four eigenvalues obtained here do not change even if we include other field outside KBc subalgebra or outside the dressed B 0 gauge, since such fields

„ „ The The extended nature extended nature of string theory introduces of string theory introduces additional degrees of freedom?. additional degrees of freedom localized

• No vector potential needed for gauge symmetry Vector potential is useful for