网络安全组(nsg)是一个类似防火墙的网络安全功能,通过配置出入站规则和子网或网络接口来控制子网或网络接口的网络访问权限来增加安全性。
nsg是我们创建集群、局域网络不可少的配置,比如可配置shh远程通道(不建议)、端口开放、网络隔离、网络互通等。
一、平台配置
首先创建完网络安全组后主要部分分为两块
-
出入站规则:可以看到刚建好的nsg出入站各有3条默认规则,可按需配置自己需要的规则
-
网络接口与子网:可理解为上面定义的规则是给谁用,配置子网整个子网下的ip都要遵守规则,配置网络接口那网络接口绑定的ip(不论公网、私网)要遵守规则
二、代码编写
代码分三步:1、创建nsg 2、设置规则 3、绑定子网或网络接口 后两步不分先后
// 需先创建资源组 微软云一切活动都在订阅与资源组下
AzureResourceManager azureResourceManager = getAzureResourceManager();
// 创建nsg
NetworkSecurityGroup nsg = azureResourceManager.networkSecurityGroups()
.define("nsg-csdn")
.withRegion(Region.ASIA_EAST)
.withExistingResourceGroup("08c39d3a3f1f4e6aa25eb74f4a")
.create();
// 入站规则开通22端口 可进行远程访问
nsg.update()
.defineRule("allow-192.168.66.6")
.allowInbound()
.fromAnyAddress()
.fromAnyPort()
.toAnyAddress()
.toPort(22)
.withProtocol(SecurityRuleProtocol.TCP)
.withPriority(3100 + 200)
.attach()
.apply();
// 假如我现在已经创建好了linux虚拟机并配置了公网或子网 此时肯定会有一个网络接口绑定这个公网或子网
// 我们拿到网络接口后配置上创建的nsg后就可以远程访问了
NetworkInterface networkInterface = azureResourceManager.networkInterfaces().getById("/subscriptions/c87ba926-f7c2-4d53-8b8e-89245dc/resourceGroups/08c39d3a3f1f4e6aa25eb74f4a/providers/Microsoft.Network/networkInterfaces/nic0868414078c");
networkInterface.update().withExistingNetworkSecurityGroup(nsg).apply();