Aracılığıyla paylaş


Yönetilen Kimlikli bir uygulamayı Service Fabric yönetilen kümesine dağıtma

Yönetilen kimliğe sahip bir Service Fabric uygulamasını dağıtmak için uygulamanın Azure Resource Manager aracılığıyla dağıtılması gerekir ve genellikle bir Azure Resource Manager şablonuyla dağıtılmalıdır. Azure Resource Manager aracılığıyla Service Fabric uygulamasını dağıtma hakkında daha fazla bilgi için bkz . Azure Resource Manager kullanarak yönetilen kümeye uygulama dağıtma.

Not

Azure kaynağı olarak dağıtılmayan uygulamalarda Yönetilen Kimlikler olamaz .

Yönetilen Kimlik ile Service Fabric uygulama dağıtımı, yönetilen kümelerde API sürümüyle "2021-05-01" desteklenir.

Örnek yönetilen küme şablonlarına buradan ulaşabilirsiniz: Service Fabric yönetilen küme şablonları

Service Fabric yönetilen kümesinde yönetilen kimlik desteği

Bir Service Fabric uygulaması Azure kaynakları için Yönetilen kimliklerle yapılandırıldığında ve kümeye dağıtıldığında, Service Fabric yönetilen kümesinde Yönetilen Kimlik Belirteci Hizmeti'ninotomatik yapılandırmasını tetikler. Bu hizmet, yönetilen kimliklerini kullanarak Service Fabric uygulamalarının kimlik doğrulamasından ve onların adına erişim belirteçleri almakla sorumludur. Hizmet etkinleştirildikten sonra, service Fabric Explorer'da sol bölmedeki Sistem bölümünün altında fabric:/System/ManagedIdentityTokenService adı altında çalıştığını görebilirsiniz.

Not

Bir uygulama Yönetilen Kimliklerle ilk kez dağıtıldığında, otomatik küme yapılandırma değişikliği nedeniyle bir kerelik daha uzun bir dağıtım görmeyi beklemeniz gerekir. Bunun bölgesel küme için 15 dakika ile bölgeye yayılan bir küme için 45 dakika sürmesini beklemeniz gerekir. Uçuşta başka dağıtımlar varsa, Yönetilen Kimlik yapılandırmasının önce bunların tamamlanmasını beklemesi gerekir.

Uygulama kaynağı hem SystemAssigned hem de UserAssigned atamasını destekler ve atama aşağıdaki kod parçacığında gösterildiği gibi yapılabilir.

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

Tam JSON başvurusu

Kullanıcı Tarafından Atanan Kimlik

Uygulamayı Kullanıcı Tarafından Atanan kimlikle etkinleştirmek için önce userAssigned türüne ve başvuruda bulunan kullanıcı tarafından atanan kimliklere sahip kimlik özelliğini uygulama kaynağına ekleyin. Ardından uygulama kaynağının özellikler bölümünün içine kullanıcı tarafından atanan kimliklerin her biri için principalId eşlemesine kolay ad listesini içeren bir managedIdentities bölümü ekleyin. Kullanıcı Tarafından Atanan Kimlikler hakkında daha fazla bilgi için bkz . Kullanıcı tarafından atanan yönetilen kimliği oluşturma, listeleme veya silme.

Uygulama şablonu

Kullanıcı Tarafından Atanan kimlikle uygulamayı etkinleştirmek için, önce userAssigned türüne ve başvuruda bulunan kullanıcı tarafından atanan kimliklere sahip uygulama kaynağına kimlik özelliği ekleyin, ardından özellikler bölümünün içine kullanıcı tarafından atanan kimliklerin her biri için principalId eşlemesine kolay ad listesini içeren bir managedIdentities nesnesi ekleyin.

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

Yukarıdaki örnekte kullanıcı tarafından atanan kimliğin kaynak adı, uygulama için yönetilen kimliğin kolay adı olarak kullanılıyor. Aşağıdaki örneklerde gerçek kolay adın "Yönetici User" olduğu varsayılır.

Uygulama paketi

  1. Azure Resource Manager şablonunun managedIdentities bölümünde tanımlanan her kimlik için, Sorumlular bölümünün altındaki uygulama bildirimine bir <ManagedIdentity> etiket ekleyin. özniteliğinin Name bölümünde tanımlanan özelliğiyle eşleşmesi namemanagedIdentities gerekir.

    ApplicationManifest.xml

      <Principals>
        <ManagedIdentities>
          <ManagedIdentity Name="AdminUser" />
        </ManagedIdentities>
      </Principals>
    
  2. ServiceManifestImport bölümünde, Yönetilen Kimliği kullanan hizmet için bir IdentityBindingPolicy ekleyin. Bu ilke, AdminUser kimliği daha sonra hizmet bildirimine eklenmesi gereken hizmete özgü bir kimlik adıyla eşler.

    ApplicationManifest.xml

      <ServiceManifestImport>
        <Policies>
          <IdentityBindingPolicy ServiceIdentityRef="WebAdmin" ApplicationIdentityRef="AdminUser" />
        </Policies>
      </ServiceManifestImport>
    
  3. Hizmet bildirimini güncelleştirerek Kaynaklar bölümünün içine uygulama bildirimindeki IdentityBindingPolicy adıyla eşleşen ServiceIdentityRef bir ManagedIdentity ekleyin:

    ServiceManifest.xml

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

Sistem tarafından atanan yönetilen kimlik

Uygulama şablonu

Uygulamayı sistem tarafından atanan yönetilen kimlikle etkinleştirmek için, aşağıdaki örnekte gösterildiği gibi systemAssigned türüyle kimlik özelliğini uygulama kaynağına ekleyin:

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

Bu özellik (Azure Resource Manager'a ve Sırasıyla Yönetilen Kimlik ve Service Fabric Kaynak Sağlayıcılarına) bu kaynağın örtük (system assigned) yönetilen bir kimliğe sahip olduğunu bildirir.

Uygulama ve hizmet paketi

  1. Aşağıda gösterildiği gibi tek bir giriş içeren Sorumlular bölümünde bir ManagedIdentity öğesi eklemek için uygulama bildirimini güncelleştirin:

    ApplicationManifest.xml

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

    Bu, uygulamayı oluşturan hizmetlere daha fazla atama için uygulamaya kaynak olarak atanan kimliği kolay bir ada eşler.

  2. Yönetilen kimliğe atanan hizmete karşılık gelen ServiceManifestImport bölümünde, aşağıda gösterildiği gibi bir IdentityBindingPolicy öğesi ekleyin:

    ApplicationManifest.xml

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

    Bu öğe, uygulamanın kimliğini hizmete atar; bu atama olmadan hizmet, uygulamanın kimliğine erişemez. Yukarıdaki kod parçacığında, SystemAssigned kimlik (ayrılmış anahtar sözcüktür) kolay adı WebAdminaltında hizmetin tanımına eşlenir.

  3. Hizmet bildirimini, Kaynaklar bölümünün içine uygulama bildirimindeki tanımdaki IdentityBindingPolicy ayarın ServiceIdentityRef değeriyle eşleşen adla bir ManagedIdentity öğesi eklemek için güncelleştirin:

    ServiceManifest.xml

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

    Bu, yukarıda açıklandığı gibi bir kimliğin hizmete eşdeğer eşlemesidir, ancak hizmet tanımı açısından bakıldığında. Kimlik, burada uygulama bildiriminde belirtildiği gibi kolay adıyla ()WebAdmin başvurulur.

Sonraki adımlar