什么是Azure服务主体?

kq0g1dla  于 2023-03-31  发布在  其他
关注(0)|答案(3)|浏览(240)

我的要求很简单。我想在非交互模式下通过我的shell脚本登录到Azure,但“az login -u username -p password”命令给出以下错误:

Get Token request returned http error: 400 and server response:
{"error":"invalid_grant","error_description":"AADSTS70002: Error
validating credentials. : SAML token is invalid. : The element 
with ID 'xxxxxx' was either unsigned or the signature was 
invalid.

一些网站告诉我创建一个服务主体。现在我的问题是,什么是服务主体,我如何创建一个服务主体,以便我可以从我的shell脚本执行我的命令(用于创建不同的资源,如应用程序网关)?

liwlm1x9

liwlm1x91#

请参阅此official document
Azure服务主体是用户创建的应用程序、服务和自动化工具用来访问特定Azure资源的安全标识。(登录名和密码或证书)与特定的角色,和严格控制的权限访问您的资源。它只需要能够做特定的事情,与一般用户标识不同。如果您仅授予它执行其管理任务所需的最低权限级别,则它可以提高安全性。
如果要使用Azure CLi 2.0创建新的服务主体(sp)。您可以使用Azure AD用户登录。然后执行以下命令。

az ad sp create-for-rbac --name {appId} --password "{strong password}"

结果如下:

{
  "appId": "a487e0c1-82af-47d9-9a0b-af184eb87646d",
  "displayName": "MyDemoWebApp",
  "name": "http://MyDemoWebApp",
  "password": {strong password},
  "tenant": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
}

appId是您的登录用户,password是登录密码。
创建SP后,您还需要给予Contributor角色,然后您可以管理Azure资源。

az role assignment create --assignee <objectID> --role Contributor

现在,您可以使用以下命令以非交互模式登录。

az login --service-principal -u <appid> --password {password-or-path-to-cert} --tenant {tenant}
mw3dktmi

mw3dktmi2#

服务主体仅用作Azure AD中用户的模拟。请参阅-https://sanganakauthority.blogspot.com/2019/04/how-to-create-service-principal-or-app.html
使用此功能,您可以使用REST API对Azure执行任何类型的管理任务。这样,您就无需在弹出窗口中提供凭据,从而有助于使用REST API在Azure中自动执行操作。

cwtwac6a

cwtwac6a3#

给你:Use portal to create an Azure Active Directory application and service principal that can access resources .
当您的应用程序需要访问或修改资源时,您必须设置Azure Active Directory(AD)应用程序并为其分配所需的权限。这种方法优于使用您自己的凭据运行应用程序,因为:

  • 您可以为应用标识分配与您自己的权限不同的权限。通常,这些权限仅限于应用需要执行的操作。
  • 如果您的职责发生变化,您不必更改应用的凭据。
  • 在执行无人参与的脚本时,可以使用证书自动进行身份验证。

相关问题