【发布时间】:2019-12-13 10:37:35
【问题描述】:
我正在使用应用注册来部署资源,但证书即将到期。我正在尝试编写一个脚本来添加一个新证书以延长此服务主体的寿命,但无论我以谁(我自己、同事、服务主体本身)身份登录,我都会收到以下错误:
New-AzADSpCredential : Insufficient privileges to complete the operation. At X:\XXX\XXXX\XXXXX\Add-NewDmfCertificate.ps1:496 char:63
+ ... cipalName | New-AzADSpCredential -CertValue $credValue -StartDate $ce ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [New-AzADSpCredential], Exception
+ FullyQualifiedErrorId : Microsoft.Azure.Commands.ActiveDirectory.NewAzureADSpCredentialCommand
编辑:
一些 cmets 让我解释我的问题,因为我不确定我是否清楚。
英语是我的第一语言,我确实理解信息的基本含义。我不明白如何解决这个问题。我是服务主体的所有者。我的同事是业主。服务负责人应该能够自我管理(我认为)。我已经在我创建的服务主体上对此进行了测试,并且可以正常工作。所以我不得不怀疑:我这样做是否正确?如果没有,如何将证书凭据添加到 SP?如果我做得正确,我应该在哪里设置权限以允许 SP(最好)或 AD 用户进行此更改?
EDIT2:
我是一个糟糕的用户。感谢您指出我忽略了包含代码示例。不知道它有多大帮助,但我知道的足够多,不管我的想法如何。
param (
[string] $ServicePrincipalName
)
$cert = New-SelfSignedCertificateEx (you'll forgive me for leaving this part out :) )
$rawCert = $cert.RawData
$credValue = [System.Convert]::ToBase64String($rawCert)
Get-AzADServicePrincipal -DisplayName $ServicePrincipalName | New-AzADSpCredential -CertValue $credValue -StartDate $cert.NotBefore -EndDate $cert.NotAfter
【问题讨论】:
-
好吧,这只是意味着所有这些都没有足够的权限来做到这一点?
-
我不完全确定这是否意味着。我已经做了足够多的 Azure 工作来怀疑我是否只是做错了。这就是为什么我用我的方式来表达这个问题:我应该怎么做?如果是这种方式,为什么它不起作用?如果不是,我应该使用什么方式?
-
好吧,具有讽刺意味的是,您并没有展示您是如何做到的,所以我只能猜测如何,但是此操作需要 Azure AD 权限,而不是 Azure RBAC,因此您的所有者权限在这里毫无意义。您需要应用程序读\写权限。最简单的方法是为自己分配应用程序管理员 Azure AD 角色
标签: azure azure-devops azure-active-directory