Quelle verbinden

Azure verbinden

Geben Sie einem Dienstprinzipal Cost Management Reader auf den Abonnements, die importiert werden sollen, oder eine Leserolle auf Ihrem Abrechnungskonto mit Enterprise Agreement oder Microsoft Customer Agreement, und fügen Sie ihn Costfluent als Verbindung hinzu.

Costfluent liest Azure-Kosten über einen Dienstprinzipal, den Sie erstellen. Eine Verbindung ist ein Dienstprinzipal und importiert entweder jedes Abonnement, dessen Kosten dieser Prinzipal lesen darf, oder einen Abrechnungsbereich: die ganze Rechnung einer Enterprise-Agreement-Registrierung oder eines Abrechnungskontos oder Abrechnungsprofils unter einem Microsoft Customer Agreement. Mehrere Abonnements brauchen also keine mehreren Verbindungen. Ein Abonnement importiert nur eine Verbindung, und zwar die, die es zuerst importiert hat.

Wie Costfluent verbindet

Eine Verbindung erfasst einen von zwei Bereichen. Diesen wählen Sie beim Hinzufügen der Verbindung und können ihn später wechseln (Zwischen Abonnements und Abrechnungsbereich wechseln):

  • Abonnements importiert jedes Abonnement, auf dem der Prinzipal eine Azure-Rolle hat. Gebühren, die dem Abrechnungskonto statt einem Abonnement berechnet werden, fehlen (Was nicht importiert wird).
  • Abrechnungskonto importiert einen Abrechnungsbereich: jedes dort abgerechnete Abonnement, in jedem Verzeichnis, dazu die Käufe, Steuern und Gutschriften, die dem Abrechnungskonto oder Abrechnungsprofil berechnet werden. Dafür braucht der Prinzipal eine Leserolle der Abrechnung auf diesem Bereich.

Damit Ihre Reservierungen und Sparpläne unter Commitments erscheinen, weisen Sie dem Dienstprinzipal außerdem Reservations Reader und Savings plan Reader zu. Beide sind optional und nur lesend, und Microsoft vergibt sie einmal für den ganzen Microsoft-Entra-Mandanten statt auf einem Abonnement (Commitment-Rollen vergeben).

Abonnements

Eine integrierte Rolle ist erforderlich, zwei sind optional:

  • Cost Management Reader ist erforderlich. Damit listet Costfluent die Abonnements, denen der Prinzipal zugewiesen ist, liest den Cost-Details-Bericht, auf dem der Import aufbaut, und liest einmal täglich die Kostenempfehlungen von Azure Advisor nach Einsparungen.
  • Carbon Optimization Reader ist optional. Damit liest Costfluent einmal im Monat die Emissionen, die Azure für das Abonnement meldet, in den Bericht zum CO2-Fußabdruck. Die Rolle liest Emissionsdaten und sonst nichts.
  • Reader ist optional. Costfluent nutzt die Rolle nicht, und sie gewährt Lesezugriff auf jede Ressource im Abonnement. Lassen Sie sie weg, solange Ihre eigenen Richtlinien sie nicht verlangen.

Keine der Rollen kann etwas in Ihrem Abonnement ändern. Vergeben Sie weder Contributor noch Owner.

Weisen Sie die Rolle je Abonnement zu oder einmalig auf einer Verwaltungsgruppe, die die zu importierenden Abonnements umfasst. Eine Zuweisung auf Verwaltungsgruppenebene deckt auch später hinzugefügte Abonnements ab.

Erreicht ein zweiter Dienstprinzipal Abonnements, die bereits eine andere Verbindung importiert, wird er trotzdem verbunden und importiert die übrigen; die gemeinsamen bleiben bei der ersten Verbindung. Ein Prinzipal, der nur solche Abonnements erreicht, wird abgelehnt. Um Abonnements auf einen neuen Prinzipal zu übertragen, aktualisieren Sie die Zugangsdaten der bestehenden Verbindung, statt eine neue hinzuzufügen.

Abrechnungsbereich

Die Einstellung billing_scope der Verbindung nennt den Bereich, in einer von drei Formen:

VertragBereichbilling_scopeRolle für den Dienstprinzipal
Enterprise AgreementDie RegistrierungbillingAccounts/<Registrierungsnummer>Enrollment reader auf dem Abrechnungskonto
Microsoft Customer AgreementDas AbrechnungskontobillingAccounts/<Abrechnungskonto-ID>Billing account reader auf dem Abrechnungskonto
Microsoft Customer AgreementEin AbrechnungsprofilbillingAccounts/<Abrechnungskonto-ID>/billingProfiles/<Abrechnungsprofil-ID>Billing profile reader auf dem Abrechnungsprofil oder Billing account reader auf dem Abrechnungskonto

Im Azure-Portal steht unter Kostenverwaltung + Abrechnung die ID eines Abrechnungskontos auf seiner Seite Eigenschaften; bei einem Enterprise Agreement ist es die Registrierungsnummer. Die ID eines Abrechnungsprofils steht auf der Seite Eigenschaften des Abrechnungsprofils. Übernehmen Sie die IDs genau so, wie das Portal sie zeigt. Costfluent lehnt Abteilungen und Registrierungskonten einer Registrierung, Rechnungsabschnitte eines Abrechnungsprofils und Verwaltungsgruppen ab: Die ersten drei enthalten nur Nutzung, die eine Abonnement-Verbindung ohnehin importiert, und den Cost-Details-Bericht von Azure gibt es für Verwaltungsgruppen nicht. Abrechnung über einen Cloud Solution Provider (CSP) wird nicht unterstützt.

Laut Microsoft lesen diese Leserollen der Abrechnung die Kosten jedes Abonnements, das unter dem Bereich abgerechnet wird, auch in anderen Microsoft-Entra-Verzeichnissen, und dürfen in Cost Management zusätzlich Budgets und Exporte anlegen, ändern und löschen. Costfluent nutzt die Rolle nur zum Lesen von Kosten und legt in Azure nichts an, ändert nichts und löscht nichts.

Empfehlungen unter Einsparungen und der Bericht zum CO2-Fußabdruck werden je Abonnement gelesen, und eine Rolle der Abrechnung reicht nicht bis dorthin. Bei einem Abrechnungsbereich liest Costfluent sie für jedes Abonnement, das der Bereich umfasst, mit den Rollen, die auch eine Abonnement-Verbindung nutzt: Cost Management Reader für Empfehlungen und Carbon Optimization Reader für Emissionen, auf jedem Abonnement oder auf einer Verwaltungsgruppe darüber. Die Abonnements, die der Prinzipal nicht lesen kann, werden gemeldet, wie bei einer Abonnement-Verbindung.

Ein Abonnement wird auch hier nur einmal importiert. Umfasst ein Abrechnungsbereich ein Abonnement, das bereits eine andere Azure-Verbindung Ihrer Organisation importiert, verwirft die Verbindung des Abrechnungsbereichs die Kosten dieses Abonnements, und die Seiten beider Verbindungen sagen das. Eine später hinzugefügte Abonnement-Verbindung listet die Abonnements, die bereits ein Abrechnungsbereich umfasst, als Nicht verfügbar. Auch eine Rechnung wird nur über eine Verbindung importiert: Ein Abrechnungsbereich, der einen Teil des Abrechnungsbereichs einer anderen Verbindung abrechnet, also dieselbe Registrierung oder ein MCA-Abrechnungskonto und eines seiner Abrechnungsprofile, wird abgelehnt, damit seine Käufe, Steuern und Gutschriften nicht doppelt zählen. Zwei Abrechnungsprofile eines Abrechnungskontos können zwei Verbindungen sein.

Was nicht importiert wird

Eine Verbindung auf Abonnementebene liest Kosten je Abonnement. Gebühren, die dem Abrechnungskonto oder dem Abrechnungsprofil statt einem Abonnement berechnet werden, werden nicht importiert: Steuern, Käufe unter einem Microsoft Customer Agreement (Reservierungen, Sparpläne und Marketplace-Käufe auf dem Abrechnungsprofil) und andere Gebühren des Abrechnungsprofils. Ebenso wenig Gutschriften und Vorauszahlungen, etwa Azure-Guthabenangebote, Sponsorings und Vorauszahlungsguthaben: Microsoft verrechnet sie auf der Rechnung, beim Abrechnungskonto oder Abrechnungsprofil, daher zeigt Gutschriften einbeziehen keine davon. Ihre Azure-Summen in Costfluent können deshalb um diese Gebühren unter und um diese Gutschriften über Ihrer Rechnung liegen.

Eine Verbindung im Abrechnungsbereich importiert die Käufe, Steuern und Gutschriften, die dem Abrechnungskonto oder Abrechnungsprofil berechnet werden, neben den Kosten jedes dort abgerechneten Abonnements.

Voraussetzungen

  • Die Organisationsrolle Eigentümer oder Integrationsverantwortliche Person in Costfluent.
  • In Azure das Recht, in Ihrem Microsoft-Entra-Mandanten eine Anwendung zu registrieren.
  • Für Abonnements das Recht, auf den Abonnements oder der Verwaltungsgruppe, die importiert werden sollen, Rollen zuzuweisen.
  • Für einen Abrechnungsbereich das Recht, seine Rolle der Abrechnung zu vergeben: die Rolle enrollment writer auf einer Enterprise-Agreement-Registrierung, Billing account owner auf einem Abrechnungskonto unter einem Microsoft Customer Agreement oder Billing profile owner auf dessen Abrechnungsprofil.
  • Optional, für Reservierungen und Sparpläne unter Commitments: User Access Administrator auf der Stammebene Ihres Mandanten, die eine Person mit der Rolle Global Administrator durch Erhöhen des Zugriffs erhält (Commitment-Rollen vergeben).
  • Ein Enterprise Agreement oder ein Microsoft Customer Agreement. Die Cost Details API von Azure, die Costfluent liest, bedient Pay-as-you-go-Abonnements im Microsoft Online Services Program in keinem der beiden Bereiche, und die Verbindungsprüfung sagt das.

Verbinden

Mit der Azure CLI verbinden

Prüfen Sie, in welchem Mandanten und Abonnement Sie arbeiten:

TerminalCode
az account show --query '{tenantId:tenantId,subscriptionId:id,subscriptionName:name}' --output table

Erstellen Sie den Dienstprinzipal. Die Ausgabe enthält appId, password und tenant. Das Passwort lässt sich später nicht erneut abrufen, speichern Sie es also jetzt in Ihrem Passwortmanager.

TerminalCode
az ad sp create-for-rbac --name "Costfluent" --output json

Vergeben Sie ihm Cost Management Reader, auf jedem Abonnement, das importiert werden soll, oder einmalig auf einer Verwaltungsgruppe. Der zweite Befehl ist optional: Er vergibt Carbon Optimization Reader auf derselben Ebene, für den Bericht zum CO2-Fußabdruck.

SUBSCRIPTION_ID="$(az account show --query id --output tsv)" APP_ID="<die appId aus dem vorherigen Schritt>" az role assignment create --assignee "$APP_ID" \ --role "Cost Management Reader" --scope "/subscriptions/$SUBSCRIPTION_ID" az role assignment create --assignee "$APP_ID" \ --role "Carbon Optimization Reader" --scope "/subscriptions/$SUBSCRIPTION_ID"

Rollenzuweisungen brauchen einen Moment, bis sie wirksam sind. Ein Autorisierungsfehler unmittelbar danach bedeutet nicht, dass die Zugangsdaten falsch sind.

Fügen Sie dann die Verbindung in Costfluent hinzu:

  1. Öffnen Sie Einstellungen, dann Integrationen, und wählen Sie Azure.

  2. Öffnen Sie den Tab Verbinden und wählen Sie Dienstprinzipal hinzufügen.

  3. Füllen Sie die vier Felder aus:

    FeldWert
    AnzeigenameVorausgefüllt mit Microsoft Azure, oder mit Microsoft Azure 2 und höher, wenn eine Verbindung schon so heißt; übernehmen Sie ihn oder geben Sie einen beliebigen Namen ein, etwa Production
    Microsoft-Entra-Mandanten-IDtenant des Dienstprinzipals
    App-ID des DienstprinzipalsappId des Dienstprinzipals
    Kennwort des Dienstprinzipalspassword des Dienstprinzipals
  4. Wählen Sie Verbindung testen, um jede Prüfung zu sehen, oder Verbinden, um zu speichern.

Der Dialog Dienstprinzipal hinzufügen mit dem Anzeigename Microsoft Azure, den leeren Feldern Microsoft-Entra-Mandanten-ID, App-ID des Dienstprinzipals und Kennwort des Dienstprinzipals, die jeweils sagen, woher ihr Wert kommt, dem Bereich Abonnements sowie den Schaltflächen Abbrechen, Verbindung testen und Verbinden

Der Dialog Dienstprinzipal hinzufügen, geöffnet aus dem Tab Verbinden.

Es gibt kein Abonnementfeld: Welche Abonnements importiert werden, entscheiden Ihre Rollenzuweisungen, und Costfluent liest das aus Azure. Costfluent prüft die Zugangsdaten vor dem Speichern gegen die Cost-Details-API. Eine Verbindung, die gespeichert wird, kann Ihre Kosten also lesen. Antwortet Azure bei dieser Prüfung nicht, wird die Verbindung trotzdem gespeichert und automatisch erneut geprüft.

Im Abrechnungsbereich verbinden

Erstellen Sie den Dienstprinzipal mit az ad sp create-for-rbac, wie Mit der Azure CLI verbinden zeigt. Seine Rollenzuweisungen auf Abonnements braucht es nur für Empfehlungen und CO2-Emissionen (Abrechnungsbereich). Vergeben Sie ihm dann die Rolle der Abrechnung.

Bei einem Enterprise Agreement ist das die Rolle Enrollment reader. Ein Dienstprinzipal erhält sie nur über die API für Rollenzuweisungen der Abrechnung von Azure: Das Azure-Portal bietet sie für einen Dienstprinzipal nicht an und zeigt die Zuweisung auch nicht. Führen Sie Folgendes als Person mit der Rolle enrollment writer auf der Registrierung aus:

TerminalCode
ENROLLMENT_NUMBER="<Ihre Registrierungsnummer>" APP_ID="<die appId des Dienstprinzipals>" TENANT_ID="<der tenant des Dienstprinzipals>" PRINCIPAL_ID="$(az ad sp show --id "$APP_ID" --query id --output tsv)" ASSIGNMENT_ID="$(uuidgen | tr '[:upper:]' '[:lower:]')" az rest --method put \ --url "https://management.azure.com/providers/Microsoft.Billing/billingAccounts/$ENROLLMENT_NUMBER/billingRoleAssignments/$ASSIGNMENT_ID?api-version=2019-10-01-preview" \ --body "{\"properties\": { \"principalId\": \"$PRINCIPAL_ID\", \"principalTenantId\": \"$TENANT_ID\", \"roleDefinitionId\": \"/providers/Microsoft.Billing/billingAccounts/$ENROLLMENT_NUMBER/billingRoleDefinitions/24f8edb6-1668-4659-b5e2-40bb5f3a7d7e\" }}"

principalId ist die Objekt-ID des Dienstprinzipals, die Microsoft Entra ID unter Unternehmensanwendungen zeigt und die az ad sp show zurückgibt. Mit der Objekt-ID der Anwendung unter App-Registrierungen schlägt der Aufruf fehl. 24f8edb6-1668-4659-b5e2-40bb5f3a7d7e ist die Rolle Enrollment reader, und die Antwort 200 OK bedeutet, dass sie zugewiesen ist.

Bei einem Microsoft Customer Agreement vergeben Sie die Rolle im Azure-Portal, wie für eine Person:

  1. Öffnen Sie Kostenverwaltung + Abrechnung und wählen Sie das Abrechnungskonto oder, für ein Abrechnungsprofil als Bereich, das Abrechnungsprofil unter Abrechnungsprofile.
  2. Wählen Sie Zugriffssteuerung (IAM), dann Hinzufügen.
  3. Wählen Sie Billing account reader auf dem Abrechnungskonto oder Billing profile reader auf dem Abrechnungsprofil.
  4. Suchen Sie den Dienstprinzipal über seinen Namen, Costfluent, wenn Sie ihn wie oben erstellt haben, wählen Sie ihn aus und wählen Sie Hinzufügen.

Fügen Sie die Verbindung dann in Costfluent hinzu, wie Mit der Azure CLI verbinden zeigt: Wählen Sie im Dialog Dienstprinzipal hinzufügen die Option Abrechnungskonto, dann Ihren Vertrag, und geben Sie die IDs ein. Costfluent prüft vor dem Speichern, ob der Prinzipal den Cost-Details-Bericht im Bereich lesen kann. Abonnements findet es dabei noch keine: Die Abonnements erscheinen, sobald ihre Kosten ankommen (Nach dem Verbinden).

Commitment-Rollen vergeben

Optional. Mit zwei weiteren Rollen listet Costfluent Ihre Azure-Reservierungen und -Sparpläne unter Commitments. Microsoft vergibt sie nicht auf einem Abonnement, sondern einmal für den ganzen Microsoft-Entra-Mandanten, auf einer eigenen Ebene:

RolleBereichWas sie liest
Reservations Reader/providers/Microsoft.CapacityJede Reservierung im Mandanten
Savings plan Reader/providers/Microsoft.BillingBenefitsJeden Sparplan im Mandanten

Beide sind nur lesend: Keine von beiden kann eine Reservierung oder einen Sparplan kaufen, ändern oder kündigen. Um eine Rolle auf diesen Ebenen zuzuweisen, brauchen Sie User Access Administrator auf der Stammebene des Mandanten, die eine Person mit der Rolle Global Administrator durch Erhöhen des Zugriffs erhält. Im Azure-Portal können nur Personen mit der Rolle Global Administrator sie zuweisen. Microsoft beschreibt die Zuweisung mit Azure PowerShell (Reservierungen, Sparpläne). Führen Sie sie mit diesem Zugriff aus:

Code
Connect-AzAccount -Tenant "<der tenant des Dienstprinzipals>" $PrincipalId = (Get-AzADServicePrincipal -ApplicationId "<die appId des Dienstprinzipals>").Id New-AzRoleAssignment -PrincipalId $PrincipalId -RoleDefinitionName "Reservations Reader" -Scope "/providers/Microsoft.Capacity" New-AzRoleAssignment -PrincipalId $PrincipalId -RoleDefinitionName "Savings plan Reader" -Scope "/providers/Microsoft.BillingBenefits"

-PrincipalId ist die Objekt-ID des Dienstprinzipals, die Microsoft Entra ID unter Unternehmensanwendungen zeigt. Das Azure-Portal zeigt so erstellte Zuweisungen nicht an; Get-AzRoleAssignment -ObjectId $PrincipalId listet sie. Mit Terraform setzen Sie stattdessen commitment_roles = true am Modul (Mit Terraform verbinden) und führen das Apply mit demselben Zugriff aus. Ohne die Rollen kommen Kosten und alles andere weiterhin an wie bisher.

Mit Terraform verbinden

Das Modul costfluent/cost-access/azure registriert die Anwendung, erstellt ihren Dienstprinzipal und ein Client-Secret und weist Cost Management Reader und Carbon Optimization Reader auf einem Abonnement, auf weiteren Abonnements und auf Verwaltungsgruppen zu, die Sie angeben, und die beiden Commitment-Rollen, wenn Sie commitment_roles setzen. Seine Ausgabe credentials speist costfluent_provider direkt:

Code
provider "azurerm" { subscription_id = "<zu importierendes Abonnement>" features {} } provider "azuread" {} module "costfluent_azure" { source = "costfluent/cost-access/azure" version = "~> 0.4" subscription_id = "<zu importierendes Abonnement>" # Optional: weitere Abonnements im selben Mandanten und Verwaltungsgruppen, deren Abonnements die # Rollen erben, alle über diese eine Verbindung importiert. additional_subscription_ids = [] management_group_ids = [] # Optional: true vergibt auch die Commitment-Rollen für den Mandanten, was erhöhten Zugriff braucht. commitment_roles = false } resource "costfluent_provider" "azure" { key = "azure" display_name = "Azure" credentials = module.costfluent_azure.credentials }
  • Rollen. role_definition_names steht standardmäßig auf Cost Management Reader und Carbon Optimization Reader. Entfernen Sie Carbon Optimization Reader daraus, um das Abonnement aus dem Bericht zum CO2-Fußabdruck herauszuhalten. Ergänzen Sie "Reader" nur, wenn Ihre Richtlinien es verlangen.
  • Mehrere Abonnements. additional_subscription_ids weist dieselben Rollen auf weiteren Abonnements des Mandanten zu und management_group_ids auf Verwaltungsgruppen, deren Abonnements sie erben, auch später hinzugefügte; angegeben wird jeweils die ID der Gruppe, und die ID der Stammverwaltungsgruppe ist die Mandanten-ID. Eine Zuweisung auf einer Verwaltungsgruppe braucht Owner oder User Access Administrator auf ihr. Beim Verbinden werden die Abonnements, die der Prinzipal lesen kann, innerhalb von 90 Sekunden geprüft; die in dieser Zeit nicht erreichten erscheinen nach der nächsten täglichen Prüfung, ohne neue Verbindung. Die Ausgabe assignment_scopes des Moduls listet jeden Bereich, auf dem es die Rollen zugewiesen hat.
  • Commitment-Rollen. commitment_roles = true weist zusätzlich Reservations Reader und Savings plan Reader auf ihren Mandantenebenen zu. Nur User Access Administrator auf der Stammebene des Mandanten kann das anwenden (Commitment-Rollen vergeben); ohne diesen Zugriff schlägt das Apply bei diesen beiden Zuweisungen fehl.
  • Abrechnungsbereich. Das Modul vergibt keine Rolle der Abrechnung. Um einen Abrechnungsbereich zu erfassen, vergeben Sie die Rolle, wie Im Abrechnungsbereich verbinden zeigt, und ergänzen Sie costfluent_provider um settings = { billing_scope = "billingAccounts/<Registrierungsnummer>" }, in der Form, die Abrechnungsbereich für Ihren Vertrag nennt. Wenn Sie settings entfernen, wechselt die Verbindung zurück zu ihren Abonnements.
  • Wirksamwerden. costfluent_provider wartet nicht darauf, dass Azure-Rollenzuweisungen wirksam werden. Schlägt das erste Apply fehl, weil der Prinzipal noch keine Kosten lesen kann, führen Sie terraform apply eine Minute später erneut aus.
  • Secret-Wechsel. Das Client-Secret gilt secret_expiry_days lang, standardmäßig 365 Tage, bis zu dem Zeitpunkt, den die Modulausgabe secret_expires_at zeigt. Eine Modulversion mit der Ausgabe secret_rotates_at ersetzt es ab diesem Zeitpunkt, secret_rotation_days_before_expiry Tage vor dem Ablauf (standardmäßig 30): Ein Apply in diesem Fenster erstellt ein neues Secret und gibt es an die Verbindung weiter, solange das alte noch gilt. Eine ältere Version ersetzt es erst zum oder nach dem Ablauf, und vom Ablauf bis zu diesem Apply kann Costfluent nichts erfassen. Ein Apply außerhalb des Fensters lässt das Secret unverändert. Um zu einem anderen Zeitpunkt zu wechseln, führen Sie terraform apply -replace='module.costfluent_azure.time_rotating.secret' aus: Es löscht das alte Secret, erstellt ein neues und gibt es im selben Apply an die Verbindung weiter.

Daten und Aktualität

Beim Verbinden werden die Kosten jedes Abonnements so weit zurück importiert, wie der rückwirkende Import Ihres Tarifs reicht, höchstens sechs Monate (Verbindungen verwalten). Eine später vergebene Rolle auf einem weiteren Abonnement braucht keine neue Verbindung: Das Abonnement erscheint nach der nächsten Prüfung, und seine erste Erfassung reicht auf dieselbe Weise zurück, gerechnet ab dem Tag, an dem es erscheint.

Ein Abrechnungsbereich wird auf dieselbe Weise rückwirkend importiert. Ein Abonnement, das später zur Registrierung oder zum Abrechnungsprofil hinzukommt, braucht keine neue Rolle: Seine Kosten kommen mit dem Rest der Rechnung.

Ein Tag eines Abonnements oder des Abrechnungsbereichs, den eine Verbindung erfasst, seine Berichte über tatsächliche und amortisierte Kosten zusammen, darf höchstens 2.560.000 Zeilen und 4 GiB Kostendaten enthalten. Ein Abrechnungsbereich bringt den ganzen Tag einer Registrierung oder eines Abrechnungsprofils unter diese eine Grenze. Ein größerer Tag stoppt die Verbindung mit einem Fehler, der den Tag nennt, statt ihn nur zum Teil zu importieren; wenden Sie sich über das Kontaktformular an den Costfluent-Support.

Reservierungen und Sparpläne

Mit den Commitment-Rollen listet Costfluent die Reservierungen und Sparpläne des Mandanten unter Gehaltene Commitments (Commitments). Azure listet jedes Commitment im Mandanten, daher listet eine Verbindung die, die auf einen gemeinsamen Bereich oder eine Verwaltungsgruppe angewendet sind, und die, die auf ein einzelnes Abonnement angewendet sind, nur dann, wenn die Verbindung dieses Abonnement importiert.

CO2-Emissionen

Azure veröffentlicht die Emissionen jedes Monats bis zum 19. des Folgemonats und stellt die letzten zwölf Monate bereit. Costfluent liest sie am 22. (CO2-Fußabdruck), für jedes Abonnement, das die Verbindung importiert. Jedes davon braucht Carbon Optimization Reader: Fehlt die Rolle bei einem, verweigert Azure dieses Abonnement, und der Monat der Verbindung wird als Ganzes verweigert statt unvollständig gezeigt. Der Bericht zum CO2-Fußabdruck nennt dann die Abonnements, die die Rolle brauchen. Azure nennt für diese Zahlen keine Bilanzierungsmethode und keine Dienstkategorie, daher zeigt der Bericht sie als Methode nicht angegeben und nach Ressourcentyp.

Bei einem Abrechnungsbereich sind das die Abonnements, die der Bereich umfasst, und die Rolle der Abrechnung reicht nicht bis zu ihren Emissionen: Vergeben Sie Carbon Optimization Reader auf ihnen oder auf einer Verwaltungsgruppe darüber.

Berichtsdimensionen

Was jede Gruppierungsdimension eines Kostenberichts für eine Azure-Verbindung enthält und aus welcher Spalte von Cost Details sie stammt.

DimensionBei AzureQuelle
AnbieterazureDie Verbindung
AnbieternameMicrosoft Azure; bei einer Marketplace-Position der PublisherPublisherType, PublisherName
UnterkontoDie ID des Abonnements; im Abrechnungsbereich bei einer Position ohne Abonnement die ID des AbrechnungskontosSubscriptionId, sonst BillingAccountId
DienstDer Dienst oder, wenn die Zeile keinen nennt, die Meter-KategorieServiceName, sonst MeterCategory
RegionDer Name des Ressourcenstandorts, etwa West Europe; Global bei einer Position ohne StandortResourceLocation
RessourceDer Name der Ressource oder das letzte Segment ihrer IDResourceName, sonst ResourceId
KostenkategorieUsage (ungenutzte Reservierungen und Savings Plans eingeschlossen), Purchase (Erstattungen eingeschlossen), Tax oder Credit; jeder andere Charge Type ist AdjustmentChargeType
DienstkategorieDie FOCUS-Kategorie der Zählerkategorie; Cognitive Services, Foundry Models und Azure Machine Learning sind AI and Machine LearningMeterCategory, MeterSubCategory
SKUDer Name des Zählers, etwa gpt-4o-Input-global TokensMeterName
SKU-IDDie ID des ZählersMeterId
RessourcentypDer Typ der Ressource, wie Cost Details ihn angibtResourceType
ProduktfamilieDie Dienstfamilie, etwa Compute oder StorageServiceFamily
RessourcengruppeDie Ressourcengruppe, aus der ID der Ressource in Kleinbuchstaben gelesen, sodass RG-App und rg-app eine Gruppe sindResourceId
Rechnungs-IDDie Rechnung, auf der die Position abgerechnet wirdInvoiceId
RechnungsstellerDer Partner oder Wiederverkäufer, der die Position in Rechnung stellt; Microsoft, wo es keinen gibtPartnerName, sonst ResellerName
AbrechnungszeitraumDer abgerechnete Monat, etwa 2026-03BillingPeriodStartDate
Vorgang, KostenbeschreibungNie gefüllt; Cost Details gibt keines davon an
TagJeder Schlüssel der Tags der ZeileTags
SegmentIhre ZuordnungsregelnSegmente und Zuordnungsregeln
Cluster, NamespaceNie gefüllt; sie tragen Kubernetes-Kosten (Kubernetes verbinden)
Virtueller TagIhre Regeln für virtuelle TagsVirtuelle Tags

Ein Azure-Zähler, der je tausend oder je Million Tokens abrechnet, Einheit 1K oder 1M bei einem Zähler namens … Tokens, wird mit seiner Nutzung als Tokens gespeichert, einzeln gezählt, sodass die Messgröße Nutzung sie mit den Tokens anderer Anbieter summiert.

Aktualisieren oder trennen

Nach dem Verbinden

Der Tab Verwalten listet die Verbindung unter ihrem Anzeigenamen, mit ihrer Mandanten-ID in einer eigenen Spalte und ihrer App-ID. Über das Zahnrad daneben sehen Sie, ob die Zugangsdaten noch funktionieren, welche Workspaces die Verbindung speist, welche Abrechnungsmonate importiert wurden und eine Karte Abonnements mit jedem Abonnement, das der Prinzipal erreicht, und was die Verbindung mit jedem tut.

Ein Abonnement, das der Prinzipal zwar sieht, dessen Kosten er aber nicht lesen kann, oder eines, das bereits eine andere Verbindung importiert, wird als Nicht verfügbar mit Begründung gelistet, statt gesund auszusehen und nie Daten zu liefern. Was Azure selbst dazu meldet, steht im Wortlaut von Azure am Ende der Begründung.

Bei einem Abrechnungsbereich zeigt die Seite den Bereich, den die Verbindung erfasst, und die Karte Abonnements listet die Abonnements, die die Kosten des Bereichs bisher genannt haben, als Abgedeckt. Ein Abonnement, dessen Kosten bereits eine andere Azure-Verbindung importiert, wird auf den Seiten beider Verbindungen genannt, und seine Kosten bleiben bei dieser Verbindung.

Prüfungen ausführen auf der Verbindungsseite führt die Prüfungen auf Anfrage erneut aus und meldet jede einzeln, sodass ein Fehler den fehlgeschlagenen Schritt benennt: die Anmeldung oder das Lesen der Kostendaten. Die Ausführung läuft im Hintergrund, und die Seite aktualisiert sich selbst, sobald sie fertig ist.

Zwischen Abonnements und Abrechnungsbereich wechseln

Eine Verbindung wechselt ihren Bereich an Ort und Stelle, und ihre Zugangsdaten bleiben. Um zu einem Abrechnungsbereich zu wechseln, vergeben Sie zuerst die Rolle der Abrechnung (Im Abrechnungsbereich verbinden), nutzen Sie dann Zugangsdaten aktualisieren auf der Verbindungsseite, wählen Sie Abrechnungskonto und geben Sie die IDs ein. Costfluent prüft den Bereich mit den gespeicherten Zugangsdaten, bevor es ihn speichert, und eine abgelehnte Prüfung ändert nichts. Ab dann erfasst die Verbindung den Abrechnungsbereich und listet jedes Abonnement als Abgedeckt, sobald die Kosten des Bereichs es nennen. Ein bisheriges Abonnement, das der Bereich nicht abrechnet, behält die bereits dafür importierten Kosten und steht einer anderen Verbindung frei. Bereits je Abonnement importierte Kosten zählen nicht doppelt: Die Zeilen des Abrechnungsbereichs ersetzen die Zeilen der Abonnements für dieselben Gebühren.

Um zurückzuwechseln, wählen Sie auf dieselbe Weise Abonnements, entfernen Sie settings in Terraform oder senden Sie clearSettings an PUT /v1/providers/{providerId} der Public API. Die Verbindung erfasst dann wieder ihre Abonnements und importiert deren vergangene Kosten neu, was die Zeilen des Abrechnungsbereichs für dieselben Gebühren ersetzt; die Käufe und Steuern, die sie beim Abrechnungskonto importiert hat, bleiben.

Zugangsdaten wechseln oder entfernen

Setzen Sie die Zugangsdaten des Dienstprinzipals in Azure zurück und nutzen Sie dann Zugangsdaten aktualisieren auf der Verbindungsseite. Mit Terraform wechselt ein einfaches Apply das Secret erst ab secret_rotates_at (bei einer Modulversion ohne diese Ausgabe erst zum oder nach dem Ablauf); um es zu einem anderen Zeitpunkt zu wechseln, ersetzen Sie den Timer des Moduls, wie Mit Terraform verbinden zeigt, was die Verbindung im selben Apply aktualisiert. Zum Stilllegen entfernen Sie die Verbindung in Costfluent und löschen in Azure die Rollenzuweisungen und den Dienstprinzipal, oder Sie führen terraform destroy aus. Das Entfernen löscht die von ihr importierten Kosten (Verbindung entfernen).

Fehlerbehebung

Eine Überschrift je Meldung, wie die Verbindungsseite sie zeigt: unter den Verbindungsprüfungen oder als Begründung neben einem Abonnement auf der Karte Abonnements, wo der Wortlaut von Azure die Begründung beendet. Prüfungen ausführen führt die Prüfungen erneut aus.

Costfluent konnte sich nicht mit den Azure-Zugangsdaten anmelden.

Mandanten-ID, App-ID oder Client-Secret sind falsch, oder das Secret ist abgelaufen (mit Terraform gilt es secret_expiry_days, standardmäßig 365). Setzen Sie das Secret in Azure zurück und verwenden Sie Zugangsdaten aktualisieren auf der Verbindungsseite (Zugangsdaten wechseln oder entfernen).

Costfluent konnte keine Sparempfehlungen von Azure lesen.

Kosten kommen weiterhin an, und die Verbindung gilt als beeinträchtigt, bis das behoben ist. Azure Advisor hat den Dienstprinzipal auf dem Abonnement abgewiesen, das die Meldung neben der Prüfung nennt. Cost Management Reader, die Rolle, die die Verbindung ohnehin braucht, enthält Microsoft.Advisor/recommendations/read; weisen Sie sie auf diesem Abonnement erneut zu oder auf einer Verwaltungsgruppe, die es umfasst. Die Kostenempfehlungen von Advisor erscheinen danach nach dem nächsten täglichen Abruf unter Einsparungen. Eine Rolle der Abrechnung reicht nicht bis zu Advisor, daher braucht eine Verbindung im Abrechnungsbereich Cost Management Reader auf den Abonnements, die der Bereich umfasst (Abrechnungsbereich).

Costfluent konnte die Commitments von Azure nicht lesen.

Kosten kommen weiterhin an, und die Verbindung bleibt In Ordnung. Azure hat die Liste der Reservierungen, der Sparpläne oder beide abgewiesen: Dem Dienstprinzipal fehlt Reservations Reader auf /providers/Microsoft.Capacity oder Savings plan Reader auf /providers/Microsoft.BillingBenefits, und die Meldung neben der Prüfung nennt, welche. Beide Rollen sind optional; weisen Sie sie zu, wie Commitment-Rollen vergeben zeigt, und wählen Sie dann Prüfungen ausführen. Bis dahin nennt Commitments die Verbindung über Gehaltene Commitments.

Costfluent konnte keine Kostendaten von Azure lesen.

Die Anmeldung hat funktioniert, aber der Cost-Details-Bericht ließ sich nicht lesen. Die Begründung neben jedem Abonnement auf der Karte Abonnements nennt die Ursache, bei einem Abrechnungsbereich die Begründung unter der Prüfung; die folgenden Überschriften sind die üblichen.

Der Dienstprinzipal kann Cost Management für dieses Abonnement nicht lesen

Der Prinzipal hat keine Zuweisung von Cost Management Reader auf dem Abonnement oder einer Verwaltungsgruppe darüber, oder die Zuweisung ist noch nicht wirksam: Rollenzuweisungen brauchen einen Moment, und ein Fehler unmittelbar nach dem Anlegen beweist nicht, dass die Zugangsdaten falsch sind. Weisen Sie die Rolle zu (Wie Costfluent verbindet) und wählen Sie eine Minute später Prüfungen ausführen; mit Terraform führen Sie terraform apply erneut aus.

Das Abonnement wurde nicht gefunden, oder der Dienstprinzipal sieht es nicht

Die Abonnement-ID ist falsch, der Prinzipal hat gar keine Zuweisung darauf, oder das Abonnement liegt nicht unter einem Enterprise Agreement oder einem Microsoft Customer Agreement: Die Cost Details API von Azure, die Costfluent liest, bedient keine Pay-as-you-go-Abonnements (Voraussetzungen). Die Antwort von Azure beendet die Begründung.

Azure hat die Cost-Details-Anfrage für dieses Abonnement abgelehnt

Azure hat die Anmeldung angenommen und kennt das Abonnement, verweigert aber den Cost-Details-Bericht dafür. So antwortet ein Pay-as-you-go-Abonnement; der Wortlaut von Azure am Ende der Begründung unterscheidet das von einer vertippten ID.

Der Dienstprinzipal kann Cost Management für diese Registrierung nicht lesen

Die Verbindung erfasst eine Enterprise-Agreement-Registrierung, und der Prinzipal hat keine Zuweisung von Enrollment reader auf ihrem Abrechnungskonto. Weisen Sie die Rolle mit dem Aufruf für Rollenzuweisungen der Abrechnung zu (Im Abrechnungsbereich verbinden); das Azure-Portal zeigt diese Zuweisung nicht, dort lässt sie sich also nicht prüfen. Wählen Sie dann Prüfungen ausführen.

Der Dienstprinzipal kann Cost Management für diesen Abrechnungsbereich nicht lesen

Die Verbindung erfasst ein Abrechnungskonto oder Abrechnungsprofil unter einem Microsoft Customer Agreement, und der Prinzipal hat weder Billing account reader auf dem Abrechnungskonto noch Billing profile reader auf dem Abrechnungsprofil. Vergeben Sie eine davon im Azure-Portal (Im Abrechnungsbereich verbinden) und wählen Sie dann Prüfungen ausführen.

Das Abrechnungskonto oder Abrechnungsprofil wurde nicht gefunden, oder der Dienstprinzipal sieht es nicht

Die ID im Bereich ist falsch oder nennt ein Abrechnungskonto oder Abrechnungsprofil, auf dem der Prinzipal keine Rolle hat. Vergleichen Sie sie mit den IDs unter Kostenverwaltung + Abrechnung im Azure-Portal (Abrechnungsbereich) und korrigieren Sie sie an der Verbindung (Zwischen Abonnements und Abrechnungsbereich wechseln).

Azure hat die Cost-Details-Anfrage für diesen Abrechnungsbereich abgelehnt

Azure hat die Anmeldung angenommen und kennt den Bereich, verweigert aber den Cost-Details-Bericht dafür. So antwortet ein Pay-as-you-go-Abrechnungskonto im Microsoft Online Services Program, und ein solches Konto importiert Costfluent in keinem der beiden Bereiche (Voraussetzungen).

Das Azure-Abonnement … wird bereits von einer anderen Azure-Verbindung in dieser Organisation erfasst

Der Prinzipal einer anderen Verbindung importiert das Abonnement bereits, daher listet diese es als Nicht verfügbar und importiert die übrigen; ein Prinzipal, der nur solche Abonnements erreicht, wird abgelehnt. Entfernen Sie die Rollenzuweisung bei einem der beiden Prinzipale, oder verschieben Sie die Abonnements, indem Sie die Zugangsdaten der bestehenden Verbindung aktualisieren, statt eine Verbindung hinzuzufügen (Wie Costfluent verbindet).