Azure Resource Manager Implementação de regras de segurança com o powershell

1

Estou tentando implementar as regras do NetworkSecurityGroup do Azure por meio do powershell.

Usando o console eu pareço ser capaz de criar o que eu quero, no entanto usando powershell eu estou tendo pouco sucesso.

Usando a seguinte sintaxe:

Get-AzureRmNetworkSecurityGroup -Name $SecGroup -ResourceGroupName $RGName 
| Set-AzureRmNetworkSecurityGroup 
| Add-AzureRmNetworkSecurityRuleConfig  
    -Name 'MSTSC' 
    -Direction Inbound 
    -Priority 100 
    -Access Allow 
    -SourceAddressPrefix 'INTERNET'  
    -SourcePortRange '65456' 
    -DestinationAddressPrefix '*' 
    -DestinationPortRange '3389' 
    -Protocol '*'

Estou obtendo uma janela de saída que parece indicar que a regra de segurança foi criada:

No entanto, se eu verificar o portal ou fizer

Get-AzureRmNetworkSecurityGroup -Name $SecGroup -ResourceGroupName $RGName

A regra recém-adicionada não está lá.
Se, no entanto, adicionar a regra ao portal e tentar criá-la usando meu comando powershell, recebo o seguinte erro:

Add-AzureRmNetworkSecurityRuleConfig : Rule with the specified name already exists

Estou sentindo falta de algo, mas o quê?

    
por Reaces 27.01.2016 / 13:04

1 resposta

1

Esta foi realmente uma questão muito boba.

As etapas que você deve seguir ao adicionar uma nova regra a um grupo de segurança:

  1. Obter o grupo de segurança usando Get-AzureRmNetworkSecurityGroup
  2. Adicione o novo RuleConfig usando Add-AzureRmNetworkSecurityRuleConfig
  3. Defina o novo grupo de segurança no Azure (publique-o no IE) usando Set-AzureRmNetworkSecurityGroup

Minha falta de compreensão destes passos e simplesmente copiar colagens da internet causou meu erro.
Quando atinge o segundo pipe, ele define o grupo de segurança ainda não atualizado (Então, estou simplesmente empurrando o grupo exatamente como eu o puxei) e me fornece a mensagem de sucesso.
Depois que eu Add o novo grupo no meu cache, que é uma cópia local das regras sem publicá-lo.

Então, uma maneira correta de fazer isso é:

Get-AzureRmNetworkSecurityGroup -Name $SecGroup -ResourceGroupName $RGName | 
Add-AzureRmNetworkSecurityRuleConfig 
    -Name 'MSTSC' 
    -Direction Inbound 
    -Priority 100 
    -Access Deny 
    -SourceAddressPrefix 'INTERNET'  
    -SourcePortRange '3389' 
    -DestinationAddressPrefix '*' 
    -DestinationPortRange '3389' 
    -Protocol '*' |
Set-AzureRmNetworkSecurityGroup
    
por 27.01.2016 / 15:30