LoginSignup
0
1

More than 1 year has passed since last update.

RDS(MySQL)監査ログを有効化(Terraform)

Last updated at Posted at 2022-01-22

前書き

  • そういう要件、あると思います

“監査ログ” is 何

ログオンしているユーザーや、データベースに対しての実行クエリなどが出力されるログ。セキュリティ要件の高い案件などはサイバー攻撃を食らった時に証跡が要りますよね。(データ抜かれたとか大丈夫だったかとか)そうしたデータベースアクティビティを記録しておくためのログです。

いざ有効化

例えば以下のようなrdsの定義があるとしましょう。

rds.tf

resource "aws_db_instance" "default" {
  allocated_storage    = 10
  engine               = "mysql"
  engine_version       = "5.7"
  instance_class       = "db.t3.micro"
  name                 = "mydb"
  username             = "foo"
  password             = "foobarbaz"
  parameter_group_name = "default.mysql5.7"
  skip_final_snapshot  = true

    enabled_cloudwatch_logs_exports = ["error", "general", "slowquery"]
}

enabled_cloudwatch_logs_exportsauditを追加してやります。

(ちなみに上記の設定では、error、general、slowqueryのクエリログ がCloud Watchにエクスポートされるという設定になっています。)

resource "aws_db_instance" "default" {
  allocated_storage    = 10
  engine               = "mysql"
  engine_version       = "5.7"
  instance_class       = "db.t3.micro"
  name                 = "mydb"
  username             = "foo"
  password             = "foobarbaz"
  parameter_group_name = "default.mysql5.7"
  skip_final_snapshot  = true

    enabled_cloudwatch_logs_exports = ["error", "general", "slowquery", "audit"] // ここに追加
}

これで監査ログが取れるようになったぜ...。

ちょっとまちーな。

実はまだやることがあるんです。(そうなんです、自分もこれやらかしてログ取れてなかった経験があります。)

監査プラグインを有効にしてください。

公式にもちゃんと書いてありました。。。

https://aws.amazon.com/jp/premiumsupport/knowledge-center/advanced-audit-rds-mysql-cloudwatch/

RDSではMariaDBの監査プラグインをサポートしているので、これを使います。

対応しているMySQLのverは要確認です。

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.MySQL.Options.AuditPlugin.html

下記のオプショングループのリソース定義があったとして、

rds.tf

resource "aws_db_option_group" "example" {
  name                     = "option-group-test-terraform"
  option_group_description = "Terraform Option Group"
  engine_name              = "sqlserver-ee"
  major_engine_version     = "11.00"

  option {
    option_name = "Timezone"

    option_settings {
      name  = "TIME_ZONE"
      value = "UTC"
    }
  }

  option {
    option_name = "SQLSERVER_BACKUP_RESTORE"

    option_settings {
      name  = "IAM_ROLE_ARN"
      value = aws_iam_role.example.arn
    }
  }

  option {
    option_name = "TDE"
  }
}

以下のように MARIADB_AUDIT_PLUGIN を入れてやります。

resource "aws_db_option_group" "example" {
  name                     = "option-group-test-terraform"
  option_group_description = "Terraform Option Group"
  engine_name              = "sqlserver-ee"
  major_engine_version     = "11.00"

  option {
    option_name = "Timezone"

    option_settings {
      name  = "TIME_ZONE"
      value = "UTC"
    }
  }

  option {
    option_name = "SQLSERVER_BACKUP_RESTORE"

    option_settings {
      name  = "IAM_ROLE_ARN"
      value = aws_iam_role.example.arn
    }
  }

  option {
    option_name = "TDE"
  }

    // 追加
    option {
    option_name = "MARIADB_AUDIT_PLUGIN"
  }
}

これで、晴れてCloud Watchに監査ログが流れるようになりました。

デフォルトでは、/aws/rds/instance/{rdsの識別子}/auditで保存期限は失効しない形で作成されるようでした。

ログは大事だぞ!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1