gpt4 book ai didi

azure - 如何使用系统分配的托管标识保护 Azure Function

转载 作者:行者123 更新时间:2023-12-03 00:38:03 25 4
gpt4 key购买 nike

我有一个带有 HTTP 触发器的简单 Azure 函数(授权级别 设置为 匿名)

public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
{
return new OkObjectResult("This is a response from secured function.");
}

我想使用托管身份来保护它,因此我打开了系统分配的身份 enter image description here

在我的 AD 企业应用程序注册中,我可以看到创建了一个系统分配的身份,因此我复制了其应用程序 ID 值 enter image description here

出于测试目的,我想从另一个 azure 函数触发它

public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
var clientID = {application / client ID of system identity}
var azureServiceTokenProvider = new AzureServiceTokenProvider();
var accessToken = await azureServiceTokenProvider.GetAccessTokenAsync(clientID);

// Call secured azure function
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("https://my-secured-function.azurewebsites.net");
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);

var response = await client.GetAsync("/api/HttpTrigger1");
if (response.IsSuccessStatusCode)
{
var result = await response.Content.ReadAsStringAsync();

return new OkObjectResult(result);
}
else
{
return new OkObjectResult("Error - " + response.StatusCode);
}
}
}

该代码有效,它会在 HTTP 请求中生成并发送一个 token 。但是,“安全的”azure 功能仍然是公开可用的。

问题是如何保护“安全”的 azure 函数,以便使用托管身份只能通过带有生成 token 的 HTTP 请求来触发

最佳答案

您在此处启用的系统分配的托管身份仅通过服务主体为您的应用提供身份。与防火墙/IP 限制不同(您可以使用它,但我假设您只想在此处依赖身份),这不会阻止任何访问。

您正在寻找的基本上是 Authentication with Azure AD 。从那里,您可以使用调用者托管身份(如果适用)通过 AAD 对您的应用进行身份验证。这也适用于任何服务主体或用户。

关于azure - 如何使用系统分配的托管标识保护 Azure Function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69972181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com