Partilhar via


Implementar uma aplicação do Service Fabric com identidade gerida atribuída pelo sistema

Nota

Não há suporte para habilitar a identidade para um aplicativo existente que foi implantado inicialmente usando cmdlets do Azure.

Para acessar o recurso de identidade gerenciada para aplicativos do Azure Service Fabric, você deve primeiro habilitar o Serviço de Token de Identidade Gerenciada no cluster. Esse serviço é responsável pela autenticação de aplicativos do Service Fabric usando suas identidades gerenciadas e pela obtenção de tokens de acesso em seu nome. Depois que o serviço estiver habilitado, você poderá vê-lo no Service Fabric Explorer na seção Sistema no painel esquerdo, executando sob o nome fabric:/System/ManagedIdentityTokenService ao lado de outros serviços do sistema.

Nota

A implantação de aplicativos do Service Fabric com identidades gerenciadas é suportada a partir da versão "2019-06-01-preview"da API. Você também pode usar a mesma versão da API para o tipo de aplicativo, versão do tipo de aplicativo e recursos de serviço. O tempo de execução mínimo suportado do Service Fabric é 6,5 CU2. Além disso, o ambiente de compilação/pacote também deve ter o SDK .NET do Service Fabric em CU2 ou superior

Identidade gerida atribuída pelo sistema

Modelo de aplicação

Para habilitar o aplicativo com uma identidade gerenciada atribuída pelo sistema, adicione a propriedade identity ao recurso do aplicativo, com o tipo systemAssigned como mostrado no exemplo abaixo:

    {
      "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'))]"
      ],
      "identity": {
        "type" : "systemAssigned"
      },
      "properties": {
        "typeName": "[parameters('applicationTypeName')]",
        "typeVersion": "[parameters('applicationTypeVersion')]",
        "parameters": {
        }
      }
    }

Esta propriedade declara (para o Azure Resource Manager e os Managed Identity e Service Fabric Resource Providers, respectivamente), que esse recurso deve ter uma identidade gerenciada implícita (system assigned).

Pacote de aplicativos e serviços

  1. Atualize o manifesto do aplicativo para adicionar um elemento ManagedIdentity na seção Principals , contendo uma única entrada, conforme mostrado abaixo:

    ApplicationManifest.xml

    <Principals>
      <ManagedIdentities>
        <ManagedIdentity Name="SystemAssigned" />
      </ManagedIdentities>
    </Principals>
    

    Isso mapeia a identidade atribuída ao aplicativo como um recurso para um nome amigável, para posterior atribuição aos serviços que compõem o aplicativo.

  2. Na seção ServiceManifestImport correspondente ao serviço ao qual está sendo atribuída a identidade gerenciada, adicione um elemento IdentityBindingPolicy, conforme indicado abaixo:

    ApplicationManifest.xml

      <ServiceManifestImport>
        <Policies>
          <IdentityBindingPolicy ServiceIdentityRef="WebAdmin" ApplicationIdentityRef="SystemAssigned" />
        </Policies>
      </ServiceManifestImport>
    

    Este elemento atribui a identidade da aplicação ao serviço; Sem essa atribuição, o serviço não poderá acessar a identidade do aplicativo. No trecho acima, a SystemAssigned identidade (que é uma palavra-chave reservada) é mapeada para a definição do serviço sob o nome WebAdminamigável.

  3. Atualize o manifesto do serviço para adicionar um elemento ManagedIdentity dentro da seção Recursos com o nome correspondente ao valor da ServiceIdentityRef configuração da definição no manifesto do IdentityBindingPolicy aplicativo:

    ServiceManifest.xml

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

    Este é o mapeamento equivalente de uma identidade para um serviço, conforme descrito acima, mas da perspetiva da definição de serviço. A identidade é aqui referenciada pelo seu nome amigável (WebAdmin), conforme declarado no manifesto do pedido.

Passos Seguintes