將 Azure 角色指派給 Microsoft Entra 安全性主體時,Azure 會將那些資源的存取權授與該安全性主體。 Microsoft Entra 安全性主體可以是使用者、群組或應用程式服務主體,或是適用於 Azure 資源的受控識別。
若要使用 Microsoft Entra 認證存取 Azure 入口網站中的 Blob 資料,使用者必須擁有下列角色指派:
- 資料存取角色,例如儲存體 Blob 資料讀取者或儲存體 Blob 資料參與者
- 至少需要 Azure Resource Manager 的讀取者角色
若要瞭解如何將這些角色指派給使用者,請遵循使用 Azure 入口網站指派 Azure 角色中提供的指示。
讀者角色是一種 Azure Resource Manager 角色,允許使用者檢視儲存體帳戶資源,但無權修改。 此角色不會提供 Azure 儲存體中資料的讀取權限,而只會提供帳戶管理資源的讀取權限。 使用者需要具備讀取者角色,才能瀏覽至 Azure 入口網站中的 blob 容器。
例如,如果您在名為 sample-container 的容器層級將儲存體 Blob 資料參與者角色指派給使用者 Mary,則 Mary 會被授與該容器中所有 Blob 的讀取、寫入和刪除權限。 但是,如果 Mary 想要檢視 Azure 入口網站中的 Blob,則儲存體 Blob 資料參與者角色本身將不會提供可透過入口網站瀏覽至 Blob 以進行檢視的足夠權限。 瀏覽入口網站並檢視該處顯示的其他資源需要額外的權限。
使用者必須獲派 讀者 角色,才能透過 Microsoft Entra 認證使用 Azure 入口網站。 不過,如果使用者已獲派具有 Microsoft.Storage/storageAccounts/listKeys/action 權限的角色,則可以透過共用金鑰授權,搭配儲存體帳戶金鑰使用入口網站。 若要使用儲存體帳戶金鑰,則必須允許儲存體帳戶存取共用金鑰。 如需允許或不允許共用金鑰存取的詳細資訊,請參閱防止 Azure 儲存體帳戶使用共用金鑰授權。
您也可以指派 Azure Resource Manager 角色,提供超出 讀者 角色的額外權限。 建議的安全性最佳做法是指派最低可能權限。 如需詳細資訊,請參閱 Azure RBAC 的最佳做法。
若要使用 PowerShell 將 Azure 角色指派給安全性主體,請呼叫 New-AzRoleAssignment 命令。 若要執行命令,您必須具備相關角色,且該角色必須包含在對應或更高範圍指派給您的 Microsoft.Authorization/roleAssignments/write 權限。
命令的格式會根據指派的範圍而有所不同,但是 -ObjectId
和 -RoleDefinitionName
都是必要參數。 強烈建議您傳遞參數 -Scope
的值 (非必要),以維持最低權限的原則。 藉由限制角色和範圍,萬一安全性主體遭到入侵時,承受風險的資源仍可得到控制。
-ObjectId
參數是指派角色之使用者、群組或服務主體的 Microsoft Entra 物件識別碼。 若要擷取識別碼,您可以使用 Get-AzADUser 來篩選 Microsoft Entra 使用者,如下列範例所示。
Get-AzADUser -DisplayName '<Display Name>'
(Get-AzADUser -StartsWith '<substring>').Id
第一個回應會傳回安全性主體,而第二個回應會傳回安全性主體的物件識別碼。
UserPrincipalName : markpdaniels@contoso.com
ObjectType : User
DisplayName : Mark P. Daniels
Id : ab12cd34-ef56-ab12-cd34-ef56ab12cd34
Type :
ab12cd34-ef56-ab12-cd34-ef56ab12cd34
-RoleDefinitionName
參數值是需要指派給主體的 RBAC 角色名稱。 若要使用 Microsoft Entra 認證存取 Azure 入口網站中的 Blob 資料,使用者必須擁有下列角色指派:
- 資料存取角色,例如儲存體 Blob 資料參與者或儲存體 Blob 資料讀取者
- Azure Resource Manager 讀取者角色
若要指派範圍為 Blob 容器或儲存體帳戶的角色,您應該指定一個字串,其中包含 -Scope
參數的資源範圍。 此動作符合最低權限的原則,這是一種資訊安全性概念,其中使用者會獲得執行其工作功能所需的最低存取層級。 這種做法可減少非必要權限所可能導致意外或意圖損害的潛在風險。
容器的範圍格式如下:
/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>
儲存體帳戶的範圍格式如下:
/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>
若要指派範圍限定於儲存體帳戶的角色,請針對 --scope
參數指定包含容器範圍的字串。
下列範例會將 儲存體 Blob 資料參與者 角色指派給使用者。 角色指派的範圍設定為容器的層級。 請務必以自身的值來取代括弧中的範例值和預留位置值 (<>
):
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Storage Blob Data Contributor" `
-Scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>"
下列範例會藉由指定物件識別碼,將儲存體 Blob 資料讀取者角色指派給使用者。 角色的範圍是儲存體帳戶層級。 請務必以自身的值來取代括弧中的範例值和預留位置值 (<>
):
New-AzRoleAssignment -ObjectID "ab12cd34-ef56-ab12-cd34-ef56ab12cd34" `
-RoleDefinitionName "Storage Blob Data Reader" `
-Scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>"
您的輸出應如下所示:
RoleAssignmentId : /subscriptions/<subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.Storage/storageAccounts/<Storage Account>/providers/Microsoft.Authorization/roleAssignments/<Role Assignment ID>
Scope : /subscriptions/<subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.Storage/storageAccounts/<Storage Account>
DisplayName : Mark Patrick
SignInName : markpdaniels@contoso.com
RoleDefinitionName : Storage Blob Data Reader
RoleDefinitionId : <Role Definition ID>
ObjectId : <Object ID>
ObjectType : User
CanDelegate : False
如需在訂用帳戶或資源群組範圍中使用 PowerShell 指派角色的詳細資訊,請參閱使用 Azure PowerShell 指派 Azure 角色。
若要使用 Azure CLI 將 Azure 角色指派給安全性主體,請使用 az role assignment create 命令。 命令的格式會根據指派的範圍而有所不同。 若要執行命令,您必須具備相關角色,且該角色必須包含在對應或更高範圍指派給您的 Microsoft.Authorization/roleAssignments/write 權限。
若要指派範圍限定於容器的角色,請針對 --scope
參數指定包含容器範圍的字串。 容器的範圍格式如下:
/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>
下列範例會將 儲存體 Blob 資料參與者 角色指派給使用者。 角色指派的範圍設定為容器的層級。 請務必以自身的值來取代括弧中的範例值和預留位置值 (<>
):
az role assignment create \
--role "Storage Blob Data Contributor" \
--assignee <email> \
--scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>"
下列範例會藉由指定物件識別碼,將儲存體 Blob 資料讀取者角色指派給使用者。 若要深入了解 --assignee-object-id
和 --assignee-principal-type
參數,請參閱 az 角色指派。 在此範例中,角色指派的範圍是儲存體帳戶的層級。 請務必以自身的值來取代括弧中的範例值和預留位置值 (<>
):
az role assignment create \
--role "Storage Blob Data Reader" \
--assignee-object-id "ab12cd34-ef56-ab12-cd34-ef56ab12cd34" \
--assignee-principal-type "User" \
--scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>"
如需在訂用帳戶、資源群組或儲存體帳戶範圍中使用 Azure CLI 指派角色的詳細資訊,請參閱使用 Azure CLI 指派 Azure 角色。