仅允许授权用户访问Azure存储容器中的Blob网址

时间:2019-12-29 05:28:38

标签: azure-storage-blobs

如果我将Blob的访问级别配置为私有,那么即使将AD帐户已添加到存储帐户的用户也无法访问Blob网址。

如何允许仅特定用户组访问Blob网址? 根据另一个stackoverflow链接,看来我必须提供访问键等效信息才能允许访问私有blob。在这种情况下,拥有访问密钥的任何人都可以访问blob,就像访问级别是公共的一样。

1 个答案:

答案 0 :(得分:0)

根据需要,我建议您可以使用共享访问签名或Azure Active Directory授权来访问您的Blob。而且我不建议您与其他人共享访问密钥。因为不安全。有人拥有access key后,他就可以直接管理存储帐户。有关更多详细信息,请参阅https://docs.microsoft.com/en-us/azure/storage/common/storage-auth?toc=%2fazure%2fstorage%2fblobs%2ftoc.json


更新

如果要使用Azure AD身份访问privet blob,请参考以下步骤 1.注册Azure AD应用程序

  1. 配置Azure AP复制

    a。配置权限    enter image description here    enter image description here

  2. 为用户配置RABC角色

az role assignment create \
    --role "Storage Blob Data Contributor" \
    --assignee <email> \
    --scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>
  1. 获取令牌 一种。获取代码
    https://login.microsoftonline.com/<tenant>/oauth2/v2.0/authorize?
    client_id=<>
    &response_type=code
    &redirect_uri=http://localhost:3000/
    &response_mode=query
    &scope=https://storage.azure.com/user_impersonation
    &state=12345
    
    b。获得令牌
    Post     https://login.microsoftonline.com/<>/oauth2/v2.0/token
    client_id=<>
    &scope=https://storage.azure.com/user_impersonation
    &code=OAAABAAAAiL9Kn2Z27UubvWFPbm0gLWQJVzCTE9UkP3pSx1aXxUjq3n8b2JRLk4OxVXr...
    &redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
    &grant_type=authorization_code
    &client_secret=<>
    
  2. 调用Azure blob rest api
Get https://myaccount.blob.core.windows.net/mycontainer/myblob
Headers : 
            Authorization: Bearer <>
            x-ms-version: 2019-02-02

enter image description here

此外,您还可以使用sas令牌访问Azure Blob。有关更多详细信息,请参阅https://docs.microsoft.com/en-us/rest/api/storageservices/create-service-sas。 例如

$account="blobstorage0516"
$key=""
$container="test"
$blob="test.json"
$context= New-AzStorageContext -StorageAccountName $account -StorageAccountKey $key
 Write-host "The blob access level :"(Get-AzStorageContainerAcl -Name test -Context $context).PublicAccess  -ForegroundColor red


$sas=New-AzStorageBlobSASToken -Container $container -Blob $blob -Permission r -Context $context
$url="https://${account}.blob.core.windows.net/${container}/${blob}${sas}"
Invoke-WebRequest -Uri $url -Method Get -OutFile e:\test.json
Write-host "download successfully"

enter image description here