Partilhar via


Implementar uma aplicação do Service Fabric com uma Identidade Gerida Atribuída pelo Utilizador

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 Azure Resource Manager. Para obter mais informações sobre como implantar o aplicativo Service Fabric por meio do Azure Resource Manager, consulte Gerenciar aplicativos e serviços como recursos do Azure Resource Manager.

Nota

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

A implantação de aplicativos do Service Fabric com Identidade Gerenciada é suportada com a 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.

Identidade atribuída pelo usuário

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

Modelo de aplicação

Para habilitar o aplicativo com identidade Atribuída pelo Usuário, primeiro adicione a propriedade identity ao recurso do aplicativo com o tipo userAssigned e as identidades atribuídas ao usuário referenciado e, em seguida, adicione um objeto managedIdentities dentro da seção de propriedades que contém uma lista de nomes amigáveis ao mapeamento principalId para cada uma das identidades atribuídas ao 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 ao usuário está sendo usado como o nome amigável da identidade gerenciada para o aplicativo. Os exemplos a seguir assumem que o nome amigável real é "AdminUser".

Pacote de aplicação

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

    ApplicationManifest.xml

      <Principals>
        <ManagedIdentities>
          <ManagedIdentity Name="AdminUser" />
        </ManagedIdentities>
      </Principals>
    
  2. Na seção ServiceManifestImport, adicione um IdentityBindingPolicy para o serviço que usa a Identidade Gerenciada. Esta política mapeia a AdminUser identidade 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 de serviço para adicionar uma ManagedIdentity dentro da seção Recursos com o nome correspondente ao ServiceIdentityRef IdentityBindingPolicy no manifesto do aplicativo:

    ServiceManifest.xml

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

Próximos passos