Automatyzuj przejście na licencjonowanie SQL na poziomie pay-as-you-go na dużą skalę

Dotyczy:Azure SQL DatabaseAzure SQL Managed InstanceSQL Server on Azure Virtual MachinesSQL Server enabled by Azure Arc

W tym artykule opisano, jak:

  • Przejrzyj i przełącz wiele produktów SQL na licencjonowanie w modelu płatności zgodnie z rzeczywistym użyciem za pomocą jednego skryptu programu PowerShell.
  • Nieustannie egzekwuj licencjonowanie pay-as-you-go dla jednego typu zasobu za pomocą Azure Policy.

Automatyzacja opisana w tym artykule dotyczy SQL Server włączonego przez Azure Arc, SQL Server on Azure Virtual Machines, Azure SQL Database oraz Azure SQL Managed Instance. Skrypt może również przetwarzać Azure-SSIS Integration Runtime w Azure Data Factory (Azure-SSIS IR).

Zmiana umowy licencyjnej nie zmienia typu licencji skonfigurowanego dla zasobów SQL. Procedury opisane w tym artykule pomagają przenieść zasoby na model rozliczeń pay-as-you-go, gdy licencje SQL z programem Software Assurance, licencje subskrypcyjne SQL lub licencjonowanie w ramach umowy Service Provider License Agreement (SPLA) przestają mieć zastosowanie.

Wymagania wstępne

  • Konto Azure z dostępem do tenanta oraz subskrypcje zawierające zasoby SQL.
  • PowerShell 5 lub nowszy z modułem PowerShell Az.
  • Azure CLI, gdy używasz skryptu PowerShell do aktualizacji zasobów SQL.
  • Rola współtwórcy w każdej subskrypcji, którą modyfikujesz. W przypadku alternatyw z najmniejszymi uprawnieniami przejrzyj uprawnienia według typu zasobu.
  • W trybie zaplanowanym uprawnienia do tworzenia przypisań ról w zakresie docelowej subskrypcji lub wymagane role wstępnie przypisane do zarządzanej tożsamości konta usługi Automation.
  • Uprawnienia do zmiany ustawień rozliczeń i potwierdzania warunków licencjonowania dla docelowych zasobów.

Aby uniknąć instalowania narzędzi lokalnie, uruchom skrypt w Azure Cloud Shell. Cloud Shell zawiera Azure PowerShell oraz Azure CLI i uwierzytelnia sesję. Określ, -TenantId kiedy twoje konto może uzyskać dostęp do więcej niż jednego tenanta.

Wybierz metodę automatyzacji

Wybierz spośród opcji:

  • PowerShell do przechodzenia między zasobami w celu przejścia na licencjonowanie pay-as-you-go.
  • Azure Policy do ciągłego wymuszania płatności zgodnie z rzeczywistym użyciem dla jednego typu zasobu.

Poniższa tabela zawiera szczegóły dotyczące każdej metody automatyzacji:

Scenario Zalecana metoda
Przejrzyj lub zastosuj zmiany typu pay-as-you-go na różnych typach zasobów SQL manage-payg-transition.ps1
Przełącz wszystkie obsługiwane zasoby w ramach subskrypcji lub dzierżawy na licencjonowanie w modelu płatności zgodnie z użyciem manage-payg-transition.ps1
Zrób przejście na zasadzie pay-as-you-go według cyklicznego harmonogramu manage-payg-transition.ps1 w trybie harmonogramu
Stale wymuszaj licencjonowanie zgodne z rzeczywistym użyciem dla jednego typu zasobów i koryguj odchylenia Przykład usługi Azure Policy dotyczący konkretnego zasobu
Zmień jeden zasób ręcznie Artykuł o licencjonowaniu specyficznym dla produktu

Przegląd wspieranych zasobów i wartości licencji

Procedury opisane w tym artykule ustawiają -TargetLicenseType na PAYG. Skrypt przekształca tę wartość w wartość w modelu płatności zgodnie z użyciem, wymaganą przez poszczególnych dostawców zasobów. Wartości źródłowe pokazują typowe konfiguracje licencyjne, które przejście może zastąpić.

Zasób Wartość docelowa pay-as-you-go Wspólne wartości źródłowe Wspierane przez scenariusz Przykład usługi Azure Policy
SQL Server obsługiwany przez Azure Arc PAYG Paid, LicenseOnly Yes Zgodność typu licencji SQL Server z obsługą usługi Arc
SQL Server na maszynach wirtualnych Azure PAYG AHUB Yes Zgodność typu licencji programu SQL Server na maszynach wirtualnych platformy Azure
Azure SQL Database i elastic pools LicenseIncluded BasePrice Yes Zgodność typu licencji dla Azure SQL Database
Azure SQL Managed Instance i pule wystąpień LicenseIncluded BasePrice, HybridFailoverRights Yes Zgodność z typem licencji SQL Managed Instance
Azure-SSIS IR LicenseIncluded BasePrice Yes Nie jest to opisane w tym artykule

Przykłady polityk mogą nadpisywać dodatkowe wartości źródłowe, na przykład DR dla SQL Server na maszynach wirtualnych Azure. Przejrzyj wybraną próbkę przed wdrożeniem przypisania zasad.

Zrozum, jak działa skrypt PowerShell

Możesz użyć skryptu programu PowerShell do modyfikowania wszystkich zasobów w grupie zasobów, wszystkich zasobów w subskrypcji oraz wszystkich zasobów w co najmniej jednej subskrypcji w obrębie całej dzierżawy.

Skrypt jest samodzielny i działa na obsługiwanych zasobach SQL. Gdy -TargetLicenseType jest ustawiony na wartość domyślną PAYG, przekształca tę wartość w wartość dla modelu płatności zgodnie z rzeczywistym użyciem wymaganą dla każdego typu zasobu, jak pokazano w sekcji Przegląd obsługiwanych zasobów i wartości licencji. Domyślnie wygenerowany folder roboczy pozostaje po zakończeniu skryptu. Aby usunąć go po uruchomieniu, określ -cleanDownloads $true.

Skrypt wyświetla podsumowanie w podziale na typ zasobu i podaje przyczynę dla każdego zasobu, którego przetwarzanie zakończyło się niepowodzeniem lub zostało pominięte. Gdy skrypt znajdzie pasujące zasoby, tworzy również raport ModifiedResources_<timestamp>.csv z kolumnami UpdateResult i UpdateError.

Zakres i wykonanie skryptu kontrolują następujące parametry:

Parameter Akceptowana wartość lub domyślna Purpose
-Target Arc, Azure, lub Both (domyślnie) Wybiera zasoby SQL Server z obsługą Azure Arc, zasoby Azure SQL i Azure-SSIS IR lub obie grupy.
-RunMode Single (wartość domyślna) lub Scheduled Uruchamia migrację jednorazowo lub konfiguruje codzienne elementy Runbook usługi Azure Automation.
-TargetLicenseType PAYG Wybiera model licencji pay-as-you-go jako docelowy model licencji dla procedur opisanych w tym artykule.
-targetSubscription Identyfikator subskrypcji; wszystkie dostępne subskrypcje w dzierżawcy domyślnie Ogranicza to przejście do jednej subskrypcji.
-targetResourceGroup Nazwa grupy zasobów; wszystkie grupy zasobów domyślnie Ogranicza przejście do jednej grupy zasobów.
-TenantId Identyfikator dzierżawcy; domyślnie obecny kontekst PowerShell Az Wybiera dzierżawcę Microsoft Entra.
-ReportOnly Switch; domyślnie wyłączony Raportuje zasoby spełniające kryteria bez ich modyfikowania.
-WaitForCompletion Przełącznik; domyślnie wyłączony Czeka, aż przesłane zmiany osiągną stan końcowy, jeśli jest to obsługiwane.
-UsePcoreLicense No (wartość domyślna) lub Yes Steruje licencjonowaniem na rdzenie fizyczne programu SQL Server z obsługą Azure Arc.
-AutomationAccResourceGroupName Wymagane przy -RunMode Scheduled Wybiera grupę zasobów dla konta Automatyzacja.
-AutomationAccountName aaccAzureArcSQLLicenseType domyślnie Ustawia nazwę konta usługi Automation.
-Location Wymagane w przypadku -RunMode Scheduled Wybiera region Azure dla konta Automation i grupy zasobów.
-cleanDownloads $false (wartość domyślna) lub $true Usuwa wygenerowany folder roboczy po zakończeniu skryptu.

Domyślne zachowanie wykonania zależy od typu zasobu:

Zasób Działanie domyślne Z -WaitForCompletion
Azure SQL Database, Azure SQL Managed Instance Wysyła asynchroniczne żądanie i raportuje RequestSubmitted Oczekiwania i raporty Updated
SQL Server obsługiwany przez Azure Arc Przesyła asynchroniczną aktualizację rozszerzenia i raportuje RequestSubmitted Odpytuje rozszerzenie i zgłasza Succeeded, Failed lub TimedOut
SQL Server na maszynach wirtualnych Azure Składa bezpośrednie żądanie i raporty do Azure Resource ManagerRequestSubmitted Uruchamia aktualizację az sql VM, czeka i raportujeUpdated
Azure-SSIS IR Oczekiwania i raporty Updated To samo zachowanie

Podejrzyj przejście na model płatności za użycie

Skrypt manage-payg-transition.ps1 zapewnia jeden punkt wejścia dla Azure SQL i SQL Server obsługiwanych przez zasoby Azure Arc.

W skrypcie PowerShell możesz określić jedną subskrypcję do skanowania. Jeśli nie określisz subskrypcji, skrypt skanuje wszystkie subskrypcje, do których twoja rola ma dostęp.

  1. Pobierz skrypt:

    $scriptUri = "https://raw.githubusercontent.com/microsoft/sql-server-samples/master/samples/manage/manage-payg-transition/manage-payg-transition.ps1"
    Invoke-WebRequest -Uri $scriptUri -OutFile ".\manage-payg-transition.ps1"
    
  2. Zaloguj się do najemcy, który zawiera zasoby:

     Connect-AzAccount -TenantId "<tenant-id>"
    
  3. Uruchom podgląd w trybie tylko do odczytu dla jednej subskrypcji. Określ -TenantId nawet wtedy, gdy masz już kontekst Azure, aby skrypt nie używał niewłaściwego tenanta:

    .\manage-payg-transition.ps1 `
        -Target Both `
        -TenantId "<tenant-id>" `
        -targetSubscription "<subscription-id>" `
        -TargetLicenseType PAYG `
        -ReportOnly
    
  4. Jeśli skrypt znajdzie odpowiednie zasoby, otwórz najnowszy ModifiedResources_<timestamp>.csv raport. Potwierdź, że każde wymienione źródło powinno się zmienić:

    $report = Get-ChildItem -Filter "ModifiedResources_*.csv" |
        Sort-Object LastWriteTime -Descending |
        Select-Object -First 1
    
    Import-Csv $report.FullName | Format-Table
    

Zasoby już korzystające z licencjonowania pay-as-you-go nie pojawiają się w raporcie. Jeśli skrypt nie znajdzie pasujących zasobów, nie tworzy pliku CSV. Aby zmniejszyć zakres, określmy -targetResourceGroup. Ustaw -Target na Azure, aby przetwarzać zasoby usługi Azure SQL i Azure-SSIS IR. Ustaw wartość Arc, aby przetwarzać tylko zasoby SQL Server z obsługą Azure Arc.

Przeprowadź jednorazową transformację pay-as-you-go z PowerShell

Uruchom przejście na model pay-as-you-go dopiero po potwierdzeniu zakresu docelowego i zatwierdzeniu wszystkich zasobów w raporcie podglądu.

  1. Usuń -ReportOnly, i dodaj -WaitForCompletion , aby poczekać na potwierdzone wyniki, gdy dostawca zasobów je wspiera:

    .\manage-payg-transition.ps1 `
        -Target Both `
        -TenantId "<tenant-id>" `
        -targetSubscription "<subscription-id>" `
        -TargetLicenseType PAYG `
        -WaitForCompletion
    
  2. Przejrzyj wygenerowany raport CSV. Zbadaj każdy wynik Failed lub TimedOut i potwierdź stan zasobu dla każdej przesłanej zmiany.

Wartość PAYG ustawia model licencjonowania docelowego na pay-as-you-go.

Jeśli pominiesz -WaitForCompletion, większość zaakceptowanych zmian ma UpdateResult wynoszący RequestSubmitted. Ten wynik oznacza, że Azure zaakceptował żądanie, a nie że typ licencji się zmienił. Azure-SSIS IR zawsze czeka, ponieważ jego polecenie aktualizacji nie obsługuje asynchronicznego wykonywania.

Zaplanuj cykliczne przejścia na model pay-as-you-go za pomocą programu PowerShell

Tryb planowany tworzy lub aktualizuje jeden podręcznik Azure Automation dla każdego wybranego celu, łączy każdy podręcznik z codziennym harmonogramem i natychmiast uruchamia jednorazowe zadanie. Podaj grupę zasobów dla konta Automation oraz region platformy Azure. Domyślna nazwa konta Automation to aaccAzureArcSQLLicenseType. Tryb zaplanowany używa zarządzanej tożsamości konta usługi Automation.

  1. Zaplanuj przejście dla zasobów Azure SQL i SQL Server obsługiwanych przez Azure Arc w jednej subskrypcji:

    .\manage-payg-transition.ps1 `
        -Target Both `
        -RunMode Scheduled `
        -TenantId "<tenant-id>" `
        -targetSubscription "<subscription-id>" `
        -TargetLicenseType PAYG `
        -AutomationAccResourceGroupName "<automation-resource-group>" `
        -AutomationAccountName "<automation-account>" `
        -Location "<azure-region>"
    
  2. Na koncie usługi Automation potwierdź, że elementy Runbook są opublikowane, połączone z harmonogramem dziennym i mogą uruchomić zadanie z wybranymi parametrami.

Jeśli celem Azure są pule SQL Managed Instance, przypisz zarządzaną tożsamość konta Automation Contributor lub niestandardową rolę z pomocą Microsoft.Sql/instancePools/read i Microsoft.Sql/instancePools/write. Zaplanowana konfiguracja nie przypisuje wbudowanej roli, która przyznaje te uprawnienia.

Wymusz licencjonowanie pay-as-you-go za pomocą Azure Policy

Użyj przykładu usługi Azure Policy dla konkretnego zasobu, aby stale wymuszać stosowanie licencjonowania w modelu pay-as-you-go i korygować odchylenia konfiguracji. Każdy przykład zawiera definicję polityki, skrypt wdrożenia oraz skrypt naprawczy.

Warning

Przypisanie zasad może zmienić każdy odpowiadający zasób w swoim zakresie obowiązywania. Zacznij od wąsko ograniczonej subskrypcji testowej i wybierz tylko aktualne typy licencji, które zamierzasz zastąpić.

Poniższa tabela łączy pakiet polityk i skrypt wdrożeniowy dla każdego zasobu:

Zasób Pakiet polityki Skrypt wdrażania
SQL Server obsługiwany przez Azure Arc Zgodność typu licencji SQL Server z obsługą usługi Arc deployment.ps1
SQL Server na maszynach wirtualnych Azure Zgodność typu licencji programu SQL Server na maszynach wirtualnych platformy Azure deployment.ps1
Azure SQL Managed Instance Zgodność z typem licencji SQL Managed Instance deployment.ps1
Azure SQL Database Zgodność typu licencji dla Azure SQL Database deployment.ps1

Użyj wartości i ról dla wybranego typu zasobu:

Zasób Wartość docelowa pay-as-you-go Wartości źródłowe, które można nadpisać Obowiązkowa rola podstawowa Ważne ograniczenie
SQL Server obsługiwany przez Azure Arc PAYG Paid; Definicja portalu również obsługuje LicenseOnly Azure Extension for SQL Server Deployment To przypisanie stosuje jeden element docelowy do wszystkich pasujących hostów i nie uwzględnia edycji. Traktuj majątki mieszane osobno.
SQL Server na maszynach wirtualnych Azure PAYG AHUB, DR Współtwórca maszyny wirtualnej Cel musi spełniać warunki licencjonowania Korzyść użycia hybrydowego platformy Azure lub pasywnej wysokiej dostępności lub odzyskiwania po awarii (HA/DR).
Azure SQL Managed Instance LicenseIncluded BasePrice, HybridFailoverRights SQL Managed Instance Contributor HybridFailoverRights ustawia licenseType na hybridSecondaryUsage oraz BasePrice na Passive.
Azure SQL Database LicenseIncluded BasePrice Współautor bazy danych SQL Zasady nie obejmują master i baz danych Basic. Azure SQL Database obsługuje zmiany typu licencji tylko w przypadku baz danych vCore z aprowizacją, więc wyklucz lub zwolnij z przypisania inne bazy danych oparte na jednostkach transakcyjnych bazy danych (DTU) oraz bazy danych bezserwerowe.

Każde zadanie wymaga również Reader oraz Resource Policy Contributor. Skrypty wdrożeniowe przyznają wymagane role, gdy tożsamość zalogowana ma uprawnienia do tworzenia przypisań ról. Użyj -GrantMissingPermissions ze skryptem naprawczym, aby sprawdzić i dodać brakujące role.

Skrypty wdrożeniowe SQL VM, SQL Managed Instance oraz SQL Database proszą o potwierdzenie, gdy docelowa wartość wymaga potwierdzenia licencyjnego. Używaj -SkipLicenseConfirmation wyłącznie w zautomatyzowanym procesie, w którym operator potwierdził już spełnienie warunków i przyjmuje odpowiedzialność za zgodność z przepisami.

Dla SQL Server z Arc polityka PAYG konfiguruje również zgodę na powtarzające się rozliczenia. Zgoda pozostaje dla rozszerzenia, jeśli późniejsze przypisanie zmieni typ licencji na inny niż PAYG.

Pakiety zasad używają wspólnego procesu wdrażania:

  1. Pobierz foldery policy i scripts pakietu, postępując zgodnie z instrukcjami w pliku README.

  2. Zaloguj się do najemcy, który zawiera zakres przydziału:

    Connect-AzAccount -TenantId "<tenant-id>"
    
  3. Z folderu pobranego pakietu wdroż definicję i przypisanie. Użyj docelowej wartości pay-as-you-go dla typu zasobu z poprzedniej tabeli. Poniższy przykład przypisuje zasady na poziomie subskrypcji:

    .\scripts\deployment.ps1 `
        -SubscriptionId "<subscription-id>" `
        -TargetLicenseType "<pay-as-you-go-value>"
    

    Jeśli pominiesz -SubscriptionId, skrypt korzysta z zakresu grupy zarządzającej. Przed uruchomieniem wdrożenia przejrzyj domyślne ustawienia pakietu.

  4. Potwierdź, że przypisanie polityki ma systemowo przypisaną tożsamość zarządzaną oraz wymagane role w zakresie przydziału.

  5. Rozpocznij usuwanie istniejących niezgodnych zasobów:

    .\scripts\start-remediation.ps1 `
        -SubscriptionId "<subscription-id>" `
           -TargetLicenseType "<pay-as-you-go-value>" `
        -GrantMissingPermissions
    
  6. W Azure Policy przejrzyj wyniki zgodności przypisania i zadanie naprawcze. Następnie potwierdź typ licencji dla zasobów objętych działaniami naprawczymi.

Zweryfikowaj przejście na pay-as-you-go

Raport CSV zawiera element UpdateResult i element UpdateError dla każdego wybranego zasobu. Interpretuj wspólne wyniki w następujący sposób:

Result Meaning Następna akcja
ReportOnly Skrypt zidentyfikował kwalifikujący się zasób w trybie tylko do odczytu i nie zgłosił zmiany. Potwierdź, że zasób powinien korzystać z licencji pay-as-you-go, zanim przeprowadzisz przejście.
RequestSubmitted Azure zaakceptował asynchroniczne żądanie. Czekaj, aż operacja zasobu się zakończy, a następnie zweryfikowaj stan zasobu.
Updated lub Succeeded Skrypt zaobserwował udany wynik końcowy. Potwierdź typ licencji na zasobie.
Failed Usługa odrzuciła aktualizację lub zwróciła stan niepowodzenia terminala. Przejrzyj UpdateError, popraw problem i uruchom podgląd ponownie.
TimedOut Rozszerzenie Arc nie osiągnęło stanu końcowego przed limitem głosowania. Sprawdź stan rozszerzenia. Aktualizacja może się zakończyć po tym, jak skrypt przestanie czekać.

Aby potwierdzić aktualny typ licencji i stan provisioningu dla SQL Server włączony przez Azure Arc, uruchom następujące zapytanie Azure Resource Graph:

Search-AzGraph -Query @"
resources
| where type =~ 'microsoft.hybridcompute/machines/extensions'
| where properties.type in~ ('WindowsAgent.SqlServer', 'LinuxAgent.SqlServer')
| project name = split(id, '/')[8],
          licenseType = properties.settings.LicenseType,
          state = properties.provisioningState
"@

Po zakończeniu przesłanych operacji ponownie uruchom ten sam zakres za pomocą -ReportOnly:

.\manage-payg-transition.ps1 `
    -Target Both `
    -TenantId "<tenant-id>" `
    -targetSubscription "<subscription-id>" `
    -TargetLicenseType PAYG `
    -ReportOnly

Skrypt wyklucza zasoby, które już korzystają z licencji pay-as-you-go. W pełni zsynchronizowany zakres nie zgłasza żadnych zasobów do zaktualizowania. Sprawdź każdy zasób, który nadal się wyświetla, zanim uznasz przejście za zakończone.

Przegląd ograniczeń i zabezpieczeń rozliczeń

  • SQL Server na Azure VM musi być uruchomiony. Skrypt pomija zatrzymane lub oddzielone maszyny wirtualne i ich nie uruchamia.
  • Skrypt wyklucza SQL Server na maszynach wirtualnych Azure korzystających z tego DR typu licencji, więc nie nadpisuje ustawień licencji dla pasywnej repliki HA/DR.
  • Skrypt nie udostępnia opcji zgody na cykliczne rozliczenia w swoim osadzonym module Arc. W przypadku zasobów Arc zarządzanych przez dostawcę CSP, które wymagają zgody na cykliczne rozliczanie, użyj zasad zgodności typu licencji programu SQL Server z usługą Arc-enabled, które konfigurują zgodę podczas ich stosowaniaPAYG.
  • Domyślne uruchomienie asynchroniczne stawia na skalowalność zamiast na natychmiastowe potwierdzenie. Użyj -WaitForCompletion, gdy potrzebujesz, aby skrypt śledził wyniki w terminalu, zanim zakończy działanie.
  • Domyślnie aktualizacje SQL Server na Azure VM wykorzystują asynchroniczne żądanie Azure Resource Manager. Jeśli to żądanie się nie powiedzie, skrypt wraca do az sql vm update, które czeka na zakończenie operacji.

Diagnostyka awarii automatyzacji

Użyj wygenerowanego raportu i statusu operacji Azure, aby zidentyfikować zasoby, które nie zostały zaktualizowane.

  • Jeśli raport jest pusty, potwierdź najemcę, subskrypcję i grupę zasobów. Należy oczekiwać pustego raportu, gdy wszystkie zasoby objęte zakresem już korzystają z licencjonowania w modelu płatności zgodnie z rzeczywistym użyciem.
  • Jeśli zasób z obsługą usługi Arc zostanie pominięty, przywróć łączność agenta Azure Connected Machine, potwierdź, że stan aprowizacji rozszerzenia Azure dla programu SQL Server jest Succeeded, a następnie ponownie uruchom podgląd.
  • Jeśli UpdateResult ma wartość RequestSubmitted, nie traktuj żądania jako zakończone. Sprawdź stan zasobów lub ponownie uruchom podgląd po zakończeniu operacji Azure.
  • Jeśli operacja Azure SQL lub SQL Server na Azure VM zawiodła, potwierdź, że Azure CLI jest zainstalowany, zalogowany do tego samego tenanta i autoryzowany dla docelowej subskrypcji.
  • Jeśli tryb zaplanowany kończy się niepowodzeniem, potwierdź, że tożsamość zarządzana konta Automation ma role wymienione w przykładzie źródłowym.
  • Jeśli korygowanie zasad zwraca PolicyAuthorizationFailed, potwierdź, że tożsamość przypisania ma role specyficzne dla produktu: Reader oraz Resource Policy Contributor w zakresie przypisania. Uruchom ponownie skrypt wdrożenia lub skrypt naprawczy z parametrem -GrantMissingPermissions, gdy zalogowana tożsamość będzie mogła tworzyć przypisania ról.

Pełne źródło można znaleźć w manage-payg-transition.ps1. Aktualne ograniczenia i wyniki testów znajdziesz w planiemanage-payg-transition.ps1 testów.

Uprawnienia według typu zasobu

Uprawnienia dla skryptu PowerShell

Rola Współtwórca obejmuje szerszy zakres uprawnień niż wymagany przez skrypt opisany w tym artykule i jest najprostszą opcją. Dla dostępu z najmniejszymi uprawnieniami przypisz role wymagane dla typów zasobów w zakresie:

Typ zasobu Rola lub wymagane uprawnienia
SQL Server na maszynach wirtualnych Azure Współtwórca maszyny wirtualnej
Azure SQL Managed Instance SQL Managed Instance Contributor
Azure SQL Database Współautor bazy danych SQL
Elastyczne pule usługi Azure SQL Database Współautor programu SQL Server
Azure SQL Managed Instance pools Współtwórca lub niestandardowa rola z Microsoft.Sql/instancePools/read i Microsoft.Sql/instancePools/write
SQL Server obsługiwany przez Azure Arc Administrator zasobów połączonej maszyny platformy Azure
Azure-SSIS IR Współautor usługi Data Factory
Czytanie i wyliczanie subskrypcji oraz zasobów Czytnik, chyba że inna przypisana rola przyznaje wymagane uprawnienia do odczytu

Uprawnienia dla usługi Azure Policy

Tożsamość uruchamiająca deployment.ps1 musi mieć uprawnienia do tworzenia definicji zasad w wybranej grupie zarządzania oraz do tworzenia przypisań zasad, zadań korygujących, tożsamości zarządzanych i przypisań ról w zakresie przypisania. Jeśli nie można utworzyć przypisań ról, przed rozpoczęciem korygowania przypisz wymagane role do tożsamości zarządzanej przypisania zasad i uruchom deployment.ps1 za pomocą -SkipManagedIdentityRoleAssignment.

Domyślnie deployment.ps1 tworzy tożsamość zarządzaną przypisaną przez system dla przypisania zasad i przyznaje trzy role w zakresie przypisania. Rola specyficzna dla produktu zależy od wybranego przykładu polisy:

Przykład polityki Rola specyficzna dla produktu
SQL Server obsługiwany przez Azure Arc Azure Extension for SQL Server Deployment
SQL Server na maszynach wirtualnych Azure Współtwórca maszyny wirtualnej
Azure SQL Managed Instance SQL Managed Instance Contributor
Azure SQL Database Współautor bazy danych SQL

Każda tożsamość przypisania zasad wymaga także ról Reader i Resource Policy Contributor. Skrypt wdrożeniowy pomija automatyczne przypisanie ról tylko wtedy, gdy określisz -SkipManagedIdentityRoleAssignment.

Przed rozpoczęciem remediacji element start-remediation.ps1 weryfikuje tożsamość przypisania zasad dla wszystkich trzech wymaganych ról. Jeśli brakuje roli, scenariusz się zatrzymuje. Przypisz role ręcznie lub ponownie uruchom skrypt korygujący przy użyciu tożsamości -GrantMissingPermissions, która może tworzyć przypisania ról w zakresie przypisania.