How to use Terraform to restrict the editing of a dashboard

Restricting a dashboard using the restricted_roles attribute

The restricted_roles attribute can be used to restrict editing of the dashboard to specific roles. The field takes a list of IDs of roles, and authorizes any associated users.

Example usage:

resource "datadog_dashboard" "example" {
  title         = "Example dashboard"
  restricted_roles = ["<role_id_1>", "<role_id_2>"]
}

Note: The is_read_only attribute is deprecated. It is recommended to use the restricted_roles attribute or restriction policies to manage access to your dashboards.

Restricting a dashboard using a restriction policy

Restriction policies are in private beta. Contact Datadog Support or your Customer Success Manager for access.

Restriction Policies allow you to restrict the editing of dashboards and other resources to specific principals, including roles, teams, users, and service accounts.

Example usage:

resource "datadog_dashboard" "example" {
  title         = "Example dashboard"
  # Do not use restricted_roles or is_read_only attributes
}

resource "datadog_restriction_policy" "example" {
 resource_id = "dashboard:${datadog_dashboard.example.id}"
  bindings {
     principals = ["org:<org_id>"]
     relation = "viewer"
  }
  bindings {
     principals = ["role:<role_id_1>", "role:<role_id_2>"]
     relation = "editor"
  }
}

Role IDs can be retrieved from the Roles API, Roles UI, or by using the role ID defined in Terraform for datadog_role resources.

Org ID can be obtained from the GET /api/v2/current_user API request. Find it in the data.relationships.org.data.id field.

PREVIEWING: may/unit-testing