Compartilhar via


Implantar aplicativo do Service Fabric com identidade gerenciada atribuída pelo usuário

Para implantar um aplicativo do Service Fabric com identidade gerenciada, o aplicativo precisa ser implantado por meio do Azure Resource Manager, normalmente com um modelo do ARM. Para obter mais informações sobre como implantar o aplicativo Service Fabric por meio do ARM, confira Gerenciar aplicativos e serviços como recurso do ARM.

Observação

Os aplicativos que não são implantados como um recurso do Azure não podem ter Identidades Gerenciadas.

A implantação de aplicativo do Service Fabric com identidade gerenciada tem suporte com a versão de API "2019-06-01-preview". 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.

Identidade atribuída pelo usuário

Para habilitar o aplicativo com a identidade atribuída pelo usuário, primeiro adicione a propriedade Identity ao recurso de aplicativo com o tipo userAssigned e as identidades atribuídas pelo usuário referenciadas. Depois, adicione uma seção managedIdentities dentro da seção properties para o recurso application que contém uma lista de nomes amigáveis para o mapeamento de principalId para cada uma das identidades atribuídas pelo usuário. Para obter mais informações sobre identidades atribuídas pelo usuário, confira Criar, listar ou excluir uma identidade gerenciada atribuída pelo usuário.

Modelo de aplicativo

Para habilitar o aplicativo com a identidade atribuída pelo usuário, primeiro adicione a propriedade identity ao recurso de aplicativo com o tipo userAssigned e as identidades atribuídas pelo usuário referenciadas e, em seguida, adicione um objeto managedIdentities dentro da seção properties que contém uma lista de nome amigável ao mapeamento principalId para cada uma das identidades atribuídas pelo usuário.

{
  "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 usuário está sendo usado como o nome amigável da identidade gerenciada para o aplicativo. Os exemplos a seguir presumem que o nome amigável real é "AdminUser".

Pacote de aplicativos

  1. Para cada identidade definida na seção managedIdentities no modelo do ARM, adicione uma marca <ManagedIdentity> ao manifesto do aplicativo na seção Principals. O atributo Name precisa corresponder à propriedade name definida na seção managedIdentities.

    ApplicationManifest.xml

      <Principals>
        <ManagedIdentities>
          <ManagedIdentity Name="AdminUser" />
        </ManagedIdentities>
      </Principals>
    
  2. Na seção ServiceManifestImport, adicione uma IdentityBindingPolicy para o serviço que usa a identidade gerenciada. Essa política mapeia a identidade AdminUser para um nome de identidade específico do serviço que precisa ser adicionado ao manifesto do serviço posteriormente.

    ApplicationManifest.xml

      <ServiceManifestImport>
        <Policies>
          <IdentityBindingPolicy ServiceIdentityRef="WebAdmin" ApplicationIdentityRef="AdminUser" />
        </Policies>
      </ServiceManifestImport>
    
  3. Atualize o manifesto do serviço para adicionar uma ManagedIdentity dentro da seção Resources com um nome correspondente à ServiceIdentityRef na IdentityBindingPolicy do manifesto do aplicativo:

    ServiceManifest.xml

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

Próximas etapas