Wdrażanie aplikacji usługi Service Fabric przy użyciu tożsamości zarządzanej User-Assigned

Aby wdrożyć aplikację usługi Service Fabric z tożsamością zarządzaną, należy wdrożyć aplikację za pośrednictwem usługi Azure Resource Manager, zazwyczaj przy użyciu szablonu usługi Azure Resource Manager. Aby uzyskać więcej informacji na temat wdrażania aplikacji usługi Service Fabric za pośrednictwem usługi Azure Resource Manager, zobacz Zarządzanie aplikacjami i usługami jako zasobami usługi Azure Resource Manager.

Uwaga

Aplikacje, które nie są wdrażane jako zasób platformy Azure , nie mogą mieć tożsamości zarządzanych.

Wdrażanie aplikacji usługi Service Fabric z tożsamością zarządzaną jest obsługiwane w wersji "2019-06-01-preview"interfejsu API . Możesz również użyć tej samej wersji interfejsu API dla typu aplikacji, wersji typu aplikacji i zasobów usługi.

User-Assigned Identity

Aby włączyć aplikację z tożsamością User-Assigned, najpierw dodaj właściwość tożsamości do zasobu aplikacji z typem userAssigned i przywoływane tożsamości przypisane przez użytkownika. Następnie dodaj sekcję managedIdentities w sekcji właściwości zasobu aplikacji , która zawiera listę przyjaznych nazw mapowania principalId dla każdej tożsamości przypisanej przez użytkownika. Aby uzyskać więcej informacji na temat tożsamości przypisanych przez użytkownika , zobacz Tworzenie, wyświetlanie listy lub usuwanie tożsamości zarządzanej przypisanej przez użytkownika.

Szablon aplikacji

Aby włączyć aplikację z tożsamością przypisaną przez użytkownika, najpierw dodaj właściwość tożsamości do zasobu aplikacji z typem userAssigned i przywoływane tożsamości przypisane przez użytkownika, a następnie dodaj obiekt managedIdentities wewnątrz sekcji właściwości , która zawiera listę przyjaznych nazw do mapowania principalId dla każdej tożsamości przypisanej przez użytkownika.

{
  "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]"
      }
    ]
  }
}

W powyższym przykładzie nazwa zasobu tożsamości przypisanej przez użytkownika jest używana jako przyjazna nazwa tożsamości zarządzanej dla aplikacji. W poniższych przykładach założono, że rzeczywista przyjazna nazwa to "AdminUser".

Pakiet aplikacji

  1. Dla każdej tożsamości zdefiniowanej managedIdentities w sekcji w szablonie usługi Azure Resource Manager dodaj <ManagedIdentity> tag w manifeście aplikacji w sekcji Podmioty zabezpieczeń. Atrybut Name musi być zgodny z właściwością zdefiniowaną namemanagedIdentities w sekcji .

    ApplicationManifest.xml

      <Principals>
        <ManagedIdentities>
          <ManagedIdentity Name="AdminUser" />
        </ManagedIdentities>
      </Principals>
    
  2. W sekcji ServiceManifestImport dodaj element IdentityBindingPolicy dla usługi korzystającej z tożsamości zarządzanej. Te zasady mapują AdminUser tożsamość na nazwę tożsamości specyficzną dla usługi, która musi zostać później dodana do manifestu usługi.

    ApplicationManifest.xml

      <ServiceManifestImport>
        <Policies>
          <IdentityBindingPolicy ServiceIdentityRef="WebAdmin" ApplicationIdentityRef="AdminUser" />
        </Policies>
      </ServiceManifestImport>
    
  3. Zaktualizuj manifest usługi, aby dodać identyfikator ManagedIdentity w sekcji Zasoby przy użyciu nazwy zgodnej ServiceIdentityRef z nazwą w IdentityBindingPolicy manifeście aplikacji:

    ServiceManifest.xml

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

Następne kroki