你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
专用链接入门
概述
本指南介绍 Azure 运营商 Service Manager (AOSM) 专用链接 (PL) 功能,该功能适用于 Azure 运营商关系上托管的项目存储。 作为 AOSM 边缘注册表计划的一部分,PL 使用 Azure 专用终结点和 Azure 专用链接服务安全地回退 Nexus 本地项目存储流量。 此流量永远不会向 Internet 公开,而是专门遍历 Microsoft 的专用网络。
介绍
本文档提供了使用 AOSM 发布者 API 为 AOSM 项目存储启用专用链接功能的快速入门指南。
所需的权限
使用 Nexus 结构控制器 (NFC) 链接和管理专用终结点所需的操作需要以下非默认角色权限。
链接和管理手动专用终结点的权限
移除专用终结点
"Microsoft.HybridNetwork/publishers/artifactStores/removePrivateEndPoints/action"
批准专用终结点
"Microsoft.HybridNetwork/publishers/artifactStores/approvePrivateEndPoints/action"
使用 NFC 链接和管理专用终结点的权限
添加 NFC 专用终结点
"Microsoft.HybridNetwork/publishers/artifactStores/addNetworkFabricControllerEndPoints/action"
"Microsoft.ManagedNetworkFabric/networkFabricControllers/joinartifactstore/action"
列出 NFC 专用终结点
"Microsoft.HybridNetwork/publishers/artifactStores/listNetworkFabricControllerPrivateEndPoints/action"
删除 NFC 专用终结点
"Microsoft.HybridNetwork/publishers/artifactStores/deleteNetworkFabricControllerEndPoints/action"
"Microsoft.ManagedNetworkFabric/networkFabricControllers/disjoinartifactstore/action"
注意
由于引入了新的 NFC 权限,建议的角色特权将更新。
使用 AOSM API 设置专用链接
在安全上传资源之前,以下操作序列会建立到项目存储的 PL 连接。
创建发布者和项目存储
- 创建标识类型设置为“SystemAssigned”的新发布者资源。
- 如果发布者尚未创建此属性,请使用 reput 操作进行更新。
- 使用新属性“backingResourcePublicNetworkAccess”禁用项目存储公共访问。
- 该属性会首先添加到 2024-04-15 版本中。
- 如果 ArtifactResource 尚未创建此属性,请使用 reput 操作进行更新。
示例发布者 bicep 脚本
param location string = resourceGroup().location
param publisherName string
param acrArtifactStoreName string
/* AOSM publisher resource creation
*/
var publisherNameWithLocation = concat(publisherName, uniqueString(resourceGroup().id))
resource publisher 'Microsoft.HybridNetwork/publishers@2023-09-01' = {
name: publisherNameWithLocation
location: location
identity: {
type: 'SystemAssigned'
}
properties: {
scope: 'Private'
}
}
/* AOSM artifact store resource creation
*/
resource acrArtifactStore 'Microsoft.HybridNetwork/publishers/artifactStores@2024-04-15' = {
parent: publisher
name: acrArtifactStoreName
location: location
properties: {
storeType: 'AzureContainerRegistry'
backingResourcePublicNetworkAccess: 'Disabled'
}
}
手动终结点操作
建立 PL 后,以下操作可手动管理项目存储。
管理专用终结点访问
默认情况下,当项目存储连接到 vnet 时,用户无权访问 ACR,因此专用终结点最终会处于挂起状态。 以下 Azure rest 命令和有效负载使用户能够批准、拒绝和/或列出这些终结点。
注意
在此工作流中,vnet 由客户管理。
示例 JSON 有效负载:
{
"manualPrivateEndPointConnections": [
{
"id":"/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroup>/providers/Microsoft.Network/privateEndpoints/peName"
}
]
}
示例专用终结点命令
# approve private endpoints
az rest --method post --url https://management.azure.com/subscriptions/<Subscription>/resourceGroups/<ResourceGroup>/providers/Microsoft.HybridNetwork/publishers/<Publisher>/artifactStores/<ArtifactStore>/approveprivateendpoints?api-version=2024-04-15 --body '{ \"manualPrivateEndPointConnections\" : [ { \"id\" : \"/subscriptions/<Subscription>/resourceGroups/<ResourceGroup>/providers/Microsoft.Network/privateEndpoints/peName\" } ] }'
# remove private endpoints
az rest --method post --url https://management.azure.com/subscriptions/<Subscription>/resourceGroups/<ResourceGroup>/providers/Microsoft.HybridNetwork/publishers/<Publisher>/artifactStores/<ArtifactStore>/removeprivateendpoints?api-version=2024-04-15 --body '{ \"manualPrivateEndPointConnections\" : [ { \"id\" : \"/subscriptions/<Subscription>/resourceGroups/<ResourceGroup>/providers/Microsoft.Network/privateEndpoints/peName\" } ] }'
# list private endpoints
az rest --method post --url https://management.azure.com/subscriptions/<Subscription>resourceGroups/<ResourceGroup>/providers/Microsoft.HybridNetwork/publishers/<Publisher>/artifactStores/<artifactStore>/listPrivateEndPoints?api-version=2024-04-15 --body '{}'
将专用终结点添加到 NFC
以下 Azure rest 命令使用户能够创建、删除和/或列出专用终结点、ACR 和 Nexus 托管 vnet 之间的关联。
示例专用终结点命令
# add nfc private endpoints
az rest --method post --url https://management.azure.com/subscriptions/<Subscription>/resourceGroups/<ResourceGroup>/providers/Microsoft.HybridNetwork/publishers/<Publisher>/artifactStores/<artifactStore>/addnetworkfabriccontrollerendpoints?apiversion=2024-04-15 --body '{ \"networkFabricControllerIds\":[{\"id\": \"/subscriptions/<Subscription>/resourceGroups/op2lab-nfc-useop1/providers/Microsoft.ManagedNetworkFabric/networkFabricControllers/op2labnfc01\"}] }'
# list nfc private endpoints
az rest --method post --url https://management.azure.com/subscriptions/<Subscription>/resourceGroups/<ResourceGroup>/providers/Microsoft.HybridNetwork/publishers/<Publisher>/artifactStores/<artifactStore>/listnetworkfabriccontrollerprivateendpoints?apiversion=2024-04-15 --body '{}'
# delete nfc private endpoints
az rest --method post --url https://management.azure.com/subscriptions/<Subscription>/resourceGroups/<ResourceGroup>/providers/Microsoft.HybridNetwork/publishers/<publisher>/artifactStores/<artifactStore>/deletenetworkfabriccontrollerendpoints?api-version=2024-04-15 --body '{ \"networkFabricControllerIds\":[{\"id\": \"/subscriptions/<Subscription>/resourceGroups/op2lab-nfc-useop1/providers/Microsoft.ManagedNetworkFabric/networkFabricControllers/op2labnfc01\"}] }'