开启MFA多因素后,AzureCli如何自动化登录

网友投稿 1006 2022-09-16

开启MFA多因素后,AzureCli如何自动化登录

开启MFA多因素后,AzureCli如何自动化登录

layout: post title: undefined开启MFA多因素后,AzureCli如何自动化登录undefined tags: PowerShell进阶学习 englishname: AzureCliandMFAHowToAutomaticlogon

需求

由于AzureRM的PowerShell模块逐渐退出历史舞台,所以Azure的自动化登录要做一个比较大的返工,用AZ来做一个代码重构。

难点

这里的主要逻辑是,使用MFA后,你不可以使用账号mima的形式,在PowerShell中登录。 需要使用如下3要素:

应用ID应用mima租户ID

以及搭配 Connect-AzAccount -ServicePrincipal 的方式去登录。

应用ID和mima

那么如何获取应用ID和应用mima呢? 我们可以在Azure的Portal中,使用Azure Cloud Shell登录进去,或者在本地使用 Connect-AzAccount -UseDeviceAuthentication的方式,先登录一下Azure。然后执行如下的逻辑 ```powershell #这里SPN2是随便起的 $sp = New-AzADServicePrincipal -DisplayName SPN2 警告: Assigning role 'Contributor' over scope '/subscriptions/xxxxx6-c9d0-4d95-8122-4f289f72ec2a' to the new service principal. Account SubscriptionName TenantId Environment

xxxx-b6c7-4947-8ecb-0ceb7d1c9d62 500块 xxx-86f1-41af-91ab-xxxxx AzureCloud ``` 执行完毕后,这个$sp对象已经拥有了我们后面要做的事情的部分信息

租户ID

通过PowerShell连接,我们还需要一个租户ID信息,这个可以通过图形界面获取,下图所示的位置。

Portal→Azure Active Directory→属性

或者直接访问,这是最简单的方法。 = (Get-AzContext).Tenant.Id

应用mima解密

现在有了$sp对象,应用ID就是 $sp.ApplicationId,应用mima就是$sp.secret。但是问题是,sp.secret是个标准PowerShell加密的对象。 下面的方法可以帮你解密(仅限本机) ```powershell $securestring=$sp.Secret $ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToGlobalAllocUnicode($secureString) $serverpass = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($ptr)

$serverpass就是我们要的应用mima

$Secure=$serverpass|ConvertTo-SecureString -AsPlainText -Force $pscredential2 = New-Object -TypeName System.Management.Automation.PSCredential(undefined3f4e8213-b6c7-4947-8ecb-xxxxundefined, $Secure)

此处前半部分就是应用ID

Connect-AzAccount -ServicePrincipal -Credential $pscredential -Tenant 72f988bf-86f1-41af-91ab-xxxx

此处后半部分为租户ID。

删除连接

当你使用disConnect-AzAccount的时候,那么这个json文件会被清空。如果不使用断开连接,那么何时打开PowerShell,都会自动连接到这个订阅。 我们断连一下,可以看到Type是SPN类型的。 ```powershell disConnect-AzAccount Id : 3f4e8213-b6c7-4947-8ecb-0ceb7d1c9d62 Type : ServicePrincipal Tenants : {xxxxx-86f1-41af-91ab-xxxx} AccessToken : Credential : TenantMap : {} CertificateThumbprint : ExtendedProperties : {[Subscriptions, xxx-c9d0-4d95-8122-xxx], [Tenants, xxx-86f1-41af-91ab-xxx], [ServicePrincipalSecret, 440cb042- 0243-xxx-8031-xxx]} ```

世界友好

另外连接的时候可以指定云的区域,这一点是和以前一致的,方便我们登陆祖国云、国际云、德国美国云。 ```powershell PS C:\Users\a9y> Get-AzEnvironment Name Resource Manager Url ActiveDirectory Authority Type

AzureChinaCloud Built-in AzureCloud Built-in AzureGermanCloud Built-in AzureUSGovernment Built-in Connect-AzAccount -Environment AzureChinaCloud ```

管理账号权限

可以在AAD中如下位置进行配置。应用程序ID看起来和一个账号也是类似的。更多细节我也在研究

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:小程序唤醒APP有哪些途径?小程序中如何唤醒App且到达指定页面?
下一篇:什么是超级APP?超级App的开发运行平台推荐
相关文章

 发表评论

暂时没有评论,来抢沙发吧~