Demonstração: usar a sincronização de dados de recursos para agregar dados do inventário - AWS Systems Manager

Demonstração: usar a sincronização de dados de recursos para agregar dados do inventário

A demonstração a seguir descreve como criar uma configuração de sincronização de dados de recursos para o AWS Systems Manager Inventory, usando a AWS Command Line Interface (AWS CLI). A sincronização de dados de recursos sincroniza automaticamente os dados de inventário de portas de todos os nós gerenciados em um bucket central do Amazon Simple Storage Service (Amazon S3). A sincronização atualiza automaticamente os dados no bucket central do Amazon S3 quando novos dados do inventário são descobertos.

Essa demonstração também descreve como usar o Amazon Athena e o Amazon QuickSight para consultar e analisar os dados agregados. Para obter informações sobre como criar uma sincronização de dados de recursos usando o Systems Manager no AWS Management Console, consulte Demonstração: usar a sincronização de dados de recursos para agregar dados do inventário. Para obter informações sobre como consultar o inventário de várias Regiões da AWS e contas usando o Systems Manager no AWS Management Console, consulte Consultar dados de inventário de várias regiões e contas.

nota

Essa demonstração inclui informações sobre como criptografar a sincronização usando o AWS Key Management Service (AWS KMS). O Inventory não coleta dados específicos do usuário, dados patenteados ou confidenciais e, portanto, a criptografia é opcional. Para obter mais informações sobre o AWS KMS, consulte o Manual do desenvolvedor do AWS Key Management Service.

Antes de começar

Avalie ou conclua as tarefas a seguir, antes de começar a demonstração nesta seção:

  • Colete o inventário de dados dos nós gerenciados. Para fins das seções Amazon Athena e Amazon QuickSight nesta demonstração, recomendamos que você colete os dados da aplicação. Para obter mais informações sobre como coletar dados do inventário, consulte Configurar a coleta de inventário ou Using the AWS CLI to configure inventory data collection.

  • (Opcional) Se os dados de inventário forem armazenados em um bucket do Amazon Simple Storage Service (Amazon S3) que use a criptografia do AWS Key Management Service (AWS KMS), você também deve configurar sua conta do IAM e a função de serviço do Amazon-GlueServiceRoleForSSM para a criptografia do AWS KMS. Se você não configurar a conta do IAM e essa função, o Systems Manager exibirá Cannot load Glue tables quando você escolher a guia Detailed View (Visualização detalhada) no console. Para ter mais informações, consulte (Opcional) Configure as permissões para exibição de dados criptografados do AWS KMS.

  • (Opcional) Se Você quiser criptografar a sincronização dos dados do recurso, usando o AWS KMS, crie uma nova chave que inclua a política a seguir, ou atualize uma chave existente e adicione essa política a ela.

    { "Version": "2012-10-17", "Id": "ssm-access-policy", "Statement": [ { "Sid": "ssm-access-policy-statement", "Action": [ "kms:GenerateDataKey" ], "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Resource": "arn:aws:kms:us-east-2:123456789012:key/KMS_key_id", "Condition": { "StringLike": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:ssm:*:123456789012:resource-data-sync/*" } } } ] }
Como criar uma sincronização de dados de recurso para inventário
  1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

  2. Crie um bucket para armazenar os dados de inventário agregados. Para obter mais informações, consulte Criar um bucket no Guia do usuário do Amazon Simple Storage Service. Anote o nome do bucket e a Região da AWS em que você o criou.

  3. Depois de criar o bucket, escolha a guia Permissions e depois escolha Bucket Policy.

  4. Copie e cole a seguinte política de bucket no editor de políticas. Substitua amzn-s3-demo-bucket e account-id pelo nome do bucket do Amazon S3 que você criou e um ID de Conta da AWS válido. Ao adicionar múltiplas contas, adicione mais uma sequência de caracteres de condição e um ARN para cada conta. Ao adicionar uma conta, remova os espaços reservados adicionais do exemplo. Opcionalmente, substitua bucket-prefix pelo nome de um prefixo do Amazon S3 (subdiretório). Se você não criou um prefixo, remova bucket-prefix/ do ARN na política.

    { "Version": "2012-10-17", "Statement": [ { "Sid": " SSMBucketDelivery", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/bucket-prefix/*/accountid=account-id/*" ], "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": [ "account-id1", "account-id2", "account-id3", "account-id4" ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:ssm:*:account-id1:resource-data-sync/*", "arn:aws:ssm:*:account-id2:resource-data-sync/*", "arn:aws:ssm:*:account-id3:resource-data-sync/*", "arn:aws:ssm:*:account-id4:resource-data-sync/*" ] } } } ] }
  5. (Opcional) Se deseja criptografar a sincronização, você deve adicionar as seguintes condições à política listada na etapa anterior. Adicione esses na seção StringEquals.

    "s3:x-amz-server-side-encryption":"aws:kms", "s3:x-amz-server-side-encryption-aws-kms-key-id":"arn:aws:kms:region:account_ID:key/KMS_key_ID"

    Exemplo:

    "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": "account-id", "s3:x-amz-server-side-encryption":"aws:kms", "s3:x-amz-server-side-encryption-aws-kms-key-id":"arn:aws:kms:region:account_ID:key/KMS_key_ID" }
  6. Instale e configure a AWS Command Line Interface (AWS CLI), caso ainda não o tenha feito.

    Para obter informações, consulte Instalar ou atualizar a versão mais recente da AWS CLI.

  7. (Opcional) Se você quiser criptografar a sincronização, execute o seguinte comando para verificar se a política do bucket está aplicando o requisito de chave do AWS KMS. Substitua cada espaço reservado para recurso de exemplo por suas próprias informações.

    Linux & macOS
    aws s3 cp ./A_file_in_the_bucket s3://amzn-s3-demo-bucket/prefix/ \ --sse aws:kms \ --sse-kms-key-id "arn:aws:kms:region:account_ID:key/KMS_key_id" \ --region region, for example, us-east-2
    Windows
    aws s3 cp ./A_file_in_the_bucket s3://amzn-s3-demo-bucket/prefix/ ^ --sse aws:kms ^ --sse-kms-key-id "arn:aws:kms:region:account_ID:key/KMS_key_id" ^ --region region, for example, us-east-2
  8. Execute o comando a seguir para criar uma configuração de sincronização de dados de recursos com o bucket do Amazon S3 que você criou no início deste procedimento. Esse comando cria uma sincronização da Região da AWS à qual você está conectado.

    nota

    Se a sincronização e o bucket do Amazon S3 de destino estiverem localizados em diferentes regiões, você poderá estar sujeito ao preço da transferência de dados. Para obter mais informações, consulte Preços do Amazon S3.

    Linux & macOS
    aws ssm create-resource-data-sync \ --sync-name a_name \ --s3-destination "BucketName=amzn-s3-demo-bucket,Prefix=prefix_name, if_specified,SyncFormat=JsonSerDe,Region=bucket_region"
    Windows
    aws ssm create-resource-data-sync ^ --sync-name a_name ^ --s3-destination "BucketName=amzn-s3-demo-bucket,Prefix=prefix_name, if_specified,SyncFormat=JsonSerDe,Region=bucket_region"

    Você pode usar o parâmetro region para especificar onde a configuração de sincronização deve ser criada. No exemplo a seguir, os dados de inventário da região us-west-1 serão sincronizados no bucket do Amazon S3 na região us-west-2.

    Linux & macOS
    aws ssm create-resource-data-sync \ --sync-name InventoryDataWest \ --s3-destination "BucketName=amzn-s3-demo-bucket,Prefix=HybridEnv,SyncFormat=JsonSerDe,Region=us-west-2" --region us-west-1
    Windows
    aws ssm create-resource-data-sync ^ --sync-name InventoryDataWest ^ --s3-destination "BucketName=amzn-s3-demo-bucket,Prefix=HybridEnv,SyncFormat=JsonSerDe,Region=us-west-2" ^ --region us-west-1

    (Opcional) Se quiser criptografar a sincronização usando o AWS KMS, execute o seguinte comando para criar a sincronização. Se você criptografar a sincronização, a chave AWS KMS e o bucket do Amazon S3 deverão estar na mesma região.

    Linux & macOS
    aws ssm create-resource-data-sync \ --sync-name sync_name \ --s3-destination "BucketName=amzn-s3-demo-bucket,Prefix=prefix_name, if_specified,SyncFormat=JsonSerDe,AWSKMSKeyARN=arn:aws:kms:region:account_ID:key/KMS_key_ID,Region=bucket_region" \ --region region
    Windows
    aws ssm create-resource-data-sync ^ --sync-name sync_name ^ --s3-destination "BucketName=amzn-s3-demo-bucket,Prefix=prefix_name, if_specified,SyncFormat=JsonSerDe,AWSKMSKeyARN=arn:aws:kms:region:account_ID:key/KMS_key_ID,Region=bucket_region" ^ --region region
  9. Execute o seguinte comando para visualizar o status da configuração de sincronização.

    aws ssm list-resource-data-sync

    Se você criou a configuração de sincronização em uma Região diferente, deverá especificar o parâmetro region, como mostra o exemplo a seguir.

    aws ssm list-resource-data-sync --region us-west-1
  10. Depois que a configuração de sincronização tiver sido criada com sucesso, navegue pelo bucket de destino no Amazon S3. Os dados do Inventory deverão ser exibidos em poucos minutos.

Trabalhar com os dados no Amazon Athena

A seção a seguir descreve como visualizar e consultar os dados no Amazon Athena. Antes de começar, recomendamos que você saiba mais sobre o Athena. Para obter mais informações, consulte O que é o Amazon Athena? e Trabalhar com dados no Manual do usuário do Amazon Athena.

Para visualizar e consultar dados no Amazon Athena
  1. Abra o console do Athena em https://console.aws.amazon.com/athena/.

  2. Copie e cole a seguinte instrução no editor de consultas e escolha Run Query.

    CREATE DATABASE ssminventory

    O sistema cria um banco de dados chamado ssminventory.

  3. Copie e cole a seguinte instrução no editor de consultas e escolha Run Query. Substitua amzn-s3-demo-bucket e bucket_prefix pelo nome e prefixo do destino do Amazon S3.

    CREATE EXTERNAL TABLE IF NOT EXISTS ssminventory.AWS_Application ( Name string, ResourceId string, ApplicationType string, Publisher string, Version string, InstalledTime string, Architecture string, URL string, Summary string, PackageId string ) PARTITIONED BY (AccountId string, Region string, ResourceType string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = '1' ) LOCATION 's3://amzn-s3-demo-bucket/bucket_prefix/AWS:Application/'
  4. Copie e cole a seguinte instrução no editor de consultas e escolha Run Query.

    MSCK REPAIR TABLE ssminventory.AWS_Application

    O sistema particiona a tabela.

    nota

    Se você criar sincronizações de dados de recursos em outras Regiões da AWS ou Contas da AWS, você deverá executar esse comando novamente para atualizar as partições. Talvez você também precise atualizar a política de bucket do Amazon S3.

  5. Para visualizar seus dados, escolha o ícone de exibição ao lado da tabela AWS_Application.

    O ícone de visualização de dados no Amazon Athena.
  6. Copie e cole a seguinte instrução no editor de consultas e escolha Run Query.

    SELECT a.name, a.version, count( a.version) frequency from aws_application a where a.name = 'aws-cfn-bootstrap' group by a.name, a.version order by frequency desc

    A consulta retorna uma contagem de versões diferentes do aws-cfn-bootstrap, que é uma aplicação da AWS presente nas instâncias do Amazon Elastic Compute Cloud (Amazon EC2) para Linux, macOS e Windows Server.

  7. Copie e cole individualmente as seguintes instruções no editor de consultas, substitua amzn-s3-demo-bucket e bucket-prefix por informações para o Amazon S3 e escolha Executar consulta. Essas instruções configuram as tabelas de inventário adicionais no Athena.

    CREATE EXTERNAL TABLE IF NOT EXISTS ssminventory.AWS_AWSComponent ( `ResourceId` string, `Name` string, `ApplicationType` string, `Publisher` string, `Version` string, `InstalledTime` string, `Architecture` string, `URL` string ) PARTITIONED BY (AccountId string, Region string, ResourceType string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = '1' ) LOCATION 's3://amzn-s3-demo-bucket/bucket-prefix/AWS:AWSComponent/'
    MSCK REPAIR TABLE ssminventory.AWS_AWSComponent
    CREATE EXTERNAL TABLE IF NOT EXISTS ssminventory.AWS_WindowsUpdate ( `ResourceId` string, `HotFixId` string, `Description` string, `InstalledTime` string, `InstalledBy` string ) PARTITIONED BY (AccountId string, Region string, ResourceType string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = '1' ) LOCATION 's3://amzn-s3-demo-bucket/bucket-prefix/AWS:WindowsUpdate/'
    MSCK REPAIR TABLE ssminventory.AWS_WindowsUpdate
    CREATE EXTERNAL TABLE IF NOT EXISTS ssminventory.AWS_InstanceInformation ( `AgentType` string, `AgentVersion` string, `ComputerName` string, `IamRole` string, `InstanceId` string, `IpAddress` string, `PlatformName` string, `PlatformType` string, `PlatformVersion` string ) PARTITIONED BY (AccountId string, Region string, ResourceType string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = '1' ) LOCATION 's3://amzn-s3-demo-bucket/bucket-prefix/AWS:InstanceInformation/'
    MSCK REPAIR TABLE ssminventory.AWS_InstanceInformation
    CREATE EXTERNAL TABLE IF NOT EXISTS ssminventory.AWS_Network ( `ResourceId` string, `Name` string, `SubnetMask` string, `Gateway` string, `DHCPServer` string, `DNSServer` string, `MacAddress` string, `IPV4` string, `IPV6` string ) PARTITIONED BY (AccountId string, Region string, ResourceType string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = '1' ) LOCATION 's3://amzn-s3-demo-bucket/bucket-prefix/AWS:Network/'
    MSCK REPAIR TABLE ssminventory.AWS_Network
    CREATE EXTERNAL TABLE IF NOT EXISTS ssminventory.AWS_PatchSummary ( `ResourceId` string, `PatchGroup` string, `BaselineId` string, `SnapshotId` string, `OwnerInformation` string, `InstalledCount` int, `InstalledOtherCount` int, `NotApplicableCount` int, `MissingCount` int, `FailedCount` int, `OperationType` string, `OperationStartTime` string, `OperationEndTime` string ) PARTITIONED BY (AccountId string, Region string, ResourceType string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = '1' ) LOCATION 's3://amzn-s3-demo-bucket/bucket-prefix/AWS:PatchSummary/'
    MSCK REPAIR TABLE ssminventory.AWS_PatchSummary

Trabalhar com os dados no Amazon QuickSight

A seção a seguir fornece uma visão geral com links para construir uma visualização no Amazon QuickSight.

Para construir uma visualização no Amazon QuickSight
  1. Cadastre-se no Amazon QuickSight e faça login no console do QuickSight.

  2. Crie um conjunto de dados na tabela AWS_Application e em quaisquer outras tabelas que você tenha criado. Para obter mais informações, consulte Criar um conjunto de dados usando o Amazon Athena.

  3. Una tabelas. Por exemplo, você pode unir a coluna instanceid de AWS_InstanceInformation porque ela corresponde à coluna resourceid em outras tabelas de inventário. Para obter mais informações sobre como unir tabelas, consulte o tópico sobre como Unir tabelas.

  4. Crie uma visualização. Para obter mais informações, consulte o tópico sobre como Trabalhar com o Amazon QuickSight Visuals.