Implementar uma aplicação do Service Fabric com uma Identidade Gerida User-Assigned

Para implementar uma aplicação do Service Fabric com identidade gerida, a aplicação tem de ser implementada através do Azure Resource Manager, normalmente com um modelo de Resource Manager do Azure. Para obter mais informações sobre como implementar a aplicação do Service Fabric através do Azure Resource Manager, veja Gerir aplicações e serviços como recursos do Azure Resource Manager.

Nota

As aplicações que não são implementadas como um recurso do Azure não podem ter Identidades Geridas.

A implementação de aplicações do Service Fabric com Identidade Gerida é suportada com a versão "2019-06-01-preview"da API . Também pode utilizar a mesma versão da API para o tipo de aplicação, a versão do tipo de aplicação e os recursos de serviço.

Identidade do User-Assigned

Para ativar a aplicação com User-Assigned identidade, adicione primeiro a propriedade de identidade ao recurso da aplicação com o tipo userAssigned e as identidades atribuídas pelo utilizador referenciadas. Em seguida, adicione uma secção managedIdentities na secção de propriedades do recurso da aplicação que contém uma lista de nomes amigáveis para mapeamento principalId para cada uma das identidades atribuídas pelo utilizador. Para obter mais informações sobre as Identidades Atribuídas pelo Utilizador , consulte Criar, listar ou eliminar uma identidade gerida atribuída pelo utilizador.

Modelo de aplicação

Para ativar a aplicação com a identidade Atribuída pelo Utilizador, primeiro adicione a propriedade de identidade ao recurso da aplicação com o tipo userAssigned e as identidades atribuídas pelo utilizador referenciado e, em seguida, adicione um objeto managedIdentities dentro da secção de propriedades que contém uma lista de nomes amigáveis para mapeamento de principalId para cada uma das identidades atribuídas pelo utilizador.

{
  "apiVersion": "2019-06-01-preview",
  "type": "Microsoft.ServiceFabric/clusters/applications",
  "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
  "location": "[resourceGroup().location]",
  "dependsOn": [
    "[concat('Microsoft.ServiceFabric/clusters/', parameters('clusterName'), '/applicationTypes/', parameters('applicationTypeName'), '/versions/', parameters('applicationTypeVersion'))]",
    "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName'))]"
  ],
  "identity": {
    "type" : "userAssigned",
    "userAssignedIdentities": {
        "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName'))]": {}
    }
  },
  "properties": {
    "typeName": "[parameters('applicationTypeName')]",
    "typeVersion": "[parameters('applicationTypeVersion')]",
    "parameters": {
    },
    "managedIdentities": [
      {
        "name" : "[parameters('userAssignedIdentityName')]",
        "principalId" : "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName')), '2018-11-30').principalId]"
      }
    ]
  }
}

No exemplo acima, o nome do recurso da identidade atribuída pelo utilizador está a ser utilizado como o nome amigável da identidade gerida da aplicação. Os exemplos seguintes partem do princípio de que o nome amigável real é "AdminUser".

Pacote de aplicação

  1. Para cada identidade definida na managedIdentities secção no modelo Resource Manager do Azure, adicione uma <ManagedIdentity> etiqueta no manifesto da aplicação na secção Principais. O Name atributo tem de corresponder à name propriedade definida na managedIdentities secção.

    ApplicationManifest.xml

      <Principals>
        <ManagedIdentities>
          <ManagedIdentity Name="AdminUser" />
        </ManagedIdentities>
      </Principals>
    
  2. Na secção ServiceManifestImport , adicione um IdentityBindingPolicy para o serviço que utiliza a Identidade Gerida. Esta política mapeia a AdminUser identidade para um nome de identidade específico do serviço que tem de ser adicionado ao manifesto de serviço mais tarde.

    ApplicationManifest.xml

      <ServiceManifestImport>
        <Policies>
          <IdentityBindingPolicy ServiceIdentityRef="WebAdmin" ApplicationIdentityRef="AdminUser" />
        </Policies>
      </ServiceManifestImport>
    
  3. Atualize o manifesto do serviço para adicionar um ManagedIdentity na secção Recursos com o nome correspondente ao ServiceIdentityRefIdentityBindingPolicy no manifesto da aplicação:

    ServiceManifest.xml

      <Resources>
        ...
        <ManagedIdentities DefaultIdentity="WebAdmin">
          <ManagedIdentity Name="WebAdmin" />
        </ManagedIdentities>
      </Resources>
    

Passos seguintes