访问控制

控制台代理

控制台代理(Console Proxy):可通过代理地址登录云主机控制台。UI界面上显示了当前控制台代理的信息,即打开云主机的控制台时使用的代理信息。

ZStack Cube 旗舰版主菜单,点击运营管理 > 访问控制 > 控制台代理,进入控制台代理界面。

图 1所示:
图 1. 控制台服务界面


  • 控制台代理地址只需要在管理节点修改。
  • 默认代理显示的地址为管理节点的IP地址。
  • 只有当状态为启用已连接时,才可正常打开控制台访问云主机。

控制台代理支持以下操作:

操作 描述
重连控制台代理 重连控制台代理。
Note: 若云主机控制台打开失败,需进行重连操作。重连后状态显示为启用已连接时,控制台可以正常打开。
设置控制台代理地址 设置控制台代理地址。
Note: 支持在UI界面上设置控制台代理地址。
  • 控制台代理地址可填写:管理节点公网IP地址、NAT地址、域名。
  • 无需重启管理节点,直接生效。

AccessKey管理

AccessKey管理:访问云平台API的身份凭证,具有该云平台完全的权限,包括:AccessKey ID(访问密钥 ID)和AccessKey Secret(秘密访问密钥)。

ZStack Cube 旗舰版提供两种AccessKey:本地AccessKey和第三方AccessKey:
  • 本地AccessKey:

    ZStack Cube 旗舰版授权第三方用户调用ZStack Cube 旗舰版 API来访问ZStack Cube 旗舰版云资源的安全凭证,需严格保密。

  • 第三方AccessKey:

    第三方用户授权ZStack Cube 旗舰版用户调用第三方API来访问第三方云资源的安全凭证,需严格保密。

Note:
  • AccessKey是云平台对API请求进行安全验证的关键因子,请妥善保管。
  • 若某一AccessKey出现泄漏风险,建议及时删除该AccessKey并生成新的AccessKey。

生成本地AccessKey

ZStack Cube 旗舰版主菜单,点击运营管理 > 访问控制 > AccessKey 管理,进入AccessKey 管理界面。点击生成AccessKey,将生成一个AccessKey。

注意事项

  • Admin/平台管理员可以创建多个AccessKey,子账户/租户(项目成员)可以创建两个AccessKey。
  • Admin/平台管理员可以随时启用、停用或者删除自己创建的AccessKey以及子账户/租户(项目成员)创建的AccessKey。
  • 子账户/租户(项目成员)可以随时启用、停用或者删除自己创建的AccessKey。
  • AccessKey具有该创建者完全的权限。
图 1所示:
图 1. 生成本地AccessKey


第三方平台使用AccessKey调用ZStack Cube 旗舰版 API

创建AccessKey后,第三方平台可以使用AccessKey调用ZStack Cube 旗舰版 API,方法如下:
  • SDK方式:
    以创建云主机(CreateVmInstance)为例,使用AccessKey调用ZStack Cube 旗舰版 API时,需输入accessKeyIdaccessKeySecret,示例如下:
    • Java SDK
      CreateVmInstanceAction action = new CreateVmInstanceAction();
      action.name = "vm1";
      action.instanceOfferingUuid = "ae97ced44efc3314b8f7798972b4ba1a";
      action.imageUuid = "da119f7906513eccabf271991c35a65e";
      action.l3NetworkUuids = asList("cc0e4c5e77df3af68e59668e7f9e06c5");
      action.dataDiskOfferingUuids = asList("19d22d051b063d379a2816daaf431838","905d94a6abb5398fa1995f6398e3f6fc");
      action.clusterUuid = "a0468dc645223f67bd0f2ab95276bbae";
      action.description = "this is a vm";
      action.strategy = "InstantStart";
      action.accessKeyId = "Fnxc7KIQAdGTvXfx8OjC";
      action.accessKeySecret = "Do0AJUGVPrT9iJZlc1QOtk7kzEusYidyqJxSmKOb";
      CreateVmInstanceAction.Result res = action.call();
    • Python SDK
      action = CreateVmInstanceAction()
      action.name = "vm1"
      action.instanceOfferingUuid = "ae97ced44efc3314b8f7798972b4ba1a"
      action.imageUuid = "da119f7906513eccabf271991c35a65e"
      action.l3NetworkUuids = ["cc0e4c5e77df3af68e59668e7f9e06c5"]
      action.dataDiskOfferingUuids = ["19d22d051b063d379a2816daaf431838", "905d94a6abb5398fa1995f6398e3f6fc"]
      action.clusterUuid = "a0468dc645223f67bd0f2ab95276bbae"
      action.description = "this is a vm"
      action.strategy = "InstantStart"
      action.accessKeyId = "Fnxc7KIQAdGTvXfx8OjC"
      action.accessKeySecret = "Do0AJUGVPrT9iJZlc1QOtk7kzEusYidyqJxSmKOb"
      res = action.call()
  • 直接调用ZStack Cube 旗舰版 RESTful API方式:
    1. 创建AccessKey:
      CreateAccessKey accountUuid=dff4fb9bbff14e97a67ab894c7b8c528 userUuid=dff4fb9bbff14e97a67ab894c7b8c528
      {
          "inventory": {
              "AccessKeyID": "N3Tf05yXZUmSjCf6mYIB",
              "AccessKeySecret": "XAlrsYvswmnEV3X1KWNs1WfZHD6aBIIphmI0rX9S",
              "accountUuid": "dff4fb9bbff14e97a67ab894c7b8c528",
              "createDate": "Sep 6, 2018 1:50:06 PM",
              "lastOpDate": "Sep 6, 2018 1:50:06 PM",
              "userUuid": "dff4fb9bbff14e97a67ab894c7b8c528",
              "uuid": "ae353717ca7b4182bb87fb5d010235e8"
          },
          "success": true
      }
    2. 生成date
      python get_time.py
      Thu, 06 Sep 2018 13:54:10 PRC
      import datetime
      import time
       
      date = time.time()
      #EEE, dd MMM yyyy HH:mm:ss z
      str = datetime.datetime.fromtimestamp(date).strftime('%a, %d %b %Y %H:%M:%S PRC')
      print str
      Note: 时间格式必须为EEE, dd MMM yyyy HH:mm:ss zzz
    3. 生成digest
      # python get_accesskey.py "vvSZpmj4cnB53qUDmm6E" "8heumeFTvIeZxkTGfEYvVi9qVVPd9ffQNDALSPPb" \
      "GET" "Fri, 06 Aug 2021 17:58:34 PRC" "/v1/vm-instances"
      args: Namespace(acesskey_id='vvSZpmj4cnB53qUDmm6E', acesskey_secret='8heumeFTvIeZxkTGfEYvVi9qVVPd9ffQNDALSPPb', \
      date='Fri, 06 Aug 2021 17:58:34 PRC', method='GET', uri='/v1/vm-instances')
      Signature: hPToRHeHdV49D4u20G8OlE0yJho=
      Authoration ZStack vvSZpmj4cnB53qUDmm6E:hPToRHeHdV49D4u20G8OlE0yJho=
      #/usr/bin/python
      import base64
      import hmac
      import sha
      import argparse
      from hashlib import sha1
       
      parser = argparse.ArgumentParser(description='calculate zstack access key digit.')
      parser.add_argument('acesskey_id')
      parser.add_argument('acesskey_secret')
      parser.add_argument('method')
      parser.add_argument('date')
      parser.add_argument('uri')
       
      args = parser.parse_args()
       
      print "args: %s" % args
      h = hmac.new(args.acesskey_secret, args.method + "\n"
                                          + args.date + "\n"
                                          + args.uri, sha1)
      Signature = base64.b64encode(h.digest())
      print "Signature: %s" % Signature
      print "Authoration %s" % ("ZStack " + args.acesskey_id + ":" + Signature)
    4. 发送请求
      curl -H "Authorization:ZStack N3Tf05yXZUmSjCf6mYIB:S3vm7u7/+n+sIQe72lgia08I30U=" \
      -H "Content-Type:application/x-www-form-urlencoded" \
      -H "Date:Thu, 06 Sep 2018 13:54:10 PRC" \
      -X GET http://172.20.11.134:8080/zstack/v1/vm-instances

本地AccessKey支持以下操作:

操作 描述
生成本地AccessKey 生成一个新的本地AccessKey。
启用本地AccessKey 启用处于停用状态的本地AccessKey。
停用本地AccessKey 停用选中的本地AccessKey。
删除本地AccessKey 删除选中的本地AccessKey。
Note: 删除本地AccessKey,将不能调用API来访问本地云资源。

添加第三方AccessKey

ZStack Cube 旗舰版主菜单,点击运营管理 > 访问控制 > AccessKey 管理,进入AccessKey 管理界面。点击添加AccessKey,弹出添加AccessKey界面。

可参考以下示例设置相应内容:
  • 名称:设置第三方AccessKey名称
  • 简介:可选项,可留空不填
  • AccessKey IDAccessKey Secret:输入已在第三方申请好的AccessKey ID和AccessKey Secret
图 2所示:
图 2. 添加第三方AccessKey


第三方Accesskey支持以下操作:

操作 描述
添加第三方AccessKey 添加一个新的第三方AccessKey。
删除第三方AccessKey 删除选中的第三方AccessKey。
Note: 删除AccessKey将清除该AccessKey相关的本地资源记录,且该AccessKey授权的API访问权限失效,第三方公有云资源不受影响。

注意事项

  • admin/平台管理员可以随时删除自己添加的第三方AccessKey以及租户添加的第三方AccessKey。
  • 子账户子账户/租户(项目成员)可以随时删除自己添加的第三方AccessKey。

IP黑白名单

IP黑白名单 (IP Blocklist/Allowlist):云平台登录IP的黑白名单,通过对访客身份的识别和过滤,进一步提升云平台登录安全。ZStack Cube 旗舰版支持配置IP黑白名单,对登录云平台的IP进行过滤控制。

Note: 用户可自行设置启用IP黑白名单功能。设置方法:

进入设置 > 平台设置 > 全局设置 > 基本设置 > 平台策略 > 云平台登录策略,设置云平台登录IP黑白名单即可,默认为False。

IP黑白名单工作原理

  • 不添加IP黑白名单:默认允许来自任意IP的登录请求。
  • 仅添加黑名单:不允许黑名单中的IP登录云平台,其余IP允许登录。
  • 添加黑名单+白名单:白名单优先级高于黑名单。
    • 允许白名单中的IP登录云平台。
    • 如同一个IP同时被添加在黑白名单中,则以白名单为准,允许来自该IP的登录请求。
Note:
  • 从不允许登录的IP地址访问云平台,系统将在登录时进行拦截。
  • 如使用负载均衡转发登录请求到云平台,请在负载均衡设备上正确配置负载均衡X-Forwarded-For转发,如未配置,云平台将无法获取实际的客户端IP,无法准确放行/拦截来自该客户端的访问。
  • 白名单不支持单独使用。使用前,请确保平台内已添加至少一条黑名单,否则白名单不生效。

添加IP黑名单/白名单

在IP黑白名单页面,可以选择添加IP黑名单或IP白名单,添加方式一致,以添加IP黑名单为例:

ZStack Cube 旗舰版主菜单,点击运营管理 > 访问控制 > IP黑白名单,进入IP黑白名单界面,点击添加IP黑名单,弹出添加IP黑名单界面。

可参考以下示例输入相应内容:
  • 名称:设置IP黑名单名称
  • 简介:可选项,可留空不填
  • IP地址:输入需要加入IP黑名单的IP地址
    Note:
    • 支持输入固定IP地址、IP地址范围、IP/掩码格式,添加多个需要以英文逗号分隔开。
    • 支持最多添加100条。
图 1所示:
图 1. 添加IP黑名单


操作 描述
添加IP黑/IP白名单 添加一个新的IP黑/白名单。
Note: 添加IP黑/白名单,该名单将立即生效,名单中的IP地址将被拒绝/允许登录云平台,请谨慎操作。
编辑IP黑/白名单 编辑IP黑/IP白名单的名称、简介信息。
删除IP黑/白名单 删除选中的IP黑/白名单。
Note: 删除IP黑/白名单,该名单将失效,登录云平台IP无限制,请谨慎操作。