Documento de comando do SSM para a aplicação de patches: AWS-RunPatchBaselineAssociation - AWS Systems Manager

Documento de comando do SSM para a aplicação de patches: AWS-RunPatchBaselineAssociation

Como oAWS-RunPatchBaselineDocumento,AWS-RunPatchBaselineAssociationO executa operações de aplicação de patches em instâncias para atualizações relacionadas à segurança e outros tipos de atualizações. Você pode usar o documento AWS-RunPatchBaselineAssociation para aplicar patches aos sistemas operacionais e aplicações.. (No Windows Server, o suporte a aplicações é limitado a atualizações de aplicações da Microsoft.)

Este documento oferece suporte a instâncias do Amazon Elastic Compute Cloud (Amazon EC2) para Linux,macOS, eWindows Server. Não há suporte para nós que não sejam do EC2 em um ambiente híbrido e multinuvem. O documento executará as ações adequadas a cada plataforma, invocando um módulo Python no Linux e nomacOSe um módulo do PowerShell em instâncias do Windows.

O AWS-RunPatchBaselineAssociation, porém, difere do AWS-RunPatchBaseline das seguintes maneiras:

  • O AWS-RunPatchBaselineAssociation deve ser usado principalmente com associações do State Manager criadas usando o Quick Setup, um recurso do AWS Systems Manager. Especificamente, quando você usar o tipo de configuração do Host Management do Quick Setup, se você escolher a opção Scan instances for missing patches daily (Verificar patches ausentes nas instâncias diariamente), o sistema usará AWS-RunPatchBaselineAssociation para a operação.

    Na maioria dos casos, no entanto, ao configurar suas próprias operações de patch, você deve escolher AWS-RunPatchBaseline ou AWS-RunPatchBaselineWithHooks, ao invés do AWS-RunPatchBaselineAssociation.

  • Quando você usa oAWS-RunPatchBaselineAssociation, você pode especificar um key pair de tag noBaselineTagscampo de parâmetro. Se uma linha de base de patch personalizada na Conta da AWS compartilha essas tags, Patch Manager, um recurso do AWS Systems Manager, usa essa linha de base marcada quando ela é executada nas instâncias de destino em vez da linha de base de patch “padrão” especificada atualmente para o tipo de sistema operacional.

    Importante

    Se você optar por usar AWS-RunPatchBaselineAssociation em operações de patch diferentes daquelas configuradas usando o Quick Setup e quiser usar o parâmetro BaselineTags, forneça algumas permissões adicionais para o perfil de instâncias do Amazon Elastic Compute Cloud (Amazon EC2). Para ter mais informações, consulte Nome do parâmetro: BaselineTags.

    Ambos os formatos a seguir são válidos para o parâmetro BaselineTags:

    Key=tag-key,Values=tag-value

    Key=tag-key,Values=tag-value1,tag-value2,tag-value3

  • Quando AWS-RunPatchBaselineAssociation é executado, os dados de conformidade de patches coletados são registrados usando o comando da API PutComplianceItems em vez do comando PutInventory, que é usado pelo AWS-RunPatchBaseline. Essa diferença significa que as informações de conformidade de patch que são armazenadas e relatadas por uma Associação. Os dados de conformidade de patch gerados fora dessa associação não são substituídos.

  • As informações de conformidade de patch relatadas após a execução de AWS-RunPatchBaselineAssociation indica se uma instância está ou não em conformidade. Ele não inclui detalhes em nível de patch, como demonstrado pela saída do comando da AWS Command Line Interface (AWS CLI) a seguir. Os filtros de comando em Association como o tipo de conformidade:

    aws ssm list-compliance-items \ --resource-ids "i-02573cafcfEXAMPLE" \ --resource-types "ManagedInstance" \ --filters "Key=ComplianceType,Values=Association,Type=EQUAL" \ --region us-east-2

    O sistema retorna informações como estas.

    {
        "ComplianceItems": [
            {
                "Status": "NON_COMPLIANT", 
                "Severity": "UNSPECIFIED", 
                "Title": "MyPatchAssociation", 
                "ResourceType": "ManagedInstance", 
                "ResourceId": "i-02573cafcfEXAMPLE", 
                "ComplianceType": "Association", 
                "Details": {
                    "DocumentName": "AWS-RunPatchBaselineAssociation", 
                    "PatchBaselineId": "pb-0c10e65780EXAMPLE", 
                    "DocumentVersion": "1"
                }, 
                "ExecutionSummary": {
                    "ExecutionTime": 1590698771.0
                }, 
                "Id": "3e5d5694-cd07-40f0-bbea-040e6EXAMPLE"
            }
        ]
    }

Se um valor de par de chaves de etiqueta tiver sido especificado como um parâmetro para o documento AWS-RunPatchBaselineAssociation, o Patch Manager pesquisa uma lista de referência de patches personalizada que corresponda ao tipo de sistema operacional e que tenha sido marcada com esse mesmo par de chaves de marca. Essa pesquisa não se limita à linha de base do patch padrão especificada atual ou à linha de base atribuída a um grupo de patches. Se nenhuma lista de referência for encontrada com as etiquetas especificadas, o Patch Manager procura por um grupo de patches, se um tiver sido especificado no comando que executa AWS-RunPatchBaselineAssociation. Se não houver correspondência com nenhum grupo de patches, o Patch Manager retorna à lista de referência de patches padrão atual da conta do sistema operacional.

Se mais de uma lista de referência de patches for encontrada com as tags especificadas no documento AWS-RunPatchBaselineAssociation, o Patch Manager retorna uma mensagem de erro indicando que apenas uma lista de referência de patches pode ser marcada com esse par de chave-valor para que a operação prossiga.

nota

Em instâncias Linux, o gerenciador de pacotes apropriado para cada tipo de instância é usado para instalar pacotes:

  • Instâncias do Amazon Linux 1, Amazon Linux 2, CentOS, Oracle Linux e RHEL usam YUM. Para operações YUM, o Patch Manager requer o Python 2.6 ou uma versão posterior compatível (2.6-3.10).

  • As instâncias do Debian Server, do Raspberry Pi OS e do Ubuntu Server usam o APT. Para operações APT, o Patch Manager requer uma versão compatível do Python 3 (3.0-3.10).

  • As instâncias do SUSE Linux Enterprise Server usam o Zypper. Para operações Zypper, o Patch Manager requer o Python 2.6 ou uma versão posterior compatível (2.6-3.10).

Depois que todas as atualizações aprovadas e aplicáveis forem instaladas, e as reinicializações realizadas conforme a necessidade, as informações de conformidade do patch serão geradas em uma instância e relatadas ao Patch Compliance Service.

nota

Se o parâmetro RebootOption estiver definido como NoReboot no documento AWS-RunPatchBaselineAssociation, a instância não será reinicializada após a execução do Patch Manager. Para ter mais informações, consulte Nome do parâmetro: RebootOption.

Para obter informações sobre como visualizar dados de conformidade de patches, consulte Sobre a conformidade de patches.

AWS-RunPatchBaselineAssociation parameters

O AWS-RunPatchBaselineAssociation oferece suporte a quatro parâmetros. Os parâmetros Operation e AssociationId são obrigatórios. Os parâmetros InstallOverrideList, RebootOption e BaselineTags são opcionais.

Nome do parâmetro: Operation

Uso: obrigatório.

Opções: Scan | Install.

Verificar

Quando você escolhe a opção Scan, o AWS-RunPatchBaselineAssociation determina o estado de conformidade dos patches da instância e retorna essas informações para o Patch Manager. A opção Scan não solicita que atualizações sejam instaladas ou que instâncias sejam reinicializadas. Em vez disso, a operação identifica onde existem atualizações ausentes que estão aprovadas e são aplicáveis à instância.

Instalar

Quando você escolhe a opção Install, o AWS-RunPatchBaselineAssociation tenta instalar as atualizações aprovadas e aplicáveis que estiverem ausentes na instância. As informações de conformidade dos patches geradas como parte de uma operação Install não listam atualizações ausentes, mas poderão indicar atualizações em estado malsucedido se, por qualquer motivo, a instalação da atualização não tiver tido êxito. Sempre que uma atualização é instalada em uma instância, a instância é reinicializada para garantir que a atualização está instalada e ativa. (Exceção: Se o parâmetro RebootOption estiver definido como NoReboot no AWS-RunPatchBaselineAssociation, a instância não será reinicializada depis que o Patch Manager for executado. Para obter mais informações, consulte Nome do parâmetro: RebootOption).

nota

Se um patch especificado pelas regras da lista de referência for instalado antes que o Patch Manager atualize a instância, o sistema poderá não ser reinicializado conforme esperado. Isso pode acontecer quando um patch é instalado manualmente por um usuário ou instalado automaticamente por outro programa, como o pacote unattended-upgrades no Ubuntu Server.

Nome do parâmetro: BaselineTags

Uso: opcional.

O BaselineTags é um par de chaves/valores de tags exclusivo que você escolhe e atribui a uma linha de base de patch personalizada individual. Você pode especificar um ou mais valores para esse parâmetro. Ambos os formatos a seguir são válidos:

Key=tag-key,Values=tag-value

Key=tag-key,Values=tag-value1,tag-value2,tag-value3

O valor de BaselineTags é usado pelo Patch Manager para garantir que todas as instâncias de um conjunto que são corrigidas em uma única operação tenham o mesmo conjunto de patches aprovados. Quando a operação de patch é executada, o Patch Manager verifica se uma linha de base de patch para o tipo de sistema operacional está marcada com o mesmo par chave-valor especificado para BaselineTags. Se houver uma correspondência, essa lista de referência do patch personalizada será usada. Se não houver uma correspondência, uma linha de base de patch será identificada de acordo com qualquer grupo de patches especificado para a operação de patch. Se não houver nenhum, a linha de base de patch predefinida gerenciada da AWS para esse sistema operacional é usada.

Requisitos de permissão adicionais

Se você usar o AWS-RunPatchBaselineAssociation em operações de patch diferentes daquelas configuradas usando o Quick Setup, e quiser usar o parâmetro BaselineTags, adicione as permissões a seguir ao perfil para instâncias do Amazon Elastic Compute Cloud (Amazon EC2).

nota

O Quick Setup e AWS-RunPatchBaselineAssociation não oferecem suporte a servidores on-premises e máquinas virtuais (VMs).

{ "Effect": "Allow", "Action": [ "ssm:DescribePatchBaselines", "tag:GetResources" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:GetPatchBaseline", "ssm:DescribeEffectivePatchesForPatchBaseline" ], "Resource": "patch-baseline-arn" }

Substitua patch-baseline-arn pelo nome do recurso da Amazon (ARN) da linha de referência de patches à qual você deseja fornecer acesso no formatoarn:aws:ssm:us-east-2:123456789012:patchbaseline/pb-0c10e65780EXAMPLE.

Nome do parâmetro: AssociationId

Uso: obrigatório.

O AssociationId é o ID de uma associação existente no State Manager, um recurso do AWS Systems Manager. Isso é usado pelo Patch Manager para adicionar dados de conformidade a uma associação especificada. Essa associação está relacionada a uma operação de Scan de patch habilitada em uma configuração do Host Management criada no Quick Setup. Ao enviar resultados da aplicação de patch como dados de conformidade de associação em vez de dados de conformidade do inventário, as informações de conformidade do inventário existentes para as instâncias não são substituídas após uma operação de aplicação de patch, nem em outras IDs de associação. Se ainda não tiver uma associação que você deseja usar, crie uma associação executando o comando create-association. Por exemplo:

Linux & macOS
aws ssm create-association \ --name "AWS-RunPatchBaselineAssociation" \ --association-name "MyPatchHostConfigAssociation" \ --targets "Key=instanceids,Values=[i-02573cafcfEXAMPLE,i-07782c72faEXAMPLE,i-07782c72faEXAMPLE]" \ --parameters "Operation=Scan" \ --schedule-expression "cron(0 */30 * * * ? *)" \ --sync-compliance "MANUAL" \ --region us-east-2
Windows Server
aws ssm create-association ^ --name "AWS-RunPatchBaselineAssociation" ^ --association-name "MyPatchHostConfigAssociation" ^ --targets "Key=instanceids,Values=[i-02573cafcfEXAMPLE,i-07782c72faEXAMPLE,i-07782c72faEXAMPLE]" ^ --parameters "Operation=Scan" ^ --schedule-expression "cron(0 */30 * * * ? *)" ^ --sync-compliance "MANUAL" ^ --region us-east-2

Nome do parâmetro: InstallOverrideList

Uso: opcional.

O uso doInstallOverrideList, você especifica um URL https ou um URL de estilo caminho do Amazon Simple Storage Service (Amazon S3) para uma lista de patches a serem instalados. Esta lista de instalação de patches mantida no formato YAML substitui os patches especificados pela linha de base de patch padrão atual. Isso fornece a você mais controle granular sobre quais patches estão instalados em suas instâncias.

O comportamento da operação de aplicação de patches ao usar o parâmetro InstallOverrideList difere entre os nós gerenciados pelo Linux e pelo macOS e os nós gerenciados pelo Windows Server. No Linux e no macOS, o Patch Manager tenta aplicar os patches incluídos na lista de patches InstallOverrideList que estão presentes em qualquer repositório habilitado no nó, independentemente de os patches corresponderem ou não às regras da lista de referência de patches. Em nós Windows Server, no entanto, os patches na lista de patches InstallOverrideList são aplicados somente se eles também correspondem às regras da lista de referência de patches.

Lembre-se de que os relatórios de conformidade de patch refletem estados de acordo com o que está especificado na linha de base de patch, e não o que você especifica em uma lista de patches InstallOverrideList. Em outras palavras, operações de verificação ignoram o parâmetro InstallOverrideList. Isso é para garantir que os relatórios de conformidade reflitam consistentemente os estados de patch de acordo com a política, em vez de algo aprovado para uma determinada operação de patch.

Formatos URL válidos

nota

Se o arquivo estiver armazenado em um bucket disponível publicamente, você poderá especificar um formato de URL https ou um URL de estilo de caminho do Amazon S3. Se o arquivo estiver armazenado em um bucket privado, você deverá especificar um URL do estilo de caminho do Amazon S3.

  • Exemplo de formato de URL https:

    https://s3.amazonaws.com/amzn-s3-demo-bucket/my-windows-override-list.yaml
  • Exemplo de URL estilo de caminho do Amazon S3:

    s3://amzn-s3-demo-bucket/my-windows-override-list.yaml

Formatos de conteúdo YAML válidos

Os formatos que você usa para especificar patches em sua lista depende do sistema operacional da instância. O formato geral, no entanto, é o seguinte:

patches: - id: '{patch-d}' title: '{patch-title}' {additional-fields}:{values}

Embora você possa fornecer campos adicionais em seu arquivo YAML, eles serão ignorados durante operações de patch.

Além disso, é recomendável verificar se o formato do arquivo YAML é válido antes de adicionar ou atualizar a lista no seu bucket do S3. Para obter mais informações sobre o formato YAML, consulte yaml.org. Para as opções de ferramenta de validação, pesquise na Internet por "validadores de formato yaml".

  • Microsoft Windows

    id

    O campo id é obrigatório. Use-o para especificar os patches usando IDs da Base de Dados de Conhecimento Microsoft (por exemplo, KB2736693 e IDs do boletim de segurança da Microsoft (por exemplo, MS17-023).

    Todos os outros campos que você deseja fornecer em uma lista de patches para Windows são opcionais e são apenas para seu próprio uso informativo. Você pode usar campos adicionais, como título, classificação, severidade, ou qualquer outra coisa para fornecer informações mais detalhadas sobre os patches especificados.

  • Linux

    id

    O campo id é obrigatório. Use-o para especificar patches usando o nome do pacote e a arquitetura. Por exemplo: 'dhclient.x86_64'. Você pode usar caracteres curinga no id para indicar vários pacotes. Por exemplo: 'dhcp*' e 'dhcp*1.*'.

    title

    O campo título é opcional, mas em sistemas Linux ele fornece recursos de filtragem adicionais. Se você usar o título, ele deve conter informações sobre a versão do pacote em um dos seguintes formatos:

    YUM/SUSE Linux Enterprise Server (SLES):

    {name}.{architecture}:{epoch}:{version}-{release}

    APT

    {name}.{architecture}:{version}

    Para títulos de patches do Linux, você pode usar um ou mais caracteres curinga em qualquer posição para expandir o número de correspondências de pacotes. Por exemplo: '*32:9.8.2-0.*.rc1.57.amzn1'.

    Por exemplo:

    • A versão do pacote apt 1.2.25 está atualmente instalada em sua instância, mas a versão 1.2.27 agora está disponível.

    • Você adiciona a versão apt.amd64 1.2.27 à lista de patches. Depende da versão do apt utils.amd64 1.2.27, mas a versão apt utils.amd64 1.2.25 é especificada na lista.

    Neste caso, a versão apt 1.2.27 não poderá ser instalada e será relatada como "Failed-NonCompliant."

Outros campos

Todos os outros campos que você deseja fornecer em uma lista de patches para Linux são opcionais e são apenas para seu próprio uso informativo. Você pode usar campos adicionais, como classificação, severidade, ou qualquer outra coisa para fornecer informações mais detalhadas sobre os patches especificados.

Exemplo de listas de patch

  • Windows

    patches: - id: 'KB4284819' title: '2018-06 Cumulative Update for Windows Server 2016 (1709) for x64-based Systems (KB4284819)' - id: 'KB4284833' - id: 'KB4284835' title: '2018-06 Cumulative Update for Windows Server 2016 (1803) for x64-based Systems (KB4284835)' - id: 'KB4284880' - id: 'KB4338814'
  • APT

    patches: - id: 'apparmor.amd64' title: '2.10.95-0ubuntu2.9' - id: 'cryptsetup.amd64' title: '*2:1.6.6-5ubuntu2.1' - id: 'cryptsetup-bin.*' title: '*2:1.6.6-5ubuntu2.1' - id: 'apt.amd64' title: '*1.2.27' - id: 'apt-utils.amd64' title: '*1.2.25'
  • Amazon Linux

    patches: - id: 'kernel.x86_64' - id: 'bind*.x86_64' title: '32:9.8.2-0.62.rc1.57.amzn1' - id: 'glibc*' - id: 'dhclient*' title: '*12:4.1.1-53.P1.28.amzn1' - id: 'dhcp*' title: '*10:3.1.1-50.P1.26.amzn1'
  • Red Hat Enterprise Linux (RHEL)

    patches: - id: 'NetworkManager.x86_64' title: '*1:1.10.2-14.el7_5' - id: 'NetworkManager-*.x86_64' title: '*1:1.10.2-14.el7_5' - id: 'audit.x86_64' title: '*0:2.8.1-3.el7' - id: 'dhclient.x86_64' title: '*.el7_5.1' - id: 'dhcp*.x86_64' title: '*12:5.2.5-68.el7'
  • SUSE Linux Enterprise Server (SLES)

    patches: - id: 'amazon-ssm-agent.x86_64' - id: 'binutils' title: '*0:2.26.1-9.12.1' - id: 'glibc*.x86_64' title: '*2.19*' - id: 'dhcp*' title: '0:4.3.3-9.1' - id: 'lib*'
  • Ubuntu Server

    patches: - id: 'apparmor.amd64' title: '2.10.95-0ubuntu2.9' - id: 'cryptsetup.amd64' title: '*2:1.6.6-5ubuntu2.1' - id: 'cryptsetup-bin.*' title: '*2:1.6.6-5ubuntu2.1' - id: 'apt.amd64' title: '*1.2.27' - id: 'apt-utils.amd64' title: '*1.2.25'
  • Windows

    patches: - id: 'KB4284819' title: '2018-06 Cumulative Update for Windows Server 2016 (1709) for x64-based Systems (KB4284819)' - id: 'KB4284833' - id: 'KB4284835' title: '2018-06 Cumulative Update for Windows Server 2016 (1803) for x64-based Systems (KB4284835)' - id: 'KB4284880' - id: 'KB4338814'

Nome do parâmetro: RebootOption

Uso: opcional.

Opções: RebootIfNeeded | NoReboot

Padrão: RebootIfNeeded

Atenção

A opção padrão é RebootIfNeeded. Selecione a opção correta para o seu caso de uso. Por exemplo, se as instâncias precisarem reinicializar imediatamente para concluir um processo de configuração, escolha RebootIfNeeded. Ou, se você precisar manter a disponibilidade das instâncias até um horário de reinicialização agendado, escolha NoReboot.

Importante

Não é recomendável usar o Patch Manager para aplicar patches em instâncias de cluster no Amazon EMR (antes chamado de Amazon Elastic MapReduce). Em particular, não selecione a opção RebootIfNeeded para o parâmetro RebootOption. (Essa opção está disponível nos documentos do SSM Command para aplicação de patches em AWS-RunPatchBaseline, AWS-RunPatchBaselineAssociation e AWS-RunPatchBaselineWithHooks.)

Os comandos subjacentes para aplicação de patches usando o Patch Manager utilizam os comandos yum e dnf. Portanto, as operações resultam em incompatibilidades por causa da forma como os pacotes são instalados. Para obter informações sobre os métodos preferenciais para atualizar o software nos clusters do Amazon EMR, consulte Using the default AMI for Amazon EMR no Guia de gerenciamento do Amazon EMR.

RebootIfNeeded

Quando você escolhe a opção RebootIfNeeded, a instância é reinicializada em um dos seguintes casos:

  • O Patch Manager instalou um ou mais patches.

    O Patch Manager não avalia se uma reinicialização é exigida pelo patch. O sistema é reinicializado mesmo que o patch não exija uma reinicialização.

  • O Patch Manager detecta um ou mais patches com um status de INSTALLED_PENDING_REBOOT durante a operação Install.

    O status INSTALLED_PENDING_REBOOT pode significar que a opção NoReboot foi selecionada na última vez em que a operação Install foi executada ou que um patch foi instalado fora do Patch Manager na última vez que o nó gerenciado foi reinicializado.

A reinicialização de instâncias nesses dois casos garante que os pacotes atualizados sejam liberados da memória e mantém o comportamento de patch e reinicialização consistente em todos os sistemas operacionais.

NoReboot

Quando você escolhe a opção NoReboot, o Patch Manager não reinicializa uma instância, mesmo que tenha instalado patches durante a operação Install. Essa opção é útil se você souber que as instâncias não exigem reinicialização após a aplicação de patches, ou se houver aplicações ou processos em execução em uma instância que não devam ser interrompidos por uma reinicialização de operação de patch. Também é útil quando você deseja mais controle sobre o tempo de reinicializações de instâncias, como, por exemplo, usando uma janela de manutenção.

Arquivo de rastreamento de instalação de patches: para rastrear a instalação de patches, sobretudo os patches que foram instalados desde a última reinicialização do sistema, o Systems Manager mantém um arquivo na instância gerenciada.

Importante

Não exclua nem modifique o arquivo de monitoramento. Se esse arquivo for excluído ou corrompido, o relatório de conformidade de patch da instância será impreciso. Se isso acontecer, reinicialize a instância e execute uma operação de verificação de patch para restaurar o arquivo.

Esse arquivo de rastreamento é armazenado nos seguintes locais em suas instâncias gerenciadas:

  • Sistemas operacionais Linux:

    • /var/log/amazon/ssm/patch-configuration/patch-states-configuration.json

    • /var/log/amazon/ssm/patch-configuration/patch-inventory-from-last-operation.json

  • Sistema operacional Windows Server:

    • C:\ProgramData\Amazon\PatchBaselineOperations\State\PatchStatesConfiguration.json

    • C:\ProgramData\Amazon\PatchBaselineOperations\State\PatchInventoryFromLastOperation.json