首页 > 解决方案 > 如何启用和配置网络安全组的流日志

问题描述

我无法使用 NetworkWatcherRG 或其他现有资源组中的存储帐户为网络安全组启用和配置流日志。我想知道我在 sdk 上做错了什么,因为我可以从 azure gui 轻松做到这一点。

重现

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();
The client has permission to perform action 'Microsoft.OperationalInsights/workspaces/sharedKeys/action' on scope '/subscriptions/{subscription_id}/resourceGroups/NetworkWatcherRG/providers/Microsoft.Network/networkWatchers/NetworkWatcher_usgovvirginia', however the linked subscription 'resourcegroups' was not found

注意:订阅 id 出现在上述错误中,它刚刚被编辑以发布

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

设置:

操作系统:macOS IDE:Eclipse 版本:2019-06 (4.12.0) 使用的库版本:1.23

已尝试将服务主体作为订阅中的参与者和所有者进行附加上下文调用。我试图理解错误消息,因为 sdk 调用似乎很简单。我怀疑这是权限或所有权问题。

标签: javaazureazure-java-sdk

解决方案


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

您需要向 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();

推荐阅读