Objetivo
Para habilitar o flow logs em uma interface de rede com saída para o CloudWatch siga o seguinte caminho feliz.
Deixe selecionado AWS Service → 1. EC2 → 2. Next
1. Next
1. Entre com o Nome da Role → 2. Create Role
1. Selecione Roles → 2. Procure pela Role → 3. Selecione a Role
Aba Permissions → Add Permissions → 1. Create inline policy
1. JSON → 2. Cole a política abaixo → 3. Review policy
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:DescribeLogGroups",
"logs:DescribeLogStreams"
],
"Resource": "*"
}
]
}
1. Entre com o Nome → 2. Create Policy
De volta na criação da role → 1. Trust Relationship → 2. Edit trust policy
1. Cole o código abaixo → 2. Update policy
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "vpc-flow-logs.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
Vá até a Console do CloudWatch → 1. Log groups → 2. Create log group
1. Log group name → 2. Create
Vá na console EC2 → 1. Selecione Instances → 2. Encontre a instância → Copie o IP
1. Clique em Network Interfaces → 2. Procure pelo IP → 3. Aba Flow logs → 4. Create Flow Log
1. Entre com Nome do Flowlog → 2. "1 minute" → 3. Send to CloudWatch logs → 4. Log Group recém criado → 5. Role recém criada → 6. Create flow log
Para verificar os logs gerados.
Vá na console do CloudWatch → 1. Log groups → 2. Selecionar o log group
1. Selecionar o Log stream
Verificar os logs
Usando Terraform
Os passos executados até aqui podem ser automatizados em terraform e a sequência resumida de ações está a seguir.
Configurar as variáveis de ambiente no Windows para utilizar as credenciais corretas da conta para a qual será habilitado o Flow logs.
–SOMENTE PARA AS SESSÕES FUTURAS, NÃO MUDA SESSÃO ATUAL
setx AWS_ACCESS_KEY_ID AKIAX576GWMUN324UA8P
setx AWS_SECRET_ACCESS_KEY xxxxxxxxxxxxxxxxxxxx
setx AWS_DEFAULT_REGION sa-east-1
setx AWS_DEFAULT_PROFILE aplicacoes.joao.silva
setx AWS_PROFILE aplicacoes.joao.silva
–SOMENTE PARA SESSÃO ATUAL
set AWS_ACCESS_KEY_ID=AKIAX576GWMUN324UA8P
set AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxx
set AWS_DEFAULT_REGION=sa-east-1
set AWS_DEFAULT_PROFILE=aplicacoes.joao.silva
set AWS_PROFILE=aplicacoes.joao.silva
Executar o código terraform a seguir configurando vpc_id, subnet_id ou eni_id.
resource "aws_flow_log" "flowlog-to-cloudwatch" {
iam_role_arn = aws_iam_role.role-flowlog-to-cloudwatch.arn
log_destination = aws_cloudwatch_log_group.lg-flowlog-to-cloudwatch.arn
traffic_type = "ALL"
max_aggregation_interval = 60
vpc_id = "vpc-b2aba6d6"
}
resource "aws_cloudwatch_log_group" "lg-flowlog-to-cloudwatch" {
name = "lg-flowlog-to-cloudwatch"
}
resource "aws_iam_role" "role-flowlog-to-cloudwatch" {
name = "role-flowlog-to-cloudwatch"
assume_role_policy = <
Photo by Martijn Baudoin on Unsplash