首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用RM模块更新Azure存储帐户密钥

使用RM模块更新Azure存储帐户密钥
EN

Stack Overflow用户
提问于 2019-08-09 01:13:04
回答 2查看 186关注 0票数 0

我正在尝试设置一个powershell代码,它将每隔一段时间更新存储帐户凭据,下面是我遇到的脚本,它工作得很好。

代码语言:javascript
复制
function setupContext(){
    Add-AzureRmAccount
    Save-AzureRmContext -Path “path\to\json\file” 
}

#setupContext
Import-AzureRmContext -Path “path\to\json\file”
$subscriptionId='***********************************'
Select-AzureRMSubscription -SubscriptionId $subscriptionId -WarningAction SilentlyContinue
$resourceGroup="**************"
$storageAccountName="******************"
$BLOBKey= New-AzureRmStorageAccountKey -ResourceGroupName $resourceGroup -Name $storageAccountName -KeyName key2 
Write-Host "BLOB Key:"$BLOBKey.Keys[0]

上面的代码完成了所需的工作,但是它需要我们登录到azure-rm帐户,这基本上破坏了自动化这个过程的想法,因为我需要不断更新这个生成的配置文件。

注意:我现在还不能使用az模块,因为我工作的环境有一些.NET版本限制。

因此,如果有任何其他解决方案可以克服azure rm登录问题,请建议。

EN

回答 2

Stack Overflow用户

发布于 2019-08-09 02:07:13

使用Azure自动化。这会自动设置名为RunAs帐户的东西。简单地说,这就是Azure AD服务主体

然后,向存储帐户分配此主体权限,就像任何其他用户一样,您就完成了。

在Automation Runbook do中

代码语言:javascript
复制
$connection = Get-AutomationConnection -Name AzureRunAsConnection
Connect-AzureRmAccount `
    -ServicePrincipal `
    -Tenant $connection.TenantID `
    -ApplicationID $connection.ApplicationID  `
    -CertificateThumbprint $connection.CertificateThumbprint

$AzureContext = Select-AzureRmSubscription -SubscriptionId $connection.SubscriptionID

... run rest of the code ...

如果你想从Azure之外运行它,比如本地服务器,那么手动设置服务主体。这是指南

https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal

只需从powershell而不是用户登录到此应用程序。

票数 0
EN

Stack Overflow用户

发布于 2019-08-09 15:15:40

看起来你想用一种非交互式的方式自动完成这项工作。要以非交互方式访问azure资源,您当前的最佳选择是使用服务主体(AD App)。

Azure服务主体是为与应用程序、托管服务和自动化工具一起使用以访问Azure资源而创建的身份。

另一个回复是azure automation runbook,你可以按照我的步骤在其他地方实现自动化。

1.Create an Azure Active Directory applicationcreate a secret对于应用程序,保存secret和get values for signing in

2.导航到门户网站-> Access control (IAM) -> Add -> Add role assignment ->中的存储帐户(或存储帐户所在的订阅),使用名称搜索您的服务主体(AD应用),并将其添加为角色(例如Owner/Contributor) -> Save

注意:要赋予角色,您需要使用属于特定范围(存储帐户/订阅)的Owner的帐户。

3.然后使用下面的脚本,用step 1中的值替换特定的属性。

代码语言:javascript
复制
function setupContext(){
    $azureAplicationId ="<application id>"
    $azureTenantId= "<tenant id>"
    $azurePassword = ConvertTo-SecureString "<client secret>" -AsPlainText -Force
    $psCred = New-Object System.Management.Automation.PSCredential($azureAplicationId , $azurePassword)
    Add-AzureRmAccount -Credential $psCred -TenantId $azureTenantId -ServicePrincipal 
    Save-AzureRmContext -Path “path\to\json\file” 
}

#setupContext
Import-AzureRmContext -Path “path\to\json\file”
$subscriptionId='***********************************'
Select-AzureRMSubscription -SubscriptionId $subscriptionId -WarningAction SilentlyContinue
$resourceGroup="**************"
$storageAccountName="******************"
$BLOBKey= New-AzureRmStorageAccountKey -ResourceGroupName $resourceGroup -Name $storageAccountName -KeyName key2 
Write-Host "BLOB Key:"$BLOBKey.Keys[0]

此外,如果您想了解有关服务主体的更多信息,可以查看此链接- Application and service principal objects in Azure Active Directory

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57417675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档