Sdílet prostřednictvím


Instanční objekty Microsoft Entra s Azure SQL

Platí pro: Azure SQL Database Azure SQL Managed Instance

Prostředky Azure SQL podporují programový přístup k aplikacím využívajícím instanční objekty a spravované identity v Microsoft Entra ID (dříve Azure Active Directory).

Podpora instančních objektů (aplikací Microsoft Entra)

Tento článek se týká aplikací registrovaných v Microsoft Entra ID. Použití přihlašovacích údajů aplikace pro přístup k Azure SQL podporuje princip zabezpečení oddělení povinností, což organizacím umožňuje nakonfigurovat přesný přístup pro každou aplikaci, která se připojuje k jejich databázím. Spravované identity, speciální forma instančních objektů, se doporučují, protože jsou bez hesla a eliminují potřebu přihlašovacích údajů spravovaných vývojářem.

Microsoft Entra ID dále umožňuje pokročilé scénáře ověřování, jako je OAuth 2.0 On-Behalf-Of Flow (OBO). OBO umožňuje aplikacím požadovat přihlašovací údaje přihlášeného uživatele pro scénáře, kdy by samotné aplikace neměly mít přístup k databázi bez delegovaných oprávnění.

Další informace o aplikacích Microsoft Entra naleznete v tématu Objekty aplikace a instanční objekty v Microsoft Entra ID a vytvoření instančního objektu Azure pomocí Azure PowerShellu.

Vytvoření uživatele Microsoft Entra pomocí instančních objektů

Podpora této funkce je užitečná v procesech automatizace aplikací Microsoft Entra, kde se objekty zabezpečení Microsoft Entra vytvářejí a spravují ve službě SQL Database nebo ve spravované instanci SQL bez zásahu člověka. Instanční objekty můžou být správcem Microsoft Entra pro logický server SQL nebo spravovanou instanci jako součást skupiny nebo jako samostatná identita. Aplikace může automatizovat vytváření objektů Microsoft Entra ve službě SQL Database nebo sql Managed Instance, což umožňuje úplnou automatizaci vytváření uživatelů databáze.

Povolení instančních objektů pro vytváření uživatelů Microsoft Entra

Při používání aplikací pro přístup k Azure SQL vyžaduje vytváření uživatelů a přihlášení Microsoft Entra oprávnění, která nejsou přiřazená instančním objektům nebo spravovaným identitám ve výchozím nastavení: možnost číst uživatele, skupiny a aplikace v tenantovi z Microsoft Graphu. Tato oprávnění jsou nezbytná k ověření identity zadané v CREATE LOGIN modulu SQL nebo CREATE USERa vyžádání důležitých informací, včetně objektu nebo ID aplikace identity, které slouží k vytvoření přihlášení nebo uživatele.

Když uživatel Microsoft Entra spustí tyto příkazy, aplikace Microsoft Azure SQL používá delegovaná oprávnění k zosobnění přihlášeného uživatele a dotazuje Microsoft Graph pomocí svých oprávnění. Tento tok není u instančních objektů možný, protože aplikace nemůže zosobnit jinou aplikaci. Místo toho se modul SQL pokusí použít svou identitu serveru, což je primární spravovaná identita přiřazená ke spravované instanci SQL, logickému serveru Azure SQL nebo pracovnímu prostoru Azure Synapse. Identita serveru musí existovat a musí mít oprávnění k dotazům Microsoft Graphu nebo operace selžou.

Následující postup vysvětluje, jak přiřadit spravovanou identitu k serveru a přiřadit jí oprávnění Microsoft Graphu, aby instanční objekty mohly vytvářet uživatele a přihlášení Microsoft Entra v databázi.

  1. Přiřaďte identitu serveru. Identita serveru může být spravovaná identita přiřazená systémem nebo přiřazená uživatelem. Další informace najdete v tématu Spravované identity v Microsoft Entra pro Azure SQL.

    • Následující příkaz PowerShellu vytvoří nový logický server zřízený se spravovanou identitou přiřazenou systémem:
    New-AzSqlServer -ResourceGroupName <resource group> -Location <Location name> -ServerName <Server name> -ServerVersion "12.0" -SqlAdministratorCredentials (Get-Credential) -AssignIdentity
    

    Další informace najdete v příkazu New-AzSqlServer nebo příkazu New-AzSqlInstance pro službu SQL Managed Instance.

    • Pro existující logický server spusťte následující příkaz, kterým do něj přidáte spravovanou identitu přiřazenou systémem:
    Set-AzSqlServer -ResourceGroupName <resource group> -ServerName <Server name> -AssignIdentity
    

    Další informace najdete v příkazu Set-AzSqlServer nebo příkazu Set-AzSqlInstance pro službu SQL Managed Instance.

    Poznámka:

    Identitu serveru je možné přiřadit také pomocí rozhraní REST API a příkazů rozhraní příkazového řádku. Další informace najdete v tématu az sql server create, az sql server update a Servers – REST API.

  2. Udělte identitě serveru oprávnění k dotazování Microsoft Graphu. Můžete to udělat několika způsoby: přidáním identity do role Čtenáře adresáře Microsoftu, přiřazením identity jednotlivým oprávněním Microsoft Graphu nebo přidáním identity do skupiny, která má roli Čtenáři adresáře:

    • Přidání identity serveru do skupiny s možností přiřazení role

      V produkčních prostředích se doporučuje, aby správce tenanta vytvořil skupinu s možností přiřazení role a přiřadil k ní roli Čtenáři adresáře. Vlastníci skupin pak můžou do skupiny přidat identity serveru a zdědit tato oprávnění. Tím se odebere požadavek, aby globální správce nebo správce privilegovaných rolí udělil oprávnění jednotlivým identitám serveru, což správcům umožňuje delegovat přiřazení oprávnění vlastníkům skupiny pro tento scénář. Další informace najdete v tématu Role Čtenáře adresáře v Microsoft Entra ID pro Azure SQL.

    • Přiřazení oprávnění Microsoft Graphu k identitě serveru

      Pokud chcete jednotlivým oprávněním Microsoft Graphu přiřadit identitu serveru, musíte mít roli globálního správce Microsoft Entra nebo správce privilegovaných rolí. To se doporučuje při přiřazování role Čtenáři adresáře, protože v roli jsou zahrnutá oprávnění, která identita serveru nepotřebuje. Přiřazení pouze individuálních oprávnění ke čtení v Microsoft Graphu omezuje oprávnění identity serveru v rámci vašeho tenanta a udržuje princip nejnižšího oprávnění. Pokyny najdete v tématu Spravované identity v Microsoft Entra pro Azure SQL.

    • Přidání identity serveru do role Čtenáři adresáře

      Pokud chcete přidat identitu serveru do role Čtenáři adresáře, musíte být členem role Globální správce Microsoft Entra nebo Správce privilegovaných rolí. V produkčních prostředích se tato možnost nedoporučuje ze dvou důvodů: role Čtenář adresáře poskytuje více oprávnění, než vyžaduje identita serveru, a proces přiřazení role stále vyžaduje schválení správce pro každou identitu serveru (na rozdíl od použití skupin). Postupujte podle pokynů ke službě SQL Managed Instance, které jsou k dispozici v článku Nastavení správce Microsoft Entra (SQL Managed Instance).

Řešení problému

Při řešení potíží se může zobrazit následující chyba:

Msg 33134, Level 16, State 1, Line 1
Principal 'test-user' could not be resolved.
Error message: 'Server identity is not configured. Please follow the steps in "Assign an Azure AD identity to your server and add Directory Reader permission to your identity" (https://aka.ms/sqlaadsetup)'

Tato chyba značí, že identita serveru nebyla vytvořena nebo nemá přiřazená oprávnění k Microsoft Graphu. Podle pokynů přiřaďte identitu logickému serveru a přiřaďte oprávnění Čtenáři adresáře k identitě logického serveru.

Omezení

  • Instanční objekty se nemůžou ověřovat napříč hranicemi tenantů. Pokus o přístup ke službě SQL Database nebo sql Managed Instance pomocí aplikace Microsoft Entra vytvořené v jiném tenantovi selže.

  • Modul Az.Sql 2.9.0 nebo vyšší je nutný k nastavení aplikace Microsoft Entra jako správce Microsoft Entra pro Azure SQL. Ujistěte se, že jste upgradovali na nejnovější modul.