Como configurar um bucket central do Amazon S3 para o registro do Session Manager a partir de várias contas?

8 minuto de leitura
0

Quero configurar o registro central do Amazon Simple Storage Service (Amazon S3) para o Session Manager, um recurso do AWS Systems Manager, para minhas contas da AWS.

Breve descrição

No Systems Manager, você pode identificar e configurar o log do Amazon S3 para o Session Manager. 

Introdução

O AWS Systems Manager Agent (SSM Agent) usa a mesma função do AWS Identity and Access Management (IAM) para ativação e upload de logs para o Amazon S3. Você pode usar um perfil de instância do IAM vinculado a uma instância do Amazon Elastic Compute Cloud (Amazon EC2) ou o perfil do IAM configurado para a Configuração padrão de gerenciamento de host.

Você deve ter as seguintes permissões para concluir a configuração:

  • A conta que tem a entidade principal do IAM usada para permissões deve conceder permissões ao Amazon S3 por meio de uma política do IAM.
  • O proprietário do bucket do S3 também deve conceder permissões por meio de uma política de bucket ou lista de controle de acesso (ACL) para todas as contas.
  • Se o bucket for criptografado com uma chave do AWS Key Management Service (AWS KMS), você deverá criar e usar uma política do IAM.

Observação:

  • Você deve anexar a política do IAM ao perfil que concede permissões ao Agente SSM.
  • A chave do KMS usada para criptografar o bucket também deve conceder a permissão por meio da política de chaves do KMS.

Para configurar o log central do bucket do Amazon S3 para o Session Manager, primeiro identifique a conta principal que possui seu bucket do S3 centralizado. No exemplo a seguir, a Conta A possui o bucket centralizado.

Em seguida, conclua as seguintes etapas:

  1. Na Conta A, crie uma ou duas chaves personalizadas do AWS KMS e uma política personalizada do KMS.
  2. Na Conta A, crie um bucket do S3 para o log do Systems Manager.
  3. Na conta A, crie a política de recursos para o bucket do S3.
  4. Em outra conta, crie uma política do IAM para conceder permissões ao bucket do S3 e às duas chaves do KMS.
  5. (Opcional) Use os perfis de shell do Systems Manager para criar e configurar o log..
  6. Verifique se o registro em logo do Session Manager está configurado para os buckets de destino e usando a chave KMS.
  7. Verifique se os logs estão sendo gerados no bucket.

Resolução

Observação: para definir o escopo das permissões, o processo de exemplo a seguir usa chaves de condição para os perfis e as organizações da AWS. Se você precisar de controle adicional de permissões, é uma prática recomendada usar os perfis de entidades principais no Session Manager.

Esse processo usa as seguintes permissões principais:

  • A política gerenciada pela AWS do IAM AmazonSSMManagedInstanceCore para fornecer permissões ao Systems Manager.
  • A permissão s3:getEncryptionConfiguration para descrever a configuração de criptografia no bucket do S3.
  • As permissões s3:PutObject e s3:PutObjectAcl para colocar objetos criptografados no bucket do S3.
  • As permissões kms:decrypt e kms:generateDataKey para fornecer acesso às chaves do KMS ao acessar os buckets e o Session Manager.
  • A permissão aws:PrincipalOrgID: o-xxxxxxx para permitir acesso restrito a qualquer entidade principal que não corresponda ao ID da organização.

Pré-requisitos

Você deve ter conectividade com endpoints para os seguintes serviços:

  • Amazon S3
  • AWS KMS
  • Mensagens do Systems Manager e do Systems Manager
  • Mensagens do Amazon EC2

Criar as chaves do KMS

Primeiro, crie uma ou duas chaves.

  • Se você estiver criando uma chave, use-a (Chave 1) para criptografia S3 no bucket de log do Session Manager e na criptografia KMS de preferências do Session Manager.
  • Se você estiver criando duas chaves, use a primeira chave KMS (Chave 1) para criptografar o bucket do S3 para log. Use a segunda chave do KMS (Chave 2) para criptografar o stream do Session Manager para o bucket do Amazon S3.

Em seguida, crie a chave Sid para cada chave. Adicione o elemento Sid à sua política do KMS para cada chave. 

Para permitir que o Session Manager criptografe a sessão, adicione as seguintes permissões às Organizações:

Observação: substitua o valor aws:PrincipalOrgID pelo ID da organização e pelo ARN da entidade principal.

{  
    "Effect": "Allow",  
    "Principal": {  
        "AWS": "*"  
    },  
    "Action": [  
        "kms:Decrypt",  
        "kms:GenerateDataKey"  
    ],  
    "Resource": "*",  
    "Condition": {  
        "StringEquals": {  
            "aws:PrincipalOrgID": "o-xxxxxxx"  
        }  
    }  
}

Criar um bucket do S3 para fazer login na Conta A

Crie um bucket do Amazon S3 para registrar em log os dados do Session Manager na Conta A. Atribua um nome ao bucket, por exemplo, customer_session_manager_logging_bucket. Ao escolher a criptografia, use a Chave 1.

Criar a política de recursos para o bucket do S3

Aplique a seguinte política de recursos ao bucket utilizado para registrar suas sessões.

Para usar uma chave de condição do PrincipalOrgID para restringir o acesso ao bucket do S3, adicione a seguinte política de recursos ao seu bucket do S3:

Observação: essa política rejeita solicitações de acesso de um diretor que está fora da sua organização.

{  
    "Version": "2012-10-17",  
    "Statement": [  
        {  
            "Effect": "Allow",  
            "Principal": {  
                "AWS": "*"  
            },  
            "Action": "s3:GetEncryptionConfiguration",  
            "Resource": "arn:aws:s3:::customer_session_manager_logging_bucket",  
            "Condition": {  
                "StringEquals": {  
                    "aws:PrincipalOrgID": "o-xxxxxxxxxxxxxx"  
                }  
            }  
        },  
        {  
            "Effect": "Allow",  
            "Principal": {  
                "AWS": "*"  
            },  
            "Action": [  
                "s3:PutObject",  
                "s3:PutObjectAcl"  
            ],  
            "Resource": "arn:aws:s3:::customer_session_manager_logging_bucket/*",  
            "Condition": {  
                "StringEquals": {  
                    "aws:PrincipalOrgID": "o-xxxxxxxxxxxxx"  
                }  
            }  
        }  
    ]  
}

Criar uma política do IAM

Primeiro, crie uma política do IAM para conceder permissões ao bucket do S3 e às chaves.

Anexe o exemplo de política a seguir ao seu perfil de instância para usar nas contas que você deseja conectar. Você pode usar uma política integrada ou uma política gerenciada pelo cliente para anexar a política:

{  
    "Version": "2012-10-17",  
    "Statement": [  
        {  
            "Sid": "PutObjectsBucket",  
            "Action": [  
                "s3:PutObject",  
                "s3:PutObjectAcl"  
            ],  
            "Effect": "Allow",  
            "Resource": "arn:aws:s3:::customer_session_manager_logging_bucket/*"  
        },  
        {  
            "Sid": "ListBucketAndEncryptionConfig",  
            "Action": [  
                "s3:GetEncryptionConfiguration"  
            ],  
            "Effect": "Allow",  
            "Resource": "arn:aws:s3:::customer_session_manager_logging_bucket"  
        },  
        {  
            "Sid": "S3KMSSessionManagerKMS",  
            "Effect": "Allow",  
            "Action": [  
                "kms:Decrypt",  
                "kms:GenerateDataKey*"  
            ],  
            "Resource": [  
                "arn:aws:kms:us-east-1:ACCOUNTId:key/YOUR-KMS-FOR-SessionManagerEncryption",  
                "arn:aws:kms:us-east-1:ACCOUNTID:key/YOUR-KMS-FOR-S3BucketEncryption"  
            ]  
        }  
    ]  
}

(Opcional) Use os perfis de shell do Session Manager para criar e configurar o log

Para criar um perfil de shell personalizado, crie primeiro um arquivo. Em seguida, salve o arquivo com um nome de descrição, por exemplo, SessionManagerRunshell.json. Substitua o conteúdo desse arquivo.json pelo exemplo a seguir:

Observação: substitua customer_session_manager_logging_bucket pelo nome do bucket e YOUR-KMS-FOR-SessionManagerEncryption pela chave designada para o Session Manager.

{  
"schemaVersion": "1.0",  
"description": "Document to hold regional settings for Session Manager",  
"sessionType": "Standard_Stream",  
"inputs": {  
"s3BucketName": "customer_session_manager_logging_bucket",  
"s3KeyPrefix": "",  
"s3EncryptionEnabled": true,  
"cloudWatchLogGroupName": "",  
"cloudWatchEncryptionEnabled": false,  
"cloudWatchStreamingEnabled": false,  
"kmsKeyId": "arn:aws:kms:REGION:ACCOUNTID:key/YOUR-KMS-FOR-SessionManagerEncryption",  
"runAsDefaultUser": "",  
"idleSessionTimeout": "20",  
"maxSessionDuration": "",  
"shellProfile": {"windows": "", "linux": ""}  
  }  
}

Execute os seguintes comandos para salvar esse arquivo como o documento padrão do Session Manager:

aws ssm update-document --name "SSM-SessionManagerRunShell"   
--content "file://SessionManagerRunShell.json"   
--document-version "$LATEST"

Verifique se o registro do Session Manager está configurado para os buckets de destino e está usando a chave KMS

Abra o bucket do S3 e verifique se você tem a Ccriptografia de bucket ativada. Verifique o ARN do KMS para confirmar se o Session Manager está usando a Chave 1.

Observação: ao configurar o log de contas cruzadas do Session Manager, é uma prática recomendada usar um prefixo do ID da conta. Isso ajuda acompanhar as contas e seus logs associados.

Para verificar as preferências do Session Manager, conclua as seguintes etapas:

  1. Abra o ](https://console.aws.amazon.com/systems-manager/session-manager/)console do Session Manager[ e escolha sua região da AWS.
  2. Verifique se você tem a criptografia de bucket do S3 ativada e insira o ARN da Chave 1 que está na Conta A.
  3. No bucket do S3, insira o nome do bucket do S3 que está na Conta A.

Verifique se os logs estão sendo gerados no bucket

Para gerar logs, use o Session Manager em outra conta para se conectar à sua instância.

Execute as etapas a seguir:

  1. Abra o console do Session Manager e escolha sua região.
  2. Verifique se a sessão está conectada e a seguinte mensagem é exibida: “Esta sessão é criptografada usando o AWS KMS”
  3. Insira algumas entradas de teste para gerar os logs e, em seguida, encerre sua sessão.
  4. Na Conta A, navegue até o bucket do S3 que você criou para log e procure os logs mais recentes por hora.

Observação: depois de desconectar a sessão, pode levar pelo menos 30 segundos para que os logs sejam preenchidos. Para obter mais informações, consulte Registro em log de solicitações usando o log de acesso ao servidor.

Informações relacionadas

Proteger dados com criptografia no lado do servidor

Ações, recursos e chaves de condição para o Amazon S3

Exemplos de políticas de bucket

Diretrizes da política de acesso

Permitir que um usuário criptografe e descriptografe com chaves específicas do KMS

AWS OFICIAL
AWS OFICIALAtualizada há 10 meses