Aracılığıyla paylaş


Azure Synapse için yönetilen kimlik

Bu makale, yönetilen kimliğin (eski adıyla Yönetilen Hizmet Kimliği/MSI) ve Azure Synapse’ın nasıl çalıştığını anlamanıza yardımcı olur.

Not

Azure ile etkileşim kurmak için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz . Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Genel bakış

Yönetilen kimlikler, kimlik bilgilerini yönetme gereksinimini ortadan kaldırır. Yönetilen kimlikler, Microsoft Entra kimlik doğrulamasını destekleyen kaynaklara bağlanırken hizmet örneği için bir kimlik sağlar. Örneğin, hizmet, Azure Key Vault gibi kaynaklara erişmek için yönetilen kimlik kullanabilir ve burada veri yöneticileri kimlik bilgilerini güvenli bir şekilde depolayabilir veya depolama hesaplarına erişebilir. Hizmet, Microsoft Entra belirteçleri almak için yönetilen kimliği kullanır.

Desteklenen iki tür yönetilen kimlik vardır:

  • Sistem tarafından atanan: Yönetilen kimliği doğrudan bir hizmet örneğinde etkinleştirebilirsiniz. Hizmet oluşturulurken sistem tarafından atanan yönetilen kimliğe izin verdiğinizde, Microsoft Entra içinde, söz konusu hizmet örneğinin yaşam döngüsüne bağlı bir kimlik oluşturulur. Tasarım gereği, yalnızca bu Azure kaynağı Microsoft Entra ID’den belirteç istemek için bu kimliği kullanabilir. Bu nedenle, kaynak silindiğinde, Azure sizin için kimliği otomatik olarak siler. Azure Synapse Analytics, Synapse çalışma alanıyla birlikte sistem tarafından atanan yönetilen kimliğin oluşturulmasını gerektirir.
  • Kullanıcı tarafından atanan: Yönetilen kimliği tek başına bir Azure kaynağı olarak da oluşturabilirsiniz. Kullanıcı tarafından atanan bir yönetilen kimlik oluşturabilir ve bunu Synapse çalışma alanının bir veya daha fazla örneğine atayabilirsiniz. Kullanıcı tarafından atanan yönetilen kimliklerde kimlik, onu kullanan kaynaklardan ayrı olarak yönetilir.

Yönetilen kimlik aşağıdaki avantajları sağlar:

  • Kimlik bilgilerini Azure Key Vault'da depolama; bu kimlik, Azure Key Vault kimlik doğrulaması için kullanılır.
  • Azure Blob depolama, Azure Veri Gezgini, Azure Data Lake Storage 1. Nesil, Azure Data Lake Storage 2. Nesil, Azure SQL Database, Azure SQL Yönetilen Örneği, Azure Synapse Analytics, REST, Databricks etkinliği, Web etkinliği ve daha fazlasını içeren, yönetilen kimlik doğrulamasını kullanarak veri depolarına veya hesaplamalara erişin. Ayrıntılar için bağlayıcı ve etkinlik makalelerine bakın.
  • Yönetilen kimlik, Azure Key Vault’ta depolanan müşteri tarafından yönetilen anahtarı kullanarak verileri ve meta verileri şifrelemek/şifresini çözmek için de kullanılır ve çift şifreleme sağlar.

Sistem tarafından atanan yönetilen kimlik

Not

Sistem tarafından atanan yönetilen kimlik, geriye dönük uyumluluk amacıyla belgelerde ve Synapse Studio kullanıcı arabiriminde başka bir yerde 'Yönetilen kimlik' olarak da adlandırılır. Başvuruda bulunurken 'Kullanıcı tarafından atanan yönetilen kimlik'den açıkça bahsedeceğiz.

Sistem tarafından atanan yönetilen kimlik oluşturma

Sistem tarafından atanan yönetilen kimlik aşağıdaki gibi oluşturulur:

  • Azure portalı veya PowerShell aracılığıyla Synapse çalışma alanı oluştururken, yönetilen kimlik her zaman otomatik olarak oluşturulur.
  • SDK aracılığıyla çalışma alanı oluştururken, yönetilen kimlik yalnızca oluşturma için Synapse çalışma alanı nesnesinde Identity = new ManagedIdentity" belirtirseniz oluşturulur." Bkz. .NET Hızlı Başlangıç - Veri fabrikası oluşturma örneği.
  • REST API aracılığıyla Synapse çalışma alanı oluştururken, yönetilen kimlik yalnızca istek gövdesinde "kimlik" bölümü belirttiğinizde oluşturulur. BKZ. REST hızlı başlangıcı - veri fabrikası oluşturma örneği.

Hizmet örneğinizin yönetilen kimlik yönergesini aldıktan sonra ilişkili bir yönetilen kimliği olmadığını fark ederseniz, bunu program aracılığıyla kimlik başlatıcısı ile güncelleştirerek açıkça bir kimlik oluşturabilirsiniz:

Not

  • Yönetilen kimlik değiştirilemez. Zaten yönetilen kimliğe sahip olan bir hizmet örneğini güncelleştirmenin hiçbir etkisi olmaz ve yönetilen kimlik değişmeden tutulur.
  • Fabrika veya çalışma alanı nesnelerinde "identity" parametresini belirtmeden veya REST istek gövdesinde "identity" bölümü belirtmeden zaten yönetilen kimliği olan bir hizmet örneğini güncelleştirirseniz, hata alırsınız.
  • Bir hizmet örneğini sildiğinizde, ilişkili yönetilen kimlik birlikte silinir.

PowerShell kullanarak sistem tarafından atanan yönetilen kimlik oluşturma

New-AzSynapseWorkspace komutunu çağırdığınızda yeni oluşturulan "Identity" alanlarını görürsünüz:

PS C:\> $creds = New-Object System.Management.Automation.PSCredential ("ContosoUser", $password)
PS C:\> New-AzSynapseWorkspace -ResourceGroupName <resourceGroupName> -Name <workspaceName> -Location <region> -DefaultDataLakeStorageAccountName <storageAccountName> -DefaultDataLakeStorageFileSystem <fileSystemName> -SqlAdministratorLoginCredential $creds

DefaultDataLakeStorage           : Microsoft.Azure.Commands.Synapse.Models.PSDataLakeStorageAccountDetails
ProvisioningState                : Succeeded
SqlAdministratorLogin            : ContosoUser
VirtualNetworkProfile            :
Identity                         : Microsoft.Azure.Commands.Synapse.Models.PSManagedIdentity
ManagedVirtualNetwork            :
PrivateEndpointConnections       : {}
WorkspaceUID                     : <workspaceUid>
ExtraProperties                  : {[WorkspaceType, Normal], [IsScopeEnabled, False]}
ManagedVirtualNetworkSettings    :
Encryption                       : Microsoft.Azure.Commands.Synapse.Models.PSEncryptionDetails
WorkspaceRepositoryConfiguration :
Tags                             :
TagsTable                        :
Location                         : <region>
Id                               : /subscriptions/<subsID>/resourceGroups/<resourceGroupName>/providers/
                                   Microsoft.Synapse/workspaces/<workspaceName>
Name                             : <workspaceName>
Type                             : Microsoft.Synapse/workspaces

REST API kullanarak sistem tarafından atanan yönetilen kimlik oluşturma

Not

Çalışma alanı nesnesinde kimlik parametresini belirtmeden veya REST isteği gövdesinde bir kimlik bölümü sağlamadan zaten yönetilen kimliği olan bir hizmet örneğini güncelleştirmeye çalışırsanız bir hata alırsınız.

İstek gövdesindeki "kimlik" bölümüyle aşağıdaki API'yi çağırın:

PATCH https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Synapse/workspaces/{workspaceName}?api-version=2018-06-01

İstek gövdesi: "identity" ekleyin: { "type": "SystemAssigned" }.

{
    "name": "<workspaceName>",
    "location": "<region>",
    "properties": {},
    "identity": {
        "type": "SystemAssigned"
    }
}

Yanıt: Yönetilen kimlik otomatik olarak oluşturulur ve "kimlik" bölümü buna göre doldurulur.

{
    "name": "<workspaceName>",
    "tags": {},
    "properties": {
        "provisioningState": "Succeeded",
        "loggingStorageAccountKey": "**********",
        "createTime": "2021-09-26T04:10:01.1135678Z",
        "version": "2018-06-01"
    },
    "identity": {
        "type": "SystemAssigned",
        "principalId": "765ad4ab-XXXX-XXXX-XXXX-51ed985819dc",
        "tenantId": "72f988bf-XXXX-XXXX-XXXX-2d7cd011db47"
    },
    "id": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Synapse/workspaces/<workspaceName>",
    "type": "Microsoft.Synapse/workspaces",
    "location": "<region>"
}

Azure Resource Manager şablonu kullanarak sistem tarafından atanan yönetilen kimlik oluşturma

Şablon: add "identity": { "type": "SystemAssigned" }.

{
    "contentVersion": "1.0.0.0",
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "resources": [{
        "name": "<workspaceName>",
        "apiVersion": "2018-06-01",
        "type": "Microsoft.Synapse/workspaces",
        "location": "<region>",
        "identity": {
            "type": "SystemAssigned"
        }
    }]
}

SDK kullanarak sistem tarafından atanan yönetilen kimlik oluşturma

Workspace workspace = new Workspace
{
    Identity = new ManagedIdentity
    {
        Type = ResourceIdentityType.SystemAssigned
    },
    DefaultDataLakeStorage = new DataLakeStorageAccountDetails
    {
        AccountUrl = <defaultDataLakeStorageAccountUrl>,
        Filesystem = <DefaultDataLakeStorageFilesystem>
    },
    SqlAdministratorLogin = <SqlAdministratorLoginCredentialUserName>
    SqlAdministratorLoginPassword = <SqlAdministratorLoginCredentialPassword>,
    Location = <region>
};
client.Workspaces.CreateOrUpdate(resourceGroupName, workspaceName, workspace);

Sistem tarafından atanan yönetilen kimliği alma

Yönetilen kimliği Azure portalından veya program aracılığıyla alabilirsiniz. Aşağıdaki bölümlerde bazı örnekler gösterilmektedir.

İpucu

Yönetilen kimliği görmüyorsanız, hizmet örneğinizi güncelleştirerek yönetilen kimlik oluşturun.

Azure portalını kullanarak sistem tarafından atanan yönetilen kimliği alma

Yönetilen kimlik bilgilerini Azure portalından bulabilirsiniz:> Synapse çalışma alanınız -> Özellikler.

Synapse çalışma alanının sistem tarafından yönetilen kimlik nesne kimliğini içeren Azure portalını gösterir.

  • Yönetilen Kimlik Nesne Kimliği

Yönetilen kimlik bilgileri, Azure Blob, Azure Data Lake Storage, Azure Key Vault gibi yönetilen kimlik kimlik doğrulamasını destekleyen bağlı hizmet oluşturduğunuzda da gösterilir.

İzinleri vermek için şu adımları izleyin. Ayrıntılı adımlar için bkz. Azure portalı kullanarak Azure rolleri atama.

  1. Erişim denetimi (IAM) öğesini seçin.

  2. Ekle>Rol ataması ekle’yi seçin.

    Rol ataması ekle menüsünün açık olduğu Erişim denetimi (IAM) sayfasını gösteren ekran görüntüsü.

  3. Üyeler sekmesinde Yönetilen kimlik öğesini ve ardından Üye seç öğesini seçin.

  4. Azure aboneliği seçin.

  5. Sistem tarafından atanan yönetilen kimlik'in altında Synapse çalışma alanını ve ardından bir çalışma alanı seçin. Bu kimliği bulmak için nesne kimliğini veya çalışma alanı adını da (yönetilen kimlik adı olarak) kullanabilirsiniz. Yönetilen kimliğin uygulama kimliğini almak için PowerShell'i kullanın.

  6. Gözden geçirme + atama sekmesinde Gözden geçir + ata’yı seçerek rolü atayın.

PowerShell kullanarak sistem tarafından atanan yönetilen kimliği alma

Yönetilen kimlik sorumlusu kimliği ve kiracı kimliği, belirli bir hizmet örneğini aşağıdaki gibi aldığınızda döndürülür. Erişim vermek için PrincipalId değerini kullanın:

PS C:\> (Get-AzSynapseWorkspace -ResourceGroupName <resourceGroupName> -Name <workspaceName>).Identity

IdentityType   PrincipalId                          TenantId                            
------------   -----------                          --------                            
SystemAssigned cadadb30-XXXX-XXXX-XXXX-ef3500e2ff05 72f988bf-XXXX-XXXX-XXXX-2d7cd011db47

Uygulama kimliğini, sorumlu kimliğin üzerine kopyalayıp parametre olarak asıl kimlikli Microsoft Entra ID komutunun altında çalıştırarak alabilirsiniz.

PS C:\> Get-AzADServicePrincipal -ObjectId cadadb30-XXXX-XXXX-XXXX-ef3500e2ff05

ServicePrincipalNames : {76f668b3-XXXX-XXXX-XXXX-1b3348c75e02, https://identity.azure.net/P86P8g6nt1QxfPJx22om8MOooMf/Ag0Qf/nnREppHkU=}
ApplicationId         : 76f668b3-XXXX-XXXX-XXXX-1b3348c75e02
DisplayName           : <workspaceName>
Id                    : cadadb30-XXXX-XXXX-XXXX-ef3500e2ff05
Type                  : ServicePrincipal

REST API kullanarak yönetilen kimliği alma

Yönetilen kimlik sorumlusu kimliği ve kiracı kimliği, belirli bir hizmet örneğini aşağıdaki gibi aldığınızda döndürülür.

İstekte aşağıdaki API'yi çağırın:

GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Synapse/workspaces/{workspaceName}?api-version=2018-06-01

Yanıt: Aşağıdaki örnekte gösterildiği gibi yanıt alırsınız. "Kimlik" bölümü buna göre doldurulur.

{
  "properties": {
    "defaultDataLakeStorage": {
      "accountUrl": "https://exampledatalakeaccount.dfs.core.windows.net",
      "filesystem": "examplefilesystem"
    },
    "encryption": {
      "doubleEncryptionEnabled": false
    },
    "provisioningState": "Succeeded",
    "connectivityEndpoints": {
      "web": "https://web.azuresynapse.net?workspace=%2fsubscriptions%2{subscriptionId}%2fresourceGroups%2f{resourceGroupName}%2fproviders%2fMicrosoft.Synapse%2fworkspaces%2f{workspaceName}",
      "dev": "https://{workspaceName}.dev.azuresynapse.net",
      "sqlOnDemand": "{workspaceName}-ondemand.sql.azuresynapse.net",
      "sql": "{workspaceName}.sql.azuresynapse.net"
    },
    "managedResourceGroupName": "synapseworkspace-managedrg-f77f7cf2-XXXX-XXXX-XXXX-c4cb7ac3cf4f",
    "sqlAdministratorLogin": "sqladminuser",
    "privateEndpointConnections": [],
    "workspaceUID": "e56f5773-XXXX-XXXX-XXXX-a0dc107af9ea",
    "extraProperties": {
      "WorkspaceType": "Normal",
      "IsScopeEnabled": false
    },
    "publicNetworkAccess": "Enabled",
    "cspWorkspaceAdminProperties": {
      "initialWorkspaceAdminObjectId": "3746a407-XXXX-XXXX-XXXX-842b6cf1fbcc"
    },
    "trustedServiceBypassEnabled": false
  },
  "type": "Microsoft.Synapse/workspaces",
  "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Synapse/workspaces/{workspaceName}",
  "location": "eastus",
  "name": "{workspaceName}",
  "identity": {
    "type": "SystemAssigned",
    "tenantId": "72f988bf-XXXX-XXXX-XXXX-2d7cd011db47",
    "principalId": "cadadb30-XXXX-XXXX-XXXX-ef3500e2ff05"
  },
  "tags": {}
}

İpucu

Yönetilen kimliği bir ARM şablonundan almak için ARM JSON'a bir çıkışlar bölümü ekleyin:

{
    "outputs":{
        "managedIdentityObjectId":{
            "type":"string",
            "value":"[reference(resourceId('Microsoft.Synapse/workspaces', parameters('<workspaceName>')), '2018-06-01', 'Full').identity.principalId]"
        }
    }
}

Sistem tarafından atanan yönetilen kimlikle Azure Synapse Spark Not Defterlerini yürütme

Oturum yapılandır menüsünden Yönetilen kimlik olarak çalıştır'ı etkinleştirerek sistem tarafından atanan yönetilen kimlik (veya çalışma alanı yönetilen kimliği) ile Synapse Spark Not Defterlerini kolayca yürütebilirsiniz. Spark Not Defterlerini çalışma alanı yönetilen kimliğiyle yürütmek için kullanıcıların aşağıdaki RBAC rollerine sahip olması gerekir:

  • Çalışma alanında veya seçili Spark havuzunda Synapse İşlem operatörü
  • Çalışma alanı yönetilen kimliğinde Synapse Kimlik Bilgisi Kullanıcısı

synapse-run-as-msi-1

synapse-run-as-msi-2

synapse-run-as-msi-3

Not

Synapse not defterleri ve Spark iş tanımları yalnızca bağlı hizmetler ve mssparkutils API'leri aracılığıyla sistem tarafından atanan yönetilen kimliğin kullanımını destekler. MSAL ve diğer kimlik doğrulama kitaplıkları sistem tarafından atanan yönetilen kimliği kullanamaz. Bunun yerine bir hizmet sorumlusu oluşturabilir ve kimlik bilgilerini Key Vault'ta depolayabilirsiniz.

Kullanıcı tarafından atanan yönetilen kimlik

Microsoft Entra Id'de kullanıcı tarafından atanan yönetilen kimlikler oluşturabilir, silebilir, yönetebilirsiniz. Daha fazla ayrıntı için Bkz. Azure portalını kullanarak kullanıcı tarafından atanan yönetilen kimliğe rol oluşturma, listeleme, silme veya atama.

Kullanıcı tarafından atanan yönetilen kimliği kullanmak için önce UAMI için hizmet örneğinizde kimlik bilgileri oluşturmanız gerekir.

Not

Kullanıcı tarafından atanan Yönetilen Kimlik şu anda Synapse not defterlerinde ve Spark iş tanımlarında desteklenmemektedir.

Sonraki adımlar

Yönetilen kimliğin ne zaman ve nasıl kullanılacağını gösteren aşağıdaki konulara bakın:

Azure Synapse'te yönetilen kimliğin temel aldığı Azure kaynakları için yönetilen kimlikler hakkında daha fazla arka plan için bkz . Azure Kaynakları için Yönetilen Kimlikler Genel Bakış .