华为云用户手册

  • 请求参数 表2 请求参数 参数名称 类型 必选 说明 firewall_rule_id String 是 网络ACL规则唯一标识 insert_after String 否 insert_after参数表示已经和某个policy关联的rule,新的rule将会直接被插入到insert_after参数指定的rule后面。 如果insert_after和insert_before都被指定了,insert_after参数值将被忽略。 insert_before String 否 insert_before参数表示已经和某个policy关联的rule,新的firewall rule将会直接被插入到insert_ before参数指定的firewall rule前面。 如果insert_after和insert_before都被指定了,insert_after参数值将被忽略。
  • 前提条件 云服务器状态为“运行中”。 请确保安全组已开放登录端口,默认使用22端口,如需使用其他端口可登录云服务器后重新设置。 修改远程登录端口请参考修改远程登录端口。配置安全组规则请参考配置安全组规则。 如果在创建云服务器时未设置密码,请先重置密码后再登录云服务器。 使用CloudShell连接云服务器支持公网连接和私网连接两种方式。当使用CloudShell通过私网远程连接云服务器时,需要具有Security Administrator权限的用户进行服务授权。 若用户有Security Administrator权限,在首次使用时,会弹出如下授权页面,单击“同意授权”即可。 服务授权区域级生效,仅需在每个区域首次使用时执行一次,授权后,用户即可在当前区域使用。 图1 服务授权 若用户无Security Administrator权限,页面将提示“请添加Security Administrator管理员”,可以联系管理员(具有admin权限的用户)为该用户添加Security Administrator权限后重试。 图2 无权限 授权方式为: 创建用户组,并给用户组授权添加Security Administrator权限,详细操作请参考创建用户组并授权。 将用户添加到用户组中,详细操作请参考用户组添加用户。 使用CloudShell通过公网远程连接云服务器时,无需进行服务授权。
  • 约束与限制 变更规格时不支持修改网络类型。 Linux操作系统云服务器的系统盘和数据盘如果存在由多个物理卷组成的LVM逻辑卷或组建了RAID磁盘阵列,均不支持变更规格,否则可能会导致数据丢失。 擎天实例仅支持使用SCSI磁盘模式挂载磁盘,不支持使用VBD磁盘模式挂载磁盘。即磁盘标识为wwn。 支持将“KVM实例”变更为“擎天实例”,不支持将“擎天实例”变更为“KVM实例”。 不支持“XEN” 实例变更为“擎天实例”。
  • Windows操作系统安装CUDA工具包 以下操作以Windows Server 2016 Standard 64bit操作系统GPU实例安装CUDA 10.1为例。 登录云服务器。 在CUDA下载页面中,按照CUDA工具包下载地址中的对应的索引项在页面中进行选择。 图25 选择CUDA版本 选择完成后,页面会自动呈现出Windows Server 2016 Standard 64bit对应的CUDA 10.1的下载地址。 图26 Windows云服务器下载CUDA 单击“Download”下载CUDA工具包。 双击打开安装文件,单击“运行”安装CUDA工具包。 图27 Windows云服务器安装CUDA 选择安装地址,在“CUDA Setup Package”界面,单击“OK” 图28 选择CUDA安装路径 根据安装提示完成CUDA的安装。 图29 CUDA安装完成 检查CUDA是否安装成功。 打开cmd命令窗口,执行以下命令。 nvcc -V 如果回显信息中出现CUDA的版本信息,说明CUDA安装成功。 图30 CUDA安装成功
  • Linux操作系统安装CUDA工具包 以下操作以Ubuntu 16.04 64bit操作系统,GPU实例使用run包安装CUDA 10.1为例。 登录云服务器。 根据操作系统选择命令更新系统软件。 Ubuntu 更新软件安装源:apt-get -y update 安装必要程序:apt-get install gcc g++ make CentOS 更新软件安装源:yum -y update --exclude=kernel* --exclude=centos-release* --exclude=initscripts* 安装必要程序:yum install -y kernel-devel-`uname -r` gcc gcc-c++ 在CUDA下载页面中,按照Tesla驱动及CUDA工具包获取方式中的对应的索引项在页面中进行选择。 图16 选择CUDA的版本 选择完成后,页面会自动呈现出Ubuntu 16.04 64bit对应的CUDA 10.1的下载地址,复制下载地址。 图17 复制CUDA下载地址 在云服务器内部执行如下命令进行下载。 wget 复制的链接地址 例如:wget https://developer.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.105_418.39_linux.run 图18 Linux云服务器下载CUDA CUDA工具包下载完成后,按照NVIDIA官网安装指引进行安装。 按照如下图的NVIDIA官网的Installation Instructions进行安装。 图19 Linux云服务器安装CUDA 执行以下命令安装CUDA。 sh cuda_10.1.243_418.87.00_linux.run 在安装界面输入“accept”,回车进入下一步。 图20 安装CUDA_1 选择“Install”,回车进入安装过程。 图21 安装CUDA_2 图22 安装CUDA完成 执行以下命令进入/usr/local/cuda-10.1/samples/1_Utilities/deviceQuery 目录下。 cd /usr/local/cuda-10.1/samples/1_Utilities/deviceQuery 执行make命令,自动编译deviceQuery程序。 执行以下命令查看CUDA是否安装成功。 ./deviceQuery 如回显信息中有CUDA的版本信息证明CUDA安装成功。 图23 deviceQuery回显信息 执行以下命令查看CUDA的版本。 /usr/local/cuda/bin/nvcc -V 图24 查看CUDA的版本 执行以下命令启动持久模式。 sudo nvidia-smi -pm 1 启用持久模式设置可以优化Linux实例上GPU设备的性能。
  • 操作场景 GPU加速型云服务器,需要安装Tesla驱动和CUDA工具包以实现计算加速功能。 使用公共镜像创建的计算加速型(P系列)实例默认已安装特定版本的Tesla驱动。 使用私有镜像创建的GPU加速型云服务器,需在创建完成后安装Tesla驱动,否则无法实现计算加速功能。 本节操作介绍GPU云服务器安装Tesla驱动及CUDA工具包的操作步骤。 当前已支持使用自动化脚本安装GPU驱动,建议优先使用自动安装方式,脚本获取以及安装指导请参考(推荐)GPU加速型实例自动安装GPU驱动(Linux)和(推荐)GPU加速型实例自动安装GPU驱动(Windows)。 GPU虚拟化型实例,需要严格按照表1选择合适的驱动版本下载使用。
  • 安装须知 云服务器已绑定弹性公网IP。 云服务器未安装Tesla驱动以及CUDA工具包。 从NVIDIA官网下载CUDA工具包进行安装,通常会同时自动安装一个和CUDA版本匹配的Tesla驱动,免去用户单独安装Tesla驱动的步骤。但是对NVIDIA驱动版本有强制要求或依赖时,请务必先单独从NVIDIA官网下载并安装匹配的Tesla驱动,然后在再安装CUDA工具包。 如果云服务器已经安装了Tesla驱动,请检查当前驱动版本是否可用。如需安装新版本的驱动请卸载旧版本的Tesla驱动,避免因驱动程序冲突导致安装失败。 如果NVIDIA驱动版本与云服务器不兼容,会导致安装完成后驱动不显示,请参考T4 GPU设备显示异常进行处理。
  • Linux操作系统云服务器安装Tesla驱动 以下操作以Ubuntu 16.04 64bit操作系统,GPU实例安装CUDA 10.1对应的Tesla驱动为例。 Linux内核版本和驱动的版本存在兼容性关系。如果驱动安装失败,请检查驱动安装日志(安装日志通常位于/var/log/nvidia-installer.log)。 日志中如提示失败原因为驱动编译错误,例如 get_user_pages参数不匹配,说明当前内核版本与驱动版本不兼容,请选择合适的内核版本和驱动版本重新安装。建议内核版本与驱动版本发布时间不要相差过大。 登录云服务器。 根据操作系统选择命令更新系统软件。 Ubuntu 更新软件安装源:apt-get -y update 安装必要程序:apt-get install gcc g++ make CentOS 更新软件安装源:yum -y update --exclude=kernel* --exclude=centos-release* --exclude=initscripts* 安装必要程序:yum install -y kernel-devel-`uname -r` gcc gcc-c++ 下载NVIDIA驱动包。 单击NVIDIA驱动下载根据实例的类型,选择驱动版本。单击“SEARCH”。 图1 选择NVIDIA驱动 根据需求选择驱动版本,以下操作以选择Tesla 418.67为例。 图2 选择驱动版本 单击需要下载的驱动,进入“TESLA DRIVER FOR LINUX X64”界面,单击“DOWNLOAD”。 复制下载链接地址。 图3 复制下载链接地址 在云服务器内部执行如下命令进行下载。 wget 复制的链接地址 例如:wget http://us.download.nvidia.com/tesla/418.67/NVIDIA-Linux-x86_64-418.67.run 图4 获取安装包 执行以下命令安装驱动。 sh NVIDIA-Linux-x86_64-418.67.run (可选)如果执行驱动安装命令后出现如下提示信息,需要禁用nouveau驱动。 图5 禁用nouveau驱动 执行以下命令,查看是否安装Nouveau驱动。 lsmod | grep nouveau 如果回显信息中包含Nouveau驱动信息,说明Nouveau驱动已安装,则需要禁用Nouveau驱动,请执行步骤9.b。 如果回显信息没有Nouveau驱动信息,说明Nouveau驱动已被禁用,请执行步骤10。 执行如下命令编辑blacklist.conf文件。 如果没有“/etc/modprobe.d/blacklist.conf”文件,请新建一个。 vi /etc/modprobe.d/blacklist.conf 添加如下语句添加至文件结尾。 blacklist nouveauoptions nouveau modeset=0 执行以下命令,备份并新建一个initramfs。 Ubuntu系统: sudo update-initramfs -u CentOS系统: mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak dracut -v /boot/initramfs-$(uname -r).img $(uname -r) 执行以下命令,重启云服务器。 reboot 根据安装提示,连续三次选择“OK”。完成驱动的安装。 图6 NVIDIA驱动安装完成 执行命令设置systemd。 systemctl set-default multi-user.target 执行reboot,重启云服务器。 登录云服务器,执行nvidia-smi,如果回显信息中包含了已安装的驱动版本,说明驱动安装成功。 图7 查看NVIDIA驱动的版本
  • Windows操作系统云服务器安装Tesla驱动 以下操作以Windows Server 2016 Standard 64bit操作系统,GPU实例安装Tesla驱动为例。 登录云服务器。 下载NVIDIA驱动包。 单击NVIDIA驱动下载根据实例的类型,选择驱动版本。 图8 选择驱动类型(Windows) 根据需求选择驱动版本,本节操作以安装Tesla 425.25为例。 图9 选择驱动版本(Windows) 单击需要下载的驱动,进入“TESLA DRIVER FOR WINDOWS”界面,单击“DOWNLOAD”。 单击“Agree & Download”,下载安装包。 图10 下载NVIDIA驱动安装包 双击驱动安装驱动,单击“运行”。 图11 运行NVIDIA驱动安装程序 选择安装路径,单击“OK”。 图12 选择NVIDIA驱动安装路径 根据安装提示完成NVIDIA程序的安装。 图13 完成NVIDIA驱动的安装 重启云服务器。 检查驱动是否安装成功。 进入“设备管理器”,查看“显示适配器”。 图14 显示适配器 打开云服务器cmd窗口,执行以下命令: cd C:\Program Files\NVIDIA Corporation\NVSMI nvidia-smi 如果回显信息中包含了已安装的驱动版本,说明驱动安装成功。 图15 查看NVIDIA驱动安装版本
  • 前提条件 云服务器状态为“运行中”。 云服务器已经绑定弹性公网IP。 使用MSTSC方式通过内网登录云服务器时可以不绑定弹性公网IP,例如VPN、云专线等内网网络连通场景。 所在安全组入方向已开放3389端口。 使用的登录工具与待登录的云服务器之间网络连通。例如,默认的3389端口没有被防火墙屏蔽。 云服务器开启远程桌面协议RDP(Remote Desktop Protocol)。使用公共镜像创建的云服务器默认已打开RDP。打开RDP方法请参考开启远程桌面协议RDP。
  • 操作步骤 如果本地主机为Linux操作系统,您可以使用远程连接工具(例如rdesktop)连接Windows实例。 执行以下命令,检查云服务器是否安装rdesktop。 rdesktop 如果提示“command not found”说明未安装rdesktop。请参考rdesktop工具官方获取rdesktop安装包安装rdesktop。 输入以下命令登录云服务器。 rdesktop -u 用户名 -p 密码 -g 分辨率 弹性公网IP地址 例如:rdesktop -u administrator -p password -g 1024*720 121.xx.xx.xxx 表1 远程登录命令参数 参数 说明 -u 用户名,Windows实例默认用户名是Administrator。 -p 登录Windows实例的密码。 -f 默认全屏,需要用 Ctrl+Alt+Enter 组合键进行全屏模式切换。 -g 分辨率,中间用星号(*)连接,可省略,省略后默认为全屏显示。例如:1024*720 弹性公网IP地址 需要远程连接的服务器IP地址。需要替换为您的Windows实例的弹性公网IP地址或 EIP 地址。
  • 操作步骤 您可以通过Mac OS系统自带的终端(Terminal)登录Linux云服务器。 SSH密码方式 打开系统自带的终端(Terminal),执行以下命令,登录云服务器。 ssh 用户名@弹性公网IP 如果是公共镜像(包括CoreOS),用户名为“root”。 SSH密钥方式 打开系统自带的终端(Terminal),执行以下命令,变更权限。下面步骤以私钥文件是kp-123.pem为例进行介绍。 chmod 400 /path/kp-123.pem 上述命令的path为密钥文件的存放路径。 执行以下命令,登录云服务器。 ssh -i /path/kp-123.pem 用户名@弹性公网IP 如果是“CoreOS”的公共镜像,用户名为“core”。 如果是“非CoreOS”的公共镜像,用户名为“root”。
  • 操作场景 Linux操作系统XEN实例变更为KVM实例前,必须已完成必要的驱动安装和配置。 当您需要变更的Linux操作系统的XEN实例比较多时候,推荐您使用本节的批量自动配置的方法安装驱动,通过自动化脚本的方式批量为Linux云服务器安装驱动、配置磁盘自动挂载。在驱动安装完成后使用控制台提供的“变更规格”功能将XEN实例变更为KVM实例。 XEN实例:S1、C1、C2、M1型弹性云服务器。 KVM实例:参考规格清单,查询对应规格的虚拟化类型。 为了同时支持XEN虚拟化和KVM虚拟化,Linux弹性云服务器的正常运行需依赖于xen-pv驱动、virtio驱动等。XEN实例变更为KVM实例前,需要确保Linux弹性云服务器已完成相关配置,包括安装驱动、配置磁盘自动挂载等。
  • 操作场景 您可以使用已有的弹性云服务器创建系统盘镜像、数据盘镜像、整机镜像。 系统盘镜像:系统盘镜像包含用户运行业务所需的操作系统、应用软件,可以用于云服务器业务的迁移。 数据盘镜像:数据盘镜像是只包含用户业务数据的镜像。用户可以通过创建数据盘镜像对云服务器的数据盘进行导出。数据盘镜像可以用于创建云硬盘,将用户的业务数据迁移到云上。 整机镜像:使用弹性云服务器携带其挂载的数据盘一起创建整机镜像,创建的整机镜像包含用户的业务数据,可用于快速发放包含用户业务数据的弹性云服务器。 ISO 镜像:将外部镜像的ISO文件注册到云平台的私有镜像。ISO镜像是特殊的镜像,只能发放用作临时过渡的云服务器。 如果您使用私有镜像切换操作系统请参考《镜像服务用户指南》提前完成私有镜像的制作。
  • 支持审计的关键操作列表 表1 云审计服务支持的云服务器操作列表 操作名称 资源类型 事件名称 创建云服务器 ecs createServer createServerV2 createServerV21 删除云服务器 ecs deleteServer deleteServerV2 deleteServerV21 启动云服务器 ecs startServer 重启云服务器 ecs rebootServer 关闭云服务器 ecs stopServer 添加云服务器网卡 ecs addNic 删除云服务器网卡 ecs deleteNic delNic 挂载磁盘 ecs attachVolume attachVolumeV2 挂载磁盘(EVS页面触发) ecs attachVolume2 卸载磁盘 ecs detachVolume 重装操作系统 ecs reinstallOs 切换操作系统 ecs changeOs 变更规格 ecs resizeServer 配置虚拟机自动恢复标签 ecs addAutoRecovery 删除虚拟机自动恢复标签 ecs deleteAutoRecovery 更新元数据/设置指定key的元数据 ecs updateMetadata 获取VNC远程登录 ecs remoteConsole 修改云服务器信息 ecs updateServer 迁移虚拟机 ecs migrateServer 创建FPGA镜像 aei createFpgaImage 删除FPGA镜像 aei deleteFpgaImage 关联FPGA镜像 aei associateFpgaImage 解关联FPGA镜像 aei disassociateFpgaImage 注册FPGA镜像 aei registerFpgaImage 中断竞价计费型实例 server interruptServer
  • 示例5:多属性、多值搜索 仅以下属性支持多属性、多值搜索:状态、云服务器ID、规格名称、私有IP地址、弹性公网IP地址、计费模式、标签。 其中以下属性仅支持精确搜索,需输入完整的属性值:云服务器ID、私有IP地址、弹性公网IP地址。 选择多个“属性:取值,取值”的搜索方式,属性之间为“与”的关系。同一属性的多个取值之间为“或”的关系。 模糊搜索 在云服务器列表页搜索的输入框中选择“状态”,并选择“运行中”、“关机”,单击进行搜索。 添加筛选属条件,选择“规格名称”,输入多个规格名称,使用“,”分隔,单击进行搜索。 图11 按状态和规格名称搜索云服务器 精确搜索 在云服务器列表页搜索的输入框中选择“状态”,并选择“运行中”、“关机”,单击进行搜索。 添加筛选属条件,选择“私有IP地址”,根据提示输入多个完整的私有IP地址,使用“,”分隔,单击进行搜索。 图12 按状态和私有IP地址搜索云服务器
  • 示例1:使用属性值搜索,系统自动匹配属性 输入完整的属性值后,系统自动识别属性并搜索。多个取值使用“,”分隔,否则后输入的取值会替换之前输入的取值。多个属性值之间为“或”的关系。 单值搜索: 在云服务器列表页搜索的输入框中输入完整云服务器ID,单击进行搜索。 图2 输入完整的云服务器ID 图3 系统自动匹配属性 多值搜索: 在云服务器列表页搜索的输入框中输入完整的规格名称,单击进行搜索。 图4 输入多个完整的规格名称 图5 系统自动匹配属性并搜
  • 示例2:单属性搜索 选择属性后,输入/选择对应的属性信息。 以下属性仅支持精确搜索,需输入完整的属性值:云服务器ID、弹性公网IP地址、镜像ID、VPC ID。 模糊搜索:使用私有IP地址搜索 在云服务器列表页搜索的输入框中选择“私有IP地址”。 根据提示,输入私有IP地址,单击进行搜索。“私有IP地址”支持模糊搜索,例如输入“192.168.0”,可以搜索到所有使用192.168.0网段的云服务器。 图6 按私有IP地址搜索云服务器 精确搜索:使用弹性公网IP地址搜索 在云服务器列表页搜索的输入框中选择“弹性公网IP地址”。 根据提示,输入完整弹性公网IP地址,单击进行搜索。 图7 按弹性公网IP地址搜索云服务器
  • 搜索语法 弹性云服务器支持多种类型的搜索,详细的说明和示例请参考表1。 部分属性支持系统自动匹配属性搜索,但必须输入完整的属性值。 选择属性搜索时,以下属性仅支持精确搜索,需输入完整的属性值:云服务器ID、弹性公网IP地址、镜像ID、VPC ID。 多值搜索时私有IP地址也必须使用精确搜索,需输入完整的属性值。 私有IP地址的网段需在以下范围内:10.0.0.0/8-24 ,172.16.0.0/12-24,192.168.0.0/16-24 。 按标签过滤时可选择键或键值对搜索。支持设置多个标签,如果键不同,则标签按“与”的关系搜索。如果键相同,值不同,则标签按“与”的关系搜索。 未选择属性的时候标签不支持多值搜索。 私有IP和弹性公网IP不能同时搜索。 表1 搜索语法 搜索类型 支持的属性 输入格式 示例 说明 属性值 自动匹配属性 云服务器ID、规格名称、私有IP地址、弹性公网IP地址、标签(标签不支持输入多值。) 完整的属性值 云服务器ID:4a79dfec-f0d8-4181-9bef-495b8b7220e1, 规格名称:s2.xlarge.4 私有IP地址:192.168.99.231 标签:a=b 使用关键字搜索时,不需要选择属性,仅输入完整的属性值,系统自动匹配属性类型进行搜索。 多个取值使用“,”分隔。否则后输入的取值会替换之前输入的取值。多个属性值之间为“或”的关系。 单属性 控制台支持的所有属性 属性:属性值 状态:运行中 选择属性后,输入/选择对应的属性信息。 以下属性仅支持精确搜索,需输入完整的属性值:云服务器ID、弹性公网IP地址、镜像ID、VPC ID。 多属性 控制台支持的所有属性 属性:取值&属性:取值 状态:运行中 名称:ecs-c 支持选择多个不同的属性,搜索时多个属性为“与”的关系。 以下属性仅支持精确搜索,需输入完整的属性值:云服务器ID、弹性公网IP地址、镜像ID、VPC ID。 单属性、多值 状态、云服务器ID、规格名称、私有IP地址、弹性公网IP地址、计费模式、标签 (标签不支持输入多值。) 属性:取值1|取值2 规格名称:s2,s3 私有IP地址: 192.168.0.19,192.168.111.111 选择一个属性后,输入多个取值,多个取值之间为“或”的关系。 以下属性仅支持精确搜索,需输入完整的属性值:云服务器ID、私有IP地址、弹性公网IP地址。 多属性、多值 状态、云服务器ID、规格名称、私有IP地址、弹性公网IP地址、计费模式、标签 (标签不支持输入多值。) 属性:取值&属性:取值1|取值2 状态:运行中&规格名称:s2,s3 选择多个“属性:取值,取值”的搜索方式,属性之间为“与”的关系。同一属性的多个取值之间为“或”的关系。 以下属性仅支持精确搜索,需输入完整的属性值:云服务器ID、私有IP地址、弹性公网IP地址。
  • 示例4:单属性、多值搜索 仅以下属性支持单属性、多值搜索:状态、云服务器ID、规格名称、私有IP地址、弹性公网IP地址、计费模式、标签。 其中以下属性仅支持精确搜索,需输入完整的属性值:云服务器ID、私有IP地址、弹性公网IP地址。 选择一个属性后,输入多个取值,多个取值之间为“或”的关系。 模糊搜索 在云服务器列表页搜索的输入框中选择“规格名称”。 根据提示输入多个规格名称,使用“,”分隔,单击进行搜索。 图9 按规格名称搜索云服务器 精确搜索 在云服务器列表页搜索的输入框中选择“私有IP地址”。 根据提示输入多个完整的私有IP地址,使用“,”分隔,单击进行搜索。 图10 按私有IP地址搜索云服务器
  • 示例3:多属性搜索 支持选择多个不同的属性,搜索时多个属性为“与”的关系。 以下属性仅支持精确搜索,需输入完整的属性值:云服务器ID、弹性公网IP地址、镜像ID、VPC ID。 本例同时使用“云服务器名称”和“私有IP地址”进行搜索。 在云服务器列表页搜索的输入框中选择“云服务器名称”并输入取值。单击进行搜索。本例云服务器名称使用模糊搜索。 添加筛选属条件,选择“私有IP地址”,根据提示输入私有IP地址,单击进行搜索。本例私有IP地址使用模糊搜索。 图8 按私有IP地址搜索云服务器
  • 示例6 :按标签搜索 按标签过滤时可选择键或键值对搜索。 支持设置多个标签,如果键不同,则标签按“与”的关系搜索。 如果键相同,值不同,则标签按“与”的关系搜索。 单个标签搜索 在云服务器列表页搜索的输入框中选择“标签”,选择标签键值对,单击“确认”进行搜索。 图13 按标签搜索云服务器 多个标签搜索 在云服务器列表页搜索的输入框中选择“标签”,选择多个标签键值对,单击“确认”进行搜索。 按“与”的关系搜索,搜索同时具备这两个标签的云服务器。 图14 按标签搜索云服务器
  • 擎天Enclave概念 擎天Enclave 擎天Enclave是完全隔离的虚拟机,它的内存和CPU来自于其父虚拟机被预先隔离出来的资源。擎天Enclave既没有外部网络,也没有持久化存储。父虚拟机内的进程、应用程序、内核或者用户都无法访问擎天Enclave中的资源。 父虚拟机 父虚拟机是一个能够将其CPU及内存资源隔离分配给擎天Enclave的ECS实例。这些资源能够在擎天Enclave的生存周期内被其使用。启动擎天Enclave成功后,该擎天Enclave只能与其父虚拟机进行安全通信。 擎天Enclave镜像文件 擎天Enclave镜像文件(.eif)提供了启动擎天Enclave并在其中运行擎天Enclave应用程序所需的系统信息,包括Linux操作系统、其他第三方库和擎天Enclave应用程序。镜像创建详情见Linux系统上擎天Enclave应用程序开发。 擎天命令行工具 作为华为云擎天命令行工具(qt CLI),在擎天Enclave使用场景中,qt CLI可以用于创建、关闭和查询擎天Enclave信息。qt CLI必须在父虚拟机上安装和使用。详情见擎天CLI(qt CLI)。 Enclave SDK Enclave SDK由一系列开源库组成,以便用户开发自己的擎天Enclave应用程序。它集成了一些与华为云KMS交互的接口,例如加解密和产生随机数等,并为远程证明提供了内在支持。 擎天密码学证明 擎天密码学证明是擎天Enclave在与KMS服务交互时证明自己合法性的过程。它依赖擎天Hypervisor产生的具有数字签名的证明文档。一个擎天Enclave证明文档内包含的具体信息可以作为第三方服务认证及鉴权的条件。您可以在IAM服务中使用kms:RecipientAttestation相关条件键值(condition key)来控制对KMS服务特定接口操作的访问权限,例如生成随机数或者加解密操作。 证明文档 证明文档(Attestation Document)由擎天Hypervisor产生并签名,其文件内容为擎天Enclave的信息,包括PCR、密码摘要以及用户声明。外部服务可以通过证明文件来验证擎天Enclave的身份是否可信。用户可以利用证明文档构建自己的可信系统,也可以与KMS交互时使用。详情可见证明文档。 qt-proxy qt-proxy是一个运行在父虚拟机上的网络代理服务。用户可以使用这个服务,使父虚拟机转发来自于擎天Enclave的网络包,实现擎天Enclave与外界进行通信。这是擎天Enclave用来与外部服务交互的唯一通信渠道。 PCR 平台配置寄存器(Platform configuration registers,PCRs)是擎天Enclave独有的可信度量值。一部分在擎天Enclave创建时自动产生,用于验证擎天Enclave自创建以来的完整性,另一部分可以由用户自己定义以确保擎天Enclave能够运行在他所希望执行的平台上。另外,Attestation Document包含了相关的PCR,用户可以使用PCR作为IAM访问控制策略的条件键(condition key),以实现更为更严格的访问控制。详情可见PCR简介。 本地连接通道 本地连接通道(Local Vsock Connection)是擎天Enclave实例与父虚拟机之间唯一的,安全的本地通信通道。 擎天安全模块 擎天安全模块(QingTian Security Module,QTSM)整体由qtsm-lib函数库和qtsm-server服务组成。您可以在您的擎天Enclave 应用程序中调用qtsm-lib用户态接口,qtsm-server会处理具体的QTSM请求并将返回相应结果。qtsm-lib提供的用户态接口包括获取指定index对应的PCR值(qtsm_describe_pcr),扩展指定index的PCR值(qtsm_extend_pcr),锁定指定index的PCR值(qtsm_lock_pcr),批量锁定指定index的PCR值(qtsm_lock_pcrs),获取QTSM信息(qtsm_get_describe)和获取已签名的证明文档(qtsm_get_attestation)。 父主题: 擎天Enclave简介
  • 密码学证明 擎天Enclave支持密码学证明。擎天Enclave支持通过密码学证明过程来证明其身份并与外部服务建立信任。证明过程需要使用证明文档,它包含对擎天Enclave运行环境的可信度量值。您可以使用这些度量值在外部服务中创建访问控制策略,以控制特定擎天Enclave实例对指定操作的访问权限。 您可以通过使用擎天Enclave SDK从擎天Hypervisor获取证明文档,该证明文档包含相关的度量值及数字签名。擎天Enclave应用可以在向外部服务发送请求时携带该证明文档。当外部服务收到该请求时,会验证证明文档中包含的度量值是否匹配预期的度量值,以决定是否允许Enclave应用的访问请求或建立安全。 PCR简介 证明文档 文档签名验证 结合华为云KMS服务 父主题: 擎天Enclave管理
  • 约束条件 擎天Enclave有以下约束: 虚拟机名称 限制要求 父虚拟机(主虚拟机) 至少预留2个vCPU,至少预留512M内存空间。 必须为Linux操作系统。 擎天Enclave(从虚拟机) 裸金属实例不支持擎天Enclave。 必须为Linux操作系统。 启动擎天Enclave最低内存规格为128M,并且不能小于Enclave镜像文件(Enclave Image File,简称EIF)文件大小的4倍。 当在配置文件中,为擎天Enclave配置2M大页的内存管理方式时,擎天Enclave启动支持的最大内存为512M。 当在配置文件中,为擎天Enclave配置1G大页的内存管理方式时,擎天Enclave最大内存为256G。 擎天Enclave所使用的内存和CPU都必须隔离自同一个NUMA节点。 vcpu数量配置需要为偶数,最高不超过父虚拟机单NUMA node cpu数量减 2;总数量最高不超过62。 在擎天Enclave中运行的应用程序需要和OS(内核,ramdisk,init程序)一起被打包成擎天Enclave镜像。 父虚拟机和擎天Enclave关系: 每个父虚拟机可以创建最多两个擎天Enclave。 不支持与父虚拟机共物理内核。 只有在父虚拟机处于运行状态时,擎天Enclave才处于运行状态。如果父虚拟机被停止或终止,则擎天Enclave被终止。 擎天Enclave分配的资源(内存和CPU等),都是从父虚拟机中分割出来的,内存区间要求是2M/1G对齐的连续物理区间。 另外还需要注意: 支持擎天Enclave特性的父虚拟机规格: c7t c7t规格还处于公测阶段,请通过提交工单联系客服申请公测。 支持擎天Enclave特性的局点: 华东-上海一 如果您在擎天Enclave中的业务被意外终止,您需要手动重新运行该业务 擎天Enclave的默认配置为使用1G大页,具有1G内存,2vcpu
  • 远程证明和数据解密 下面我们将概述在擎天Enclave应用程序的执行流程。 通过qt-proxy服务,擎天Enclave应用程序将密文从华为OBS桶中下载到擎天Enclave实例中。 Enclave应用程序产生一对RSA公私钥(pubKey, priKey),用于建立与KMS服务之间的端到端数据加密(它并不需要依赖HTTPS)。然后使用擎天Enclave SDK调用KMS提供的支持AttestationDocument(证明文档)作为入参的kms-decrypt API。证明文档中包括擎天Enclave的PCR值和应用程序产生的加密公钥(pubKey)。 华为云KMS接收并验证证明文档是否由擎天Attestation PKI签发。在kms-decrypt API的访问控制检查中,会将证明文档中的PCR值与IAM授权策略中的PCR值进行比较,如果匹配成功则允许调用该接口,否则拒绝访问。 KMS将数据解密后,然后用AttestationDocument提供的pubKey对数据进行重新加密后发送回擎天Enclave应用程序。擎天Enclave应用程序使用priKey对接收到的密文数据进行解密。
  • 相关服务 擎天Enclave与以下华为云服务集成: 密钥管理服务 密钥管理服务(KMS)是华为云数据加密服务族中的一个核心服务。KMS提供可用性高的密钥生成、存储、管理和审计解决方案。KMS密钥由硬件安全模块HSM保护,并与许多华为云数据存储服务集成。您可以借此服务开发自己的安全的数据应用。 华为统一身份认证服务 统一身份认证(Identity and Access Management,简称IAM)是华为云提供权限管理的基础服务,可以帮助您安全地控制华为云服务和资源的访问权限。
  • 资源隔离 启动擎天Enclave虚拟机之前,您首先要在父虚拟机内隔离资源供擎天Enclave虚拟机使用。隔离的资源包括cpu个数和内存大小,可以通过在虚拟机内访问修改*/etc/qiangtian/enclave/qt-enclave-env.conf*配置文件指定需要隔离的资源: #1G大页 hugepage_size:1024 #内存1G. memory_mib:1024 # cpu个数 cpu_count:2 # cpu列表 # cpu_list:2,3 我们建议您最好不要反复启动资源隔离服务,否则将会出现大页内存不足,导致擎天Enclave无法正常启动或者隔离服务无法正常启动。本教程中保持默认值不变,使用1G大页,隔离2个vCPU和1G内存。确认配置文件参数之后执行以下命令: systemctl restart qt-enclave-env.service 其中*/etc/qiangtian/enclave/qt-enclave-env.conf*配置文件中的配置项之间有约束条件,详情可见qt-enclave-env服务介绍。
  • 数据和环境准备 接下来,我们将概述一下关于数据加密、证明设置和擎天Enclave实例创建的相关流程。 安全员在华为云数据加密服务的密钥管理子服务中创建KMS密钥。 安全员使用KMS密钥加密一段敏感数据(例如银行卡信息)。详细信息可以参考华为云数据加密服务帮助文档中API参考章节中的应用示例:加解密小量数据。 安全员使用obsutil命令行工具将加密后的密文上传到华为云对象存储服务(OBS)的一个桶中。详细信息可以参考华为云对象存储服务帮助文档工具指南章节: 上传对象。 安全员编写并打包擎天Enclave开发程序:制作Docker镜像,然后使用qt命令行工具将Docker镜像转换成擎天Enclave镜像文件。可以参考擎天Enclave镜像文件制作。并记录创建擎天Enclave镜像文件时生成的PCR0和PCR8。 安全员将PCR0和PCR8设置为IAM访问控制策略的条件键(控制kms-decrypt API)。 父虚拟机管理员:启动父虚拟机并设置启动qt-proxy服务,然后使用擎天Enclave镜像启动擎天Enclave。
  • 擎天Enclave应用开发 一个功能完备的擎天Enclave应用程序至少包括如下两个部分: 一个运行在父虚拟机内安全不敏感的应用程序。 一个运行在Enclave环境中安全敏感的应用程序。 由于擎天Enclave环境的独立性,擎天Enclave环境中的应用程序和运行在父虚拟机中的应用程序间只能通过唯一的vsock通道进行通信。 Linux系统上擎天Enclave应用的开发 父主题: 擎天Enclave管理
共100000条