正如總結,如果您還沒有生成SAS的道理,你不能避免使用帳戶鍵。
你可以按照official tutorial和使用generate_shared_access_signature
,generate_container_shared_access_signature
,generate_blob_shared_access_signature
產生在Python SAS Token
爲azure storage account
,container
,blob
。
如果您已經生成SAS token
,您可以使用SAS token
而不是帳戶密鑰來操作您的容器。
代碼段:
from datetime import datetime, timedelta
from azure.storage.blob import (
BlockBlobService,
ContainerPermissions,
)
accountName = "***"
accountKey = "***"
containerName = "***"
def GenerateSasToken():
blobService = BlockBlobService(account_name=accountName, account_key=accountKey)
sas_url = blobService.generate_container_shared_access_signature(containerName,ContainerPermissions.READ, datetime.utcnow() + timedelta(hours=1))
# print sas_url
return 'https://' + accountName + '.blob.core.windows.net/' + containerName + '?' + sas_url
def AccessTest(sastoken):
blobService = BlockBlobService(account_name = accountName, account_key = None, sas_token = sastoken)
BlockBlobService
for blob in blobService.list_blobs(containerName):
print blob.__getattribute__('name')
sastoken = GenerateSasToken()
print sastoken
AccessTest(sastoken)
另外,你可以嘗試使用Azure Key Vault
。
Azure存儲帳戶(ASA)密鑰功能爲您管理密鑰輪換 。通過提供共享訪問簽名(SAS)作爲一種方法,它還消除了與ASA 密鑰的直接聯繫。
其中提到的here。
請參考Azure Key Vault official tutorial,它支持REST API。