AzureNSG用にPowershellスクリプトを最適化する

タラセンコ

すべてのインバウンドを検索するためのスクリプトがあり、ソースが任意であるAzureNSGのルールを許可します。それは彼の仕事をしていますが、Azureで利用可能なすべてのNSGのすべてのルールを反復するのに非常に長い時間がかかります。

質問はそれを最適化する方法があるので、より速く動作する可能性がありますか?ありがとう!

function nsg {

# List of default rules which are skipped

$array =
'Default rules'

# Get all RG with NSG

$RGS = (Get-AzureRmResource -ODataQuery "`$filter=resourcetype eq 'Microsoft.Network/networkSecurityGroups'").ResourceGroupName | Sort-Object -Unique

foreach ($RG in $RGS) { 

# List of all NSG names

$NSG_Names = (Get-AzureRmNetworkSecurityGroup -ResourceGroupName $RG).Name

# Get NSG rules

foreach ($NSG_Name in $NSG_Names){

$Rules = Get-AzureRmNetworkSecurityGroup -Name $NSG_Name -ResourceGroupName $RG | Get-AzureRmNetworkSecurityRuleConfig | Select-Object -ExpandProperty Name

# Check if rule is not default

foreach ($Rule in $Rules){

    if ($array.contains($Rule)){

    Write-Verbose "$Rule excluded because it is default!"

    }
else {

    Write-Verbose "$NSG_Name - $Rule"

    #$DestinationAddressPrefix = Get-AzureRmNetworkSecurityGroup -Name $NSG_Name -ResourceGroupName $RG | Get-AzureRmNetworkSecurityRuleConfig -Name $Rule | Select-Object -ExpandProperty DestinationAddressPrefix
    $DestinationPortRange = Get-AzureRmNetworkSecurityGroup -Name $NSG_Name -ResourceGroupName $RG | Get-AzureRmNetworkSecurityRuleConfig -Name $Rule | Select-Object -ExpandProperty DestinationPortRange
    $SourceAddrPref = Get-AzureRmNetworkSecurityGroup -Name $NSG_Name -ResourceGroupName $RG | Get-AzureRmNetworkSecurityRuleConfig -Name $Rule | Select-Object -ExpandProperty SourceAddressPrefix
    $SourcePortRange = Get-AzureRmNetworkSecurityGroup -Name $NSG_Name -ResourceGroupName $RG | Get-AzureRmNetworkSecurityRuleConfig -Name $Rule | Select-Object -ExpandProperty SourcePortRange
    $Access = Get-AzureRmNetworkSecurityGroup -Name $NSG_Name -ResourceGroupName $RG | Get-AzureRmNetworkSecurityRuleConfig -Name $Rule | Select-Object -ExpandProperty Access
    $Direction = Get-AzureRmNetworkSecurityGroup -Name $NSG_Name -ResourceGroupName $RG | Get-AzureRmNetworkSecurityRuleConfig -Name $Rule | Select-Object -ExpandProperty Direction

# Chek rule for every criterion, access type, etc.

    if ($Direction -eq "Inbound" -and $SourceAddrPref -eq "*" -and $Access -eq "Allow"){ #-and $DestinationAddressPrefix -eq "*" -and $DestinationPortRange -eq "*") {

       $message = "Warning! RG: $RG; NSG: $NSG_Name has SOURCE ANY Rule: $Rule to Destionation Port: $DestinationPortRange"
       $message

}}}}}}
ミチバシリ

そのすべてのデータを繰り返す必要はないと思います。これらのネストされたループと並べ替えはすべて、速度低下の原因です。

すべてのNSGを、方向InboundとアクセスAllow番号、および送信元アドレスプレフィックスをとして出力したいだけのようです*これが事実である場合、あなたはこれをすることができます:

$nsgs = Get-AzureRmNetworkSecurityGroup

foreach ($nsg in $nsgs.SecurityRules)
{
    if ($nsg.Direction -eq "Inbound" -and $nsg.Access -eq "Allow" -and $nsg.SourceAddressPrefix -eq "*")
    {
        $nsg
    }
}

ここでは、から作成したセキュリティルールを繰り返します$nsgs.SecurityRulesデフォルトのものはにあり$nsgs.DefaultSecurityRulesます。Get-Memberこれらのプロパティを見つけるためにパイプすることができます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ループ用にDjangoクエリセットを最適化する

分類Dev

複数のsed置換用にシェルスクリプトを最適化する

分類Dev

GNUパラレル用にスクリプトコードを最適化する

分類Dev

大きなファイル用にawkスクリプトを最適化する

分類Dev

このメーリング リストのPowerShellスクリプトを最適化するにはどうすればよいですか

分類Dev

ActiveDirectory監査スクリプトを最適化する

分類Dev

PHPスクリプトを最適化する

分類Dev

スクリプトの速度を最適化する方法は?

分類Dev

バッチスクリプトを最適化する

分類Dev

"return false" がスクリプトを最適化する方法

分類Dev

Powershellスクリプトの速度。求められる最適化

分類Dev

タプルのリストのリストにSpacy単語のベクトル化を適用する

分類Dev

jsでスクリプトを最適化する方法は何ですか?

分類Dev

ネットブック用にGnomeデスクトップを最適化

分類Dev

正規分布を計算するNumPyスクリプトの最適化

分類Dev

複数のストリームを単一ループに最適化する

分類Dev

SQLクエリの相互適用を最適化する方法

分類Dev

他のスクリプトから最適化モードでPythonスクリプトを実行する

分類Dev

シバンラインのないbashスクリプトに完全なvimカラー化を適用する

分類Dev

mysqlリクエストを最適化する方法は?

分類Dev

テキストを検索するクエリの最適化

分類Dev

セットとプロジェクトの運用を最適化する

分類Dev

Samsung S8 で全画面表示用にアプリを最適化する

分類Dev

大量のポストメタ用にWPメタクエリを最適化しますか?

分類Dev

10インチタブレット用にアプリを最適化する方法は?

分類Dev

モバイル ランドスケープ ビュー用に Web サイトを最適化する

分類Dev

このUMLダイアグラムクラスをドキュメント生成用に最適化する方法

分類Dev

詩をインストールしたPythonスクリプトを最適化モードで実行する

分類Dev

タッチデバイス用にWebサイトを最適化する方法

Related 関連記事

  1. 1

    ループ用にDjangoクエリセットを最適化する

  2. 2

    複数のsed置換用にシェルスクリプトを最適化する

  3. 3

    GNUパラレル用にスクリプトコードを最適化する

  4. 4

    大きなファイル用にawkスクリプトを最適化する

  5. 5

    このメーリング リストのPowerShellスクリプトを最適化するにはどうすればよいですか

  6. 6

    ActiveDirectory監査スクリプトを最適化する

  7. 7

    PHPスクリプトを最適化する

  8. 8

    スクリプトの速度を最適化する方法は?

  9. 9

    バッチスクリプトを最適化する

  10. 10

    "return false" がスクリプトを最適化する方法

  11. 11

    Powershellスクリプトの速度。求められる最適化

  12. 12

    タプルのリストのリストにSpacy単語のベクトル化を適用する

  13. 13

    jsでスクリプトを最適化する方法は何ですか?

  14. 14

    ネットブック用にGnomeデスクトップを最適化

  15. 15

    正規分布を計算するNumPyスクリプトの最適化

  16. 16

    複数のストリームを単一ループに最適化する

  17. 17

    SQLクエリの相互適用を最適化する方法

  18. 18

    他のスクリプトから最適化モードでPythonスクリプトを実行する

  19. 19

    シバンラインのないbashスクリプトに完全なvimカラー化を適用する

  20. 20

    mysqlリクエストを最適化する方法は?

  21. 21

    テキストを検索するクエリの最適化

  22. 22

    セットとプロジェクトの運用を最適化する

  23. 23

    Samsung S8 で全画面表示用にアプリを最適化する

  24. 24

    大量のポストメタ用にWPメタクエリを最適化しますか?

  25. 25

    10インチタブレット用にアプリを最適化する方法は?

  26. 26

    モバイル ランドスケープ ビュー用に Web サイトを最適化する

  27. 27

    このUMLダイアグラムクラスをドキュメント生成用に最適化する方法

  28. 28

    詩をインストールしたPythonスクリプトを最適化モードで実行する

  29. 29

    タッチデバイス用にWebサイトを最適化する方法

ホットタグ

アーカイブ