Ir para o conteúdo

Como configuro um bucket central do Amazon S3 para o registro do Gerenciador de Sessões a partir de várias contas da AWS?

6 minuto de leitura
0

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

Resolução

Configurar as permissões

O Systems Manager Agent (SSM Agent) usa o mesmo perfil do AWS Identity and Access Management (AWS IAM) para ativar e fazer upload de logs para o Amazon S3.

É possível usar um dos seguintes perfis do IAM:

Para conceder permissões, use as seguintes políticas:

  • A conta da AWS que possui a entidade principal do IAM deve usar uma política do IAM para conceder permissões do Amazon S3.
  • O proprietário do bucket do S3 deve usar a política de chaves ou a lista de controle de acesso (ACL) do AWS Key Management Service (AWS KMS) para permitir o acesso a todas as contas.
  • Se o bucket estiver criptografado com uma chave do AWS KMS, você deverá usar uma política do IAM.
  • Você deve anexar a política do IAM ao perfil que concede permissões ao SSM Agent.
  • Você deve usar uma política de chave do KMS para conceder acesso à chave do AWS KMS que você usa para criptografar o bucket.
  • Você deve usar a política gerenciada pela AWS do AmazonSSMManagedInstanceCore para acessar a funcionalidade principal do Systems Manager.

As seguintes permissões são necessárias para que o Gerenciador de Sessões faça upload de logs para o bucket do S3:

  • As permissões s3:PutObject e s3:PutObjectAcl para carregar objetos criptografados no bucket do S3.
  • As permissões kms:decrypt e kms:GenerateDataKey para acessar as chaves do AWS KMS.
  • A permissão aws:PrincipalOrgID: o-xxxxxxx para restringir o acesso a entidade principal que não correspondam ao ID da sua organização no AWS Organizations.

Verifique a conectividade com os seguintes endpoints:

  • Endpoints do Amazon S3: com.amazonaws.region.s3
  • Endpoints do serviço AWS KMS: com.amazonaws.region.kms
  • Endpoints do Systems Manager: com.amazonaws.region.ssm
  • Endpoints do Gerenciador de Sessões do Systems Manager: com.amazonaws.region.ssmmessages
  • Endpoints do Amazon EC2: com.amazonaws.region.ec2

Crie chaves e políticas de chaves do AWS KMS

Crie chaves do AWS KMS para criptografar o bucket do S3 e os logs do Gerenciador de Sessões.

É possível criar uma chave para criptografar os logs do Gerenciador de Sessões e a criptografia do AWS KMS, ou criar chaves separadas para cada um.

Para cada chave, adicione a seguinte declaração de chave à política do AWS KMS para permitir que o Gerenciador de Sessões criptografe os logs:

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

Observação: substitua o aws:PrincipalOrgID pelo ID da sua organização e a entidade principal pelo ARN do seu perfil do IAM.

Crie a política de bucket e bucket do S3

Crie um bucket do S3 para armazenar os logs do Gerenciador de Sessões. Para obter mais informações, consulte Criação de um bucket de uso geral e Registro de dados de sessão usando o Amazon S3 (console).

Para permitir o acesso aos logs, adicione a seguinte política de recursos ao bucket do S3:

{
  "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"
        }
      }
    }
  ]
}

Para obter mais informações sobre permissões de acesso a logs, consulte Permissões para entrega de logs.

Crie uma política do IAM para acessar o bucket do S3 e as chaves do AWS KMS

Crie uma política do IAM que conceda permissões para acessar o bucket do S3 e as chaves do AWS KMS.

Anexe o exemplo de política a seguir ao perfil de instância que suas contas usam para se conectar ao bucket do S3:

{
  "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"
      ]
    }
  ]
}

Observação: é possível usar uma política em linha ou uma política gerenciada pelo cliente. Para obter mais informações, consulte Como usar políticas do IAM com o AWS KMS.

(Opcional) Configurar perfis de shell do Gerenciador de Sessões para logs

Para criar um perfil de shell personalizado, crie um arquivo JSON, remova o conteúdo e substitua-o pelos seguintes valores:

{
  "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": ""}
  }
}

Observação: substitua customer_session_manager_logging_bucket pelo nome do bucket e YOUR-KMS-FOR-SessionManagerEncryption pela chave designada para o Gerenciador de Sessões.

Execute o comando a seguir para salvar o arquivo como o documento padrão do Gerenciador de Sessões com um nome como SessionManagerRunShell.json:

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

Verifique a configuração de registro do Gerenciador de Sessões

Abra o console do Amazon S3 e, em seguida, navegue até o bucket de registro. Nas configurações do bucket, confirme se a criptografia do bucket está ativa. Além disso, confirme se o ARN da chave do AWS KMS corresponde à chave 1 para garantir que o Gerenciador de Sessões use a chave de criptografia correta.

Para verificar as preferências do Gerenciador de Sessões, conclua as seguintes etapas:

  1. Abra o console do Gerenciador de Sessões.
  2. Selecione sua região da AWS.
  3. Confirme se você ativou a criptografia.
  4. Insira o ARN da chave 1.
  5. Verifique se você configurou o bucket do S3 correto.

Verifique se os logs estão sendo gerados no bucket

Para gerar logs, use o Gerenciador de Sessões em outra conta.

Conclua as etapas a seguir:

  1. Use o Gerenciador de Sessões para se conectar a uma instância.
  2. Selecione sua região.
  3. Verifique se a sessão se conecta e mostra “Esta sessão está criptografada usando o AWS KMS.”
  4. Insira as entradas de teste para gerar os logs e, em seguida, encerre a sessão.

Observação: após o término da sessão, pode levar pelo menos 30 segundos para que os logs apareçam. 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 do Amazon S3

Controle de acesso no Amazon S3

AWS OFICIALAtualizada há 4 meses