Freigeben über


Schnellstart: Erstellen einer Azure Confidential Ledger-Instanz mithilfe von Terraform

In diesem Schnellstart erstellen Sie eine Azure-Ressourcengruppe und eine Azure Confidential Ledger-Instanz mithilfe von Terraform. Azure Confidential Ledger ist ein vollständig verwalteter Dienst, der ein manipulationssicheres Register zum Speichern vertraulicher Daten bereitstellt. Er basiert auf Confidential Computing in Azure, für das hardwarebasierte, vertrauenswürdige Ausführungsumgebungen verwendet werden, um Daten auch während der Verwendung vor Bedrohungen zu schützen. Dieses Ledger wurde entwickelt, um die Vertraulichkeit und Integrität gespeicherter Daten sicherzustellen. damit eignet es sich ideal für Anwendungsfälle, die ein hohes Maß an Datenschutz erfordern. Die in diesem Skript erstellten Ressourcen umfassen die Azure Confidential Ledger-Instanz und eine Azure-Ressourcengruppe.

Mit Terraform können Sie eine Cloudinfrastruktur definieren, eine Vorschau der Cloudinfrastruktur anzeigen und die Cloudinfrastruktur bereitstellen. Terraform ermöglicht das Erstellen von Konfigurationsdateien mit HCL-Syntax. Mit der HCL-Syntax können Sie den Cloudanbieter (beispielsweise Azure) und die Elemente angeben, aus denen sich Ihre Cloudinfrastruktur zusammensetzt. Nach der Erstellung Ihrer Konfigurationsdateien erstellen Sie einen Ausführungsplan, mit dem Sie eine Vorschau Ihrer Infrastrukturänderungen anzeigen können, bevor diese bereitgestellt werden. Nach der Überprüfung der Änderungen wenden Sie den Ausführungsplan an, um die Infrastruktur bereitzustellen.

  • Generieren Sie einen zufälligen Haustiernamen für die Ressourcengruppe.
  • Erstellen Sie eine Azure-Ressourcengruppe mit dem generierten Namen.
  • Rufen Sie die aktuelle Azure-Clientkonfiguration ab.
  • Generieren Sie eine zufällige Zeichenfolge für den Azure Confidential Ledger-Namen.
  • Erstellen Sie eine Azure Confidential Ledger-Instanz mit dem generierten Namen, und weisen Sie sie der Ressourcengruppe zu.
  • Weisen Sie dem Confidential Ledger einen Azure AD-basierten Dienstprinzipal zu.
  • Markieren Sie das Confidential Ledger als Beispiel.
  • Geben Sie den Ressourcengruppennamen sowie den Namen, den Typ und den Rollennamen des Confidential Ledgers aus.
  • Geben Sie die erforderliche Version von Terraform und die erforderlichen Anbieter an.
  • Definieren Sie den Azure-Anbieter ohne zusätzliche Features.
  • Definieren Sie Variablen für das Namenspräfix und den Standort der Ressourcengruppe sowie für den Namen, den Typ und den Rollennamen des Confidential Ledgers.

Voraussetzungen

Implementieren des Terraform-Codes

Hinweis

Der Beispielcode für diesen Artikel befindet sich im Azure Terraform-GitHub-Repository. Sie können die Protokolldatei anzeigen, die die Testergebnisse von aktuellen und früheren Terraform-Versionen enthält.

Lesen Sie weitere Artikel und Beispielcodes zur Verwendung von Terraform zum Verwalten von Azure-Ressourcen:

  1. Erstellen Sie ein Verzeichnis, in dem der Terraform-Beispielcode getestet und ausgeführt werden soll, und legen Sie es als aktuelles Verzeichnis fest.

  2. Erstellen Sie eine Datei namens main.tf, und fügen Sie den folgenden Code ein:

    resource "random_pet" "rg_name" {
      prefix = var.resource_group_name_prefix
    }
    
    resource "azurerm_resource_group" "rg" {
      location = var.resource_group_location
      name     = random_pet.rg_name.id
    }
    
    data "azurerm_client_config" "current" {
    }
    
    resource "random_string" "azurerm_confidential_ledger_name" {
      length  = 13
      lower   = true
      numeric = false
      special = false
      upper   = false
    }
    
    resource "azurerm_confidential_ledger" "example" {
      name                = coalesce(var.confidential_ledger_name, "ledger-${random_string.azurerm_confidential_ledger_name.result}")
      resource_group_name = azurerm_resource_group.rg.name
      location            = azurerm_resource_group.rg.location
      ledger_type         = var.confidential_ledger_type
    
      azuread_based_service_principal {
        principal_id     = data.azurerm_client_config.current.object_id
        tenant_id        = data.azurerm_client_config.current.tenant_id
        ledger_role_name = var.confidential_ledger_role_name
      }
    
      tags = {
        IsExample = "True"
      }
    }
    
  3. Erstellen Sie eine Datei namens outputs.tf, und fügen Sie den folgenden Code ein:

    output "resource_group_name" {
      value = azurerm_resource_group.rg.name
    }
    
    output "confidential_ledger_name" {
      value = azurerm_confidential_ledger.example.name
    }
    
    output "confidential_ledger_type" {
      value = azurerm_confidential_ledger.example.ledger_type
    }
    
    output "confidential_ledger_role_name" {
      value = azurerm_confidential_ledger.example.azuread_based_service_principal[0].ledger_role_name
    }
    
  4. Erstellen Sie eine Datei namens providers.tf, und fügen Sie den folgenden Code ein:

    terraform {
      required_version = ">=1.0"
    
      required_providers {
        azurerm = {
          source  = "hashicorp/azurerm"
          version = "~>3.0"
        }
        random = {
          source  = "hashicorp/random"
          version = "~>3.0"
        }
      }
    }
    
    provider "azurerm" {
      features {}
    }
    
  5. Erstellen Sie eine Datei namens variables.tf, und fügen Sie den folgenden Code ein:

    variable "resource_group_name_prefix" {
      type        = string
      default     = "rg"
      description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription."
    }
    
    variable "resource_group_location" {
      type        = string
      default     = "eastus"
      description = "Location of the resource group."
    }
    
    variable "confidential_ledger_name" {
      type        = string
      description = "The name of the confidential ledger resource. The value will be randomly generated if blank."
      default     = ""
    }
    
    variable "confidential_ledger_type" {
      type        = string
      default     = "Public"
      validation {
        condition     = contains(["Public", "Private"], var.confidential_ledger_type)
        error_message = "The confidential ledger type value must be one of the following: Public, Private."
      }
      description = "Type of the confidential ledger."
    }
    
    variable "confidential_ledger_role_name" {
      type        = string
      default     = "Administrator"
      description = "Role name for the confidential ledger."
    }
    

Initialisieren von Terraform

Führen Sie zum Initialisieren der Terraform-Bereitstellung terraform init aus. Mit diesem Befehl wird der Azure-Anbieter heruntergeladen, der zum Verwalten Ihrer Azure-Ressourcen erforderlich ist.

terraform init -upgrade

Die wichtigsten Punkte:

  • Der Parameter -upgrade aktualisiert die erforderlichen Anbieter-Plug-Ins auf die neueste Version, die den Versionseinschränkungen der Konfiguration entspricht.

Erstellen eines Terraform-Ausführungsplans

Führen Sie terraform plan aus, um einen Ausführungsplan zu erstellen.

terraform plan -out main.tfplan

Die wichtigsten Punkte:

  • Durch den Befehl terraform plan wird ein Ausführungsplan erstellt, aber nicht ausgeführt. Stattdessen werden die Aktionen ermittelt, die erforderlich sind, um die in Ihren Konfigurationsdateien angegebene Konfiguration zu erstellen. Mit diesem Muster können Sie überprüfen, ob der Ausführungsplan Ihren Erwartungen entspricht, bevor Sie Änderungen an den eigentlichen Ressourcen vornehmen.
  • Der optionale Parameter -out ermöglicht die Angabe einer Ausgabedatei für den Plan. Durch die Verwendung des Parameters -out wird sichergestellt, dass genau der von Ihnen überprüfte Plan angewendet wird.

Anwenden eines Terraform-Ausführungsplans

Führen Sie terraform apply aus, um den Ausführungsplan auf Ihre Cloudinfrastruktur anzuwenden.

terraform apply main.tfplan

Die wichtigsten Punkte:

  • Der Beispielbefehl terraform apply setzt voraus, dass Sie zuvor terraform plan -out main.tfplan ausgeführt haben.
  • Wenn Sie einen anderen Dateinamen für den Parameter -out angegeben haben, verwenden Sie denselben Dateinamen im Aufruf von terraform apply.
  • Wenn Sie den Parameter -out nicht verwendet haben, rufen Sie terraform apply ohne Parameter auf.

Überprüfen der Ergebnisse

Azure-Befehlszeilenschnittstelle (Azure CLI)

Führen Sie az confidential-ledger show aus, um die Azure Confidential Ledger-Instanz anzuzeigen.

az confidentialledger show --ledger-name <ledger_name> --resource-group <resource_group_name>

Sie müssen <ledger_name> durch den Namen Ihrer Azure Confidential Ledger-Instanz und <resource_group_name> durch den Namen Ihrer Ressourcengruppe ersetzen.


Bereinigen von Ressourcen

Wenn Sie die über Terraform erstellten Ressourcen nicht mehr benötigen, führen Sie die folgenden Schritte aus:

  1. Führen Sie terraform plan aus, und geben Sie das Flag destroy an.

    terraform plan -destroy -out main.destroy.tfplan
    

    Die wichtigsten Punkte:

    • Durch den Befehl terraform plan wird ein Ausführungsplan erstellt, aber nicht ausgeführt. Stattdessen werden die Aktionen ermittelt, die erforderlich sind, um die in Ihren Konfigurationsdateien angegebene Konfiguration zu erstellen. Mit diesem Muster können Sie überprüfen, ob der Ausführungsplan Ihren Erwartungen entspricht, bevor Sie Änderungen an den eigentlichen Ressourcen vornehmen.
    • Der optionale Parameter -out ermöglicht die Angabe einer Ausgabedatei für den Plan. Durch die Verwendung des Parameters -out wird sichergestellt, dass genau der von Ihnen überprüfte Plan angewendet wird.
  2. Führen Sie zum Anwenden des Ausführungsplans den Befehl terraform apply aus.

    terraform apply main.destroy.tfplan
    

Problembehandlung für Terraform in Azure

Behandeln Sie allgemeine Probleme bei der Verwendung von Terraform in Azure.

Nächste Schritte