將 Service Fabric 叢集上的 Azure 資源存取權授與 Service Fabric 應用程式
在應用程式可使用其受控識別來存取其他資源之前,請先將權限授與所存取受保護 Azure 資源上的身分識別。 授與權限通常是 Azure 服務控制平面上的管理動作,該服務擁有透過 Azure Resource Manager 路由傳送的受保護資源。 該服務會強制執行任何適用的角色型存取檢查。
確切的步驟順序將取決於所存取的 Azure 資源類型,以及用來授與權限的語言和用戶端。 本文假設使用者指派的身分識別已指派給應用程式,並包含數個範例。 如需有關授與權限的最新指示,請參閱個別 Azure 服務的文件。
授與 Azure 儲存體的存取權
您可以使用 Service Fabric 應用程式的受控識別 (在此情況下為使用者指派),以取得 Azure 儲存體 Blob 中的資料。 使用下列步驟,將 Azure 入口網站中的必要權限授與身分識別:
- 瀏覽至儲存體帳戶。
- 選取左側面板中的 [存取控制 (IAM)] 連結。
- (選用) 檢查現有的存取權:在 [尋找] 控制項中選取 [系統指派] 或 [使用者指派] 的受控識別。 從後續的結果清單中,選取適當的身分識別。
- 選取頁面頂端的 [新增]>[新增角色指派],為應用程式的身分識別新增角色指派。
- 在 [角色] 下,從下拉式清單中,選取 [儲存體 Blob 資料讀取器]。
- 在下一個下拉式清單中,於 [指派存取權] 下,選擇 [使用者指派的受控識別]。
- 接下來,請確保 [訂用帳戶] 下拉式清單中已列出適當的訂用帳戶,然後將 [資源群組] 設定為 [所有資源群組]。
- 在 [選取] 下,選擇對應至 Service Fabric 應用程式的 UAI,然後選取 [儲存]。
系統指派的 Service Fabric 受控識別支援不包含 Azure 入口網站中的整合。 如果您的應用程式使用系統指派的身分識別,請尋找應用程式身分識別的用戶端識別碼,然後重複上述步驟,但選取 [尋找] 控制項中的 [Microsoft Entra 使用者、群組或服務主體] 選項。
授與對 Azure Key Vault 的存取權
在存取儲存體時,您同樣可以使用 Service Fabric 應用程式的受控識別來存取 Azure Key Vault。 在 Azure 入口網站中授與存取權的步驟類似於上面所列的步驟。 請參閱下圖以了解差異。
下列範例說明如何使用範本部署來授與保存庫的存取權。 在範本的 resources
元素下,將下列程式碼片段新增為另一個項目。 此範例會分別示範使用者指派和系統指派身分識別類型的存取權授與。 選擇適用的類型。
# under 'variables':
"variables": {
"userAssignedIdentityResourceId" : "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName'))]",
}
# under 'resources':
{
"type": "Microsoft.KeyVault/vaults/accessPolicies",
"name": "[concat(parameters('keyVaultName'), '/add')]",
"apiVersion": "2018-02-14",
"properties": {
"accessPolicies": [
{
"tenantId": "[reference(variables('userAssignedIdentityResourceId'), '2018-11-30').tenantId]",
"objectId": "[reference(variables('userAssignedIdentityResourceId'), '2018-11-30').principalId]",
"dependsOn": [
"[variables('userAssignedIdentityResourceId')]"
],
"permissions": {
"keys": ["get", "list"],
"secrets": ["get", "list"],
"certificates": ["get", "list"]
}
}
]
}
},
針對系統指派的受控識別:
# under 'variables':
"variables": {
"sfAppSystemAssignedIdentityResourceId": "[concat(resourceId('Microsoft.ServiceFabric/managedClusters/applications/', parameters('clusterName'), parameters('applicationName')), '/providers/Microsoft.ManagedIdentity/Identities/default')]"
}
# under 'resources':
{
"type": "Microsoft.KeyVault/vaults/accessPolicies",
"name": "[concat(parameters('keyVaultName'), '/add')]",
"apiVersion": "2018-02-14",
"properties": {
"accessPolicies": [
{
"name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
"tenantId": "[reference(variables('sfAppSystemAssignedIdentityResourceId'), '2018-11-30').tenantId]",
"objectId": "[reference(variables('sfAppSystemAssignedIdentityResourceId'), '2018-11-30').principalId]",
"dependsOn": [
"[variables('sfAppSystemAssignedIdentityResourceId')]"
],
"permissions": {
"secrets": [
"get",
"list"
],
"certificates":
[
"get",
"list"
]
}
},
]
}
}
如需詳細資訊,請參閱保存庫 - 更新存取原則。