A tecnologia Microsoft Windows Management Instrumentation (WMI) consiste na implementação da iniciativa Distributed Management Task Force (DMTF) Web-Based Enterprise Management (WBEM) pela Microsoft que expande o modelo CIM (Common Information Model) de modo a representar objectos de gestão em ambientes de gestão baseados no Windows. O modelo CIM (Common Information Model), que é ao mesmo tempo uma norma do DMTF, consiste num modelo de dados expansível para a organização lógica de objectos de gestão de uma forma consistente e uniforme num ambiente gerido.
Baseado no modelo CIM (Common Information Model), o WBEM é uma tecnologia e iniciativa do DMTF que estabelece normas de infra-estrutura de gestão e disponibiliza um método normalizado de aceder a informações a partir de vários sistemas de gestão de hardware e software num ambiente empresarial. A utilização de normas WBEM permite aos programadores criarem ferramentas e tecnologias que reduzem a complexidade e custos inerentes à gestão empresarial. Ao disponibilizar estas normas, o protocolo WBEM contribui para os esforços generalizados da indústria no sentido de baixar o custo total de propriedade. O custo total de propriedade diz respeito aos custos administrativos associados à aquisição de hardware e software informático, implementação e configuração, actualizações de hardware e software, formação, manutenção e suporte técnico.
O protocolo WBEM fornece um ponto de integração através do qual os dados de origens de gestão podem ser acedidos, além de complementar e expandir os protocolos de gestão e a instrumentação existentes, tal como o protocolo SNMP (Simple Network Management Protocol), a interface DMI (Desktop Management Interface) e o protocolo CMIP (Common Management Information Protocol).
Tecnologia Windows Management Instrumentation
A tecnologia WMI (Windows Management Instrumentation) é uma infra-estrutura de gestão que suporta a sintaxe do modelo CIM, o formato MOF (Managed Object Format) e uma interface de programação comum. A sintaxe do formato MOF define a estrutura e o conteúdo do esquema CIM num formato legível pelo utilizador e pelo computador. A tecnologia Windows Management Instrumentation disponibiliza um conjunto avançado de serviços, incluindo a obtenção de informações baseada em consultas e a notificação de eventos. O acesso a estes serviços e dados de gestão é efectuado através de uma interface de programação COM (Component Object Model). A interface de script WMI também fornece suporte de scripts.
A tecnologia WMI proporciona:
-
Acesso à monitorização, utilização e controlo de qualquer objecto gerido através de um conjunto de interfaces comum abrangente, independentemente do mecanismo de instrumentação subjacente. A tecnologia WMI é um mecanismo de acesso.
-
Um modelo consistente do funcionamento, configuração e estado do sistema operativo Windows.
-
Uma interface de programação de aplicações COM que fornece um único ponto de acesso para todas as informações de gestão.
-
Interoperabilidade com outros serviços de gestão do Windows. Esta abordagem pode simplificar o processo de criação de soluções de gestão integradas dotadas de uma arquitectura sólida.
-
Uma arquitectura flexível expansível. Os programadores podem expandir o modelo de informações para abranger novos dispositivos, aplicações, entre outros, através da composição de módulos de código denominados fornecedores WMI.
-
Extensões para o modelo WDM (Windows Driver Model), destinadas a recolher eventos e dados de instrumentação de controladores de dispositivo e componentes do lado de kernel.
-
Uma arquitectura de eventos eficiente. Isto permite que as alterações efectuadas às informações de gestão sejam identificadas, agregadas, comparadas e associadas a outras informações de gestão. Estas alterações também podem ser reencaminhadas para aplicações de gestão locais ou remotas.
-
Uma linguagem de consulta avançada que permite efectuar consultas detalhadas do modelo de informações.
-
Uma API composta por scripts que pode ser utilizada pelos programadores para criar aplicações de gestão. A API de script suporta diversas linguagens, incluindo software de programação Microsoft Visual Basic; Visual Basic for Applications (VBA); Visual Basic, Scripting Edition (VBScript) e Microsoft JScript. Além de VBScript e JScript, os utilizadores podem utilizar qualquer implementação de linguagem de script que suporte tecnologias de script Microsoft ActiveX com esta API (por exemplo, um motor de script Perl). Para além disso, pode utilizar o Windows Script Host ou Microsoft Internet Explorer para compor scripts através desta interface. O Windows Script Host, à semelhança do Internet Explorer, funciona como um motor de controlo de motores de script ActiveX. O Windows Script Host suporta scripts escritos em VBScript e JScript.
Descrição Geral da Arquitectura WMI
A arquitectura da tecnologia WMI é composta pelos seguintes elementos:
-
Uma infra-estrutura de gestão - Inclui o CIM Object Manager, que disponibiliza aplicações com acesso uniformizado aos dados de gestão e uma área de armazenamento central para dados de gestão denominada repositório do CIM Object Manager.
-
Fornecedores WMI - Funcionam como intermediários entre o CIM Object Manager e os objectos geridos. A utilização de APIs WMI pelos fornecedores permite-lhes fornecer dados de objectos geridos ao CIM Object Manager, processar pedidos em nome de aplicações de gestão e gerar notificações de eventos.
A infra-estrutura de gestão é composta pelo CIM Object Manager e pelo repositório do CIM Object Manager. As aplicações baseiam-se no Object Manager para gerir a interface entre as aplicações de gestão e os fornecedores de dados. O WMI simplifica estas comunicações ao disponibilizar uma interface de programação comum aos serviços de gestão do Windows através de COM. Esta API COM fornece serviços de processamento de consultas e notificação de eventos, além de poder ser utilizada em diversos ambientes de linguagem de programação, tal como C e C++. O repositório do CIM Object Manager guarda o CIM e os esquemas de extensão, bem como informações de dados ou detalhes da origem de dados. O CIM Object Manager utiliza os dados de esquema contidos neste repositório quando processa os pedidos de aplicações de gestão para objectos geridos.
Objectos geridos são componentes empresariais físicos ou lógicos modelados através de CIM. Por exemplo, um objecto gerido tanto pode ser hardware como, por exemplo, um cabo, como software, por exemplo, uma aplicação de base de dados. As aplicações de gestão podem aceder aos objectos geridos através do CIM Object Manager.
Aplicações de gestão são aplicações ou serviços do Windows que utilizam ou processam informações provenientes de objectos geridos. As aplicações de gestão podem aceder às informações dos objectos geridos mediante um pedido feito ao CIM Object Manager através de um dos métodos na API WMI.
Fornecedores WMI são servidores COM e DCOM (Distributed Component Object Model) padrão que funcionam como mediadores entre os objectos geridos e o CIM Object Manager. Se o CIM Object Manager receber um pedido de uma aplicação de gestão relativamente a dados que não se encontram disponíveis a partir do repositório do CIM Object Manager ou notificações de eventos que não são suportadas pelo CIM Object Manager, o pedido é reecaminhado para um fornecedor WMI. Os fornecedores disponibilizam dados e notificações de eventos relativos a objectos geridos específicos do respectivo domínio.
Para implementar um fornecedor, deve utilizar um dos seguintes tipos de servidor suportados:
• Serviços do Microsoft Windows 2008, locais ou remotos.
• Executáveis padrão (ficheiros .exe), locais ou remotos.
• DLLs (Dynamic-Link Libraries) em execução.
Tenha em atenção que os executáveis padrão e os serviços locais ou remotos do Windows 2008 são tipos de servidor recomendados.
O WMI é fornecido com fornecedores incorporados (ou fornecedores padrão) que disponibilizam dados de origens como, por exemplo, o registo do sistema. Os fornecedores incorporados incluem:
-
Fornecedor do Active Directory - Funciona como um gateway para todas as informações guardadas no serviço do Active Directory. Permite o acesso às informações do WMI e do Active Directory através de uma única API.
-
Fornecedor do Windows Installer - Permite o controlo total do Windows Installer e da instalação de software através de WMI. Também fornece informações sobre qualquer aplicação instalada com o Windows Installer.
-
Fornecedor do Contador de Desempenho - Expõe as informações não processadas do contador de desempenho utilizadas para calcular os valores de desempenho apresentados na ferramenta Monitor de Sistema. Todos os contadores de desempenho instalados num sistema ficarão automaticamente visíveis através deste fornecedor.
-
Fornecedor do Registo - Permite a criação, leitura e escrita de chaves do Registo. Há eventos WMI que podem ser gerados quando chaves do Registo específicas são modificadas.
-
Fornecedor SNMP - Funciona como um gateway para sistemas e dispositivos que utilizam o protocolo SNMP (Simple Network Management Protocol) para fins de gestão. É possível ler e escrever variáveis MIB SNMP. Os traps SNMP podem ser automaticamente mapeados para eventos WMI.
-
Fornecedor do Registo de Eventos - Fornece acesso a dados e notificações de eventos do Registo de Eventos do Windows Server 2008.
-
Fornecedor Win32 - Fornece informações sobre o sistema operativo, sistema informático, dispositivos periféricos, sistemas de ficheiros e informações de segurança.
-
Fornecedor WDM - Fornece informações de nível inferior do controlador de Windows Driver Model para dispositivos de introdução de dados pelo utilizador, dispositivos de armazenamento, interfaces de rede e portas de comunicação.
-
Fornecedor de Vistas - Permite a criação de novas classes agregadas com base em classes existentes. É possível filtrar apenas as informações de interesse das classes de origem, é possível combinar as informações de várias classes numa única classe e é possível agregar os dados de vários computadores numa única vista.
A tecnologia WMI também fornece suporte para fornecedores personalizados de terceiros. Os fornecedores personalizados podem ser utilizados para processar pedidos relacionados com objectos geridos que sejam específicos do ambiente. Regra geral, os fornecedores utilizam a linguagem MOF para definir e criar classes. Os fornecedores utilizam a API WMI para aceder ao repositório do CIM Object Manager e para responder a pedidos do CIM Object Manager efectuados originalmente por aplicações.
Descrição Geral do Protocolo SNMP (Simple Network Management Protocol)
O protocolo SNMP (Simple Network Management Protocol) é um padrão de gestão de rede que define uma estratégia para a gestão de redes TCP/IP.
O SNMP utiliza uma arquitectura distribuída que inclui:
-
Múltiplos nós geridos, cada um deles dotado de uma entidade SNMP denominada agente que fornece acesso remoto à instrumentação da gestão.
-
Pelo menos uma entidade SNMP referida como gestor que executa aplicações de gestão para monitorizar e controlar elementos geridos. Os elementos geridos são dispositivos como, por exemplo, sistemas anfitrião, routers, entre outros, e são monitorizados e controlados através do acesso às respectivas informações de gestão.
-
É utilizado um protocolo de gestão, o SNMP, para transmitir as informações de gestão entre os agentes e as estações de gestão. As informações de gestão dizem respeito a uma colecção de objectos geridos que residem num arquivo de informações virtual denominado MIB (Management Information Base).
Mensagens SNMP
Os agentes e sistemas de gestão utilizam mensagens SNMP para comunicar as informações do sistema anfitrião. Estas mensagens são enviadas através do protocolo UDP (User Datagram Protocol) e são encaminhadas entre o sistema anfitrião e o sistema de gestão através do protocolo IP (Internet Protocol).
As informações pedidas pelo sistema de gestão estão contidas numa Base de Informações de Gestão. A Base de Informações de Gestão de um computador ligado em rede pode incluir informações sobre a configuração e desempenho da placa de interface de rede, o espaço disponível no disco rígido, as versões dos controladores e aplicações, entre outros. É possível escrever e carregar Bases de Informações de Gestão adicionais, de modo a expor os dados especificados para recolha, desde que o sistema em si suporte a recolha das informações pedidas.
Processar Pedidos de Informação
Quando um sistema de gestão solicita informações, ocorre a seguinte sequência de eventos:
-
O sistema de gestão envia um pedido para um agente utilizando o endereço IP do agente.
-
O agente forma um datagrama SNMP que contém uma mensagem SNMP e o nome da comunidade ao qual pertence o sistema de gestão.
-
O agente SNMP recebe o datagrama e confirma o nome da comunidade. Se o nome da comunidade for válido, o agente SNMP obtém os dados apropriados. Caso contrário, se o nome da comunidade for inválido, o pedido será rejeitado. Se o agente tiver sido configurado para enviar um trap de autenticação, será enviada uma mensagem trap.
-
O datagrama SNMP é devolvido para o sistema de gestão com as informações pedidas.
Mensagens
São utilizados os seguintes tipos de mensagem SNMP:
-
GetThis é uma mensagem de pedido. Os sistemas de gestão SNMP utilizam mensagens do tipo Get para pedir informações sobre uma entrada MIB num agente SNMP.
-
GetnextA - Tipo de mensagem de pedido que pode ser utilizado para procurar objectos geridos numa árvore inteira.
-
GetbulkA - Tipo de pedido que especifica que o agente deve transferir o maior número de dados possível, dentro dos limites do tamanho da mensagem.
-
SetThis é utilizado para enviar e atribuir um valor MIB actualizado a um agente.
-
Notify (ou Trap) é uma mensagem não solicitada enviada por um agente para um sistema de gestão SNMP quando detecta a ocorrência de um determinado tipo de evento a nível local no sistema anfitrião gerido.
Os eventos SNMP (ou traps) são enviados, sem que tenham sido solicitados, para uma estação de gestão que filtra os eventos; isto implica o envolvimento do tráfego de rede. Com o WMI, os eventos são filtrados localmente e só são transmitidos para a rede os eventos que cumprirem os critérios do filtro, reduzindo assim a largura de banda necessária para os eventos de interesse.
Suporte SDK WMI para SNMP
O Fornecedor SNMP inclui os seguintes componentes:
-
Fornecedores de classe, instância e evento que integram a modelação e processamento de informações SNMP para o WMI. Estes fornecedores SNMP mapeiam colecções de valores de objecto para valores de propriedade de instâncias de classe CIM.
-
Um compilador de módulos de informações SNMP que compila informações de esquemas SNMP nativos para o formato utilizado por CIM.
Fornecedores SNMP
Os Fornecedores SNMP devolvem informações dinâmicas. Pode especificar o conjunto de classes com base no qual o Fornecedor de instâncias irá desenvolver as suas operações de duas formas:
-
Estatisticamente - Através da criação de classes no espaço de nomes do repositório de objectos do CIM associado ao dispositivo proxy.
-
Dinamicamente - Através da utilização do Fornecedor de classes SNMP, que devolve o conjunto de classes localizado no espaço de nomes SMIR (SNMP Module Information Repository).
Além disso, também pode especificar se a correlação deverá ou não ser utilizada para o conjunto de classes devolvido a partir do espaço de nomes SMIR. As classes correlacionadas definem o conjunto de classes que um determinado agente SNMP suporta na altura em que ocorre a enumeração. A enumeração não correlacionada devolve todas as classes presentes no espaço de nomes SMIR, independentemente do facto de serem ou não suportadas pelo dispositivo do agente.
Os Fornecedores SNMP incluem:
-
Fornecedores de classes e instâncias SNMP, que podem ser utilizados pelas aplicações para aceder e modificar dados pertencentes a dispositivos SNMP.
-
Fornecedores de eventos SNMP, que geram eventos a partir de notificações e traps SNMP. Estes comunicam os mesmos tipos de evento, mas em formatos diferentes: Encapsulado e Referido. Encapsulado significa que a classe de evento tem propriedades simples que descrevem as informações mapeadas directamente a partir das macros TRAP-TYPE e NOTIFICATION-TYPE, descritas na secção seguinte. As classes Referido abstraem as informações presentes nas macros, de modo a que as propriedades que partilham a mesma classe e instância sejam apresentadas como objectos incorporados. Isto permite a extracção de __RELPATH, de maneira a que a instância exclusiva à qual o trap está associado possa ser obtida após a recepção do evento. Para escolher um formato, os consumidores efectuam o registo numa classe de eventos em particular.
Mapear Dados de Dispositivo para Classes CIM
Os Fornecedores SNMP mapeiam dados de dispositivo para classes CIM através dos seguintes métodos:
-
Enumerar Definições de Classe SNMP. Para enumerarem um conjunto de definições de classe, as aplicações podem chamar IWbemServices::CreateClassEnum ou IWbemServices::CreateClassEnumAsync.
Os objectos MIB são mapeados para as classes CIM SNMP através da macro OBJECT-TYPE; os eventos são mapeados para as classes através das macros TRAP-TYPE e NOTIFICATION-TYPE.
A macro OBJECT-TYPE é utilizada para descrever as características básicas de um objecto MIB. As macros SNMPv1 TRAP-TYPE e SNMPv2C NOTIFICATION-TYPE descrevem as características de um evento de SNMP.
-
Instanciar Definições de Classe SNMP. Para instanciarem uma definição de classe, as aplicações podem chamar IWbemServices::GetObject ou IWbemServices::GetObjectAsync.
-
Enumerar Instâncias de Classe SNMP. O Fornecedor de instâncias SNMP processa pedidos de enumeração de instâncias associadas a classes que representam MIBs de dispositivos.
-
Instanciar Instâncias de Classe SNMP. O Fornecedor de instâncias SNMP processa pedidos de instanciação de instâncias de classes que representam objectos MIB.
-
Obter Instâncias de Classe SNMP. Para obterem uma instância específica de uma classe CIM SNMP, as aplicações podem chamar IWbemServices::GetObject ou IWbemServices::GetObjectAsync.
SNMP e o Esquema CIM
O esquema utilizado por SNMP para definir objectos difere do utilizado pelo modelo CIM (Common Information Model) WMI. O esquema SNMPv1 e SNMPv2 é designado por SMI (Structure of Management Information) e está compilado sob a forma de ficheiros MIB. Para definir objectos, os ficheiros MIB utilizam ASN.1 (Abstract Syntax Notation 1), uma linguagem padrão, e definições de macro utilizadas como modelos para a descrição de objectos. Estas macros fornecem informações sobre o objecto, incluindo o respectivo nome, identificador, sintaxe, descrição, direitos de acesso, entre outros.
Os Fornecedores SNMP WMI convertem as seguintes macros MIB:
-
OBJECT-TYPE - Descreve as características básicas de um objecto, tal como o nome, a sintaxe, os direitos de acesso, entre outros. Pertence a SNMPv1 e SNMPv2C.
-
TEXTUAL-CONVENTION - Atribui um nome e, em alguns casos, um intervalo de valores a uma base de dados existente. Pertence apenas a SNMPv2C.
-
TRAP-TYPE - Descreve mensagens de evento (traps). Pertence apenas a SNMPv1.
-
NOTIFICATION-TYPE - Descreve mensagens de evento (notificações). Pertence apenas a SNMPv2C.
O Fornecedor de classes SNMP enumera e instancia um conjunto de definições de classe relativamente a um espaço de nomes CIM. Para isso, utiliza um correlacionador MIB e o SMIR (SNMP Module Information Repository), uma base de dados de esquema SNMP. O Fornecedor de classes SNMP suporta modos correlacionados e não correlacionados. O utilizador designa um destes modos definindo uma correlação de valor de contexto (IWbemContext) do tipo Booleano e transmitindo estes dados para o método IWbemServices. O fornecedor de classes SNMP suporta tanto a enumeração de definições de classe como a obtenção de uma definição de classe.
O fornecedor de instâncias SNMP mapeia objectos MIB SNMP para instâncias de classe.
Espaço de Nomes SNMP
Para definir uma vista de um dispositivo de rede, é utilizado um espaço de nomes SNMP. Pode criar um espaço de nomes SNMP utilizando a aplicação WMI Common Information (CIM) Studio do SDK WMI, compilando um ficheiro MOF ou através de programação com a API WMI.
A classe de sistema Espaço de Nomes é utilizada para representar um espaço de nomes SNMP. Para gerar um novo espaço de nomes, é criada uma instância desta classe. Tem de associar, pelo menos, um descritor (ou qualificador) à instância de classe. Os qualificadores contêm informações de contexto específicas da implementação e propriedades de transporte que definem a forma como os Fornecedores SNMP acedem a um agente SNMP.
Representação de Dispositivos SNMP
Os dispositivos SNMP são representados no WMI através da utilização de um espaço de nomes proxy que contém um conjunto de qualificadores de instâncias. Estes qualificadores descrevem as características de transporte do dispositivo. O WMI utiliza um ficheiro MOF, snmpreg.mof, para criar o espaço de nomes \\.\root\snmp\localhost. Este é um espaço de nomes padrão que representa o agente SNMP local.
SNMPv2C
SNMPv2C é suportado no contexto do WMI. O principal objectivo do SNMPv2C visava proporcionar um contexto de segurança mais sólido para SNMP. Esta versão utiliza a funcionalidade de autenticação baseada em palavras-passe não seguras e simples, conhecida como funcionalidade comunidade (fornecida no SNMPv1). O SNMPv2 SMI contribuiu com algumas funcionalidades novas e melhorias para a segurança da comunidade, tal como a inclusão de cadeias de bits, endereços de rede e contadores para tipos de dados específicos de SNMPv1 SMI. Além disso, o SNMPv2 SMI especifica módulos de informações, que designam um grupo de definições relacionadas. O SNMPv2 também define duas novas operações de protocolo: GetBulk e Inform.
Segurança
A segurança WMI valida as informações de início de sessão de um utilizador tanto para o computador local como para o acesso remoto. O WMI concede a um utilizador validado um determinado grau de acesso controlado ao repositório do CIM completo. Na versão actual, o WMI não fornece segurança para recursos do sistema, tal como classes e instâncias individuais. No entanto, os administradores podem utilizar o WMI para controlar permissões globais relacionadas com operações de esquema, tal como limitar o acesso de alguns utilizadores a operações só de leitura. O WMI também suporta a segurança por espaço de nomes. Além disso, o Fornecedor SNMP fornece suporte a toda a segurança baseada em SNMP, incluindo as melhorias de segurança no SNMPv2C.
Compilador de Módulos de Informações SNMP
O compilador de módulos de informações SNMP é utilizado para compilar informações de gestão SNMP nativas definidas num MIB numa definição de esquema CIM equivalente que possa ser utilizada com os Fornecedores SNMP. O esquema CIM pode existir como saída num ficheiro MOF ou pode ser carregado numa base de dados de esquema SNMP (o SNMP Module Information Repository ou SMIR). O Fornecedor de classes dinâmicas SNMP utiliza o SMIR (SNMP Module Information Repository) para criar e obter instâncias de definições de classe.
O compilador de módulos de informações SNMP é executado em modo de linha de comandos como um ficheiro executável, utilizando um módulo de informações SNMP como entrada e outros ficheiros adicionais que possam ser necessários para resolver referências externas. Os módulos de informações SNMP são colecções de informações de gestão que, regra geral, são compostas por uma combinação de módulos MIB e instruções AGENT-CAPABILITIES e MODULE-COMPLIANCE. As instruções AGENT-CAPABILITIES descrevem a conformidade de um agente em relação ao conjunto de módulos MIB que suporta. As instruções MODULE-COMPLIANCE descrevem as capacidades de um agente no que diz respeito a definições de objecto.
O compilador de módulos de informações SNMP também fornece a seguinte funcionalidade:
-
Efectua operações de verificação no módulo de informações. Por exemplo, compara a sintaxe local e as referências externas com as informações presentes nos módulos subsidiários.
-
Remove todos os dados carregados previamente a partir do SMIR, ou remove os dados carregados a partir de um módulo de informações.
-
Devolve o nome de módulo ASN.1 de um ficheiro especificado, ou os nomes de módulo ASN.1 de todos os módulos importados num ficheiro especificado.
-
Devolve os nomes de módulo ASN.1 de todos os módulos de informações SNMP carregados actualmente no SMIR.
-
Efectua a resolução automática de módulos importados, em vez de solicitar aos utilizadores que especifiquem manualmente os módulos necessários.
-
Efectua uma operação em modo de carregamento silencioso que não gera resultados, mas que pode ser utilizada para carregar dados no SMIR durante uma operação de instalação.