Sdílet prostřednictvím


Nasazení aplikace se spravovanou identitou do spravovaného clusteru Service Fabric

Pokud chcete nasadit aplikaci Service Fabric se spravovanou identitou, musí být aplikace nasazená prostřednictvím Azure Resource Manageru, obvykle pomocí šablony Azure Resource Manageru. Další informace o nasazení aplikace Service Fabric prostřednictvím Azure Resource Manageru najdete v tématu Nasazení aplikace do spravovaného clusteru pomocí Azure Resource Manageru.

Poznámka:

Aplikace, které nejsou nasazené jako prostředek Azure, nemůžou mít spravované identity.

Nasazení aplikace Service Fabric se spravovanou identitou se podporuje s verzí "2021-05-01" rozhraní API ve spravovaných clusterech.

Ukázkové šablony spravovaného clusteru jsou k dispozici tady: Šablony spravovaného clusteru Service Fabric

Podpora spravované identity ve spravovaném clusteru Service Fabric

Když je aplikace Service Fabric nakonfigurovaná se spravovanými identitami pro prostředky Azure a nasazená do clusteru, aktivuje automatickou konfiguraci služby tokenů spravované identity ve spravovaném clusteru Service Fabric. Tato služba zodpovídá za ověřování aplikací Service Fabric pomocí svých spravovaných identit a za získání přístupových tokenů jejich jménem. Jakmile je služba povolená, můžete ji zobrazit v Service Fabric Exploreru v části Systém v levém podokně, která běží pod názvem fabric:/System/ManagedIdentityTokenService.

Poznámka:

Při prvním nasazení aplikace se spravovanými identitami byste měli očekávat jednorázové delší nasazení kvůli automatické změně konfigurace clusteru. U clusteru, který se nachází v zóně, by to mělo trvat 15 minut, než bude zónový cluster trvat 45 minut. Pokud jsou v testovací verzi nějaká další nasazení, bude muset konfigurace spravované identity počkat, až se dokončí jako první.

Prostředek aplikace podporuje přiřazení systemAssigned nebo UserAssigned i přiřazení, jak je znázorněno v následujícím fragmentu kódu.

{
  "type": "Microsoft.ServiceFabric/managedclusters/applications",
  "apiVersion": "2021-05-01",
  "identity": {
    "type": "SystemAssigned",
    "userAssignedIdentities": {}
  },
}

Kompletní referenční informace k JSON

Identita přiřazená uživatelem

Pokud chcete povolit aplikaci s identitou přiřazenou uživatelem, nejprve přidejte vlastnost identity do prostředku aplikace s typem userAssigned a odkazovanými identitami přiřazenými uživatelem. Potom do oddílu vlastností pro prostředek aplikace přidejte oddíl managedIdentities, který obsahuje seznam popisných názvů na mapování principalId pro každou identitu přiřazenou uživatelem. Další informace o identitách přiřazených uživatelem najdete v tématu Vytvoření, výpis nebo odstranění spravované identity přiřazené uživatelem.

Šablona aplikace

Chcete-li povolit aplikaci s identitou přiřazenou uživatelem, nejprve přidejte vlastnost identity do prostředku aplikace s typem userAssigned a odkazované identity přiřazené uživatelem a pak přidejte objekt managedIdentities v části vlastností , který obsahuje seznam popisného názvu na mapování principalId pro každou z identit přiřazených uživatelem.

{
  "apiVersion": "2021-05-01",
  "type": "Microsoft.ServiceFabric/managedclusters/applications",
  "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
  "location": "[resourceGroup().location]",
  "dependsOn": [
    "[parameters('applicationVersion')]",
    "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName'))]"
  ],
  "identity": {
    "type" : "userAssigned",
    "userAssignedIdentities": {
        "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName'))]": {}
    }
  },
  "properties": {
    "version": "[parameters('applicationVersion')]",
    "parameters": {
    },
    "managedIdentities": [
      {
        "name" : "[parameters('userAssignedIdentityName')]",
        "principalId" : "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName')), '2018-11-30').principalId]"
      }
    ]
  }
}

V příkladu nad názvem prostředku identity přiřazené uživatelem se používá jako popisný název spravované identity pro aplikaci. Následující příklady předpokládají, že skutečný popisný název je "Správa User".

Balíček aplikace

  1. Pro každou identitu definovanou v oddílu managedIdentities v šabloně Azure Resource Manageru přidejte <ManagedIdentity> značku v manifestu aplikace v části Objekty zabezpečení. Atribut Name musí odpovídat name vlastnosti definované v oddílu managedIdentities .

    ApplicationManifest.xml

      <Principals>
        <ManagedIdentities>
          <ManagedIdentity Name="AdminUser" />
        </ManagedIdentities>
      </Principals>
    
  2. V části ServiceManifestImport přidejte IdentituBindingPolicy pro službu, která používá spravovanou identitu. Tato zásada mapuje AdminUser identitu na název identity specifické pro službu, který je potřeba přidat do manifestu služby později.

    ApplicationManifest.xml

      <ServiceManifestImport>
        <Policies>
          <IdentityBindingPolicy ServiceIdentityRef="WebAdmin" ApplicationIdentityRef="AdminUser" />
        </Policies>
      </ServiceManifestImport>
    
  3. Aktualizujte manifest služby tak, aby v části Resources přidal managedIdentity název odpovídající ServiceIdentityRef názvu v IdentityBindingPolicy manifestu aplikace:

    ServiceManifest.xml

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

Spravovaná identita přiřazená systémem

Šablona aplikace

Pokud chcete aplikaci povolit se spravovanou identitou přiřazenou systémem, přidejte do prostředku aplikace vlastnost identity s typem systemAssigned, jak je znázorněno v následujícím příkladu:

    {
      "apiVersion": "2021-05-01",
      "type": "Microsoft.ServiceFabric/managedclusters/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": {
        }
      }
    }

Tato vlastnost deklaruje (pro Azure Resource Manager a spravované identity a poskytovatele prostředků Service Fabric, v uvedeném pořadí), že tento prostředek má implicitní (system assigned) spravovanou identitu.

Balíček aplikací a služeb

  1. Aktualizujte manifest aplikace tak, aby v části Objekty zabezpečení přidal element ManagedIdentity obsahující jednu položku, jak je znázorněno níže:

    ApplicationManifest.xml

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

    Tím se identita přiřazená k aplikaci mapuje jako prostředek na popisný název pro další přiřazení ke službám, které tvoří aplikaci.

  2. V části ServiceManifestImport odpovídající službě, která má přiřazenu spravovanou identitu, přidejte element IdentityBindingPolicy, jak je uvedeno níže:

    ApplicationManifest.xml

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

    Tento element přiřadí identitu aplikace službě; bez tohoto přiřazení nebude mít služba přístup k identitě aplikace. Ve výše uvedeném SystemAssigned fragmentu kódu se identita (což je vyhrazené klíčové slovo) mapuje na definici služby pod popisným názvem WebAdmin.

  3. Aktualizujte manifest služby tak, aby do oddílu Resources přidal element ManagedIdentity s názvem odpovídajícím hodnotě ServiceIdentityRef nastavení z IdentityBindingPolicy definice v manifestu aplikace:

    ServiceManifest.xml

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

    Jedná se o ekvivalentní mapování identity na službu, jak je popsáno výše, ale z pohledu definice služby. Identita je zde odkazována popisným názvem (WebAdmin), jak je deklarováno v manifestu aplikace.

Další kroky