Puede automatizar la configuración de la federación de identidad de workload mediante Terraform en lugar de configurarla manualmente a través de la consola de GCP y la UI de New Relic.
Para la configuración manual, consulte Integrar manualmente su Google Cloud Platform.
Antes de que empieces
- Terraform v1.0 o posterior instalado
- El proveedor de Terraform de New Relic configurado
- El proveedor de Terraform de Google Cloud configurado
- Un proyecto de GCP con las API requeridas habilitadas (consulte los Requisitos)
Qué configura Terraform
La configuración de Terraform crea:
- Una cuenta de servicio de GCP con Viewer, Service Usage Consumer, Cloud Asset Viewer, Folder Viewer (requerido solo para la integración configurada a nivel de carpeta).
- Un grupo de identidades de workload (Workload Identity Pool) con un proveedor de OIDC que apunta a New Relic
- Vinculaciones de IAM que permiten a New Relic suplantar la cuenta de servicio
- El enlace cloud de New Relic que conecta el proyecto de GCP
Configuración de ejemplo
Sugerencia
Este es un ejemplo de referencia. Adapte los valores a su proyecto, región y cuenta de New Relic. Un módulo de Terraform completamente funcional está disponible en 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}"}Importante
Use la URL que coincida con la región de su cuenta:
- A NOSOTROS:
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
Consulte la documentación oficial de Terraform para obtener los recursos completos del proveedor de New Relic para la integración en la nube.