Compartilhar via


Implantar um aplicativo do Service Fabric com identidade gerenciada atribuída pelo sistema

Observação

Não há suporte para habilitar a identidade de um aplicativo existente implantado inicialmente com os cmdlets do Azure.

Para acessar o recurso de identidade gerenciada para aplicativos do Azure Service Fabric, primeiro é preciso habilitar o Serviço de Token da Identidade Gerenciada no cluster. Esse serviço é responsável pela autenticação de aplicativos do Service Fabric usando as respectivas identidades gerenciadas, bem como pela obtenção de tokens de acesso em nome dos aplicativos. Após a habilitar o serviço, será possível vê-lo na seção Sistema do painel esquerdo do Service Fabric Explorer. Além disso, ele estará em execução ao lado de outros serviços do sistema com o nome fabric:/System/ManagedIdentityTokenService.

Observação

A implantação de aplicativos do Service Fabric com identidades gerenciadas é compatível com a versão da API "2019-06-01-preview" em diante. Também é possível usar a mesma versão da API no tipo de aplicativo, na versão do tipo de aplicativo e nos recursos de serviço. O runtime mínimo compatível com o Service Fabric é a CU2 6.5. Além disso, o ambiente de build/pacote também deverá ter o SDK do Service Fabric .NET no CU2 ou posterior

Identidade gerenciada atribuída pelo sistema

Modelo de aplicativo

Para habilitar o aplicativo usando uma identidade gerenciada atribuída pelo sistema, adicione a propriedade de identidade ao recurso de aplicativo 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": {
        }
      }
    }

Essa propriedade declara, respectivamente, ao Azure Resource Manager, à Identidade Gerenciada e aos Provedores de Recursos do Service Fabric que esse recurso deverá ter uma identidade gerenciada implícita (system assigned).

Pacote de aplicativos e serviço

  1. Atualize o manifesto do aplicativo para adicionar um elemento ManagedIdentity à seção Entidades de Segurança contendo uma entrada única, conforme mostrado abaixo:

    ApplicationManifest.xml

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

    Esse elemento mapeia a identidade atribuída ao aplicativo como um recurso para um nome amigável a fim de executar uma atribuição posterior aos serviços que compõem o aplicativo.

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

    ApplicationManifest.xml

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

    Esse elemento atribui a identidade do aplicativo ao serviço. Sem essa atribuição, o serviço não será capaz de acessar a identidade do aplicativo. No snippet acima, a identidade SystemAssigned (uma palavra-chave reservada) é mapeada para obter a definição de serviço com o nome amigável WebAdmin.

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

    ServiceManifest.xml

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

    Esse é o mapeamento equivalente de uma identidade usada em um serviço conforme descrito acima, no entanto, da perspectiva da definição de serviço. A identidade é referenciada aqui pelo respectivo nome amigável (WebAdmin), conforme declarado no manifesto do aplicativo.

Próximas etapas