Access Key
ZStack私有云 Access Key(包括Access Key ID和Access Key Secret)是云平台授权第三方用户调用ZStack私有云 API来访问其云资源的安全凭证,需严格保密。
Access Key是ZStack私有云对API请求进行安全验证的关键因子,请妥善保管。如果某些Access Key出现泄漏风险,建议及时删除该Access Key并生成新的替代Access Key。
创建Access Key
在私有云主菜单,点击,弹出Access Key管理界面,点击生成Access Key,将生成一个Access Key。
Access Key支持的操作
- 启用:启用当前Access Key
- 停用:停用当前Access Key
- 删除:删除当前Access Key
- 搜索:搜索已创建的Access Key
注意事项
- admin/平台管理员可以创建多个Access Key,租户(普通账户/项目成员)可以创建两个Access Key;
- admin/平台管理员可以随时启用、停用或者删除自己创建的Access Key以及租户创建的Access Key;
- 租户可以随时启用、停用或者删除自己创建的Access Key;
- Access Key具有该创建者完全的权限。
第三方平台使用Access Key调用ZStack API
创建Access Key后,第三方平台可以使用Access Key调用ZStack私有云API,方法如下:
- SDK方式:以创建云主机(CreateVmInstance)为例,使用Access Key调用ZStack私有云API时,需输入accessKeyId和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, 905d94a6abb5398fa1995f6398e3f6fc] action.clusterUuid = "a0468dc645223f67bd0f2ab95276bbae" action.description = "this is a vm" action.strategy = "InstantStart" action.accessKeyId = "Fnxc7KIQAdGTvXfx8OjC" action.accessKeySecret = "Do0AJUGVPrT9iJZlc1QOtk7kzEusYidyqJxSmKOb" CreateVmInstanceAction.Result res = action.call()
- Java
SDK
- 直接调用ZStack私有云
Restful API方式:
- 创建Access
Key:
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 } - 生成date:
python get_time.py Thu, 06 Sep 2018 13:54:10 CSTimport 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 CST') print strNote: 时间格式必须为EEE, dd MMM yyyy HH:mm:ss zzz。 - 生成digest:
# python get_accesskey.py "N3Tf05yXZUmSjCf6mYIB" "XAlrsYvswmnEV3X1KWNs1WfZHD6aBIIphmI0rX9S" \ "GET" "" "application/x-www-form-urlencoded" "Thu, 06 Sep 2018 13:54:10 CST" "/v1/vm-instances" args: Namespace(Content_MD5='', Content_Type='application/x-www-form-urlencoded', \ acesskey_id='N3Tf05yXZUmSjCf6mYIB', acesskey_secret='XAlrsYvswmnEV3X1KWNs1WfZHD6aBIIphmI0rX9S', \ date='Thu, 06 Sep 2018 13:54:10 CST', method='GET', uri='/v1/vm-instances') Signature: S3vm7u7/+n+sIQe72lgia08I30U= Authoration ZStack N3Tf05yXZUmSjCf6mYIB:S3vm7u7/+n+sIQe72lgia08I30U=#/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) - 发送请求
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 CST" \ -X GET http://172.20.11.134:8080/zstack/v1/vm-instances
- 创建Access
Key: