通过系统托管标识在Azure 上部署webapi

本文介绍了如何利用System Identity的托管标识在Azure上部署WebAPI,以避免在代码中存储敏感信息。系统分配的托管标识提供了一种安全的方法,允许资源直接在Azure AD中进行身份验证,并通过Azure RBAC进行权限管理。此外,文章提到了在本地开发环境中使用Microsoft.Azure.Services.AppAuthentication库进行身份验证的便利性,并预告了后续将探讨Azure的认证、权限和委托权限等相关主题。
摘要由CSDN通过智能技术生成

先介绍下项目,项目采用的是System Identity 托管标识的方式部署API,这样的好处是不需要在代码里添加任何关于AAD的信息,

比如ClinetID,用户凭据之类的,更加的安全。

关于托管标识微软是这么介绍的:借助系统分配的托管标识,Azure 资源可以对云服务(例如 Azure Key Vault)进行身份验证,而无需在代码中存储凭据。一旦启用,所有必要权限都可通过 Azure 基于角色的访问控制进行授予。此类托管标识的生命周期与此资源的生命周期绑定在一起。此外,每个资源(例如虚拟机)只能有一个系统分配的托管标识。

系统分配托管标识直接在 Azure 服务实例上启用。 启用标识后,Azure 将在实例的订阅信任的 Azure AD 租户中创建实例的标识。 创建标识后,系统会将凭据预配到实例。 系统分配标识的生命周期直接绑定到启用它的 Azure 服务实例。 如果实例遭删除,Azure 会自动清理 Azure AD 中的凭据和标识,原理见下图:详情参考:https://docs.microsoft.com/zh-cn/azure/active-directory/managed-identities-azure-resources/overview

æ管æå¡æ è¯å Azure VM

当开启托管标识以后,系统在AAD的application中自动生成一个application,后面只需要对这个application赋予权限就可以了,赋予权限目前了解到的方式是,通过Azure 的Portal是无法赋予权限的,微软人员说可以通过powershell来赋予权限,参考:https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/tutorial-windows-vm-access-azure-ad-graph(但我没有尝试过),我是通过另外一种方式,直接在Azure portal的Role 中,将这个自动生成的application添加进去。

而且这种托管标识的方式支持本地调式,在VS中以用户,登录到 Visual Studio,通过“工具” > “选项” > “Azure 服务身份验证”选择一个用于本地开发的帐户。

而且微软提供了Microsoft.Azure.Services.AppAuthentication库,此支持使用 Microsoft Visual Studio、Azure CLI 或 Azure AD 集成身份验证进行本地开发。 部署到支持托管标识的 Azure 资源时,该库会自动使用 Azure 资源的托管标识。 不需代码或配置更改。 当托管标识不可用时,或者当开发人员的安全上下文不能在本地开发期间确定时,该库还支持直接使用 Azure AD 客户端凭据,简而言之,就是一套代码,自动识别本地还是云端,自动切换

 

代码非常简单:

 var azureServiceTokenProvider = new AzureServiceTokenProvider();
                string token = await azureServiceTokenProvider.GetAccessTokenAsync("https://graph.microsoft.com");

如果是本地环境,那这个token就是由某个用户生成的,有scope,当在Azure 上这个token就没有scope,直接使用的是application的权限。

这里写下 下回要讲的Azure的认证,权限,委托权限,最小权限,token ,application直接的关系,以免忘记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值