Document navigation

AccessKey Management

An AccessKey is a security credential that authorizes third-party platforms to call ZSphere APIs and access virtualization resources. It includes an AccessKey ID and an AccessKey Secret. Keep AccessKey credentials secure, and enable, disable, or delete them as needed.

Permission Relationships

  • Administrators can create multiple AccessKeys, while regular users can create up to two AccessKeys.
  • Administrators can delete AccessKeys created by regular users.
  • An AccessKey has full permissions of its creator.

Generate an AccessKey

Procedure

  1. In the navigation pane, choose System Management > AccessKey Management.
  2. Click Generate AccessKey.

Use an AccessKey to Call APIs

About this task

Third-party platforms can use an AccessKey to call ZSphere APIs through an SDK or RESTful API.

  • Call APIs by using an SDK.

    When you use an AccessKey to call APIs, for example, to create a VM, you must provide accessKeyId and accessKeySecret.

    • 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
      CreateVmInstanceAction action = CreateVmInstanceAction()
      action.name = "vm1"
      action.instanceOfferingUuid = "ae97ced44efc3314b8f7798972b4ba1a"
      action.imageUuid = "da119f7906513eccabf271991c35a65e"
      action.l3NetworkUuids = [cc0e4c5e77df3af68e59668e7f9e06c5]
      action.dataDiskOfferingUuids = [19d22d051b063d379a2816daaf431838, 905d94a
      6abb5398fa1995f6398e3f6fc]
      action.clusterUuid = "a0468dc645223f67bd0f2ab95276bbae"
      action.description = "this is a vm"
      action.strategy = "InstantStart"
      action.accessKeyId = "Fnxc7KIQAdGTvXfx8OjC"
      action.accessKeySecret = "Do0AJUGVPrT9iJZlc1QOtk7kzEusYidyqJxSmKOb"
      CreateVmInstanceAction.Result res = action.call()
  • Call APIs by using RESTful APIs.
    1. Create an AccessKey.
      CreateAccessKey accountUuid=dff4fb9bbff14e97a67ab894c7b8c528 userUuid=dff4fb9
      bbff14e97a67ab894c7b8c528
      {
       "inventory": {
       "AccessKeyID": "N3Tf05yXZUmSjCf6mYIB",
       "AccessKeySecret": "XAlrsYvswmnEV3X1KWNs1WfZHD6aBIIphmI0rX9S",
       "accountUuid": "dff4fb9bbff14e97a67ab894c7b8c528",
       "createDate": "Sep 7, 2023 1:50:06 PM",
       "lastOpDate": "Sep 7, 2023 1:50:06 PM",
       "userUuid": "dff4fb9bbff14e97a67ab894c7b8c528",
       "uuid": "ae353717ca7b4182bb87fb5d010235e8"
       },
       "success": true
      }
    2. Generate date.
      python get_time.py
      Thu, 07 Sep 2023 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
    3. Generate digest.
      # python get_accesskey.py "vvSZpmj4cnB53qUDmm6E" "8heumeFTvIeZxkTGfEYvV
      i9qVVPd9ffQNDALSPPb" \
      "GET" "Fri, 08 Sep 2023 17:58:34 PRC" "/v1/vm-instances"
      args: Namespace(acesskey_id='vvSZpmj4cnB53qUDmm6E', acesskey_secret
      ='8heumeFTvIeZxkTGfEYvVi9qVVPd9ffQNDALSPPb', \
      date='Fri, 08 Sep 2023 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. Send the request.
      curl -H "Authorization:ZStack N3Tf05yXZUmSjCf6mYIB:S3vm7u7/+n
      +sIQe72lgia08I30U=" \
      -H "Content-Type:application/x-www-form-urlencoded" \
      -H "Date:Fri, 08 Sep 2023 18:54:10 PRC" \
      -X GET http://172.20.11.134:8080/zstack/v1/vm-instances

Manage AccessKeys

Procedure

  1. In the navigation pane, choose System Management > AccessKey Management.
  2. Select the target AccessKey.
    • To enable or disable the AccessKey, click Enable or Disable.
    • If you no longer need to access virtualization resources by using APIs, click Delete to delete the AccessKey.
User Guide | ZStack ZSphere · ZVF | ZStack Resource Center