管理 Azure 角色指派

所有 .NET AspireAzure 托管集成都定义 Azure 资源。 这些资源 附带默认角色分配。 可以将这些默认角色分配替换为内置角色 或自定义角色分配。 本文介绍如何管理 Azure 在 .NET Aspire 资源上的角色分配。

默认内置角色分配

将资源添加到Azure应用模型时,会为其分配默认角色。 如果一个资源取决于另一个资源,它会继承与被引用资源相同的角色分配,除非明确进行了重写。

假设 API 项目资源引用 Azure 搜索 资源。 API 项目获得默认角色分配,如以下示例所示:

var builder = DistributedApplication.CreateBuilder(args);

var search = builder.AddAzureSearch("search");

var api = builder.AddProject<Projects.Api>("api")
                 .WithReference(search);

在示例代码中, api 项目资源依赖于 Azuresearch 资源,这意味着它引用资源 search 。 默认情况下,资源 search 分配了以下内置角色:

这些角色分配允许 API 项目读取和写入搜索资源的数据 Azure ,并对其进行管理。 但是,此行为可能并不总是可取的。 例如,你可能希望将 API 项目限制为仅从 Azure 搜索资源读取数据。

替代默认角色分配

若要替代默认角色分配,请使用 WithRoleAssignments API 并分配内置角色,如以下示例所示:

var builder = DistributedApplication.CreateBuilder(args);

var search = builder.AddAzureSearch("search");

var api = builder.AddProject<Projects.Api>("api")
                 .WithRoleAssignments(search, SearchBuiltInRole.SearchIndexDataReader)
                 .WithReference(search);

使用 WithRoleAssignments 该方法时,它将默认角色分配替换为指定的角色分配。 此方法需要两个参数:角色分配适用的资源以及要分配的内置角色。 在前面的示例中,为 search 资源分配 SearchBuiltInRole.SearchIndexDataReader 了角色。

将默认角色分配替换为 SearchIndexDataReader 角色时,API 项目仅限于从 Azure 搜索资源读取数据。 这可确保 API 项目无法将数据 Azure 写入搜索资源。

有关详细信息,请参阅 Azure 内置角色

内置角色分配指南

所有内置角色都在命名空间中 Azure.Provisioning 定义,并包含在相应的 📦Azure命名空间中。Provisioning.* NuGet 包。 每个 .NET AspireAzure 托管集成都自动取决于相应的预配包。 有关详细信息,请参阅 基础结构即代码

以下部分列出了可用作 API 参数WithRoleAssignments的每个Azure预配类型的内置角色。

Azure 应用配置

预配资源类型为 AppConfigurationStore,内置角色在结构中 AppConfigurationBuiltInRole 定义。 内置角色包括:

Azure 应用容器

预配资源类型为 ContainerApp,内置角色在结构中 AppContainersBuiltInRole 定义。 内置角色包括:

Azure Application Insights

预配资源类型为 ApplicationInsightsComponent,内置角色在结构中 ApplicationInsightsBuiltInRole 定义。 内置角色包括:

有关详细信息,请参阅“用于Application Insights.NET Aspire遥测”。

Azure AI (前认知服务)

预配资源类型为 CognitiveServicesAccount,内置角色在结构中 CognitiveServicesBuiltInRole 定义。 内置角色包括:

有关详细信息,请参阅.NET AspireAzureOpenAI集成(预览版)。

Azure Cosmos DB

预配资源类型为 CosmosDBAccount,内置角色在结构中 CosmosDBBuiltInRole 定义。 内置角色包括:

有关详细信息,请参见:

Azure Event Hubs

预配资源类型为 EventHubsNamespace,内置角色在结构中 EventHubsBuiltInRole 定义。 内置角色包括:

有关详细信息,请参阅 .NET AspireAzure Event Hubs 集成

Azure Key Vault

预配资源类型为 KeyVaultService,内置角色在结构中 KeyVaultBuiltInRole 定义。 内置的角色如下:

有关详细信息,请参阅 .NET AspireAzure Key Vault 集成

预配资源类型为 SearchService,内置角色在结构中 SearchBuiltInRole 定义。 内置角色包括:

有关详细信息,请参阅 .NET AspireAzure AI 搜索集成

Azure Service Bus

预配资源类型为 ServiceBusNamespace,内置角色在结构中 ServiceBusBuiltInRole 定义。 内置角色包括:

有关详细信息,请参阅 .NET AspireAzure Service Bus 集成

Azure SignalR Service

预配资源类型为 SignalRService,内置角色在结构中 SignalRBuiltInRole 定义。 内置角色包括:

有关详细信息,请参阅 .NET AspireAzureAzure SignalR Service 的支持。

Azure SQL

预配资源类型为 SqlServer,内置角色在结构中 SqlBuiltInRole 定义。 内置角色包括:

Azure 存储

预配资源类型为 StorageAccount,内置角色在结构中 StorageBuiltInRole 定义。 内置角色包括:

有关详细信息,请参见:

Azure Web PubSub

预配资源类型为 WebPubSubService,内置角色在结构中 WebPubSubBuiltInRole 定义。 内置角色包括:

有关详细信息,请参阅 .NET AspireAzureWeb PubSub 集成

另请参阅