使用服务主体进行自动化
服务主体是在租户中创建的 Microsoft Entra 应用程序资源,用于执行无人参与的资源和服务级别操作。 服务主体是特殊类型的用户标识,具有应用程序 ID 和密码或证书。 服务主体仅具有执行由所分配的角色和权限定义的任务所需的权限。
在 Analysis Services 中,服务主体可以与 Azure 自动化、PowerShell 无人参与模式、自定义客户端应用程序和 Web 应用配合使用,以便自动完成常见的任务。 例如,预配服务器、部署模型、数据刷新、垂直缩放、暂停/恢复等操作均可使用服务主体自动完成。 权限通过角色成员身份分配给服务主体,十分类似于常规的 Microsoft Entra UPN 帐户。
Analysis Services 不支持 由托管标识使用服务主体执行的操作。 要了解详细信息,请参阅 Azure 资源的托管标识和支持 Microsoft Entra 身份验证的 Azure 服务。
创建服务主体
可以通过 Azure 门户或 PowerShell 创建服务主体。 若要了解更多信息,请参阅以下文章:
创建服务主体 - Azure 门户
创建服务主体 - PowerShell
在 Azure 自动化中存储凭据和证书资产
服务主体凭据和证书可以安全地存储在 Azure 自动化中进行 Runbook 操作。 若要了解更多信息,请参阅以下文章:
Azure 自动化中的凭据资产
Azure 自动化中的证书资产
将服务主体添加到服务器管理员角色
在使用服务主体进行 Analysis Services 服务器管理操作之前,必须将其添加到服务器管理员角色。 必须直接将服务主体添加到服务器管理员角色。 不支持先将服务主体添加到安全组,然后再将该安全组添加到服务器管理员角色。 有关详细信息,请参阅将服务主体添加到服务器管理员角色。
连接字符串中的服务主体
服务主体 appID 和密码或证书可以在连接字符串中使用,与 UPN 很类似。
PowerShell
注意
建议使用 Azure Az PowerShell 模块与 Azure 交互。 若要开始,请参阅安装 Azure PowerShell。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az。
使用 Az.AnalysisServices 模块
将服务主体与 Az.AnalysisServices 模块配合使用来执行资源管理操作时,请使用 Connect-AzAccount -Environment AzureChinaCloud
cmdlet。
以下示例使用 appID 和密码执行控制平面操作,以便与只读副本同步并进行纵向/横向扩展:
Param (
[Parameter(Mandatory=$true)] [String] $AppId,
[Parameter(Mandatory=$true)] [String] $PlainPWord,
[Parameter(Mandatory=$true)] [String] $TenantId
)
$PWord = ConvertTo-SecureString -String $PlainPWord -AsPlainText -Force
$Credential = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $AppId, $PWord
# Connect using Az module
Connect-AzAccount -Environment AzureChinaCloud -Credential $Credential -SubscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx"
# Synchronize a database for query scale out
Sync-AzAnalysisServicesInstance -Instance "asazure://chinanorth.asazure.chinacloudapi.cn/testsvr" -Database "testdb"
# Scale up the server to an S1, set 2 read-only replicas, and remove the primary from the query pool. The new replicas will hydrate from the synchronized data.
Set-AzAnalysisServicesServer -Name "testsvr" -ResourceGroupName "testRG" -Sku "S1" -ReadonlyReplicaCount 2 -DefaultConnectionMode Readonly
使用 SQLServer 模块
以下示例使用 appID 和密码执行模型数据库刷新操作:
Param (
[Parameter(Mandatory=$true)] [String] $AppId,
[Parameter(Mandatory=$true)] [String] $PlainPWord,
[Parameter(Mandatory=$true)] [String] $TenantId
)
$PWord = ConvertTo-SecureString -String $PlainPWord -AsPlainText -Force
$Credential = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $AppId, $PWord
Invoke-ProcessTable -Server "asazure://chinanorth.asazure.chinacloudapi.cn/myserver" -TableName "MyTable" -Database "MyDb" -RefreshType "Full" -ServicePrincipal -ApplicationId $AppId -TenantId $TenantId -Credential $Credential
AMO 和 ADOMD
通过客户端应用程序和 Web 应用进行连接时,由 NuGet 提供的 AMO 和 ADOMD 客户端库 15.0.2 及更高版本的可安装包支持在连接字符串中使用服务主体,可以使用 app:AppID
语法以及密码或 cert:thumbprint
。
以下示例使用 appID
和 password
执行模型数据库刷新操作:
string appId = "xxx";
string authKey = "yyy";
string connString = $"Provider=MSOLAP;Data Source=asazure://chinanorth.asazure.chinacloudapi.cn/<servername>;User ID=app:{appId};Password={authKey};";
Server server = new Server();
server.Connect(connString);
Database db = server.Databases.FindByName("adventureworks");
Table tbl = db.Model.Tables.Find("DimDate");
tbl.RequestRefresh(RefreshType.Full);
db.Model.SaveChanges();