- Na App Service v záložce Identity zapneme System assigned identitu.
- V blob storage, na containeru, přidáme identitě aplikace oprávnění Storage Blob Data Contributor.
- Upravíme aplikaci tak, aby pro přístup k Blob Storage použila svoji identitu (potřebujeme nuget balíček Azure.Identity) a to tak, že použijeme jiný konstruktor třídy BlobContainerClient.
string containerEndpoint = $"https://{AzureStorageName}.blob.core.windows.net/{AzureStorageContainerName}";
return new BlobContainerClient(new Uri(containerEndpoint), new Azure.Identity.DefaultAzureCredential());
- Založíme KeyVault (na záložce Access configuration použijeme Azure role-based access control, jde o výchozí hodnotu).
- Identitě aplikace přidáme oprávnění Key Vault Secrets User.
- Použijeme nuget balíček Azure.Extensions.AspNetCore.Configuration.Secrets.
- Použijeme provider konfigurace.
if (builder.Environment.IsProduction())
{
builder.Configuration.AddAzureKeyVault(new Uri("https://<my-key-vault>.vault.azure.net"), new Azure.Identity.DefaultAzureCredential());
}
- Identitě přidáme oprávnění čtení Secrets (pro Vault access policy).
- Identitě přidáme oprávnění Key Vault Secrets User (pro RBAC).
- Identitě přidáme oprávnění Key Vault Crypto User (pro RBAC).
- Vyzkoušíme v konzolovce práci se Secrets a Keys.
Pokud se nám nedaří založit v Azure Key Vault secret nebo klíč, může to být tím, že sami nemáme dostatečná oprávnění.