Datadogのユーザをterraformで削除する
初めに
公式情報を見るとDatadogユーザは無効化しかできないようですが、
terraformで管理することでDatadogのユーザ自体が削除ができる?ようなので検証してみます
検証
1. まずterraformで作成してみる
公式情報の通りにterraformでユーザを追加する
# Source a role
data "datadog_role" "ro_role" {
filter = "Datadog Read Only Role"
}
# Create a new Datadog user
resource "datadog_user" "main" {
email = var.email
name = var.name
roles = [data.datadog_role.ro_role.id]
}
variable "email" {default = "xxxxx@gmail.com"}
variable "name" { default = "test-user" }
test-userという名前でDatadogユーザを作成
※ xxxxx@gmail.comには実際に利用しているメールアドレスを入れています
terraform plan結果↓
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
+ create
Terraform will perform the following actions:
# datadog_user.main will be created
+ resource "datadog_user" "main" {
+ disabled = false
+ email = "xxxxx@gmail.com"
+ id = (known after apply)
+ name = "test-user"
+ roles = [
+ "aa461a4e-a286-11ef-86f4-da7ad0900009",
]
+ send_user_invitation = true
+ user_invitation_id = (known after apply)
+ verified = (known after apply)
}
Plan: 1 to add, 0 to change, 0 to destroy.
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Note: You didn't use the -out option to save this plan, so Terraform can't guarantee to take exactly these actions if you run "terraform apply" now.
2. 招待メールからログインを行い、Datadogコンソール上でユーザを確認
1行目は最初の管理者ユーザで2行目の赤枠で囲っている部分が追加したtest-userになります
コンソール上ではDeleteの操作はなく、Active/Disabledしか選択できない模様
3. terraformでdestroyする
該当のユーザをterraform destroyで削除します
4. Datadogコンソール上でユーザを確認
管理者アカウントしか残っていないことを確認
5. 削除したユーザでログインできるか確認
ログインしようとすると
Your account has been disabled. Please contact support@datadoghq.com if this seems incorrect
とユーザが無効化されているのでログインできないと表示されています
疑問点
公式情報には以下のように記載があります
抜粋↓
メンバーを無効にできるのは、Datadog Admin Role を持つユーザーなど、Access Management アクセス許可を持つユーザーのみです。ユーザーがダッシュボードまたはモニターを作成した可能性があるため、ユーザーを完全に削除することはできません。
コンソール上では消えているように見えていても実際にはログイン操作で復活してしまうのかも?と思ったのですが問題ないようです。
ただこの方法で消してしまうと、該当ユーザが作成したダッシュボードまたはモニターが見えなくなってしまう可能性があるのかもしれません。
ただ公式のAPIリファレンスを確認すると「オーガニゼーションからユーザーを削除します。」と記載があるので、APIは削除できるように見受けられます。
(サンプルで記載されているコマンドにはdisable_userと書いてあるため、内部的に実際には無効化かもしれないです。)
まとめ
コンソールでのユーザ管理をする場合Datadogコンソール上にユーザが残ってしまうので、
- 一時的に無効化しているだけなのか
- そもそも不要なユーザであるのか
を判断することができないことが悩みでしたが、terraformで管理をすることでユーザ自体を削除できることが分かりました。
Discussion