Aracılığıyla paylaş


OAuth (OAuth M2M) kullanarak hizmet sorumlusuyla Azure Databricks'e erişimin kimliğini doğrulama

Bu makalede, Azure Databricks hizmet sorumlusu oluşturma ve OAuth ile bir hedef varlıkta kimlik doğrulaması yapmak için bunu kullanma açıklanmaktadır.

1. Adım: Hizmet sorumlusu oluşturma

Hesap yöneticileri ve çalışma alanı yöneticileri bir hizmet sorumlusu oluşturabilir. Bu adım, çalışma alanında hizmet sorumlusu oluşturmayı açıklar. Hesap konsolunu kullanmak için bkz . Hesabınızdaki hizmet sorumlularını yönetme.

Ayrıca bir Microsoft Entra Id yönetilen hizmet sorumlusu oluşturabilir ve bunu Azure Databricks'e ekleyebilirsiniz. Daha fazla bilgi için bkz . Databricks ve Microsoft Entra ID hizmet sorumluları.

  1. Çalışma alanı yöneticisi olarak Azure Databricks çalışma alanında oturum açın.
  2. Azure Databricks çalışma alanının üst çubuğunda kullanıcı adınıza tıklayın ve selectAyarlar.
  3. Kimlik ve erişim sekmesine tıklayın.
  4. Hizmet sorumluları'nın yanındaki Yönet'e tıklayın.
  5. Hizmet sorumlusu ekle'ye tıklayın.
  6. Arama kutusunda açılan oka tıklayın ve ardından Yeni ekle'ye tıklayın.
  7. Yönetim'in altında Databricks yönetilen'i seçin.
  8. Hizmet sorumlusu için bir ad girin.
  9. Ekle'yi tıklatın.

Hizmet sorumlusu hem çalışma alanınıza hem de Azure Databricks hesabınıza eklenir.

2. Adım: Hizmet sorumlunuza izin atama

  1. Ayrıntılar sayfasını açmak için hizmet sorumlunuzun adına tıklayın.
  2. Yapılandırmalar sekmesinde, hizmet sorumlunuzun bu çalışma alanı için sahip olmasını istediğiniz her yetkilendirmenin yanındaki kutuyu işaretleyin ve Updateöğesine tıklayın.
  3. İzinler sekmesinde, bu hizmet sorumlusunu yönetmek ve kullanmak istediğiniz tüm Azure Databricks kullanıcılarına, gruplara ve hizmet sorumlularına grant erişimi verin. Bkz. Hizmet sorumlusundaki rolleri yönetme.

3. Adım: Hizmet sorumlusu için OAuth gizli dizisi oluşturma

Azure Databricks'de kimlik doğrulaması yapmak için OAuth'u kullanabilmeniz için önce OAuth erişim belirteçlerini generate için kullanılabilecek bir OAuth gizli dizisi oluşturmanız gerekir. Bir hizmet sorumlusu en fazla beş OAuth gizli dizisine sahip olabilir. Hesap yöneticileri ve çalışma alanı yöneticileri, hizmet sorumlusu için bir OAuth gizli dizisi oluşturabilir.

  1. Hizmet sorumlunuzun ayrıntılar sayfasında Gizli Diziler sekmesine tıklayın.

  2. OAuth gizli dizilerialtında Generate gizli diziöğesine tıklayın.

    çalışma alanının OAuth gizli anahtarı

  3. Görüntülenen Gizli Dizi ve İstemci Kimliği'ni kopyalayıp Bitti'ye tıklayın.

Gizli dizi, oluşturma sırasında yalnızca bir kez açığa çıkar. İstemci kimliği, hizmet sorumlusunun uygulama kimliğiyle aynıdır.

Hesap yöneticileri, hesap konsolundaki hizmet temsilcisi ayrıntıları sayfasından bir OAuth sırrı da generate edebilir.

  1. Hesap yöneticisi olarak hesap konsolunda oturum açın.

  2. Kullanıcı yönetimi'ne tıklayın Hesap Konsolu kullanıcı yönetimi simgesi.

  3. Hizmet sorumluları sekmesinde hizmet sorumlunuzu select.

  4. OAuth gizli anahtarlarıaltında Generate gizli anahtaröğesine tıklayın.

    OAuth gizli anahtarı Generate çalışma alanı

  5. Görüntülenen Gizli Dizi ve İstemci Kimliği'ni kopyalayıp Bitti'ye tıklayın.

Not

Hizmet sorumlusunun kümeleri veya SQL ambarlarını kullanmasını sağlamak için hizmet sorumlusuna bunlara erişim vermeniz gerekir. Bkz. İşlem izinleri veya SQL ambarı yönetme.

4. Adım: OAuth M2M kimlik doğrulamasını kullanma

OAuth M2M kimlik doğrulamasını kullanmak için, aşağıdaki ilişkili ortam değişkenlerini, set alanlarını, .databrickscfg alanlarını, Terraform alanlarını veya Config alanlarını yapılandırmanız gerekir.

  • Hesap işlemleri için olarak https://accounts.azuredatabricks.net belirtilen Azure Databricks konağı veya çalışma alanı işlemleri gibi çalışma alanı başına hedef https://adb-1234567890123456.7.azuredatabricks.net.
  • Azure Databricks hesap işlemleri için Azure Databricks hesap kimliği.
  • Hizmet sorumlusu istemci kimliği.
  • Hizmet sorumlusu gizli dizisi.

OAuth M2M kimlik doğrulamasını gerçekleştirmek için, katılan aracı veya SDK'yı temel alarak aşağıdakileri kodunuzla tümleştirin:

Ortam

Belirli bir Azure Databricks kimlik doğrulama türü için ortam değişkenlerini bir araç veya SDK ile kullanmak için bkz . Azure Databricks kaynaklarına erişimin kimliğini doğrulama veya aracın ya da SDK'nın belgeleri. Ayrıca bkz. İstemci birleşik kimlik doğrulaması için ortam değişkenleri ve alanları ve istemci birleşik kimlik doğrulaması için Varsayılan yöntemler.

hesap düzeyinde işlemler için aşağıdaki ortam değişkenlerini :

  • DATABRICKS_HOSTve set parametrelerini Azure Databricks hesap konsolu URL'sine, https://accounts.azuredatabricks.netekleyin.
  • DATABRICKS_ACCOUNT_ID
  • DATABRICKS_CLIENT_ID
  • DATABRICKS_CLIENT_SECRET

çalışma alanı düzeyinde işlemler için aşağıdaki ortam değişkenlerini :

  • DATABRICKS_HOST, set Azure Databricks çalışma alanı başına URLiçin, örneğin https://adb-1234567890123456.7.azuredatabricks.net.
  • DATABRICKS_CLIENT_ID
  • DATABRICKS_CLIENT_SECRET

Profil

Dosyanızda aşağıdaki alanlarla bir Azure Databricks .databrickscfg oluşturun veya tanımlayın. Profili oluşturursanız yer tutucuları uygun valuesile değiştirin. Profili bir araç veya SDK ile kullanmak için Bkz . Azure Databricks kaynaklarına erişimin kimliğini doğrulama veya aracın ya da SDK'nın belgeleri. Ayrıca bkz. İstemci birleşik kimlik doğrulaması için ortam değişkenleri ve alanları ve istemci birleşik kimlik doğrulaması için Varsayılan yöntemler.

hesap düzeyinde işlemler için dosyanızda aşağıdaki . Bu durumda Azure Databricks hesap konsolu URL'si şöyledir https://accounts.azuredatabricks.net:

[<some-unique-configuration-profile-name>]
host          = <account-console-url>
account_id    = <account-id>
client_id     = <service-principal-client-id>
client_secret = <service-principal-secret>

çalışma alanı düzeyindeki işlemler için, .databrickscfg dosyanızda aşağıdaki valuesset. Bu durumda konak, çalışma alanı başına Azure Databricks URL'sidir, örneğin https://adb-1234567890123456.7.azuredatabricks.net:

[<some-unique-configuration-profile-name>]
host          = <workspace-url>
client_id     = <service-principal-client-id>
client_secret = <service-principal-secret>

CLI

Databricks CLI için aşağıdakilerden birini yapın:

  • Set Bu makalenin "Ortam" bölümünde belirtildiği gibi ortam değişkenlerini kullan.
  • Set dosyanızdaki values, bu makalenin "Profil" bölümünde belirtildiği gibi .databrickscfg.

Ortam değişkenleri, .databrickscfg dosyanızdaki values üzerinde her zaman önceliklidir.

Ayrıca bkz. OAuth makineden makineye (M2M) kimlik doğrulaması.

Bağlan

Not

OAuth M2M kimlik doğrulaması aşağıdaki Databricks Connect sürümlerinde desteklenir:

  • Python için Databricks Runtime 14.0 ve üzeri için Databricks Connect.
  • Scala için Databricks Runtime 13.3 LTS ve üzeri için Databricks Connect. Databricks Runtime 13.3 LTS ve üzeri için Databricks Connect'e dahil olan Java için Databricks SDK'sı, Java 0.17.0 veya üzeri için Databricks SDK'sına yükseltilmelidir.

Databricks Connect için aşağıdakilerden birini yapabilirsiniz:

.databrickscfg dosyanızdaki Values her zaman ortam değişkenlerinden önceliklidir.

Databricks Connect istemcisini bu ortam değişkenleriyle veya .databrickscfg dosyanızdaki values ile başlatmak için Databricks Connect için Hesaplama Yapılandırmasına bakın .

VS Code

Visual Studio Code için Databricks uzantısı için aşağıdakileri yapın:

  1. Bu makalenin "Profil" bölümünde belirtildiği gibi, Azure Databricks çalışma alanı düzeyindeki işlemler için .databrickscfg dosyanızda Setvalues.
  2. Visual Studio Code için Databricks uzantısının Yapılandırma bölmesinde Databricks'i Yapılandır'a tıklayın.
  3. Komut Paleti'nde, Databricks Konağı için çalışma alanı başına URL'nizi (örneğin) girin ve tuşuna basınhttps://adb-1234567890123456.7.azuredatabricks.net.Enter
  4. Komut Paletiiçinde, URL'nizdeki list alanında hedef profilinizin adı select.

Diğer ayrıntılar için bkz . Visual Studio Code için Databricks uzantısı için kimlik doğrulaması kurulumu.

Terraform

Hesap düzeyinde işlemler için, varsayılan kimlik doğrulaması için:

provider "databricks" {
  alias = "accounts"
}

Doğrudan yapılandırma için (retrieve yer tutucularını kendi uygulamanızla değiştirerek konsoldan veya HashiCorp Vaultgibi başka bir yapılandırma deposundan values alın. Ayrıca bkz. Kasa Sağlayıcısı). Bu durumda Azure Databricks hesap konsolu URL'si şöyledir https://accounts.azuredatabricks.net:

provider "databricks" {
  alias         = "accounts"
  host          = <retrieve-account-console-url>
  account_id    = <retrieve-account-id>
  client_id     = <retrieve-client-id>
  client_secret = <retrieve-client-secret>
}

Çalışma alanı düzeyindeki işlemler için, varsayılan kimlik doğrulaması için:

provider "databricks" {
  alias = "workspace"
}

Doğrudan yapılandırma işlemi için, retrieve yer tutucularını kendi uygulamanızla değiştirerek konsoldan veya HashiCorp Vaultgibi alternatif bir yapılandırma deposundan values elde edin. Ayrıca bkz. Vault Sağlayıcısı. Bu durumda konak, çalışma alanı başına Azure Databricks URL'sidir, örneğin https://adb-1234567890123456.7.azuredatabricks.net:

provider "databricks" {
  alias         = "workspace"
  host          = <retrieve-workspace-url>
  client_id     = <retrieve-client-id>
  client_secret = <retrieve-client-secret>
}

Databricks Terraform sağlayıcısıyla kimlik doğrulaması hakkında daha fazla bilgi için bkz . Kimlik doğrulaması.

Python

Hesap düzeyinde işlemler için, varsayılan kimlik doğrulaması için aşağıdakileri kullanın:

from databricks.sdk import AccountClient

a = AccountClient()
# ...

Doğrudan yapılandırma için, konsoldan veya Azure KeyVaultgibi başka bir yapılandırma deposundan almak için yer tutucularını kendi uygulamanızla değiştirerek aşağıdakileri kullanın. Bu durumda Azure Databricks hesap konsolu URL'si şöyledir https://accounts.azuredatabricks.net:

from databricks.sdk import AccountClient

a = AccountClient(
  host          = retrieve_account_console_url(),
  account_id    = retrieve_account_id(),
  client_id     = retrieve_client_id(),
  client_secret = retrieve_client_secret()
)
# ...

Çalışma alanı düzeyindeki işlemler için, özellikle varsayılan kimlik doğrulaması:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
# ...

Doğrudan yapılandırma için, values'i konsoldan veya Azure KeyVaultgibi başka bir yapılandırma deposundan alacak şekilde, retrieve yer tutucularını kendi uygulamanızla değiştirin. Bu durumda konak, çalışma alanı başına Azure Databricks URL'sidir, örneğin https://adb-1234567890123456.7.azuredatabricks.net:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient(
  host          = retrieve_workspace_url(),
  client_id     = retrieve_client_id(),
  client_secret = retrieve_client_secret()
)
# ...

Python kullanan ve Databricks istemcisi birleşik kimlik doğrulamasını uygulayan Databricks araçları ve SDK'ları ile kimlik doğrulaması hakkında daha fazla bilgi için bkz:

Not

Visual Studio Code için Databricks uzantısı Python kullanır ancak henüz OAuth M2M kimlik doğrulamasını uygulamamıştır.

Java

Çalışma alanı düzeyindeki işlemler için, varsayılan kimlik doğrulaması için:

import com.databricks.sdk.WorkspaceClient;
// ...
WorkspaceClient w = new WorkspaceClient();
// ...

Doğrudan yapılandırma yapmak için, values'i konsol veya Azure KeyVaultgibi diğer yapılandırma depolarından almak üzere, retrieve yer tutucularını kendi uygulamanızla değiştirin. Bu durumda konak, çalışma alanı başına Azure Databricks URL'sidir, örneğin https://adb-1234567890123456.7.azuredatabricks.net:

import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.core.DatabricksConfig;
// ...
DatabricksConfig cfg = new DatabricksConfig()
  .setHost(retrieveWorkspaceUrl())
  .setClientId(retrieveClientId())
  .setClientSecret(retrieveClientSecret());
WorkspaceClient w = new WorkspaceClient(cfg);
// ...

Java kullanan ve Databricks istemcisi birleşik kimlik doğrulamasını uygulayan Databricks araçları ve SDK'ları ile kimlik doğrulaması hakkında daha fazla bilgi için bkz:

Go

Hesap düzeyinde işlemler için, varsayılan kimlik doğrulaması için:

import (
"github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient())
// ...

Doğrudan yapılandırma için, values öğesine konsoldan veya Azure KeyVaultgibi başka bir yapılandırma deposundan erişmek amacıyla, retrieve yer tutucularını kendi uygulamanızla değiştirin. Bu durumda Azure Databricks hesap konsolu URL'si şöyledir https://accounts.azuredatabricks.net:

import (
"github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient(&databricks.Config{
  Host:         retrieveAccountConsoleUrl(),
  AccountId:    retrieveAccountId(),
  ClientId:     retrieveClientId(),
  ClientSecret: retrieveClientSecret(),
}))
// ...

Çalışma alanı düzeyindeki işlemler için, varsayılan kimlik doğrulaması için:

import (
"github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient())
// ...

Doğrudan yapılandırma için, retrieve yer tutucularını kendi uygulamanızla değiştirerek values'i konsoldan veya Azure KeyVaultgibi başka bir yapılandırma deposundan alın. Bu durumda konak, çalışma alanı başına Azure Databricks URL'sidir, örneğin https://adb-1234567890123456.7.azuredatabricks.net:

import (
"github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient(&databricks.Config{
  Host:         retrieveWorkspaceUrl(),
  ClientId:     retrieveClientId(),
  ClientSecret: retrieveClientSecret(),
}))
// ...

Go kullanan ve Databricks istemcisi birleşik kimlik doğrulaması uygulayan Databricks araçları ve SDK'ları ile kimlik doğrulaması hakkında daha fazla bilgi için bkz . Azure Databricks hesabınız veya çalışma alanınızla Go için Databricks SDK'sının kimliğini doğrulama.

OAuth M2M kimlik doğrulaması için erişim belirteçlerini el ile kullanma ve generate

Databricks istemcisi birleşik kimlik doğrulaması standardını uygulayan Azure Databricks araçları ve SDK'ları otomatik olarak generate, refreshve OAuth M2M kimlik doğrulaması için sizin yerinize Azure Databricks OAuth erişim belirteçlerini kullanır.

Databricks, istemci birleşik kimlik doğrulamasının kullanılmasını önerir, ancak el ile generate, refreshveya Azure Databricks OAuth erişim belirteçlerini kullanmanız gerekiyorsa, bu bölümdeki yönergeleri izleyin.

Hem hesap düzeyi REST API'leri hem de çalışma alanı düzeyinde REST API'leri için kimlik doğrulaması yapmak üzere OAuth erişim belirteci istemek için hizmet sorumlusunun istemci kimliğini ve OAuth gizli dizisini kullanın. Erişim belirtecinin süresi bir saat içinde dolacak. Süre sonundan sonra yeni bir OAuth erişim belirteci istemeniz gerekir. OAuth erişim belirtecinin kapsamı, belirteci oluşturduğunuz düzeye bağlıdır. Hesap düzeyinde veya çalışma alanı düzeyinde aşağıdaki gibi bir belirteç oluşturabilirsiniz:

  • Hizmet sorumlusunun erişimi olan hesaplar ve çalışma alanları içinde hesap düzeyinde ve çalışma alanı düzeyinde REST API'leri çağırmak hesap düzeyinde bir erişim belirtecini el ile generate.
  • Hizmet sorumlusunun erişimi olan çalışma alanlarından yalnızca birinde REST API'leri çağırmak için, yalnızca bu çalışma alanı için çalışma alanı düzeyinde bir erişim belirtecini el ile generate.

Hesap düzeyinde erişim belirtecini el ile generate

Hesap düzeyinden oluşturulan OAuth erişim belirteci, hesaptaki Databricks REST API'lerinde ve hizmet sorumlusunun erişimi olan tüm çalışma alanlarında kullanılabilir.

  1. Hesap yöneticisi olarak hesap konsolunda oturum açın.

  2. Sağ üst köşedeki kullanıcı adınızın yanındaki aşağı oka tıklayın.

  3. Hesap Kimliğinizi kopyalayın.

  4. Aşağıdaki URL'yi kopyaladığınız hesap kimliğiyle değiştirerek <my-account-id> belirteç uç noktası URL'sini oluşturun.

    https://accounts.azuredatabricks.net/oidc/accounts/<my-account-id>/v1/token
    
  5. Belirteç uç noktası URL'si, hizmet sorumlusunun istemci kimliği (uygulama kimliği olarak da bilinir) ve oluşturduğunuz hizmet sorumlusunun OAuth gizli dizisi ile OAuth erişim belirteci istemek için gibi curl bir istemci kullanın. Kapsam, all-apis hizmet sorumlusuna erişim verilen tüm Databricks REST API'lerine erişmek için kullanılabilecek bir OAuth erişim belirteci istemektedir.

    • değerini önceki belirteç uç noktası URL'si ile değiştirin <token-endpoint-URL> .
    • değerini hizmet sorumlusunun uygulama kimliği olarak da bilinen istemci kimliğiyle değiştirin <client-id> .
    • değerini, oluşturduğunuz hizmet sorumlusunun OAuth gizli dizisiyle değiştirin <client-secret> .
    export CLIENT_ID=<client-id>
    export CLIENT_SECRET=<client-secret>
    
    curl --request POST \
    --url <token-endpoint-URL> \
    --user "$CLIENT_ID:$CLIENT_SECRET" \
    --data 'grant_type=client_credentials&scope=all-apis'
    

    Bu, şuna benzer bir yanıt oluşturur:

    {
      "access_token": "eyJraWQiOiJkYTA4ZTVjZ…",
      "token_type": "Bearer",
      "expires_in": 3600
    }
    

    yanıttan öğesini access_token kopyalayın.

Çalışma alanı düzeyinde erişim belirtecini el ile generate

Hizmet sorumlusu bir hesap yöneticisi veya diğer çalışma alanlarının üyesi olsa bile, çalışma alanı düzeyinden oluşturulan OAuth erişim belirteci yalnızca bu çalışma alanında REST API'lerine erişebilir.

  1. öğesini Azure Databricks dağıtımınızın çalışma alanı URL'si ile değiştirerek https://<databricks-instance> belirteç uç noktası URL'sini oluşturun:

    https://<databricks-instance>/oidc/v1/token
    
  2. Belirteç uç noktası URL'si, hizmet sorumlusunun istemci kimliği (uygulama kimliği olarak da bilinir) ve oluşturduğunuz hizmet sorumlusunun OAuth gizli dizisi ile OAuth erişim belirteci istemek için gibi curl bir istemci kullanın. Kapsam, all-apis hizmet sorumlusuna belirteci istediğiniz çalışma alanı içinde erişim izni verilen tüm Databricks REST API'lerine erişmek için kullanılabilecek bir OAuth erişim belirteci istemektedir.

    • değerini önceki belirteç uç noktası URL'si ile değiştirin <token-endpoint-URL> .
    • değerini hizmet sorumlusunun uygulama kimliği olarak da bilinen istemci kimliğiyle değiştirin <client-id> .
    • değerini, oluşturduğunuz hizmet sorumlusunun OAuth gizli dizisiyle değiştirin <client-secret> .
    export CLIENT_ID=<client-id>
    export CLIENT_SECRET=<client-secret>
    
    curl --request POST \
    --url <token-endpoint-URL> \
    --user "$CLIENT_ID:$CLIENT_SECRET" \
    --data 'grant_type=client_credentials&scope=all-apis'
    

    Bu, şuna benzer bir yanıt oluşturur:

    {
      "access_token": "eyJraWQiOiJkYTA4ZTVjZ…",
      "token_type": "Bearer",
      "expires_in": 3600
    }
    

    yanıttan öğesini access_token kopyalayın.

Databricks REST API'sini çağırma

Artık Azure Databricks hesap düzeyi REST API'leri ve çalışma alanı düzeyinde REST API'lerinde kimlik doğrulaması yapmak için OAuth erişim belirtecini kullanabilirsiniz. Hizmet sorumlusu, hesap düzeyinde REST API'lerini çağırmak için bir hesap yöneticisi olmalıdır.

Kimlik doğrulamasını kullanarak Bearer üst bilgide belirteci ekleyebilirsiniz. Bu yaklaşımı veya oluşturduğunuz herhangi bir istemciyle curl kullanabilirsiniz.

Örnek hesap düzeyinde REST API isteği

Bu örnekte, bir hesapla ilişkili tüm çalışma alanlarının listget için Bearer kimlik doğrulaması gerçekleştirilir.

  • değerini, önceki adımda kopyaladığınız hizmet sorumlusunun OAuth erişim belirteciyle değiştirin <oauth-access-token> .
  • değerini hesap kimliğiniz ile değiştirin <account-id> .
export OAUTH_TOKEN=<oauth-access-token>

curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
'https://accounts.azuredatabricks.net/api/2.0/accounts/<account-id>/workspaces'

Örnek çalışma alanı düzeyinde REST API isteği

Bu örnekte, belirtilen çalışma alanında kullanılabilir tüm kümeleri list için Bearer kimlik doğrulaması gerçekleştirilir.

  • değerini, önceki adımda kopyaladığınız hizmet sorumlusunun OAuth erişim belirteciyle değiştirin <oauth-access-token> .
  • değerini, biçimine <workspace-URL>benzer olan temel çalışma alanı URL'nizle değiştirindbc-a1b2345c-d6e7.cloud.databricks.com.
export OAUTH_TOKEN=<oauth-access-token>

curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
'https://<workspace-URL>/api/2.0/clusters/list'

Ek kaynaklar