Vous pouvez automatiser la configuration de la fédération d'identité de workload à l'aide de Terraform au lieu de la configurer manuellement via la console GCP et l'UI de New Relic.
Pour la configuration manuelle, consultez Intégrer manuellement votre Google Cloud Platform.
Avant de commencer
- Terraform v1.0 ou version ultérieure installé
- Le fournisseur Terraform New Relic configuré
- Le fournisseur Terraform Google Cloud configuré
- Un projet GCP avec les API requises activées (voir Prérequis)
Ce que Terraform configure
La configuration Terraform crée :
- Un compte de service GCP avec Viewer, Service Usage Consumer, Cloud Asset Viewer, Folder Viewer (requis uniquement pour les intégrations configurées au niveau du dossier).
- Un pool d'identités de workload (Workload Identity Pool) avec un fournisseur OIDC pointant vers New Relic
- Liaisons IAM permettant à New Relic d’emprunter l’identité du compte de service
- Le lien cloud New Relic connectant le projet GCP
Exemple de configuration
Conseil
Ceci est un exemple de référence. Adaptez les valeurs à votre projet, à votre région et à votre compte New Relic. Un module Terraform complet et fonctionnel est disponible dans le Terraform Registry.
# Variablesvariable "gcp_project_id" {}variable "gcp_folder_id" {} # Required only for folder-level integrationsvariable "nr_account_id" {}
# Service accountresource "google_service_account" "newrelic" { account_id = "newrelic-gcp-integration" display_name = "New Relic GCP Integration" project = var.gcp_project_id}
resource "google_project_iam_member" "viewer" { project = var.gcp_project_id role = "roles/viewer" member = "serviceAccount:${google_service_account.newrelic.email}"}
resource "google_project_iam_member" "service_usage" { project = var.gcp_project_id role = "roles/serviceusage.serviceUsageConsumer" member = "serviceAccount:${google_service_account.newrelic.email}"}
resource "google_project_iam_member" "cloud_asset_viewer" { project = var.gcp_project_id role = "roles/cloudasset.viewer" member = "serviceAccount:${google_service_account.newrelic.email}"}
# Required only for integrations configured at the folder levelresource "google_folder_iam_member" "folder_viewer" { folder = var.gcp_folder_id role = "roles/resourcemanager.folderViewer" member = "serviceAccount:${google_service_account.newrelic.email}"}
# Workload Identity Poolresource "google_iam_workload_identity_pool" "newrelic" { workload_identity_pool_id = "newrelic-pool" display_name = "New Relic Pool" project = var.gcp_project_id}
# OIDC Providerresource "google_iam_workload_identity_pool_provider" "newrelic" { workload_identity_pool_id = google_iam_workload_identity_pool.newrelic.workload_identity_pool_id workload_identity_pool_provider_id = "newrelic-provider" display_name = "New Relic OIDC Provider" project = var.gcp_project_id
attribute_mapping = { "google.subject" = "assertion.sub" "attribute.nr_account_id" = "assertion.nr_account_id" }
attribute_condition = "assertion.nr_account_id == '${var.nr_account_id}'"
oidc { issuer_uri = "https://oidc.newrelic.com/r/gcp-cmp" allowed_audiences = ["newrelic-gcp-integrations"] }}
# Allow impersonationresource "google_service_account_iam_member" "wif_binding" { service_account_id = google_service_account.newrelic.name role = "roles/iam.workloadIdentityUser" member = "principal://iam.googleapis.com/${google_iam_workload_identity_pool.newrelic.name}/attribute.nr_account_id/${var.nr_account_id}"}Important
Utilisez l'URL qui correspond à la région de votre compte :
- NOUS:
https://oidc.newrelic.com/r/gcp-cmp - UE:
https://oidc.eu.newrelic.com/r/gcp-cmp - JP :
https://oidc.jp.newrelic.com/r/gcp-cmp
Consultez la documentation officielle de Terraform pour obtenir l'intégralité des ressources du fournisseur New Relic pour l'intégration cloud.