如何为网络安全组启用和配置流日志

时间:2019-07-11 13:59:17

标签: java azure azure-java-sdk

我无法使用NetworkWatcherRG或另一个现有资源组中的存储帐户来启用和配置网络安全组的流日志。我想知道我在sdk中做错了什么,因为我可以很容易地从azure gui中完成。

要复制

  • 检索网络观察者 适用于正确区域中的网络观察者
  • 检索该区域中现有网络安全组的流设置
  • 更新流设置以启用日志记录并将存储设置为现有存储帐户
<form role="#" action="#" method="#" id="#" enctype="multipart/form-data">
final PagedList<NetworkWatcher> nws = adapter.getItsAzure().networkWatchers().list();

            NetworkWatcher retval = null;
            for(final NetworkWatcher nw : nws ) {
                if(nw.region().equals(Region.GOV_US_VIRGINIA)) {
                    retval = nw;
                }
            }

            final ResourceGroup rg = adapter.getItsAzure().resourceGroups().getByName(retval.resourceGroupName());
            final StorageAccount sa = adapter.getItsAzure().storageAccounts().define(ResourceNameType.STORAGE_ACCOUNT.randomName("networkwatchersa"))
                .withRegion(Region.GOV_US_VIRGINIA)
                .withExistingResourceGroup(rg)
                .withAccessFromAllNetworks()
                .create();

            final String rgName = "resource-group-38f6628eccb84ec9aa1cd9b3c8f5f815";
            final NetworkSecurityGroup nsg = adapter.getItsAzure().networkSecurityGroups().getByResourceGroup(rgName, "add-network1-nat-securitygroup");

            final FlowLogSettings fls = retval.getFlowLogSettings(nsg.id());

            LOGGER.info("Found fls with enabled {} and storage id {}", fls.enabled(), fls.storageId());

            fls.update()
                .withLogging()
                .withStorageAccount(sa.id())
                .apply();

注意:上述错误中存在订阅ID,但已将其删除以进行发布

预期的行为 期望能够为存储帐户中的nsg启用流日志,或更详细的错误消息,我目前无法确定问题所在

设置:

OS:macOS IDE:Eclipse版本:2019-06(4.12.0) 使用的库版本:1.23

其他上下文 尝试使用服务主体作为订阅中的贡献者和所有者进行呼叫。我正在尝试理解错误消息,因为sdk调用似乎很简单。我怀疑这是权限或所有权问题。

1 个答案:

答案 0 :(得分:0)

我已经从我的角度复制了这个问题。最后,我已经解决了。只需忽略您收到的误导性错误消息即可。

即使您不想将其打开,也需要向FlowLogSettings提供TrafficAnalyticsConfigurationProperties。 因此,您需要首先创建一个日志分析工作区。 而且,您可以参考以下代码来启用和配置NSG的流日志。

    NetworkWatcher nw = azure.networkWatchers().listByResourceGroup("NetworkWatcherRG").get(1);
    NetworkSecurityGroup nsg = azure.networkSecurityGroups().getByResourceGroup("", "");
    StorageAccount sa = azure.storageAccounts().getByResourceGroup("", "");
    FlowLogSettings settings = nw.getFlowLogSettings(nsg.id());
    TrafficAnalyticsConfigurationProperties networkWatcherFlowAnalyticsConfiguration = new TrafficAnalyticsConfigurationProperties();
    networkWatcherFlowAnalyticsConfiguration.withWorkspaceId("").withWorkspaceRegion(Region.ASIA_SOUTHEAST.toString()).withWorkspaceResourceId("").withEnabled(false);
    settings.inner().flowAnalyticsConfiguration()
            .withNetworkWatcherFlowAnalyticsConfiguration(networkWatcherFlowAnalyticsConfiguration);
    settings.update().withLogging().withRetentionPolicyEnabled().withRetentionPolicyDays(30).withStorageAccount(sa.id()).apply();