Přístup ke sdíleným složkám Azure pomocí ID Microsoft Entra s OAuth ve službě Azure Files přes REST

Azure Files OAuth přes REST umožňuje uživatelům a aplikacím přístup pro čtení a zápis na úrovni správce ke sdíleným složkám Azure prostřednictvím ověřovacího protokolu OAuth pomocí Microsoft Entra ID pro přístup na základě rozhraní REST API. Uživatelé, skupiny, služby první strany, jako je Azure Portal a služby a aplikace třetích stran využívající rozhraní REST, teď můžou pro přístup k datům ve sdílených složkách Azure používat ověřování a autorizaci OAuth s účtem Microsoft Entra. Rutiny PowerShellu a příkazy Azure CLI, které volají rozhraní REST API, můžou také používat OAuth pro přístup ke sdíleným složkám Azure. Rozhraní REST API musíte volat pomocí explicitní hlavičky, abyste označili svůj záměr použít další oprávnění. To platí také pro přístup k Azure PowerShellu a Azure CLI.

Důležité

Tento článek vysvětluje, jak povolit přístup ke sdíleným složkám Azure na úrovni správce pro konkrétní případy použití zákazníka. Pokud hledáte obecnější článek o ověřování na základě identit pro koncové uživatele, projděte si přehled možností ověřování na základě identit služby Azure Files pro přístup k protokolu SMB.

Omezení

Azure Files OAuth přes REST podporuje pouze rozhraní FileREST Data API, která podporují operace se soubory a adresáři. Protokol OAuth se nepodporuje v rozhraních API roviny dat FilesREST, která spravují prostředky FileService a FileShare. Tato rozhraní API pro správu se volají pomocí klíče účtu úložiště nebo tokenu SAS a zobrazují se prostřednictvím roviny dat ze starších důvodů. Doporučujeme používat rozhraní API řídicí roviny (poskytovatele prostředků úložiště – Microsoft.Storage), která podporují OAuth pro všechny aktivity správy související s prostředky FileService a FileShare.

Autorizace operací s daty souborů s ID Microsoft Entra je podporována pouze pro rozhraní REST API verze 2022-11-02 a novější. Viz Správa verzí pro Azure Storage.

Případy použití zákazníka

Ověřování a autorizace OAuth pomocí služby Azure Files přes rozhraní REST API můžou zákazníkům přinést výhody v následujících scénářích.

Vývoj aplikací a integrace služeb

Ověřování a autorizace OAuth umožňují vývojářům vytvářet aplikace, které přistupují k rozhraním REST API služby Azure Storage pomocí identit uživatelů nebo aplikací z Microsoft Entra ID.

Zákazníci a partneři můžou také povolit služby třetích stran, aby bezpečně a transparentně nakonfigurovali potřebný přístup k účtu úložiště zákazníka.

Nástroje DevOps, jako jsou Azure Portal, PowerShell a rozhraní příkazového řádku, AzCopy a Průzkumník služby Storage můžou spravovat data pomocí identity uživatele, což eliminuje potřebu správy nebo distribuce přístupových klíčů k úložišti.

Spravované identity

Zákazníci s aplikacemi a spravovanými identitami, které vyžadují přístup k datům sdílené složky pro účely zálohování, obnovení nebo auditování, můžou využívat ověřování a autorizaci OAuth. Vynucení oprávnění na úrovni souborů a adresářů pro každou identitu zvyšuje složitost a nemusí být kompatibilní s určitými úlohami. Zákazníci například můžou chtít autorizovat službu řešení zálohování pro přístup ke sdíleným složkám Azure s přístupem jen pro čtení ke všem souborům bez ohledu na oprávnění specifická pro soubory.

Výměna klíče účtu úložiště

Microsoft Entra ID poskytuje vynikající zabezpečení a snadné použití přístupu ke sdíleným klíčům. Přístup ke klíči účtu úložiště můžete nahradit ověřováním OAuth a autorizací pro přístup ke sdíleným složkám Azure s oprávněními jen pro čtení/zápis. Tento přístup také nabízí lepší auditování a sledování přístupu konkrétních uživatelů.

Privilegovaný přístup a přístupová oprávnění pro operace s daty

Pokud chcete použít funkci Azure Files OAuth přes REST, musíte do role RBAC přiřazené uživateli, skupině nebo instančnímu objektu zahrnout další oprávnění. Jako součást této funkce se zavádějí dvě nové akce dat:

Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action

Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action

Uživatelé, skupiny nebo instanční objekty, které volají rozhraní REST API pomocí OAuth, musí mít přiřazenou readFileBackupSemantics roli nebo writeFileBackupSemantics akci, která umožňuje přístup k datům. Toto je požadavek na použití této funkce. Podrobnosti o oprávněních potřebných k volání konkrétních operací souborové služby najdete v tématu Oprávnění pro volání datových operací.

Tato funkce poskytuje dvě nové předdefinované role, které zahrnují tyto nové akce.

Role Akce dat
Čtenář dat souboru úložiště s privilegovaným přístupem Microsoft.Storage/storageAccounts/fileServices/fileShares/files/read
Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action
Přispěvatel dat souboru úložiště s privilegovaným přístupem Microsoft.Storage/storageAccounts/fileServices/fileShares/files/read
Microsoft.Storage/storageAccounts/fileServices/fileShares/files/write
Microsoft.Storage/storageAccounts/fileServices/fileShares/files/delete
Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action
Microsoft.Storage/storageAccounts/fileServices/fileshares/files/modifypermissions/action

Tyto nové role se podobají stávajícím předdefinovaným rolím Přispěvatel se zvýšenými oprávněními přispěvatele SMB pro data souborů úložiště a sdílené složky souborů úložiště, ale existují některé rozdíly:

  • Nové role obsahují další akce dat, které jsou potřeba pro přístup k OAuth.

  • Když uživatel, skupina nebo instanční objekt, který má přiřazenou roli privilegovaného čtenáře dat souboru úložiště nebo Role privilegovaného přispěvatele dat služby Storage, volá rozhraní FilesREST Data API pomocí OAuth, uživatele, skupiny nebo instančního objektu:

    • Privilegovaná čtečka dat souboru úložiště: Úplný přístup pro čtení všech dat ve sdílených složkách pro všechny nakonfigurované účty úložiště bez ohledu na nastavená oprávnění NTFS na úrovni souboru nebo adresáře.
    • Privilegovaný přispěvatel dat souboru úložiště: Úplné čtení, zápis, úprava seznamů ACL, odstranění přístupu ke všem datům ve sdílených složkách pro všechny nakonfigurované účty úložiště bez ohledu na nastavená oprávnění NTFS na úrovni souboru nebo adresáře.
  • Díky těmto speciálním oprávněním a rolím systém vynechá všechna oprávnění na úrovni souborů a adresářů a povolí přístup k datům sdílené složky.

Díky novým rolím a akcím dat bude tato funkce poskytovat oprávnění účtu úložiště, která nahrazují všechna oprávnění k souborům a složkám ve všech sdílených složkách v účtu úložiště. Nové role ale obsahují oprávnění pouze pro přístup k datovým službám. Nezahrnují žádná oprávnění pro přístup ke službám pro správu sdílených složek (akce u sdílených složek). Pokud chcete tuto funkci použít, ujistěte se, že máte oprávnění pro přístup:

  • účet úložiště
  • Služby správy sdílených složek
  • datové služby (data ve sdílené složce)

Existuje mnoho předdefinovaných rolí , které poskytují přístup ke službám pro správu. Můžete také vytvořit vlastní role s příslušnými oprávněními. Další informace o řízení přístupu na základě role najdete v Azure RBAC. Další informace o tom, jak jsou definované předdefinované role, najdete v tématu Vysvětlení definic rolí.

Důležité

Všechny případy použití zástupných znaků definované pro cestu Microsoft.Storage/storageAccounts/fileServices/* nebo vyšší obor automaticky dědí další přístup a oprávnění udělená prostřednictvím této nové akce dat. Abychom zabránili nezamýšleným nebo nadměrnému privilegovanému přístupu ke službě Azure Files, implementovali jsme další kontroly, které vyžadují, aby uživatelé a aplikace explicitně označili svůj záměr použít další oprávnění. Kromě toho důrazně doporučujeme, aby zákazníci zkontrolovali přiřazení rolí RBAC uživatelů a nahradili veškeré použití zástupných znaků explicitními oprávněními, aby zajistili správnou správu přístupu k datům.

Autorizace přístupu k datům souborů v kódu aplikace

Klientská knihovna Azure Identity zjednodušuje proces získání přístupového tokenu OAuth 2.0 pro autorizaci pomocí Microsoft Entra ID prostřednictvím sady Azure SDK. Nejnovější verze klientských knihoven Azure Storage pro .NET, Java, Python, JavaScript a Go se integrují s knihovnami identit Azure pro každý z těchto jazyků, které poskytují jednoduché a bezpečné prostředky pro získání přístupového tokenu pro autorizaci požadavků ze souborové služby Azure.

Výhodou klientské knihovny Azure Identity je, že umožňuje použít stejný kód k získání přístupového tokenu bez ohledu na to, jestli je vaše aplikace spuštěná ve vývojovém prostředí nebo v Azure. Klientská knihovna Azure Identity vrátí přístupový token pro objekt zabezpečení. Když je váš kód spuštěný v Azure, může být instanční objekt spravovanou identitou pro prostředky Azure, instanční objekt nebo uživatele nebo skupinu. Ve vývojovém prostředí poskytuje klientská knihovna přístupový token pro uživatele nebo instanční objekt pro účely testování.

Přístupový token vrácený klientskou knihovnou služby Azure Identity je zapouzdřen v přihlašovacích údajích tokenu. Přihlašovací údaje tokenu pak můžete použít k získání objektu klienta služby, který se použije při provádění autorizovaných operací se službou Azure Files.

Tady je ukázkový kód:

using Azure.Core;
using Azure.Identity;
using Azure.Storage.Files.Shares;
using Azure.Storage.Files.Shares.Models;

namespace FilesOAuthSample
{
    internal class Program
    {
        static async Task Main(string[] args)
        {
            string tenantId = "";
            string appId = "";
            string appSecret = "";
            string aadEndpoint = "";
            string accountUri = "";
            string connectionString = "";
            string shareName = "test-share";
            string directoryName = "testDirectory";
            string fileName = "testFile"; 

            ShareClient sharedKeyShareClient = new ShareClient(connectionString, shareName); 
            await sharedKeyShareClient.CreateIfNotExistsAsync(); 

            TokenCredential tokenCredential = new ClientSecretCredential(
                tenantId,
                appId,
                appSecret,
                new TokenCredentialOptions()
                {
                    AuthorityHost = new Uri(aadEndpoint)
                });

            ShareClientOptions clientOptions = new ShareClientOptions(ShareClientOptions.ServiceVersion.V2023_05_03);

            // Set Allow Trailing Dot and Source Allow Trailing Dot.
            clientOptions.AllowTrailingDot = true;
            clientOptions.AllowSourceTrailingDot = true;

            // x-ms-file-intent=backup will automatically be applied to all APIs
            // where it is required in derived clients.

            clientOptions.ShareTokenIntent = ShareTokenIntent.Backup;
            ShareServiceClient shareServiceClient = new ShareServiceClient(
                new Uri(accountUri),
                tokenCredential,
                clientOptions);

            ShareClient shareClient = shareServiceClient.GetShareClient(shareName);
            ShareDirectoryClient directoryClient = shareClient.GetDirectoryClient(directoryName);
            await directoryClient.CreateAsync();

            ShareFileClient fileClient = directoryClient.GetFileClient(fileName);
            await fileClient.CreateAsync(maxSize: 1024);
            await fileClient.GetPropertiesAsync();
            await sharedKeyShareClient.DeleteIfExistsAsync();
        }
    }
}

Autorizace přístupu pomocí rozhraní API roviny dat FileREST

Přístup k datům souborů můžete také autorizovat pomocí webu Azure Portal nebo Azure PowerShellu.

Azure Portal může pro přístup k datům souborů v účtu úložiště Azure použít buď váš účet Microsoft Entra, nebo přístupový klíč účtu úložiště. Jaké schéma autorizace používá Azure Portal, závisí na rolích Azure, které jsou vám přiřazeny.

Když se pokusíte získat přístup k datům souboru, Azure Portal nejprve zkontroluje, jestli máte přiřazenou roli Azure.Microsoft.Storage/storageAccounts/listkeys/action Pokud jste k této akci přiřadili roli, použije Azure Portal klíč účtu pro přístup k datům souborů prostřednictvím autorizace sdíleného klíče. Pokud jste k této akci nepřiřadili roli, azure Portal se pokusí o přístup k datům pomocí účtu Microsoft Entra.

Pokud chcete získat přístup k datům souborů z webu Azure Portal pomocí účtu Microsoft Entra, potřebujete oprávnění pro přístup k datům souborů a také potřebujete oprávnění k procházení prostředků účtu úložiště na webu Azure Portal. Předdefinované role poskytované Azure udělují přístup k prostředkům souborů, ale neudělují oprávnění k prostředkům účtu úložiště. Z tohoto důvodu přístup k portálu také vyžaduje přiřazení role Azure Resource Manageru (ARM), jako je role Čtenář , vymezená na úroveň účtu úložiště nebo vyšší. Role Čtenář uděluje nejvíce omezující oprávnění, ale jakákoli role ARM, která uděluje přístup k prostředkům správy účtů úložiště, je přijatelná.

Azure Portal určuje, které schéma autorizace se používá při přechodu do kontejneru. Další informace o přístupu k datům na portálu najdete v tématu Volba způsobu autorizace přístupu k datům souborů na webu Azure Portal.

Viz také