如果我将Blob的访问级别配置为私有,那么即使将AD帐户已添加到存储帐户的用户也无法访问Blob网址。
如何允许仅特定用户组访问Blob网址? 根据另一个stackoverflow链接,看来我必须提供访问键等效信息才能允许访问私有blob。在这种情况下,拥有访问密钥的任何人都可以访问blob,就像访问级别是公共的一样。
答案 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应用程序
az role assignment create \
--role "Storage Blob Data Contributor" \
--assignee <email> \
--scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>
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=<>
Get https://myaccount.blob.core.windows.net/mycontainer/myblob
Headers :
Authorization: Bearer <>
x-ms-version: 2019-02-02
此外,您还可以使用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"