Share via


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

Nota

A ativação da identidade de uma aplicação existente que foi implementada inicialmente com cmdlets do Azure não é suportada.

Para aceder à funcionalidade de identidade gerida das aplicações do Azure Service Fabric, primeiro tem de ativar o Serviço de Tokens de Identidade Gerida no cluster. Este serviço é responsável pela autenticação das aplicações do Service Fabric que utilizam as respetivas identidades geridas e pela obtenção de tokens de acesso em seu nome. Assim que o serviço estiver ativado, pode vê-lo no Service Fabric Explorer na secção Sistema no painel esquerdo, em execução no recurso de infraestrutura de nome:/System/ManagedIdentityTokenService junto a outros serviços do sistema.

Nota

A implementação de aplicações do Service Fabric com identidades geridas é suportada a partir da 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. O runtime mínimo suportado do Service Fabric é de 6,5 CU2. Além disso, o ambiente de compilação/pacote também deve ter o SDK .NET do Service Fabric na CU2 ou superior

Identidade gerida atribuída pelo sistema

Modelo de aplicação

Para ativar a aplicação com uma identidade gerida atribuída pelo sistema, adicione a propriedade de identidade ao recurso da aplicação, com o tipo systemAssigned conforme 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 (ao Azure Resource Manager e aos Fornecedores de Recursos do Service Fabric e identidade gerida, respetivamente, que este recurso deve ter uma identidade implícita (system assigned) gerida.

Pacote de aplicações e serviços

  1. Atualize o manifesto da aplicação para adicionar um elemento ManagedIdentity na secção Principais , que contém uma única entrada, conforme mostrado abaixo:

    ApplicationManifest.xml

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

    Isto mapeia a identidade atribuída à aplicação como um recurso para um nome amigável, para uma atribuição adicional aos serviços que incluem a aplicação.

  2. Na secção ServiceManifestImport correspondente ao serviço ao qual está a ser atribuída a identidade gerida, 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 esta atribuição, o serviço não poderá aceder à identidade da aplicação. No fragmento acima, a SystemAssigned identidade (que é uma palavra-chave reservada) é mapeada para a definição do serviço com o nome WebAdminamigável .

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

    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 do ponto de vista da definição do serviço. A identidade é referenciada aqui pelo nome amigável (WebAdmin), conforme declarado no manifesto da aplicação.

Passos Seguintes