Azure active directory 在Azure AD中创建自定义角色时,";行动“;真的吗?

Azure active directory 在Azure AD中创建自定义角色时,";行动“;真的吗?,azure-active-directory,Azure Active Directory,我正在考虑创建一个自定义Azure广告角色,作为Azure web app服务中[授权]的一部分使用。当您包含“操作”列表时,您是否也在该角色中创建权限 “动作”可以是空的吗?假设我只想测试控制器中的一个角色,然后从那里控制数据访问?在“操作”部分我真的需要什么吗?有两个非常不同的概念: Azure中的自定义角色(用于基于角色的Azure资源访问控制) Azure AD中的应用程序角色(用于使用Azure AD的应用程序中的授权) 根据您的问题,您需要仔细研究第二个问题,即应用程序角色。他们没有

我正在考虑创建一个自定义Azure广告角色,作为Azure web app服务中[授权]的一部分使用。当您包含“操作”列表时,您是否也在该角色中创建权限


“动作”可以是空的吗?假设我只想测试控制器中的一个角色,然后从那里控制数据访问?在“操作”部分我真的需要什么吗?

有两个非常不同的概念:

  • Azure中的自定义角色(用于基于角色的Azure资源访问控制)
  • Azure AD中的应用程序角色(用于使用Azure AD的应用程序中的授权)
  • 根据您的问题,您需要仔细研究第二个问题,即应用程序角色。他们没有任何“行动”列表作为其定义的一部分。我将尝试在下面的1和2两个方面提供更多的细节,以清楚地说明这一点

    Azure中的自定义角色(它们有“操作”列表,但对在web应用程序中实现授权逻辑没有帮助) Microsoft文档-

    目的-Azure已作为Azure门户的一部分提供,用于根据分配的角色管理对Azure门户中资源的访问。如果您的场景中没有任何内置角色满足您的需求,则可以创建自定义角色,但目的仍然是将此自定义角色分配给某人,以便他们能够管理/使用Azure中的已配置资源。例如,Azure SQL数据库服务器或一个或多个虚拟机的所有者或读者。您将从Azure portal/PowerShell/CLI等使用这些角色

    这些角色在大型组织中非常有用,因为在大型组织中,每个人都不能在Azure订阅级别上成为所有者/管理员,但仍然可以在粒度级别上访问某些Azure订阅资源(如数据库、虚拟机、逻辑应用程序、存储帐户或Azure订阅中提供的任何资源)。这是通过portal/PowerShell/CLI完成的

    示例

    {
      "Name":  "Virtual Machine Operator",
      "Id":  "88888888-8888-8888-8888-888888888888",
      "IsCustom":  true,
      "Description":  "Can monitor and restart virtual machines.",
      "Actions":  [
                      "Microsoft.Storage/*/read",
                      "Microsoft.Network/*/read",
                      "Microsoft.Compute/*/read",
                      "Microsoft.Compute/virtualMachines/start/action",
                      "Microsoft.Compute/virtualMachines/restart/action",
                      "Microsoft.Authorization/*/read",
                      "Microsoft.Resources/subscriptions/resourceGroups/read",
                      "Microsoft.Insights/alertRules/*",
                      "Microsoft.Insights/diagnosticSettings/*",
                      "Microsoft.Support/*"
      ],
      "NotActions":  [
    
                     ],
      "DataActions":  [
    
                      ],
      "NotDataActions":  [
    
                         ],
      "AssignableScopes":  [
                               "/subscriptions/{subscriptionId1}",
                               "/subscriptions/{subscriptionId2}",
                               "/subscriptions/{subscriptionId3}"
                           ]
    }
    
    Azure AD中的应用程序角色(这些角色没有“操作”列表,但用于应用程序中的授权逻辑) Microsoft文档-

    目的-这些角色在应用程序清单中为组织正在开发并在Azure Active Directory中注册的应用程序定义。这些角色非常特定于您的应用程序,可以在应用程序的代码中用于为经过身份验证的用户实现授权逻辑

    使用“allowedMemberTypes”,您可以控制谁可以被分配这些角色(给用户、组甚至应用程序)

    然后,您可以从Azure Portal或以编程方式分配角色。 一个简单的方法如下面的屏幕截图所示-

    在尝试实现授权逻辑时,这些角色将作为角色“声明”提供。因此,您可以使用下面的代码检查角色

    if (context.User.HasClaim(ClaimTypes.Role, "Admin")) { ... }
    
    创建应用程序角色并将其用于授权的示例应用程序

    示例 这是JSON,它将作为应用程序清单的一部分

    "appRoles": [
      {
        "allowedMemberTypes": [
          "User"
        ],
        "description": "Creators can create Surveys",
        "displayName": "SurveyCreator",
        "id": "1b4f816e-5eaf-48b9-8613-7923830595ad",
        "isEnabled": true,
        "value": "SurveyCreator"
      },
      {
        "allowedMemberTypes": [
          "User"
        ],
        "description": "Administrators can manage the Surveys in their tenant",
        "displayName": "SurveyAdmin",
        "id": "c20e145e-5459-4a6c-a074-b942bbd4cfe1",
        "isEnabled": true,
        "value": "SurveyAdmin"
      }
    ]
    

    好的,我正在努力解决这个问题。我看到,从广告的应用程序注册中,我可以选择一个应用程序(在我的例子中,它是一个WebAPI)并编辑清单。这应该控制用户可以访问应用程序的内容。我不太确定的是,是否定义了“用户”、“SurveyCreator”和“SurveyAdmin”。(跟我来,我是新手)。我假设“用户”是广告管理员在将用户输入广告时指定的股票用户类型。但是SurveyCreator和SurveyAdmin呢?这些定义在哪里?他们是团体还是角色?我还必须创建自定义角色吗?我知道了,你在应用程序注册刀片中添加了角色,并在企业应用程序bladeI中为用户分配了角色。我希望你能完成这一任务。您需要通过编辑json将角色添加到应用程序清单中。您可以添加您喜欢的任何角色,因为这仅适用于您的应用程序。如您所说,在企业应用程序刀片中将角色分配给用户。请遵循此处的实现部分—另外,看看这个示例应用程序,它不仅为应用程序创建了一些自定义角色,而且在进一步的代码中使用它们来做出授权决策。