2017-10-04 42 views
0

アカウントまたはアカウントキーを入力せずにSAS権限が適用されているコンテナオブジェクトを作成する方法を調べようとしています。私はこれをC#でやったが、Pythonでこれを行うことを考えていた。PythonでAzure BlobストレージコンテナにSAS権限を適用する

sasToken = "https://samplestoragehotblob.blob.core.windows.net/samplecontainer?sv=2016-05-31&sr=c&sig=dfdLKJ.....kljsdflkjljsd=3027-09-11T17%3A16%3A57Z&sp=racwdl"; 
CloudBlobContainer cbContainer = new CloudBlobContainer(new Uri(sasToken)); 

私は、その後のアカウントとキーを指定せずに必要なすべての権限を持つコンテナで作業することができます。これはPythonで可能ですか?

答えて

0

アカウントキーを使用しない方法が見つかりました。これは許容される妥協であった。

from azure.storage.blob import BlockBlobService 

def AccessTest(): 
    accountName = "Account Name" 
    containerName = "Container Name" 
    sasToken = "sv=2016-05-31&sr=c&sig=BhhYbf3............................-10-02T15%3A28%3A59Z&sp=racwdl" 

    blobService = BlockBlobService(account_name = accountName, account_key = None, sas_token = sasToken) 

    for blob in blobService.list_blobs(containerName): 
     print blob.__getattribute__('name') 
0

SASトークンを生成していない場合は、アカウントキーの使用を避けることはできません。

あなたがofficial tutorialに従うとgenerate_shared_access_signaturegenerate_container_shared_access_signaturegenerate_blob_shared_access_signatureはPythonでazure storage accountためSAS Tokencontainerblobを生成するために使用することができます。

すでに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 Storage Account(ASA)のキー機能は、秘密回転 を管理します。また、方法として共有アクセス署名(SAS)を提供することにより、ASA キーとの直接接触の必要性を排除します。

here

Azure Key Vault official tutorialを参照してください。REST APIをサポートしています。

関連する問題