【问题标题】:Peering in Azure - 2nd subscription "not found in tenant"在 Azure 中对等 - 第二个订阅“未在租户中找到”
【发布时间】:2019-08-24 00:10:36
【问题描述】:

当我尝试使用 Powershell 在 Azure 中建立对等链接时,在不同订阅但在同一租户中的 vnet 之间,我收到以下错误消息。

不指定租户:

Set-AzureRmContext : 请提供有效的租户或有效的订阅。

所以我尝试指定租户:

Get-AzureRmSubscription:在租户 **** 中找不到订阅。请验证该租户中是否存在订阅。

我将 Jenkins 与可以访问开发订阅的 root 帐户一起使用。在作业运行之前,我正在使用 Microsoft Azure 服务主体绑定设置这些凭据。

有谁知道我可以如何编写我的 Powershell 脚本,以便 Azure 端识别我尝试对等的第二个订阅 ID?

当前代码如下。

Write-Host "Create Vnet Peering from dev-vnet to test-centralhub-vnet"

$Subscription1 = Get-AzureRmSubscription -TenantId '(sanitised for Stackoverflow)' -SubscriptionId '(sanitised for Stackoverflow)'
Set-AzureRmContext -Subscription $subscription1
$Vnet1 = Get-AzureRmVirtualNetwork -name 'test-centralhub-vnet' -ResourceGroupName 'test-networks-hub-rg'

$Subscription2 = Get-AzureRmSubscription -TenantId '(sanitised for Stackoverflow)' -SubscriptionId '(sanitised for Stackoverflow)'
Set-AzureRmContext -Subscription $Subscription2
$Vnet2 = Get-AzureRmVirtualNetwork -name 'dev-vnet' -ResourceGroupName 'networks-dev-rg'

Set-AzureRmContext -Subscription '(sanitised for Stackoverflow)'
Add-AzureRmVirtualNetworkPeering -Name 'dev-vnet_to_test-centralhub-vnet' -VirtualNetwork $Vnet2 -RemoteVirtualNetworkId $Vnet1.ID -UseRemoteGateways

【问题讨论】:

  • 通常,该错误表明您没有该订阅的权限。你确定你可以访问这两个潜艇吗?

标签: azure powershell jenkins cloud


【解决方案1】:

正如评论所指出的,您登录的帐户必须具有创建虚拟网络对等互连的必要权限。只要两个订阅的特权用户授权对等互连并且订阅与同一个 Active Directory 租户相关联,就可以对等存在于两个不同订阅中的虚拟网络。

有关权限列表,请参阅Virtual network peering permissions

我只是在我本地的 Powershell 上进行了测试。我的帐户在另一个订阅级别被分配了contributor 角色,然后使用同一帐户成功运行您的 Powershell 脚本。

如果您在不同订阅中使用不同帐户创建对等互连。您可以通过为每个订阅输入 Connect-AzureRmAccount 命令来登录 Azure。更多详情来自Create peering - PowerShell。请注意,链接脚本使用新的Az 模块。您可以参考它以将 Az 替换为 AzureRm 用于 AzureRm 模块。

【讨论】:

  • 据我所知,这似乎是正确的。我需要与负责设置权限的安全工程师讨论这个问题,因为我自己无法更改它们。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-02
  • 2022-08-16
相关资源
最近更新 更多