🐕

Datadogのユーザをterraformで削除する

2024/11/14に公開

初めに

公式情報を見るとDatadogユーザは無効化しかできないようですが、
terraformで管理することでDatadogのユーザ自体が削除ができる?ようなので検証してみます

検証

1. まずterraformで作成してみる

公式情報の通りにterraformでユーザを追加する

datadog_user (Resource)

# 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