Autorizace přístupu k datům objektu BLOB se spravovanými identitami pro prostředky Azure
Azure Blob Storage podporuje ověřování Azure Active Directory (Azure AD) se spravovanými identitami pro prostředky Azure. Spravované identity pro prostředky Azure můžou autorizovat přístup k datům objektů BLOB pomocí přihlašovacích údajů Azure AD z aplikací běžících na virtuálních počítačích Azure, aplikacích Function App, Virtual Machine Scale Sets a dalších službách. Pomocí spravovaných identit pro prostředky Azure spolu s ověřováním Azure AD se můžete vyhnout ukládání přihlašovacích údajů k vašim aplikacím, které běží v cloudu.
Tento článek popisuje, jak autorizovat přístup k datům objektů BLOB z virtuálního počítače Azure pomocí spravovaných identit pro prostředky Azure.
Povolení spravovaných identit na virtuálním počítači
Než budete moct pomocí spravovaných identit pro prostředky Azure autorizovat přístup k objektům blob z virtuálního počítače, musíte nejdřív na VIRTUÁLNÍm počítači povolit spravované identity pro prostředky Azure. Informace o tom, jak povolit spravované identity pro prostředky Azure, najdete v jednom z těchto článků:
- Azure Portal
- Azure PowerShell
- Azure CLI
- Šablona Azure Resource Manageru
- Klientské knihovny Azure Resource Manager
Další informace o spravovaných identitách najdete v tématu spravované identity pro prostředky Azure.
Přiřazení role RBAC spravované identitě
když se instanční objekt zabezpečení Azure AD pokusí získat přístup k datům v účtu Azure Storage, musí mít tento objekt zabezpečení oprávnění k tomuto zdroji dat. Bez ohledu na to, jestli je objekt zabezpečení spravovanou identitou v Azure nebo uživatelským účtem Azure AD, který spouští kód ve vývojovém prostředí, musí být objektu zabezpečení přiřazená role Azure, která uděluje přístup k datům v Azure Storage. Informace o přiřazování oprávnění pro přístup k datům přes Azure RBAC najdete v tématu přiřazení role Azure pro přístup k datům objektu BLOB.
Poznámka
když vytvoříte účet Azure Storage, nebudete automaticky přiřazovat oprávnění pro přístup k datům prostřednictvím služby Azure AD. Musíte explicitně přiřadit roli Azure pro Azure Storage. Můžete ji přiřadit na úrovni předplatného, skupiny prostředků, účtu úložiště nebo kontejneru.
Vytvoření objektu blob bloku v rozhraní .NET pomocí spravované identity
klientská knihovna Azure Identity zjednodušuje proces získání přístupového tokenu OAuth 2,0 pro autorizaci pomocí služby Azure Active Directory (azure AD) prostřednictvím sady azure SDK. Když k získání přístupového tokenu použijete klientskou knihovnu Azure identity, můžete stejný kód použít k získání tokenu, ať už aplikace běží ve vývojovém prostředí nebo v Azure. Další informace najdete v tématu použití knihovny identit Azure k získání přístupového tokenu pro autorizaci.
chcete-li získat token, který může váš kód použít k autorizaci požadavků na Azure Storage, vytvořte instanci třídy DefaultAzureCredential . Pak můžete pomocí tokenu vytvořit objekt klienta služby, který je autorizován k provádění operací s daty v Azure Storage. další informace o použití třídy DefaultAzureCredential k autorizaci spravované identity pro přístup k Azure Storage najdete v tématu klientská knihovna Azure identity pro .net.
Následující příklad kódu ukazuje, jak získat přístupový token a použít ho k vytvoření objektu klienta služby, který pak pomocí klienta služby nahraje nový objekt BLOB:
async static Task CreateBlockBlobAsync(string accountName, string containerName, string blobName)
{
// Construct the blob container endpoint from the arguments.
string containerEndpoint = string.Format("https://{0}.blob.core.windows.net/{1}",
accountName,
containerName);
// Get a credential and create a service client object for the blob container.
BlobContainerClient containerClient = new BlobContainerClient(new Uri(containerEndpoint),
new DefaultAzureCredential());
try
{
// Create the container if it does not exist.
await containerClient.CreateIfNotExistsAsync();
// Upload text to a new block blob.
string blobContents = "This is a block blob.";
byte[] byteArray = Encoding.ASCII.GetBytes(blobContents);
using (MemoryStream stream = new MemoryStream(byteArray))
{
await containerClient.UploadBlobAsync(blobName, stream);
}
}
catch (RequestFailedException e)
{
Console.WriteLine(e.Message);
Console.ReadLine();
throw;
}
}
Poznámka
Pokud chcete autorizovat požadavky na data objektů BLOB pomocí služby Azure AD, musíte pro tyto požadavky použít protokol HTTPS.