System Settings
AccessKey Management
ZSvirt was open-sourced from the ZStack ZSphere commercial project and has since developed independently. Some code, configuration, and documentation still retain historical ZStack/ZSphere names (such as environment variables, configuration items, dependencies, paths, and commands). These names are for compatibility only and do not affect the normal use of ZSvirt.
AccessKey is the security credential for authorizing third-party users to call the ZSvirt API to access virtualization resources. It includes the AccessKey ID and the AccessKey Secret, which must be kept strictly confidential.
- Relationship Between AccessKey Administrator and User Permissions
- Generating an AccessKey
- Using AccessKey with Third-Party Platform SDK to Call APIs
- Manage AccessKey
Relationship Between AccessKey Administrator and User Permissions
- 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.
Generating an AccessKey
You can follow these steps to generate an AccessKey:
- Navigate to Menu > System Management > AccessKey Management.
- Click Create AccessKey.
Using AccessKey with Third-Party Platform SDK to Call APIs
SDK Method
To create a virtual machine using an AccessKey, you need to provide the accessKeyId and accessKeySecret when making the API call.
-
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()
Calling RESTful APIs
-
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 } -
Generate
datepython get_time.py Thu, 07 Sep 2023 13:54:10 PRCimport 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 -
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) -
Send a 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 AccessKey
You can manage generated AccessKeys, including enabling, disabling, and deleting them.
- Navigate to Menu > System Management > AccessKey Management.
- Select the AccessKey.
- To enable or disable an AccessKey, click Disable or Enable.
- If you no longer need to access virtual resources via API, you can delete the AccessKey by clicking Delete.