Как получить сведения о сетевой карте для группы безопасности приложений / группы ресурсов - PullRequest
0 голосов
/ 15 января 2019

Я ищу команду PowerShell, которая используется для перечисления отношений между сетевой интерфейсной картой и связанной группой безопасности приложений / группой ресурсов. Я использую следующие команды, и он отображает только VMName, IP-адрес. Невозможно отобразить группу безопасности приложения.

Я уже использую -ExpandProperty ApplicationSecurityGroups, но все еще не работает.

$nics =Get-AzureRmNetworkInterface -ResourceGroupName "My-RG" 

foreach($nic in $nics)
{
    $vm = $vms | where-object -Property Id -EQ $nic.VirtualMachine.id
    $Name = $nic.Name
    $prv =  $nic.IpConfigurations | select-object -ExpandProperty PrivateIpAddress
    $alloc =  $nic.IpConfigurations | select-object -ExpandProperty PrivateIpAllocationMethod
    $asc =  $nic.IpConfigurations | select-object -ExpandProperty ApplicationSecurityGroups
    Write-Output "$Name, $prv , $asc"
}

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Дело в том, что вы можете получить информацию ASG только из свойства IpConfigurationsText в виде строки, поэтому вам нужно обновить запрос следующим образом:

$nics = Get-AzureRmNetworkInterface -ResourceGroupName "My-RG"

foreach($nic in $nics)
{
    $GetAzureNIC = Get-AzureRmNetworkInterface -ResourceGroupName "My-RG" -Name $nic.Name
    $Name = $nic.Name
    $prv =  $nic.IpConfigurations.PrivateIpAddress
    $alloc =  $nic.IpConfigurations.PrivateIpAllocationMethod
    $asgResourceID = ($GetAzureNIC.IpConfigurationsText | ConvertFrom-Json).ApplicationSecurityGroups.Id
    $asgName = (Get-AzureRmResource -ResourceId $asgResourceID).Name
    Write-Output "$Name, $prv, $alloc, $asgName, $asgResourceID"
}

РЕДАКТИРОВАТЬ: я заметил, что вытакже хотите получить метод выделения, но не используйте его в Write-Output и обновили запрос, включив в него как имя ASG, так и идентификатор ресурса ASG, выберите тот, который вам нужен.

0 голосов
/ 15 января 2019

Я только что проверил ваши команды и могу успешно получить группу безопасности приложения с компьютера, на котором настроена ASG. Однако это будет работать только в том случае, если вы поместили виртуальную машину в ASG, ASG обеспечивают микросегментацию внутри подсети, поэтому вы можете группировать серверы приложений, базы данных и т. Д. И применять правила NSG к группам, а не к отдельным серверам. .

Если вместо этого вы хотите узнать, в каком NSG находится виртуальная машина, вам нужна другая команда. NSG - это ресурс, который подключается к ВМ или NIC и действует как брандмауэр. Если вы хотите этого, то вам нужно запустить:

$nsg =  $nic | select-object -ExpandProperty NetworkSecurityGroup

Однако это только приведет к тому, что вы примените NSG к ВМ, вы также можете применить их на уровне ВМ, поэтому вам лучше выполнить эту команду:

$effectiveRules=Get-AzureRmEffectiveNetworkSecurityGroup -NetworkInterfaceName <nicName> -ResourceGroupName <resourceGroup>
$effectiveRules.NetworSecurityGroup

В этом списке будут перечислены все NSG, примененные либо на уровне NIC, либо на уровне подсети.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...