Mik*_*ike 2 c# database authentication azure azure-webjobs
本周我一直在使用PowerShell为我们的部署创建一个新的Azure环境,最后一部分调用了用C#编写的WebJob来接受来自队列的消息并创建一个新数据库并根据需要创建结构.
我想知道这里有没有人这样做过,我发现.NET的天蓝色管理库有数据库创建的例子,但我坚持授权,因为这将从后端进程完成?
无论如何,我可以在Azure环境中创建一个信任,以允许我的WebJob连接Azure(尽管应用程序在同一个订阅中运行)并创建一个新的数据库?
这时我真的没有任何代码更像是想法,这就是为什么我要求帮助:)
我假设我会使用这样的东西进行身份验证?
var credentials = SdkContext.AzureCredentialsFactory.FromServicePrincipal(
"clientid",
"clientsecret",
"tenantid",
AzureEnvironment.AzureGlobalCloud);
// Connect to Azure
var azure = Azure.Authenticate(credentials).WithDefaultSubscription();
Run Code Online (Sandbox Code Playgroud)
我假设我可能需要在Azure本身做一些事情来信任WebJob以获得创建新Azure数据库的权限,但这是我不确定的部分.
从PowerShell我通过让PS启动Microsoft Live登录屏幕来完成身份验证,但这对于没有UI的WebJob来说是不实际的.
希望这是有道理的,有人可以为我阐明它吗?
你走在正确的轨道上.
您必须为WebJob 创建服务主体,这实际上是应用程序的凭据.您将获得客户端ID和密码(应用程序的用户名和密码),可用于对Azure Active Directory进行身份验证,并获取访问令牌以调用API(例如Azure的管理API).
您可以在此处看到如何在Azure AD中创建应用程序(也可以创建服务主体):https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-service -principal门户#创建-AN-Azure的主动目录的应用程序
然后,您可以在任何资源/资源组/订阅上为服务主体分配角色.由于您需要它才能创建资源,因此它至少应该是资源组的Contributor.如果您还需要为其创建资源组
所以:
关于存储机密的简短说明:
你应该小心客户端的秘密,它本质上是一个密码.您至少应将其存储在Web App的App Settings中,而不是代码中.更好的方法是将Azure Key Vault与Azure AD托管服务标识一起使用:https://joonasw.net/view/azure-ad-managed-service-identity.
归档时间: |
|
查看次数: |
223 次 |
最近记录: |