你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Synapse Analytics 访问控制适用于 .NET 的客户端库 - 版本 1.0.0-preview.5

此目录包含 .NET SDK 的开放源代码子集。 有关完整 Azure SDK 的文档,请参阅 Microsoft Azure .NET 开发人员中心

Azure Synapse Analytics 访问控制客户端库支持以编程方式管理角色分配。

Azure Synapse 是一种无限制的分析服务,它将企业数据仓库和大数据分析结合在一起。 借助它可以使用无服务器的按需资源或预配资源,任意执行自己定义的大规模数据查询。 Azure Synapse 将这两个领域结合在一起,以统一的体验引入、准备、管理和提供数据,以满足即时 BI 和机器学习的需求。

入门

可以从 Microsoft Azure 下载页下载完整的 Microsoft Azure SDK,并随附对生成部署包、与工具集成、丰富的命令行工具等的支持。

为了获得最佳开发体验,开发人员应使用库的官方 Microsoft NuGet 包。 NuGet 包会定期更新新功能和修补程序。

安装包

使用 NuGet 安装适用于 .NET 的 Azure Synapse Analytics 访问控制客户端库:

dotnet add package Azure.Analytics.Synapse.AccessControl --version 0.1.0-preview.1

先决条件

如果使用 Azure CLI,则命令如下所示:

az synapse workspace create \
    --name <your-workspace-name> \
    --resource-group <your-resource-group-name> \
    --storage-account <your-storage-account-name> \
    --file-system <your-storage-file-system-name> \
    --sql-admin-login-user <your-sql-admin-user-name> \
    --sql-admin-login-password <your-sql-admin-user-password> \
    --location <your-workspace-location>

验证客户端

若要与 Azure Synapse Analytics 服务交互,需要创建 RoleAssignmentsClient 和/或 RoleDefinitionsClient 类的实例。

还需要一个 工作区终结点(可能在门户中显示为“开发终结点”),客户端 密码凭据 (客户端 ID、客户端密码、租户 ID) 来实例化客户端对象。

本入门部分将使用客户端机密凭据身份验证,但你可以找到使用 Azure 标识进行身份验证的更多方法。 若要使用如下所示的 DefaultAzureCredential 提供程序或 Azure SDK 提供的其他凭据提供程序,应安装 Azure.Identity 包:

Install-Package Azure.Identity

关键概念

RoleAssignmentsClient & RoleDefinitionsClient

RoleAssignmentsClient使用 可以创建、更新和删除角色分配。 使用 可以从 RoleDefinitionsClient 工作区获取角色分配。

角色分配

控制对 Synapse 资源的访问的方式是创建角色分配。 角色分配是将角色定义附加到特定范围内的用户、组、服务主体或托管标识以授予访问权限的过程。 通过创建角色分配来授予访问权限,通过删除角色分配来撤销访问权限。

线程安全

我们保证所有客户端实例方法都是线程安全的,并且彼此独立 (准则) 。 这可确保重用客户端实例的建议始终是安全的,即使在线程之间也是如此。

其他概念

客户端选项 | 访问响应 | 长时间运行的操作 | 处理失败 | 诊断 | 嘲笑 | 客户端生存期

示例

Azure.Analytics.Synapse.AccessControl 包支持同步和异步 API。 以下部分介绍一些最常见的Azure Synapse Analytics 访问控制相关任务:

角色分配示例

创建访问控制客户端

若要与 Azure Synapse 交互,需要实例化 RoleAssignmentsClientRoleDefinitionsClient。 它需要终结点 URL 和 TokenCredential

// Replace the string below with your actual endpoint url.
string endpoint = "<my-endpoint-url>";

RoleAssignmentsClient roleAssignmentsClient = new RoleAssignmentsClient(new Uri(endpoint), new DefaultAzureCredential());
RoleDefinitionsClient definitionsClient = new RoleDefinitionsClient(new Uri(endpoint), new DefaultAzureCredential());

创建角色分配

首先,需要确定要分配的角色的 ID,以及要分配该角色的主体的 ID。

Response<IReadOnlyList<SynapseRoleDefinition>> roles = definitionsClient.ListRoleDefinitions();
SynapseRoleDefinition role = roles.Value.Single(role => role.Name == "Synapse Administrator");
Guid roleId = role.Id.Value;

string assignedScope = "workspaces/<my-workspace-name>";

// Replace the string below with the ID you'd like to assign the role.
Guid principalId = /*<my-principal-id>"*/ Guid.NewGuid();

// Replace the string below with the ID of the assignment you'd like to use.
string assignmentId = "<my-assignment-id>";

然后,使用 选项调用 CreateRoleAssignment 以创建角色分配。

Response<RoleAssignmentDetails> response = roleAssignmentsClient.CreateRoleAssignment (assignmentId, roleId, principalId, assignedScope);
RoleAssignmentDetails roleAssignmentAdded = response.Value;

检索角色分配

可以通过调用 GetRoleAssignmentById来检索角色分配的详细信息,并传入分配 ID。

RoleAssignmentDetails roleAssignment = roleAssignmentsClient.GetRoleAssignmentById(roleAssignmentAdded.Id);
Console.WriteLine($"Role {roleAssignment.RoleDefinitionId} is assigned to {roleAssignment.PrincipalId}.");

列出角色分配

若要枚举 Synapse 工作区中的所有角色分配,可以调用 ListRoleDefinitions

Response<IReadOnlyList<SynapseRoleDefinition>> roleAssignments = definitionsClient.ListRoleDefinitions();
foreach (SynapseRoleDefinition assignment in roleAssignments.Value)
{
    Console.WriteLine(assignment.Id);
}

删除角色分配

若要删除不再需要的角色分配,可以调用 DeleteRoleAssignmentById,传入分配 ID。

roleAssignmentsClient.DeleteRoleAssignmentById(roleAssignment.Id);

生成

有关生成 Azure Synapse 客户端库的信息,请参阅生成用于 .NET 的 Microsoft Azure SDK

目标框架

有关 Azure Synapse 客户端库的目标框架的信息,请参阅用于 .NET 的 Microsoft Azure SDK的目标框架

疑难解答

请在 github 中打开问题。

后续步骤

下一步是添加更多示例

供稿

此项目采用了 Microsoft 开放源代码行为准则。 有关详细信息,请参阅行为准则常见问题解答,或如果有任何其他问题或意见,请与 联系。