Datadog Sensitive Data Scanner を Terraform で管理する
Datadog Sensitive Data Scanner は、Datadog Log や APM、Event などに流れてくる情報のうち、機密情報(Sensitive Data)に関わりそうなデータを検知してくれるサービスです。
ここでは機能の詳細については割愛し、Terraform で管理する際に気をつけることについて記載します。
Resource
- https://registry.terraform.io/providers/datadog/datadog/latest/docs/resources/sensitive_data_scanner_group
- https://registry.terraform.io/providers/datadog/datadog/latest/docs/resources/sensitive_data_scanner_rule
Datadog Sensitive Data Scanner は大別して「Scanning Group」と「Scanning Rule」で構成されており、それに対応する Terraform resource を用いて設定を行っていく形になります。
以下は、Terraform で Datadog Sensitive Data Scanner の設定を行ってみた例です。
Email についての検索パターンを Standard Pattern を用いて設定し、検知したら hash 化された文字列に置き換える、という設定です。
query
には Datadog Log の検索条件を指定します。
resource "datadog_sensitive_data_scanner_group" "group" {
name = "test"
description = ""
filter {
query = "(some query)"
}
is_enabled = true
product_list = ["logs"]
}
data "datadog_sensitive_data_scanner_standard_pattern" "email_address" {
filter = "Standard Email Address Scanner"
}
resource "datadog_sensitive_data_scanner_rule" "email_address" {
name = "Standard Email Address Scanner"
description = ""
group_id = datadog_sensitive_data_scanner_group.group.id
standard_pattern_id = data.datadog_sensitive_data_scanner_standard_pattern.email_address.id
is_enabled = true
text_replacement {
type = "hash"
}
}
注意点: Datadog App Key の権限
この記事で書きたいのはほぼこの内容のみです。
Datadog を Terraform 経由等で使用する際に使用する Credentials として
- Datadog API Key
- Datadog App Key
の2つを使用しますが、 Datadog Sensitive Data Scanner まわりの操作をする場合は Datadog App Key の Owner Roles
は Datadog Admin Role
である必要があります。
より正確に記述すると、Datadog でデフォルトで設定されている Role は以下の3つだと思いますが
- Datadog Admin Role
- Datadog Standard Role
- Datadog Read Only Role
そのうち Standard Role では権限が足らず、Admin Role には設定されている権限が必要、という感じです。
具体的には以下の権限が必要になります。
- Data Scanner Read
- Data Scanner Write
Datadog Sensitive Data Scanner を触ったことがある方はご存知だと思いますが、この機能はなぜか 「Organization Settings」 の配下の奥まった場所に存在しており、そもそもそれなりの権限がある方じゃないと触れない機能になっているようです。
権限の足らない Datadog App Key で terraform を操作しようとすると、 terraform plan の時などに以下のようなエラーが表示されます。
Error: error calling ListScanningGroups from https://api.datadoghq.com/api/v2/sensitive-data-scanner/config: 403 Forbidden: {"errors":["Forbidden","Failed permission authorization checks"]}
Datadog の一般的な操作は概ね Datadog Standard Role
の範疇の権限で操作可能なことが多いですが、 Datadog Sensitive Data Scanner を操作しようと思うとうまく動かなくてハマることもあるだろう、ということで、こんな記事を書きました。
Discussion