首页 文章

工作者角色流程是否可以通过编程方式为Azure Cloud 服务调用Antimalware?

提问于
浏览
4

我正在尝试找到一种解决方案,我可以使用该解决方案对已上载到Azure blob存储的文件执行病毒扫描 . 我想知道是否可以将文件复制到Worker Role实例上的本地存储,调用Antimalware for Azure Cloud Services以对该特定文件执行扫描,然后根据文件是否干净,相应地处理文件 .

如果工作者角色无法以编程方式调用扫描,是否有一种确定的方法来检查文件是否已被扫描以及文件是否已被清除(一旦将其复制到本地存储)(我不知道该服务是否真实存在)添加新文件时的时间扫描,还是只按计划运行?

2 回答

  • 0

    没有找到,但反恶意软件服务符合Windows桌面病毒检查程序使用的标准,因为它们实现了 IAttachmentExecute COM API .

    因此,我们最终实现了一个文件上载服务,该服务将上载的文件写入隔离区本地资源,然后调用 IAttachmentExecute API . 如果文件被感染,那么根据使用的反恶意软件服务,它将抛出异常,静默删除文件或将其标记为无法访问 . 因此,通过尝试读取文件的第一个字节,我们可以测试文件是否仍然可访问 .

    var type = Type.GetTypeFromCLSID(new Guid("4125DD96-E03A-4103-8F70-E0597D803B9C"));
    var svc = (IAttachmentExecute)Activator.CreateInstance(type);
    try {
        svc.SetClientGuid(ref clientGuid);
        svc.SetLocalPath(path);
        svc.Save();
    }
    finally
    {
        svc.ClearClientState();
    }
    
    using (var fileStream = File.OpenRead(path))
    {
        fileStream.ReadByte();
    }
    
    [Guid("73DB1241-1E85-4581-8E4F-A81E1D0F8C57")]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IAttachmentExecute
    {
        void SetClientGuid(ref Guid guid);
    
        void SetLocalPath(string pszLocalPath);
    
        void Save();
    
        void ClearClientState();
    }
    
  • 2

    我认为最好的方法就是使用Azure VM(IaaS)并激活Microsoft Antimalware扩展 . 然后,您可以登录并对服务进行所有必要的检查和测试 . 稍后,您将把所有这些应用到Worker Role(有一个类似的PaaS扩展可用于此,calles PaaSAntimalware) .

    请参阅https://msdn.microsoft.com/en-us/library/azure/dn832621.aspx的下一部分摘录:

    “在PaaS中,VM代理称为GuestAgent,并且始终可在Web和辅助角色VM上使用 . (有关详细信息,请参阅Azure角色体系结构 . )角色VM的VM代理现在可以向 Cloud 服务VM添加扩展 . 与持久性虚拟机相同的方式 . 角色虚拟机和持久虚拟机上的虚拟机扩展之间的最大区别在于,对于角色虚拟机,首先将扩展添加到 Cloud 服务,然后再添加到该 Cloud 服务中的部署 .

    使用Get-AzureServiceAvailableExtension cmdlet列出所有可用的角色VM扩展 . “

相关问题